From ead7ec8cb1e67c88c91c7243a4c6c2c4dcc673db Mon Sep 17 00:00:00 2001 From: pagefault <> Date: Mon, 17 Sep 2001 21:43:39 +0000 Subject: [PATCH] H-DMA fix --- zsnes/src/cpu/dma.asm | 8 +++++--- zsnes/src/init.asm | 45 ++----------------------------------------- 2 files changed, 7 insertions(+), 46 deletions(-) diff --git a/zsnes/src/cpu/dma.asm b/zsnes/src/cpu/dma.asm index bb72948f..c45e51ba 100644 --- a/zsnes/src/cpu/dma.asm +++ b/zsnes/src/cpu/dma.asm @@ -23,7 +23,7 @@ EXTSYM memtablew8,regptr EXTSYM dmadata EXTSYM hdmatype EXTSYM nexthdma -EXTSYM curhdma,curypos,disablehdma,hdmadata,hdmadelay,hdmaearlstart +EXTSYM curhdma,curypos,hdmadata,hdmadelay,hdmaearlstart EXTSYM resolutn EXTSYM memtabler16 @@ -771,6 +771,7 @@ NEWSYM setuphdma2 NEWSYM hdmastartsc, db 0 NEWSYM hdmarestart, db 0 +NEWSYM hdmaoff, db 0 NEWSYM reg420Cw @@ -778,8 +779,8 @@ NEWSYM reg420Cw mov bx,[resolutn] cmp word[curypos],bx jae near .nohdma - cmp byte[disablehdma],0 - jne near .nohdma + cmp byte[hdmaoff],1 + je near .nohdma ; jmp starthdma mov al,[curhdma] mov [nexthdma],al @@ -855,6 +856,7 @@ NEWSYM reg420Cw pop ebx ; call exechdma ; call exechdma + mov byte[hdmaoff],1 .nohdma mov byte[hdmarestart],0 ret diff --git a/zsnes/src/init.asm b/zsnes/src/init.asm index 67f6ae02..8cc02cb8 100644 --- a/zsnes/src/init.asm +++ b/zsnes/src/init.asm @@ -69,7 +69,7 @@ EXTSYM reg4read,resolutn,romdata,scrndis,spcBuffera,spcP,spcRam EXTSYM spcnumread,tableD,timeron,vidbright,DSPMem,OldGfxMode2 EXTSYM SPC700read,SPC700write,GUIDoReset,spc700read EXTSYM InitC4,SA1Reset,SetAddressingModesSA1,SetAddressingModes,SDD1BankA,SPC7110init -EXTSYM RTCinit,InitOBC +EXTSYM RTCinit,InitOBC,hdmaoff EXTSYM memaccessspc7110r8,memaccessspc7110r16,memaccessspc7110w8 EXTSYM memaccessspc7110w16 EXTSYM ram7f,snesmap2,snesmmap,sram,MultiTap @@ -1321,7 +1321,6 @@ NEWSYM StoreBuffer, times 128*32 db 0 SECTION .data NEWSYM execatzerovirq, db 0 -NEWSYM disablehdma, db 0 NEWSYM disableeffects, db 0 NEWSYM hdmaearlstart, db 0 NEWSYM hdmadelay, db 0 @@ -1454,7 +1453,6 @@ headerhack2: .mmx2head db 50,58,56,62,50,62,49,95,39,77,95,95,95,95,95,95,95,95,95,95 NEWSYM headerhack - mov byte[disablehdma],0 mov byte[Offby1line],0 mov byte[CacheCheckSkip],0 mov word[IRQHack],0 @@ -1618,30 +1616,6 @@ NEWSYM headerhack mov byte[opexec358],187 .notds9 - mov esi,[romdata] - add esi,0FFC0h - cmp dword[esi],'Baha' - jne .notbahamutlagoon - cmp dword[esi+4],'mut ' - jne .notbahamutlagoon - cmp dword[esi+8],'Lago' - jne .notbahamutlagoon - mov byte[disablehdma],1 -.notbahamutlagoon - - mov esi,[romdata] - add esi,07FC0h - cmp dword[esi],'MORT' - jne .notmk - cmp dword[esi+4],'AL K' - jne .notmk - cmp dword[esi+8],'OMBA' - jne .notmk - cmp dword[esi+12],'T ' - jne .notmk - mov byte[disablehdma],1 -.notmk - mov esi,[romdata] add esi,0FFC0h cmp dword[esi],'CLOC' @@ -1690,11 +1664,6 @@ NEWSYM headerhack mov byte[cycpblt],75 .nottuffenuff - cmp byte[DSP1Type],0 - je .notdis - mov byte[disablehdma],1 -.notdis - ; Here are the individual game hacks. Some of these probably can ; be removed since many of them were created very early in ZSNES ; development. @@ -1821,16 +1790,6 @@ NEWSYM headerhack mov byte[opexec358cph],44 .noromhead5 - ; PunchOut - Disable HDMA start in middle of screen - mov esi,[romdata] - add esi,07FC0h - mov edi,.pouthead - call Checkheadersame - cmp al,0 - jne .noromhead7 - mov byte[disablehdma],1 -.noromhead7 - ; Front Mission - -p 140 mov esi,[romdata] add esi,0FFC0h @@ -2121,7 +2080,6 @@ NEWSYM init65816 mov byte[prevoamptr],0FFh mov byte[execatzerovirq],0 - mov byte[disablehdma],0 mov byte[disableeffects],0 mov byte[dracxhack],0 mov al,[opexec268b] @@ -2170,6 +2128,7 @@ NEWSYM init65816 mov byte[NMIEnab],1 mov word[VIRQLoc],0 mov byte[doirqnext],0 + mov byte[hdmaoff],0 mov dword[reg1read],0 mov word[resolutn],224 mov byte[vidbright],0