From 0f3c0a5507844fd59ed973801c2796420861d29d Mon Sep 17 00:00:00 2001 From: zsknight <> Date: Thu, 10 May 2001 02:51:04 +0000 Subject: [PATCH] Fixed MegamanX problem --- zsnes/src/cpu/memory.asm | 46 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 43 insertions(+), 3 deletions(-) diff --git a/zsnes/src/cpu/memory.asm b/zsnes/src/cpu/memory.asm index 7f3d2345..c93a4f93 100644 --- a/zsnes/src/cpu/memory.asm +++ b/zsnes/src/cpu/memory.asm @@ -37,7 +37,7 @@ EXTSYM ramsize,ramsizeand,sram EXTSYM ram7fa EXTSYM DosExit,invalid,invopcd,previdmode,printhex8 EXTSYM SA1Status,IRAM,CurBWPtr,SA1RAMArea -EXTSYM SA1Overflow +EXTSYM SA1Overflow,OBCEnable EXTSYM Sdd1Mode,Sdd1Bank,Sdd1Addr,Sdd1NewAddr,memtabler8,AddrNoIncr,SDD1BankA EXTSYM SPC7110Entries,spc7110romptr @@ -656,6 +656,38 @@ NEWSYM SprValAdd, db 0 C4Data dd 0 C4sprites dd 0 +NEWSYM InitOBC + pushad + mov esi,[romdata] + add esi,4096*1024 + mov [C4RamR],esi + mov [C4RamW],esi + mov [C4Ram],esi + add dword[C4RamW],8192*4 + add dword[C4Ram],8192*8 + mov ecx,8192 +.c4loop + mov dword[esi],OBCReadReg + mov dword[esi+8192*4],OBCWriteReg + mov dword[esi+8192*8],0 + add esi,4 + dec ecx + jnz .c4loop + popad + ret + +OBCReadReg: + add ecx,[C4Ram] + mov al,[ecx] + sub ecx,[C4Ram] + ret + +OBCWriteReg + add ecx,[C4Ram] + mov [ecx],al + sub ecx,[C4Ram] + ret + NEWSYM InitC4 pushad mov esi,[romdata] @@ -2378,6 +2410,8 @@ NEWSYM regaccessbankr8 je .sfxram cmp byte[C4Enable],1 je near .c4ram + cmp byte[OBCEnable],1 + je near .c4ram and ebx,7Fh cmp bl,10h jb .dsp1 @@ -2480,6 +2514,8 @@ NEWSYM regaccessbankr16 je .sfxram cmp byte[C4Enable],1 je near .c4ram + cmp byte[OBCEnable],1 + je near .c4ram and ebx,7Fh cmp bl,10h jb .dsp1 @@ -2578,6 +2614,8 @@ NEWSYM regaccessbankw8 je .sfxram cmp byte[C4Enable],1 je near .c4ram + cmp byte[OBCEnable],1 + je near .c4ram and ebx,7Fh cmp bl,10h jb .dsp1 @@ -2678,6 +2716,8 @@ NEWSYM regaccessbankw16 je .sfxram cmp byte[C4Enable],1 je near .c4ram + cmp byte[OBCEnable],1 + je near .c4ram and ebx,7Fh cmp bl,10h jb .dsp1 @@ -3683,7 +3723,7 @@ NEWSYM sramaccessbankr8b xor ebx,ebx ret .noaccess - xor al,al + mov al,0FFh xor ebx,ebx ret @@ -3701,7 +3741,7 @@ NEWSYM sramaccessbankr16b xor ebx,ebx ret .noaccess - xor ax,ax + mov ax,0FFFFh xor ebx,ebx ret