PSX-SCENE Forum Discussion for Sony PlayStation/PsOne/PS2/PS3/PSP/PS VITA
  • multiMAN 04.19.06 - PSXNETEMU for PS1 BIN+CUE backups

    multiMAN developer Deank is back again with another update (04.19.06). This update includes support now for PSXNETEMU for PS1 BIN+CUE backups (Press [Triangle] -> Game Settings). This update can be downloaded below or the update is available via multiMAN directly. Checkout all the details for v04.19.06 below in the official release quote by deank:



    multiMAN 04.19.06 minor update is available online and in the web column.
    -------------------------------------

    * 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.

    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"
    multiMAN ver 04.19.06 UPD (20130211).zip (21.77MB) (CEX/DEX/STEALTH updates)
    Download multiMAN ver 04.19.06 UPD (20130211).zip

    D

    Download: multiMAN ver 04.19.06 UPD (20130211).zip (21.77MB) (CEX/DEX/STEALTH)
    Mirror: Brewology

    Source: Deank @ PSX-Scene









    PSX-SCENE: The Pinnacle Scene Xenocracy
    Nightbird, aldostools and COSMOS43 like this.
    Comments 1 Comment
    1. JOshISPoser's Avatar
      JOshISPoser -
      bumped again...weird.