/* first Nop this mov.b since it screws up a comms transfer queue (they poke it for some unnecassary initialization) ROM:00003C90 DC 50 mov.l @(h'140,pc), r12 ; [00003DD4] = h'22400001 ROM:00003C92 2C 10 mov.b r1, @r12 BULLSHIT */ .long 0xAAAAAAAA /*****************************/ /* located at 0xCD54 in cart */ /*****************************/ sts.l pr, @-r15 mov.l r0, @-r15 mov.l r1, @-r15 mov.l r2, @-r15 mov.l @(status1,pc), r2 mov.b @r2, r0 and #1, r0 cmp/eq #1, r0 /* check status register ,if buffer empty exit */ bf nodata mov.l @(patch1,pc),r0 jsr @r0 nop nodata: mov.l @r15+, r2 mov.l @r15+, r1 mov.l @r15+, r0 lds.l @r15+, pr rts nop .align 4 status1: .long 0x22500001 patch1: .long 0x0200F000 .long 0xBBBBBBBB /************************************/ /* located at 0xF000 in cart (logo) */ /************************************/ mov.l r1, @-r15 /* save the argument register */ mov.l @(datain,pc), r2 mov.b @r2, r0 /* read */ cmp/eq #'I', r0 bf nopreamble mov.l @(dataout,pc),r1 mov #'D', r0 mov.b r0,@r1 /* clear buffer */ mov.l @(status,pc),r1 wait: mov.b @r1, r0 and #1, r0 cmp/eq #1, r0 bf wait mov.b @r2, r0 /* read */ cmp/eq #'N', r0 bf nopreamble mov.l @(dataout,pc),r2 mov #'O', r0 mov.b r0,@r2 /* clear buffer */ mov.l @r15+,r1 /* restore argument */ mov.l @(patch2,pc), r0 jmp @r0 /* jump to old code */ nop nopreamble: mov.l @r15+,r1 mov.l @(dataout,pc),r2 mov #0, r0 mov.b r0,@r2 /* clear buffer */ mov.l @r15+, r2 mov.l @r15+, r1 mov.l @r15+, r0 lds.l @r15+, pr rts nop .align 4 dataout: .long 0x22400001 status: .long 0x22500001 datain: .long 0x22600001 patch2: .long 0x0200CA94 .long 0xCCCCCCCC /***********************************************/ /*patch joystick reading rutines at 0x0436E+2 (0028346E+2 ram) */ /***********************************************/ /* mov.l r14, @-r15 */ sts.l pr, @-r15 mov.l @(joypatch,pc), r0 jmp @r0 mov r15, r14 joypatch: .long 0x0028e200 /*0x0200f100*/ .long 0xDDDDDDDD /***********************************************/ /* place this at 0x0F100 */ /***********************************************/ mov.l @(joyread,pc), r0 jsr @r0 nop extu.w r0, r0 mov.l @(okvalue,pc),r1 cmp/eq r1,r3 bf notready mov.l @(joyold,pc),r1 cmp/eq r1,r0 mov r0,r1 mova @(joyold,pc),r0 mov.l r1,@(0,r0) mov r1,r0 bf itsdiff notready: mov #0,r0 itsdiff: mov r14, r15 lds.l @r15+, pr rts mov.l @r15+, r14 .align 4 joyread: .long 0x002828F4 joyold: .long 0 okvalue: .long 0x020100025 .long 0xEEEEEEEE /* nop out this preamble check in the rom ROM:0200CAB6 D1 71 mov.l @(h'1C4,pc), r1 ; h'200CB9C ; check preamble ROM:0200CAB8 41 0B jsr @r1 ROM:0200CABA 00 09 nop */ /* delay for joypad (remove) 0028349C: ADD #$01,R1 0028349E: CMP/GT R9,R1 002834A0: BF $0028349C (000043A0: 8B FC ) <---NOP this (loops for 299994 instructions) */ /* 'D'=0x44 'O'=0x4F 'I'=0x49 'N'=0x4E */