diff --git a/zsnes/src/cpu/regsw.inc b/zsnes/src/cpu/regsw.inc index d823ad33..bbbfc5de 100644 --- a/zsnes/src/cpu/regsw.inc +++ b/zsnes/src/cpu/regsw.inc @@ -497,8 +497,11 @@ reg2102w: shr word[oamaddr],1 mov [oamaddr],al shl word[oamaddr],1 + or al,al + jz .skipstore mov bx,[oamaddr] mov [oamaddrs],bx +.skipstore cmp byte[nexthprior],1 je .priorset mov byte[objhipr],0 @@ -516,11 +519,18 @@ reg2102w: ; OAM address register reg2103w: + mov byte[debstop3],1 mov bl,al and bl,01h shr word[oamaddr],1 mov [oamaddr+1],bl shl word[oamaddr],1 + cmp word[oamaddr],200h + jne .notinvptr + mov bx,[oamaddrs] + dec bx + mov [oamaddr],bx +.notinvptr mov bx,[oamaddr] mov [oamaddrs],bx test al,80h @@ -534,6 +544,8 @@ reg2103w: ; OAM data register reg2104w: + mov byte[debstop3],1 + mov byte[NextLineCache],1 mov ebx,[oamaddr] inc dword[oamaddr] cmp ebx,544 @@ -921,31 +933,21 @@ reg2117w: ; Video port data (Low) reg2118: - cmp dword[vramaddr],0E000h - jb .skip - mov byte[debstop],1 -.skip mov ebx,[vramaddr] -; cmp [vrama+ebx],al -; je .nochange mov [vrama+ebx],al shr ebx,4 mov byte[vidmemch2+ebx],1 mov byte[vidmemch4+ebx],1 mov byte[vidmemch8+ebx],1 -.nochange ret reg2118inc: mov ebx,[vramaddr] -; cmp [vrama+ebx],al -; je .nochange mov [vrama+ebx],al shr ebx,4 mov byte[vidmemch2+ebx],1 mov byte[vidmemch4+ebx],1 mov byte[vidmemch8+ebx],1 -.nochange mov ebx,[addrincr] add [vramaddr],bx ret diff --git a/zsnes/src/vcache.asm b/zsnes/src/vcache.asm index 55b820c2..3f39b1e8 100644 --- a/zsnes/src/vcache.asm +++ b/zsnes/src/vcache.asm @@ -51,7 +51,7 @@ EXTSYM spritetablea,sprleftpr,sprlefttot,vcache4b EXTSYM objadds1,objadds2,objmovs1,objmovs2,tltype4b,vidmemch4,vram EXTSYM bgptr,bgptrc,bgptrd,curtileptr,vcache2b EXTSYM vcache8b,vidmemch8 -EXTSYM offsetmshl +EXTSYM offsetmshl,NextLineCache EXTSYM tltype2b,UpdateSoundAgain EXTSYM tltype8b,objwlrpos @@ -240,6 +240,7 @@ SaveRamSaved db 'SAVED SRAM DATA',0 NEWSYM CSprWinPtr, dd 0 NEWSYM cachevideo + mov byte[NextLineCache],0 mov dword[objwlrpos],0FFFFFFFFh mov dword[CSprWinPtr],0 mov byte[pressed],0