I updated MM to 4.19.05 and after this when i tryin' to load any game - console freeze, other functions of MM works properly. CFW 3.55 rebug
What I Need to do???? Sorry for my bad English
I find a problem: on 4.19.05 games does not load from 2TB Hard disk, from flash drive all loads correctly)))
I install 4.19.04 and problem disapear....
Can you fix this in later ver.?
I've tested several SingStar games and they work great! A few notes for someone who haven't come across SingStar games:
PS3 SingStar games allow to load contents of ps2 discs - so the things described above have little to do with actually playing ps2 games on ps3.
You'll need original PS2 disc for this to work.
So in order to get songs from the ps2-disc backup you should:
1. Get any ps3 Singstar game backup and put it in /dev_hdd0/GAMES/ or /dev_usb000/GAMES/
E.g./dev_usb000/GAMES/BCES00494
2. Get PS2 Singstar disc backup, unpack it (from iso, bin or anything) to get a folder. Name this folder starting with "[PS2". Also you can backup a PS2 original disc in mmOS to a [PS2] folder. Put this folder inside your PS3 backup folder.
E.g./dev_usb000/GAMES/BCES00494/[PS2 Rocks]
3. Load the PS3 game with MultiMan, choose PS2 addon title from the popup menu.
4. Start PS3 game either from app_home or disc icon or even XMB Singstar
5. Start a new game and select to change the disc
6. When asked, insert original PS2 disc and wait for verification to finish.
I have followed the instructions by the letter, but when I load the game, I don't get the popup for the PS2 game selection, it just exits MM. Do i need something else enabled besides Hermes? Thanks in advance.
barny80,
you get the popup if MM finds [PS2* folder inside the PS3 backup folder. If popup doesn't appear - MM either doesn't search for PS2 addon, or doesn't find it.
So please try to install ver 04.19.05 UPD from the release post if you are on "Base", not "Stealth" version (Dean may have changed something in the current online-update version for debug purpose, though I doubt it).
Please post here the folder where you have the PS3 game's files
e.g. /dev_usb000/GAMES/BCES00494/PS3_DISC.SFB
and PS2 game's files
e.g /dev_usb000/GAMES/BCES00494/[PS2]/Pack_EE.PAK
And though I'm not sure if there is any influence on PS2-addons popup, but you may check in MM options: that Hermes payload is selected and popup messages are turned on.
dean i have one question
mm has the ability to display and launch homebrew from the games column if there is a properly signed RELOAD.SELF along side of EBOOT.BIN.
my question to you is how do you sign the eboot and make it a valid self?
ive tried and tried and gave up...so please give any info you can
tia
-d
Hi deank
i have an odd issue i just upgraded my external usb to 3TB from 640gb and multiman cant find the games on the new usb, i checked with mmos i can see the games in the game folder but when i click refresh game list it only shows the games backed up to the internal drive? is there a restriction on external usb size?
* Added support for PS2 disc add-ons for PS3 games like SingStar:
- "[PS2" prefix in folder name required
- Example: /dev_hdd0/GAMES/SingStar-Dance/[PS2 Pop] where [PS2 Pop] contains a backup of your PS2 disc
You can have up to 10 [PS2] add-on discs per PS3 game. In the screenshot above the following folder structure was used:
/dev_usb000/GAMES/SingStar-Dance <--- This is the PS3 game listed in the Game column
mM detects the add-on PS2 discs and will list them in the pop-up menu when you load the game:
multiMAN 04.19.06 minor update is available online and in the web column.
Download link at the end of the post.
* Added support for PSXEMU/PSXNETEMU emulator selection for PS1 BIN+CUE backups (Press [Triangle] -> Game Settings)
* When using PSX NETEMU option the disc backups must be in MODE1 or MODE2 / 2352 (or more) bytes sector
* Multi-disc games are not supported in this initial PS1_NETEMU-support version
The default launch mode for PS1 file backups is "AUTO" = PSX EMU. Some games may require or look/perform better when using PSX NETEMU. The patched versions were tested on 4.30 and 4.21, but hopefully 3.41 and 3.55 versions will work too.
Each emulator selection is remembered per game.
This method is similar to the ps1_emu.self patching and doesn't affect other apps nor uses system calls which make break other apps.
The patch is quite simple (just 244 bytes for ATAPI 0xBE READ CD command):
Code:
//4.30
//#define BASE (0x11C310) // READCD+0x10 in ps1_netemu
//#define RETURN (0x11BFDC) // case 7 return
//4.20
//#define BASE (0x11C200) // READCD+0x10 in ps1_netemu
//#define RETURN (0x11BECC) // case 7 return
//3.55
//#define BASE (0x11AA50) // READCD+0x10 in ps1_netemu
//#define RETURN (0x11A71C) // case 7 return
//3.41
#define BASE (0x11ACF0) // READCD+0x10 in ps1_netemu
#define RETURN (0x11A9BC) // case 7 return
#define SECTOR_SIZE (0xD0) // address in lv2 memory to store sector size
#define HANDLE (0xD8) // address in lv2 memory to store fd (open handle)
#define ABS(target) ((target) - (BASE) - .)
#define ABS2(target) ((target) - .)
#define MEM_BASE(dest) \
li dest, 1; \
rldicr dest, dest, 63, 0;
#define LOAD_LABEL(base, dest, source, address) \
oris dest, source, ((base) + (address))@h; \
ori dest, dest, ((base) + (address))@l;
#define LOAD_LABEL2(dest, source, address) \
LOAD_LABEL(BASE, dest, source, address)
#define PEEK(address) \
ori %r3, %r25, address; \
li %r11, 6; \
sc;
#define POKE(address) \
ori %r3, %r25, address; \
li %r11, 7; \
sc;
// IN:
// %r24 -> address of local stack buffer
// %r29 -> address of readcd data buffer
// %r9 -> sector number
.org 0
MEM_BASE(%r25)
PEEK(SECTOR_SIZE)
mullw %r30, %r9, %r3
PEEK(HANDLE)
mr %r27, %r3
cmplwi %r3, 0
bne read_sector // handle is valid, file already opened
LOAD_LABEL2(%r3, %r3, iso_name)
ld %r4, 0(%r3)
std %r4, 0(%r24)
mr %r3, %r24
li %r4, 0
addi %r5, %sp, 0xE0
li %r6, 511
li %r7, 0
li %r8, 0
li %r11, 801 // open
sc
cmpldi %r3, 0
bne abort
lwz %r4, 0xE0(%sp) // store file handle
POKE(HANDLE)
mr %r27, %r4
read_sector:
mr %r3, %r27
mr %r4, %r30
li %r5, 0
addi %r6, %sp, 0xE8
li %r11, 818 // seek
sc
cmpldi %r3, 0
bne close
mr %r3, %r27
mr %r4, %r29
li %r5, 0x940
addi %r6, %sp, 0xE8
li %r11, 802 // read
sc
cmpldi %r3, 0
beq return
close:
mr %r3, %r27
li %r11, 804 // close
sc
li %r4, 0 // invalidate handle
POKE(HANDLE)
abort:
lis %r3, 0x8001
ori %r3, %r3, 0x000A // (BUSY 0x8001000A)
extsw %r3, %r3
return:
mr %r25, %r3
b ABS(RETURN)
.align 2
iso_name:
.string "/psx_d0"
I just read the comments about BD-MIRROR and Black-Screen-Games. I just tested "Prince Of Persia: The Forgotten Sands" (my BSG test game) and it worked from internal and from external (on 4.30CFW).
p.s. Download link updated (fixed broken upload by sendspace)
Last edited by deank; 02-11-2013 at 06:11 PM.
If you like multiMAN or multiAVCHD, support the development with a small donation. Click here.
* Added support for multi-disc games when using PS1_NETEMU emulator
With this update the ps1 backups support saga should be concluded.
Dean
p.s. Here are the two major patches in ps1_netemu. Iris no longer uses 'patched emulators' but provides syscall emulation, but I prefer to keep it this way - it is much clear and simple.
ATAPI 0x4A GET EVENT/STATUS NOTIFICATION
Code:
//case 8 = [fill sector buffer with 0xFF]
//case 7 = [0xBE READ CD]
//case 6 = [0x51 READ DISC INFORMATION]
//case 5 = [0x4A GET EVENT/STATUS NOTIFICATION]
//case 4 = [fill sector buffer with 0xFF]
//case 3 = [0x00 TEST UNIT READY]
//case 2 = [sys_storage_close()]
//case 1 = [sys_storage_open() ]
//4.30
//#define BASE (0x11C8F8) // GET EVENT/STATUS NOTIFICATION in ps1_netemu
//#define RETURN (0x11CA10) //+118 // case 5 return
//#define RETURN_ERR (0x11CFC4) //+6CC // case 5 return
//4.20
//#define BASE (0x11C7E8) // GET EVENT/STATUS NOTIFICATION in ps1_netemu
//#define RETURN (0x11C900) // case 5 return
//#define RETURN_ERR (0x11CEB4) // case 5 return
//3.55
//#define BASE (0x11B038) // GET EVENT/STATUS NOTIFICATION in ps1_netemu
//#define RETURN (0x11B150) // case 5 return
//#define RETURN_ERR (0x11B704) // case 5 return
//3.41
#define BASE (0x11B2D8) // GET EVENT/STATUS NOTIFICATION in ps1_netemu
#define RETURN (0x11B3F0) // case 5 return
#define RETURN_ERR (0x11B9A4) // case 5 return
#define SECTOR_SIZE (0xD0) // address in lv2 memory to store sector size
#define HANDLE (0xD8) // address in lv2 memory to store fd (open handle)
#define DISC (0xE0) // address in lv2 memory to store current disc number (0..7)
#define ABS(target) ((target) - (BASE) - .)
#define ABS2(target) ((target) - .)
#define MEM_BASE(dest) \
li dest, 1; \
rldicr dest, dest, 63, 0;
#define LOAD_LABEL(base, dest, source, address) \
oris dest, source, ((base) + (address))@h; \
ori dest, dest, ((base) + (address))@l;
#define LOAD_LABEL2(dest, source, address) \
LOAD_LABEL(BASE, dest, source, address)
#define PEEK(address) \
ori %r3, %r25, address; \
li %r11, 6; \
sc;
#define POKE(address) \
ori %r3, %r25, address; \
li %r11, 7; \
sc;
#define SLEEP(ms) \
li %r3, ms; \
li %r11, 0x8D; \
sc;
#define RED 0
#define GREEN 1
#define YELLOW 2
#define OFF 0
#define ON 1
#define BLINK 2
#define LED(color, mode) \
li %r3, color; \
li %r4, mode; \
li %r11, 386; \
sc;
// IN:
// %r26 -> address of local stack buffer
// %r27 -> reserved
// %r28 -> reserved
.org 0
MEM_BASE(%r25)
lis %r4, 0x0002
stw %r4, 0x78(%sp) // 00 02 00 00 = packet length
stw %r4, 0x7C(%sp) // 00 02 00 00 = disc in tray, tray closed
li %r3, 0
LOAD_LABEL2(%r3, %r3, disc_name)
ld %r4, 0(%r3)
std %r4, 0(%r26)
ld %r4, 8(%r3)
std %r4, 8(%r26)
mr %r3, %r26
addi %r4, %r26, 0x10
li %r11, 805 // opendir
sc
cmplwi %r3, 0
bne next_disc
lwz %r3, 0x10(%r26)
li %r11, 807 // closedir
sc
b ABS(RETURN)
next_disc:
PEEK(HANDLE)
cmplwi %r3, 0
beq file_closed
li %r11, 804 // close
sc
li %r4, 0 // invalidate handle
POKE(HANDLE)
PEEK(DISC)
addi %r4, %r3, 1
andi. %r4, %r4, 7
POKE(DISC)
file_closed:
lis %r4, 0x0001 // tray open
stw %r4, 0x7C(%sp) // 00 01 00 00 = no disc in tray, tray opened
SLEEP(1000)
b ABS(RETURN_ERR)
.align 2
disc_name:
.string "/psx_cdrom0"
ATAPI 0xBE READ CD
Code:
//4.30
//#define BASE (0x11C310) // READCD+0x10 in ps1_netemu
//#define RETURN (0x11BFDC) // +334 // case 7 return
//4.20
//#define BASE (0x11C200) // READCD+0x10 in ps1_netemu
//#define RETURN (0x11BECC) // case 7 return
//3.55
//#define BASE (0x11AA50) // READCD+0x10 in ps1_netemu
//#define RETURN (0x11A71C) // case 7 return
//3.41
#define BASE (0x11ACF0) // READCD+0x10 in ps1_netemu
#define RETURN (0x11A9BC) // case 7 return
//case 8 = [fill sector buffer with 0xFF]
//case 7 = [0xBE READ CD]
//case 6 = [0x51 READ DISC INFORMATION]
//case 5 = [0x4A GET EVENT/STATUS NOTIFICATION]
//case 4 = [fill sector buffer with 0xFF]
//case 3 = [0x00 TEST UNIT READY]
//case 2 = [sys_storage_close()]
//case 1 = [sys_storage_open() ]
#define SECTOR_SIZE (0xD0) // address in lv2 memory to store sector size
#define HANDLE (0xD8) // address in lv2 memory to store fd (open handle)
#define DISC (0xE0) // address in lv2 memory to store current disc number (0..7)
#define ABS(target) ((target) - (BASE) - .)
#define ABS2(target) ((target) - .)
#define MEM_BASE(dest) \
li dest, 1; \
rldicr dest, dest, 63, 0;
#define LOAD_LABEL(base, dest, source, address) \
oris dest, source, ((base) + (address))@h; \
ori dest, dest, ((base) + (address))@l;
#define LOAD_LABEL2(dest, source, address) \
LOAD_LABEL(BASE, dest, source, address)
#define PEEK(address) \
ori %r3, %r25, address; \
li %r11, 6; \
sc;
#define POKE(address) \
ori %r3, %r25, address; \
li %r11, 7; \
sc;
// IN:
// %r24 -> address of local stack buffer
// %r29 -> address of readcd data buffer
// %r9 -> sector number
.org 0
MEM_BASE(%r25)
PEEK(SECTOR_SIZE)
mullw %r30, %r9, %r3
PEEK(HANDLE)
mr %r27, %r3
cmplwi %r3, 0
bne read_sector // handle is valid, file already opened
LOAD_LABEL2(%r3, %r3, iso_name)
ld %r4, 0(%r3)
PEEK(DISC)
sldi %r3, %r3, 8
add %r4, %r4, %r3
std %r4, 0(%r24)
mr %r3, %r24
li %r4, 0
addi %r5, %sp, 0xE0
li %r6, 511
li %r7, 0
li %r8, 0
li %r11, 801 // open
sc
cmpldi %r3, 0
bne abort
lwz %r4, 0xE0(%sp) // store file handle
POKE(HANDLE)
mr %r27, %r4
read_sector:
mr %r3, %r27
mr %r4, %r30
li %r5, 0
addi %r6, %sp, 0xE8
li %r11, 818 // seek
sc
cmpldi %r3, 0
bne close
mr %r3, %r27
mr %r4, %r29
li %r5, 0x940
addi %r6, %sp, 0xE8
li %r11, 802 // read
sc
cmpldi %r3, 0
beq return
close:
mr %r3, %r27
li %r11, 804 // close
sc
li %r4, 0 // invalidate handle
POKE(HANDLE)
abort:
lis %r3, 0x8001
ori %r3, %r3, 0x000A // (BUSY 0x8001000A)
extsw %r3, %r3
return:
mr %r25, %r3
b ABS(RETURN)
.align 2
iso_name:
.string "/psx_d0"
Last edited by deank; 02-12-2013 at 12:20 PM.
If you like multiMAN or multiAVCHD, support the development with a small donation. Click here.
PS3 Slim w/ Rebug Rex 4.30.2, 500GB Internal, 1TB/3TB External; PS2 Fat McBoot w/ Hard Drive; Windows 7 x64 Ultimate
Last game finished: The Last of Us | Currently Playing: Metro Last Light
But i just wanted to say something about you releasing the code and you said you need to make it nicer before release, i actually agree with you, that code needs to look "nice" and most important commented. RogerO said that the code is you'r own and you can release it as you want, that ofcourse is true, but noone (except you, the owner of the code) can understand 60 000 line of code by not spending 3 months studying it, if it's not properly documented.
Since i know a little bit about programing and i'm on the college where we learn C#, Java, C++, PHP, JavaScript, ASP.NET and so on, i can just tell you what our professor told us: "noone will try to adopt you'r code if it's badly comented and documented" and then he said what is happening in real life when companys get a team to write something for them and then they hire a team for maintenance of the program. And if the program is badly written, they will actually go and write the same program from scratch (for free of charge) and then maintain the program, cuz it's so dificult to understand a badly commented program. We actually need to comment every function and type what is the input, output and what it does, i know it's frustrating to do it, but it's for you'r own good and so other people can understand what it does.
I know you typed this a while back, but just wanted to give my oppinion about it I respect you'r work and for me you'r a genius.