More updates and fixes

This commit is contained in:
pagefault
2003-03-17 01:36:52 +00:00
parent d35231879b
commit 8aa021748b
5 changed files with 338 additions and 153 deletions

View File

@@ -37,7 +37,9 @@ NEWSYM DmaAsmStart
;******************************************************* ;*******************************************************
; DMA transfer register ; DMA transfer register
NEWSYM AddrNoIncr, db 0 section .bss
NEWSYM AddrNoIncr, resb 1
section .text
%macro ExecSPCCycles 0 %macro ExecSPCCycles 0
xor ebx,ebx xor ebx,ebx
@@ -220,6 +222,7 @@ NEWSYM transdma
mov byte[AddrNoIncr],0 mov byte[AddrNoIncr],0
ret ret
section .data
ALIGN32 ALIGN32
.curbank dd 0 .curbank dd 0
@@ -233,6 +236,7 @@ ALIGN32
.regptrd dd 0 .regptrd dd 0
.readaddr dd 0 .readaddr dd 0
.cebx dd 0 .cebx dd 0
section .text
NEWSYM transdmappu2cpu NEWSYM transdmappu2cpu
; set address increment value ; set address increment value
@@ -379,6 +383,7 @@ NEWSYM transdmappu2cpu
pop eax pop eax
ret ret
section .data
ALIGN32 ALIGN32
.curbank dd 0 .curbank dd 0
@@ -392,6 +397,7 @@ ALIGN32
.regptrd dd 0 .regptrd dd 0
.writeaddr dd 0 .writeaddr dd 0
.cebx dd 0 .cebx dd 0
section .text
%macro TestDMA 0 %macro TestDMA 0
%endmacro %endmacro
@@ -566,9 +572,11 @@ NEWSYM setuphdma
or [hdmatype],ah or [hdmatype],ah
ret ret
section .data
.addrwrite dw 0,0,0,0, 0,1,0,1, 0,0,0,0, 0,0,1,1, 0,1,2,3, 0,1,2,3, 0,1,2,3 .addrwrite dw 0,0,0,0, 0,1,0,1, 0,0,0,0, 0,0,1,1, 0,1,2,3, 0,1,2,3, 0,1,2,3
dw 0,1,2,3 dw 0,1,2,3
.addrnumt db 1,2,2,4,4,4,4,4 .addrnumt db 1,2,2,4,4,4,4,4
section .text
NEWSYM setuphdmars NEWSYM setuphdmars
push eax push eax
@@ -666,9 +674,11 @@ NEWSYM setuphdmars
pop eax pop eax
ret ret
section .data
.addrwrite dw 0,0,0,0, 0,1,0,1, 0,0,0,0, 0,0,1,1, 0,1,2,3, 0,1,2,3, 0,1,2,3 .addrwrite dw 0,0,0,0, 0,1,0,1, 0,0,0,0, 0,0,1,1, 0,1,2,3, 0,1,2,3, 0,1,2,3
dw 0,1,2,3 dw 0,1,2,3
.addrnumt db 1,2,2,4,4,4,4,4 .addrnumt db 1,2,2,4,4,4,4,4
section .text
NEWSYM setuphdma2 NEWSYM setuphdma2
push eax push eax
@@ -777,12 +787,17 @@ NEWSYM setuphdma2
and [nexthdma],ah and [nexthdma],ah
ret ret
section .data
.addrwrite dw 0,0,0,0, 0,1,0,1, 0,0,0,0, 0,0,1,1, 0,1,2,3, 0,1,2,3, 0,1,2,3 .addrwrite dw 0,0,0,0, 0,1,0,1, 0,0,0,0, 0,0,1,1, 0,1,2,3, 0,1,2,3, 0,1,2,3
dw 0,1,2,3 dw 0,1,2,3
.addrnumt db 1,2,2,4,4,4,4,4 .addrnumt db 1,2,2,4,4,4,4,4
NEWSYM hdmastartsc, db 0 section .bss
NEWSYM hdmarestart, db 0
NEWSYM hdmastartsc, resb 1
NEWSYM hdmarestart, resb 1
section .text
NEWSYM reg420Cw NEWSYM reg420Cw
@@ -1024,7 +1039,9 @@ NEWSYM dohdma
pop eax pop eax
ret ret
.tempdecr db 0 section .bss
.tempdecr resd 1
section .text
NEWSYM hdmatype2 NEWSYM hdmatype2
mov al,[edx+16] mov al,[edx+16]
@@ -1067,7 +1084,9 @@ NEWSYM hdmatype2
dec byte[esi+10] dec byte[esi+10]
ret ret
.tempdecr db 0 section .bss
.tempdecr resd 1
section .text
NEWSYM indirectaddr NEWSYM indirectaddr
push eax push eax
@@ -1128,7 +1147,7 @@ NEWSYM indirectaddr
mov bl,[esi+7] mov bl,[esi+7]
mov cx,[esi+5] ; increment/decrement/keep pointer location mov cx,[esi+5] ; increment/decrement/keep pointer location
add cx,3 add cx,3
call dword near [memtabler8+ebx*4] call dword near [memtabler8+ebx*4]
call dword near [edx+12] call dword near [edx+12]
jmp .finhdma jmp .finhdma
.nozero .nozero
@@ -1146,11 +1165,17 @@ NEWSYM indirectaddr
pop eax pop eax
ret ret
.tempdecr db 0 section .bss
.tempdecr resd 1
section .data
.fname2 db 9,'vram2.dat',0 .fname2 db 9,'vram2.dat',0
section .text
EXTSYM spcRam EXTSYM spcRam
section .data
NEWSYM ewj2hack, dd 0 NEWSYM ewj2hack, dd 0
section .text
NEWSYM hdmatype2indirect NEWSYM hdmatype2indirect
cmp dword [ewj2hack],1 cmp dword [ewj2hack],1
@@ -1243,8 +1268,10 @@ NEWSYM hdmatype2indirect
dec byte[esi+10] dec byte[esi+10]
ret ret
.dest dd 0 section .bss
.tempdecr db 0 .tempdecr resd 1
.dest resd 1
section .text
NEWSYM exechdma NEWSYM exechdma
cmp byte[hdmarestart],1 cmp byte[hdmarestart],1

View File

@@ -391,7 +391,7 @@ NEWSYM ResetExecStuff
mov dword[nmistatus],0 mov dword[nmistatus],0
mov byte[NextLineCache],0 mov byte[NextLineCache],0
mov dword[spcnumread],0 mov dword[spcnumread],0
mov dword[spchalted],-1 ; mov dword[spchalted],-1
mov dword[timer2upd],0 mov dword[timer2upd],0
mov dword[HIRQCycNext],0 mov dword[HIRQCycNext],0
mov byte[HIRQNextExe],0 mov byte[HIRQNextExe],0

View File

@@ -21,7 +21,7 @@ EXTSYM SPC7110Enable,initSPC7110regs,RTCEnable,RTCReset
EXTSYM curypos,cycpl,debuggeron,pdh EXTSYM curypos,cycpl,debuggeron,pdh
EXTSYM vram EXTSYM vram
EXTSYM romispal EXTSYM romispal
EXTSYM reg1read,spcnumread,spcon EXTSYM reg1read,spcnumread,spchalted,spcon
EXTSYM reg2read EXTSYM reg2read
EXTSYM reg3read EXTSYM reg3read
EXTSYM reg4read EXTSYM reg4read
@@ -30,6 +30,9 @@ EXTSYM snesmouse
EXTSYM cycphb,joycontren,totlines EXTSYM cycphb,joycontren,totlines
EXTSYM DosExit,invalid,numinst,previdmode,printhex,printnum EXTSYM DosExit,invalid,numinst,previdmode,printhex,printnum
%ifdef OPENSPC
EXTSYM SPC_PORT0W, SPC_PORT1W, SPC_PORT2W, SPC_PORT3W
%endif
@@ -505,6 +508,7 @@ NEWSYM initregr
ret ret
; global variables ; global variables
SECTION .data ;ALIGN=32
NEWSYM invreg, dw 0 NEWSYM invreg, dw 0
NEWSYM sndrot, db 0 ; rotates to use A,X or Y for sound skip NEWSYM sndrot, db 0 ; rotates to use A,X or Y for sound skip
NEWSYM sndrot2, db 0 ; rotates a random value for sound skip NEWSYM sndrot2, db 0 ; rotates a random value for sound skip
@@ -712,6 +716,8 @@ NEWSYM nssdip4, db 0
NEWSYM nssdip5, db 0 NEWSYM nssdip5, db 0
NEWSYM nssdip6, db 0 NEWSYM nssdip6, db 0
SECTION .text
NEWSYM ClearRegs NEWSYM ClearRegs
mov word[VIRQLoc],0 mov word[VIRQLoc],0
mov word[bg1ptr],0 mov word[bg1ptr],0
@@ -984,11 +990,16 @@ reg213Fr:
; Sound Reg #1 ; Sound Reg #1
reg2140r: reg2140r:
%ifdef OPENSPC
mov al,[SPC_PORT0W]
ret
%else
cmp byte[spcon],0 cmp byte[spcon],0
je .nosound je .nosound
inc dword[SPC700read] inc dword[SPC700read]
mov al,[reg1read] mov al,[reg1read]
mov byte[spcnumread],0 mov dword[spcnumread],0
; mov dword[spchalted],-1
ret ret
.nosound .nosound
; Find for D0 ; Find for D0
@@ -1020,14 +1031,20 @@ reg2140r:
mov al,[xa] mov al,[xa]
.n .n
ret ret
%endif
; Sound Reg #2 ; Sound Reg #2
reg2141r: reg2141r:
%ifdef OPENSPC
mov al,[SPC_PORT1W]
ret
%else
cmp byte[spcon],0 cmp byte[spcon],0
je .nosound je .nosound
inc dword[SPC700read] inc dword[SPC700read]
mov al,[reg2read] mov al,[reg2read]
mov byte[spcnumread],0 mov dword[spcnumread],0
; mov dword[spchalted],-1
ret ret
.nosound .nosound
; Find for D0 ; Find for D0
@@ -1051,14 +1068,20 @@ reg2141r:
mov al,[xa] mov al,[xa]
.n .n
ret ret
%endif
; Sound Reg #3 ; Sound Reg #3
reg2142r: reg2142r:
%ifdef OPENSPC
mov al,[SPC_PORT2W]
ret
%else
cmp byte[spcon],0 cmp byte[spcon],0
je .nosound je .nosound
inc dword[SPC700read] inc dword[SPC700read]
mov al,[reg3read] mov al,[reg3read]
mov byte[spcnumread],0 mov dword[spcnumread],0
; mov dword[spchalted],-1
ret ret
.nosound .nosound
; Find for D0 ; Find for D0
@@ -1081,14 +1104,20 @@ reg2142r:
mov al,[xa+1] mov al,[xa+1]
.n .n
ret ret
%endif
; Sound Reg #4 ; Sound Reg #4
reg2143r: reg2143r:
%ifdef OPENSPC
mov al,[SPC_PORT3W]
ret
%else
cmp byte[spcon],0 cmp byte[spcon],0
je .nosound je .nosound
inc dword[SPC700read] inc dword[SPC700read]
mov al,[reg4read] mov al,[reg4read]
mov byte[spcnumread],0 mov dword[spcnumread],0
; mov dword[spchalted],-1
ret ret
.nosound .nosound
; Find for D0 ; Find for D0
@@ -1107,6 +1136,7 @@ reg2143r:
.notfound .notfound
mov al,[xa+1] mov al,[xa+1]
ret ret
%endif
reg2144r: reg2144r:
xor al,al xor al,al
@@ -1136,7 +1166,10 @@ reg4016r:
rol dword[JoyANow],1 rol dword[JoyANow],1
ret ret
NEWSYM MultiTap, db 0 SECTION .bss ;ALIGN=32
NEWSYM MultiTap, resb 1
SECTION .text
; Joystick Data for controller 2 and 4 ; Joystick Data for controller 2 and 4
reg4017r: reg4017r:
cmp byte[snesmouse],0 cmp byte[snesmouse],0
@@ -1242,6 +1275,10 @@ reg4211r:
.nohblank .nohblank
ret ret
SECTION .bss
NEWSYM hblank, resb 1
SECTION .text
; H/V Blank Flag & Joystick Controller Enable Flag ; H/V Blank Flag & Joystick Controller Enable Flag
; bit 7 = vblank, 0=out,1=in, bit 6 = hblank, 0=out,1=in, bit 0 = joystick on ; bit 7 = vblank, 0=out,1=in, bit 6 = hblank, 0=out,1=in, bit 0 = joystick on
reg4212r: reg4212r:
@@ -1275,8 +1312,10 @@ reg4212r:
or al,80h or al,80h
; jmp .nohblank ; jmp .nohblank
.novbl .novbl
mov byte[hblank],0
cmp dh,[cycphb] cmp dh,[cycphb]
jae .nohblank jae .nohblank
mov byte[hblank],1
or al,40h or al,40h
.nohblank .nohblank
test byte[INTEnab],01h test byte[INTEnab],01h
@@ -1464,6 +1503,8 @@ regINVALID: ; Invalid Register
call printnum call printnum
jmp DosExit jmp DosExit
SECTION .data ;ALIGN=32
.invalidreg db 'Invalid Read Register : $' .invalidreg db 'Invalid Read Register : $'
SECTION .text

View File

@@ -32,14 +32,17 @@ EXTSYM opexec358,opexec358cph
EXTSYM hdmarestart EXTSYM hdmarestart
EXTSYM printhex8 EXTSYM printhex8
%ifdef OPENSPC
EXTSYM SPC_PORT0R, SPC_PORT1R, SPC_PORT2R, SPC_PORT3R
%endif
SECTION .bss ;ALIGN=32
NEWSYM testgfxv1, db 0 NEWSYM testgfxv1, resb 1
NEWSYM testgfxv2, db 0 NEWSYM testgfxv2, resb 1
SECTION .text
NEWSYM initregw NEWSYM initregw
; Fill register pointer with invalid register accesses ; Fill register pointer with invalid register accesses
@@ -444,7 +447,9 @@ reg2100w:
and byte[forceblnk],80h and byte[forceblnk],80h
ret ret
NEWSYM prevoamptr, db 0 SECTION .bss ;ALIGN=32
NEWSYM prevoamptr, resb 1
SECTION .text
; OAM size register ; OAM size register
reg2101w: reg2101w:
@@ -487,6 +492,7 @@ reg2101w:
.noproc .noproc
ret ret
SECTION .data ;ALIGN=32
.objsize1 db 1,1,1,4,4,16,1,1 .objsize1 db 1,1,1,4,4,16,1,1
.objsize2 db 4,16,64,16,64,64,4,4 .objsize2 db 4,16,64,16,64,64,4,4
.objmovs1 db 2,2,2,2,2,4,2,2 .objmovs1 db 2,2,2,2,2,4,2,2
@@ -494,7 +500,9 @@ reg2101w:
.objadds1 dw 14,14,14,14,14,12,14,14 .objadds1 dw 14,14,14,14,14,12,14,14
.objadds2 dw 14,12,8,12,8,8,14,14 .objadds2 dw 14,12,8,12,8,8,14,14
NEWSYM oamlow, db 0 SECTION .bss ;ALIGN=32
NEWSYM oamlow, resb 1
SECTION .text
; OAM address register ; OAM address register
reg2102w: reg2102w:
@@ -798,7 +806,9 @@ reg210Ew:
mov byte[bg1scroly+1],al mov byte[bg1scroly+1],al
ret ret
bgscroltemp db 0 SECTION .bss ;ALIGN=32
bgscroltemp resb 1
SECTION .text
; BG2 horizontal scroll register ; BG2 horizontal scroll register
reg210Fw: reg210Fw:
@@ -1124,7 +1134,9 @@ reg211Aw:
mov [mode7set],al mov [mode7set],al
ret ret
SECTION .data ;ALIGN=32
NEWSYM multchange, db 1 NEWSYM multchange, db 1
SECTION .text
; COS (COSINE) rotate angle / X Expansion ; COS (COSINE) rotate angle / X Expansion
reg211Bw: reg211Bw:
@@ -1328,7 +1340,9 @@ reg2133w:
mov word[resolutn],239 mov word[resolutn],239
ret ret
NEWSYM CleartheScreen, db 0 SECTION .bss ;ALIGN=32
NEWSYM CleartheScreen, resb 1
SECTION .text
; Sound Register #1 ; Sound Register #1
reg2140w: reg2140w:
@@ -1337,9 +1351,13 @@ reg2140w:
jne .n jne .n
mov byte[nmirept],0 mov byte[nmirept],0
.n .n
%ifdef OPENSPC
mov byte[SPC_PORT0R],al
%else
mov byte[spcRam+0F4h],al mov byte[spcRam+0F4h],al
inc dword[SPC700write] inc dword[SPC700write]
reenablespc reenablespc
%endif
ret ret
; cmp dword[cycpbl],0FFFFh ; cmp dword[cycpbl],0FFFFh
; ja .spcreset ; ja .spcreset
@@ -1351,9 +1369,13 @@ reg2140w:
; Sound Register #2 ; Sound Register #2
reg2141w: reg2141w:
mov byte[sndwrit],1 mov byte[sndwrit],1
%ifdef OPENSPC
mov byte[SPC_PORT1R],al
%else
mov byte[spcRam+0F5h],al mov byte[spcRam+0F5h],al
inc dword[SPC700write] inc dword[SPC700write]
reenablespc reenablespc
%endif
ret ret
; cmp dword[cycpbl],0FFFFh ; cmp dword[cycpbl],0FFFFh
; ja .spcreset ; ja .spcreset
@@ -1365,9 +1387,13 @@ reg2141w:
; Sound Register #3 ; Sound Register #3
reg2142w: reg2142w:
mov byte[sndwrit],1 mov byte[sndwrit],1
%ifdef OPENSPC
mov byte[SPC_PORT2R],al
%else
mov byte[spcRam+0F6h],al mov byte[spcRam+0F6h],al
inc dword[SPC700write] inc dword[SPC700write]
reenablespc reenablespc
%endif
ret ret
; cmp dword[cycpbl],0FFFFh ; cmp dword[cycpbl],0FFFFh
; ja .spcreset ; ja .spcreset
@@ -1379,9 +1405,13 @@ reg2142w:
; Sound Register #4 ; Sound Register #4
reg2143w: reg2143w:
mov byte[sndwrit],1 mov byte[sndwrit],1
%ifdef OPENSPC
mov byte[SPC_PORT3R],al
%else
mov byte[spcRam+0F7h],al mov byte[spcRam+0F7h],al
inc dword[SPC700write] inc dword[SPC700write]
reenablespc reenablespc
%endif
ret ret
; cmp dword[cycpbl],0FFFFh ; cmp dword[cycpbl],0FFFFh
; ja .spcreset ; ja .spcreset
@@ -1417,7 +1447,9 @@ reg2183w:
ret ret
; Joystick 1 & 2 status bytes ; Joystick 1 & 2 status bytes
NEWSYM MultiTapStat, db 0 SECTION .bss ;ALIGN=32
NEWSYM MultiTapStat, resb 1
SECTION .text
reg4016w: reg4016w:
test byte[INTEnab],1 test byte[INTEnab],1
@@ -1831,7 +1863,11 @@ regexiter:
call printnum call printnum
jmp DosExit jmp DosExit
SECTION .data ;ALIGN=32
.invalidreg db 'Invalid Write Register : $' .invalidreg db 'Invalid Write Register : $'
.invalidaddr db ' at address $' .invalidaddr db ' at address $'
.invbank db 0
.invaddr db 0 SECTION .bss ;ALIGN=32
.invbank resb 1
.invaddr resb 1
SECTION .text

View File

@@ -66,7 +66,7 @@ EXTSYM nmirept,nmistatus,opexec268,opexec268b,opexec268cph
EXTSYM opexec268cphb,opexec358,opexec358b,opexec358cph,spcextraram EXTSYM opexec268cphb,opexec358,opexec358b,opexec358cph,spcextraram
EXTSYM opexec358cphb,prevoamptr,reg1read,reg2read,reg3read EXTSYM opexec358cphb,prevoamptr,reg1read,reg2read,reg3read
EXTSYM reg4read,resolutn,romdata,scrndis,spcBuffera,spcP,spcRam EXTSYM reg4read,resolutn,romdata,scrndis,spcBuffera,spcP,spcRam
EXTSYM spcnumread,tableD,timeron,vidbright,DSPMem,OldGfxMode2 EXTSYM spcnumread,spchalted,tableD,timeron,vidbright,DSPMem,OldGfxMode2
EXTSYM SPC700read,SPC700write,GUIDoReset,spc700read EXTSYM SPC700read,SPC700write,GUIDoReset,spc700read
EXTSYM InitC4,SA1Reset,SetAddressingModesSA1,SetAddressingModes,SDD1BankA,SPC7110init EXTSYM InitC4,SA1Reset,SetAddressingModesSA1,SetAddressingModes,SDD1BankA,SPC7110init
EXTSYM RTCinit,InitOBC EXTSYM RTCinit,InitOBC
@@ -223,13 +223,14 @@ NEWSYM init
xor edx,edx xor edx,edx
mov al,[MusicRelVol] mov al,[MusicRelVol]
shl eax,7 shl eax,7
mov ebx,100 mov ebx,0A3D70A3Dh
div ebx mul ebx
cmp al,127 shr edx,6
cmp dl,127
jb .noof jb .noof
mov al,127 mov dl,127
.noof .noof
mov [MusicVol],al mov [MusicVol],dl
; FIX STATMAT ; FIX STATMAT
; Here's the auto-load ZST file stuff ; Here's the auto-load ZST file stuff
@@ -406,7 +407,7 @@ NEWSYM cycpb358, db 149 ; 155
NEWSYM cycpbl2, db 109 ; percentage left of CPU/SPC to run (3.58 = 175) NEWSYM cycpbl2, db 109 ; percentage left of CPU/SPC to run (3.58 = 175)
NEWSYM cycpblt2, db 149 ; percentage of CPU/SPC to run NEWSYM cycpblt2, db 149 ; percentage of CPU/SPC to run
NEWSYM writeon, db 0 ; Write enable/disable on snes rom memory NEWSYM writeon, db 0 ; Write enable/disable on snes rom memory
NEWSYM totlines, dw 262 ; total # of lines NEWSYM totlines, dw 263 ; total # of lines
NEWSYM soundon, db 0 ; Current sound enabled (1=enabled) NEWSYM soundon, db 0 ; Current sound enabled (1=enabled)
NEWSYM zsmesg, db 'ZSNES Save State File V0.6',26 NEWSYM zsmesg, db 'ZSNES Save State File V0.6',26
NEWSYM versn, db 60 ; version #/100 NEWSYM versn, db 60 ; version #/100
@@ -585,29 +586,29 @@ NEWSYM Setper2exec
; Read Input Device Reads from Keyboard, etc. ; Read Input Device Reads from Keyboard, etc.
;******************************************************* ;*******************************************************
SECTION .data SECTION .bss
NEWSYM WhichSW, db 0 NEWSYM WhichSW, resb 1
NEWSYM WhichGR, db 0 NEWSYM WhichGR, resb 1
NEWSYM autofr, db 0 NEWSYM autofr, resb 1
TurboCB db 0 TurboCB resb 1
NEWSYM MovieTemp, db 0 NEWSYM MovieTemp, resb 1
NEWSYM JoyAOrig, dd 0 NEWSYM JoyAOrig, resd 1
NEWSYM JoyBOrig, dd 0 NEWSYM JoyBOrig, resd 1
NEWSYM JoyCOrig, dd 0 NEWSYM JoyCOrig, resd 1
NEWSYM JoyDOrig, dd 0 NEWSYM JoyDOrig, resd 1
NEWSYM JoyEOrig, dd 0 NEWSYM JoyEOrig, resd 1
NEWSYM JoyANow, dd 0 NEWSYM JoyANow, resd 1
NEWSYM JoyBNow, dd 0 NEWSYM JoyBNow, resd 1
NEWSYM JoyCNow, dd 0 NEWSYM JoyCNow, resd 1
NEWSYM JoyDNow, dd 0 NEWSYM JoyDNow, resd 1
NEWSYM JoyENow, dd 0 NEWSYM JoyENow, resd 1
NEWSYM PJoyAOrig, dd 0 NEWSYM PJoyAOrig, resd 1
NEWSYM PJoyBOrig, dd 0 NEWSYM PJoyBOrig, resd 1
NEWSYM PJoyCOrig, dd 0 NEWSYM PJoyCOrig, resd 1
NEWSYM PJoyDOrig, dd 0 NEWSYM PJoyDOrig, resd 1
NEWSYM PJoyEOrig, dd 0 NEWSYM PJoyEOrig, resd 1
NEWSYM LethEnData, dd 0 NEWSYM LethEnData, resd 1
SECTION .text SECTION .text
%macro PlayerDeviceHelp 3 %macro PlayerDeviceHelp 3
@@ -682,7 +683,8 @@ SECTION .text
je %%startprogress je %%startprogress
%%nopress %%nopress
add eax,66 add eax,66
loop %%loop dec ecx
jnz %%loop
jmp %%endcomb jmp %%endcomb
%%startprogress %%startprogress
mov byte[pressed+ebx],2 mov byte[pressed+ebx],2
@@ -1355,15 +1357,20 @@ NEWSYM ProcessMovies
call .writebuffertodisk call .writebuffertodisk
ret ret
SECTION .data
.movieended db 'MOVIE FINISHED.',0 .movieended db 'MOVIE FINISHED.',0
NEWSYM MovieBuffSize, dd 0
NEWSYM MovieBuffFrame, dd 0
MovieBuffer times 21*60 dd 0
NEWSYM CFWriteStart, dd 64+30 NEWSYM CFWriteStart, dd 64+30
NEWSYM CReadHead, dd 0
NEWSYM ReadHead, dd 0 SECTION .bss
NEWSYM CFWriteHead, dd 0 NEWSYM MovieBuffSize, resd 1
NEWSYM StoreBuffer, times 128*32 db 0 NEWSYM MovieBuffFrame, resd 1
MovieBuffer resd 21*60
NEWSYM CReadHead, resd 1
NEWSYM ReadHead, resd 1
NEWSYM CFWriteHead, resd 1
NEWSYM StoreBuffer, resb 128*32
;******************************************************* ;*******************************************************
; Init 65816 Initializes the Registers ; Init 65816 Initializes the Registers
;******************************************************* ;*******************************************************
@@ -1498,7 +1505,9 @@ headerhack2:
.nokingofrally .nokingofrally
ret ret
SECTION .data
.mmx2head db 50,58,56,62,50,62,49,95,39,77,95,95,95,95,95,95,95,95,95,95 .mmx2head db 50,58,56,62,50,62,49,95,39,77,95,95,95,95,95,95,95,95,95,95
SECTION .text
EXTSYM ewj2hack EXTSYM ewj2hack
EXTSYM latchyr EXTSYM latchyr
@@ -1747,16 +1756,16 @@ NEWSYM headerhack
mov byte[esi+1],0BCh ; RTS instead of jumping to a rts mov byte[esi+1],0BCh ; RTS instead of jumping to a rts
.nothomealone .nothomealone
mov esi,[romdata] ; mov esi,[romdata]
add esi,0FFC0h ; add esi,0FFC0h
cmp dword[esi],'EMER' ; cmp dword[esi],'EMER'
jne .notemeralddragon ; jne .notemeralddragon
cmp dword[esi+4],'ALD ' ; cmp dword[esi+4],'ALD '
jne .notemeralddragon ; jne .notemeralddragon
cmp dword[esi+8],'DRAG' ; cmp dword[esi+8],'DRAG'
jne .notemeralddragon ; jne .notemeralddragon
mov byte[ENVDisable],1 ; mov byte[ENVDisable],1
.notemeralddragon ;.notemeralddragon
mov esi,[romdata] mov esi,[romdata]
add esi,7FC0h add esi,7FC0h
@@ -2124,6 +2133,8 @@ NEWSYM headerhack
.noromheaddk .noromheaddk
ret ret
SECTION .data
.ewj2head db 58,62,45,43,55,40,48,45,50,95,53,54,50,95,77,95,95,95,95,95 .ewj2head db 58,62,45,43,55,40,48,45,50,95,53,54,50,95,77,95,95,95,95,95
.bubshead db 61,10,29,12,06,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95 .bubshead db 61,10,29,12,06,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95
.btvdhead db 61,62,43,43,51,58,43,48,62,59,44,95,59,81,59,81,95,95,95,95 .btvdhead db 61,62,43,43,51,58,43,48,62,59,44,95,59,81,59,81,95,95,95,95
@@ -2136,6 +2147,7 @@ NEWSYM headerhack
.adm3head db 62,59,59,62,50,44,95,57,62,50,54,51,38,95,41,62,51,42,58,44 .adm3head db 62,59,59,62,50,44,95,57,62,50,54,51,38,95,41,62,51,42,58,44
.fmishead db 57,13,16,17,11,95,50,22,12,12,22,16,17,95,87,58,86,95,95,95 .fmishead db 57,13,16,17,11,95,50,22,12,12,22,16,17,95,87,58,86,95,95,95
SECTION .text
NEWSYM idledetectspc NEWSYM idledetectspc
@@ -2151,13 +2163,15 @@ NEWSYM idledetectspc
mov eax,[MsgCount] mov eax,[MsgCount]
mov [MessageOn],eax mov [MessageOn],eax
ret ret
.unableskip db 'SPC700 STALL DETECTED.',0
SECTION .data SECTION .data
NEWSYM ReturnFromSPCStall, db 0 .unableskip db 'SPC700 STALL DETECTED.',0
NEWSYM SPCStallSetting, db 0
NEWSYM SPCSkipXtraROM, db 0 SECTION .bss
NEWSYM WindowDisables, dd 0 NEWSYM ReturnFromSPCStall, resb 1
NEWSYM SPCStallSetting, resb 1
NEWSYM SPCSkipXtraROM, resb 1
NEWSYM WindowDisables, resd 1
SECTION .text SECTION .text
%macro helpclearmem 2 %macro helpclearmem 2
@@ -2327,7 +2341,8 @@ NEWSYM init65816
mov byte [reg3read],0 mov byte [reg3read],0
mov byte [reg4read],0 mov byte [reg4read],0
mov dword[cycpbl],0 mov dword[cycpbl],0
mov byte[spcnumread],0 mov dword[spcnumread],0
mov dword[spchalted],-1
mov dword[coladdr],0 mov dword[coladdr],0
mov byte[NMIEnab],1 mov byte[NMIEnab],1
mov word[VIRQLoc],0 mov word[VIRQLoc],0
@@ -2481,7 +2496,9 @@ NEWSYM init65816
mov dword[wramwriteptr],setwram1fff mov dword[wramwriteptr],setwram1fff
ret ret
SECTION .data
.boffound db '.....',0 .boffound db '.....',0
SECTION .text
getwram1fff: getwram1fff:
mov al,[wramdataa+1fffh] mov al,[wramdataa+1fffh]
@@ -2500,11 +2517,11 @@ setwram1fff:
; Bank 7E : WRAM (0000h-FFFFh) ; Bank 7E : WRAM (0000h-FFFFh)
; Bank 7F : ExtendRAM (0000h-FFFFh) ; Bank 7F : ExtendRAM (0000h-FFFFh)
SECTION .data SECTION .bss
NEWSYM curromsize, db 0 NEWSYM curromsize, resb 1
NEWSYM cromptradd, dd 0 NEWSYM cromptradd, resd 1
NEWSYM NoiseDisTemp, dd 0,0 NEWSYM NoiseDisTemp, resd 2
NEWSYM lorommapmode2, db 0 NEWSYM lorommapmode2, resb 1
SECTION .text SECTION .text
NEWSYM initsnes NEWSYM initsnes
@@ -3719,7 +3736,9 @@ NEWSYM printhex
jnz .loopa jnz .loopa
ret ret
SECTION .data
.hexdat db '0123456789ABCDEF' .hexdat db '0123456789ABCDEF'
SECTION .text
NEWSYM printhex8 NEWSYM printhex8
mov ecx,2 mov ecx,2
@@ -3728,7 +3747,7 @@ NEWSYM printhex8
mov bx,ax mov bx,ax
and bx,0F0h and bx,0F0h
shr bx,4 shr bx,4
mov dl,[.hexdat+ebx] mov dl,[printhex.hexdat+ebx]
push ax push ax
mov ah,02h mov ah,02h
call Output_Text call Output_Text
@@ -3738,7 +3757,31 @@ NEWSYM printhex8
jnz .loopb jnz .loopb
ret ret
.hexdat db '0123456789ABCDEF' ;EXTSYM _imp__OutputDebugStringA@4
;NEWSYM printhex32
; pushf
; mov ecx,8
;.loopa
; mov ebx,eax
; and ebx,0Fh
; mov dl,[printhex.hexdat+ebx]
; mov [.hexout-1+ecx],dl
; shr eax,4
; dec ecx
; jnz .loopa
; push dword .hexout
; call [_imp__OutputDebugStringA@4]
; popf
; db 0C3h ; ret
;section .bss
;NEWSYM __debug_crap_address__, dd 0,0,0,0
;.hexout db "blahblah",0
;section .text
;******************************************************* ;*******************************************************
; Load File ; Load File
;******************************************************* ;*******************************************************
@@ -3768,7 +3811,10 @@ NEWSYM RetrieveDataIPS
inc ecx inc ecx
ret ret
IPSSL dd 0
SECTION .bss
IPSSL resd 1
SECTION .text
NEWSYM PatchIPS NEWSYM PatchIPS
%ifdef __LINUX__ %ifdef __LINUX__
@@ -3941,25 +3987,28 @@ NEWSYM PatchIPS
;.ltop ;.ltop
; mov byte[esi+edx],0 ; mov byte[esi+edx],0
; inc edx ; inc edx
; loop .ltop ; dec ecx
; jnz .ltop
%ifdef __LINUX__ %ifdef __LINUX__
pushad pushad
call popdir call popdir
popad popad
%endif %endif
ret ret
SECTION .data
.ipsokaymsg db 'IPS PATCHED.',0 .ipsokaymsg db 'IPS PATCHED.',0
.ipsnokaymsg db 'IPS IS CORRUPT.',0 .ipsnokaymsg db 'IPS IS CORRUPT.',0
section .data SECTION .bss
NEWSYM Header512, db 0 NEWSYM Header512, resb 1
NEWSYM Prevextn, dd 0 NEWSYM Prevextn, resd 1
NEWSYM Headchek, db 0,0,0,0,0 NEWSYM Headchek, resb 5
NEWSYM IPSLimit, dd 0 NEWSYM IPSLimit, resd 1
NEWSYM IPSOffset, dd 0 NEWSYM IPSOffset, resd 1
NEWSYM IPSCount, dd 0 NEWSYM IPSCount, resd 1
IPSPatched db 0 IPSPatched resb 1
section .text SECTION .text
OpenCombFile: OpenCombFile:
mov edx,fnames+1 mov edx,fnames+1
@@ -4057,37 +4106,42 @@ NEWSYM loadfile
jmp loadfileGUI.nogui jmp loadfileGUI.nogui
SECTION .data SECTION .data
.multfound db 0
.first db 0
.cchar db 0
.dotpos dd 0
.curfileofs dd 0
.filehand dw 0
.failop db 'Error opening file!',13,10,0 .failop db 'Error opening file!',13,10,0
.opened db 'File opened successfully!',13,10,0 .opened db 'File opened successfully!',13,10,0
.mult db 'Multiple file format detected.',13,10,13,10,0 .mult db 'Multiple file format detected.',13,10,13,10,0
.temp db 0 SECTION .bss
.fail db 0 .multfound resb 1
.first resb 1
.cchar resb 1
.dotpos resd 1
.curfileofs resd 1
.filehand resw 1
.temp resb 1
.fail resb 1
NEWSYM Checksumvalue, dw 0 NEWSYM Checksumvalue, resw 1
NEWSYM Checksumvalue2, dw 0 NEWSYM Checksumvalue2, resw 1
NEWSYM SramExists, db 0 NEWSYM SramExists, resb 1
NEWSYM NumofBanks, dd 0 NEWSYM NumofBanks, resd 1
NEWSYM NumofBytes, dd 0 NEWSYM NumofBytes, resd 1
NEWSYM ZipSupport, db 0 NEWSYM ZipSupport, resb 1
InGUI db 0 InGUI resb 1
SECTION .data
%ifdef __LINUX__ %ifdef __LINUX__
tempdirname db '/tmp/zziptmp',0 tempdirname db '/tmp/zziptmp',0
%else %else
tempdirname db 'zziptmp_.__z',0 tempdirname db 'zziptmp_.__z',0
%endif %endif
PrevDir db '..',0 PrevDir db '..',0
SECTION .text
GUIfindBlank db '*.',0 GUIfindBlank db '*.',0
SECTION .text
%macro UnZipSearch 1 %macro UnZipSearch 1
mov cx,20h mov cx,20h
mov edx,%1 mov edx,%1
@@ -4099,9 +4153,13 @@ GUIfindBlank db '*.',0
%%notfound %%notfound
%endmacro %endmacro
SECTION .data
InvalidZip db 'ZSNES Version A does not support .ZIP files.',13,10,'Please use Version C for this feature.',10,13,0 InvalidZip db 'ZSNES Version A does not support .ZIP files.',13,10,'Please use Version C for this feature.',10,13,0
ZipError db 0 SECTION .bss
ZipError resb 1
SECTION .text
UnZipFile: UnZipFile:
; cmp byte[OSPort],1 ; cmp byte[OSPort],1
@@ -4271,7 +4329,9 @@ ZipDelete:
call Makemode7Table call Makemode7Table
ret ret
tempzip db 0 SECTION .bss
tempzip resb 1
SECTION .text
ZipDeleteRecurse: ZipDeleteRecurse:
; Find all directories ; Find all directories
@@ -4343,15 +4403,14 @@ ZipDeleteRecurse:
.notfound .notfound
ret ret
SPC7110Allocated db 0 SECTION .data
SPC7110DIRA db 'FEOEZSP7',0 SPC7110DIRA db 'FEOEZSP7',0
SPC7110DIRB db 'SMHT-SP7',0 SPC7110DIRB db 'SMHT-SP7',0
SDD1DIRA db 'SOCNSDD1',0 SDD1DIRA db 'SOCNSDD1',0
SDD1DIRB db 'SFA2SDD1',0 SDD1DIRB db 'SFA2SDD1',0
SPC7110IndexName db 'index.bin',0 SPC7110IndexName db 'index.bin',0
SPC7110DirEntry db '*.bin',0 SPC7110DirEntry db '*.bin',0
SPC7110CPtr dd 0
SPC7110CPtr2 dd 0
NEWSYM SDD1Offset, dd 65536*8 NEWSYM SDD1Offset, dd 65536*8
%ifndef __LINUX__ %ifndef __LINUX__
NEWSYM SDD1nfname, db ' \_00000-0.bin',0 NEWSYM SDD1nfname, db ' \_00000-0.bin',0
@@ -4363,13 +4422,21 @@ NEWSYM SPC7110nfname, db ' / .bin',0
NEWSYM SDD1ifname, db 'sdd1gfx.idx',0 NEWSYM SDD1ifname, db 'sdd1gfx.idx',0
NEWSYM SDD1dfname, db 'sdd1gfx.dat',0 NEWSYM SDD1dfname, db 'sdd1gfx.dat',0
NEWSYM SDD1pfname, db 'sdd1gfx.pat',0 NEWSYM SDD1pfname, db 'sdd1gfx.pat',0
NEWSYM SPC7110IndexSize, dd 0
NEWSYM SPC7110Entries, dd 0
spc7110notfound db 'DECOMPRESSED PACK NOT FOUND',0 spc7110notfound db 'DECOMPRESSED PACK NOT FOUND',0
spc7110notfoundb db 'INDEX DATA NOT FOUND',0 spc7110notfoundb db 'INDEX DATA NOT FOUND',0
SDD1PatchAddr dd 0
SDD1PatchOfs dd 0 SECTION .bss
SDD1PatchLen dd 0
SPC7110Allocated resb 1
SPC7110CPtr resd 1
SPC7110CPtr2 resd 1
NEWSYM SPC7110IndexSize, resd 1
NEWSYM SPC7110Entries, resd 1
SDD1PatchAddr resd 1
SDD1PatchOfs resd 1
SDD1PatchLen resd 1
SECTION .text
EXTSYM sdd1fname EXTSYM sdd1fname
@@ -5111,8 +5178,13 @@ NEWSYM loadfileGUI
jmp near .notwiz4 jmp near .notwiz4
.romtable times 128 db 0 SECTION .bss
.romtableb times 128 db 0
.romtable resb 128
.romtableb resb 128
SECTION .text
.notwiz4 .notwiz4
jmp .skipall jmp .skipall
@@ -5290,20 +5362,23 @@ NEWSYM loadfileGUI
jmp DosExit jmp DosExit
SECTION .data SECTION .data
.multfound db 0
.first db 0
.cchar db 0
.dotpos dd 0
.curfileofs dd 0
.filehand dw 0
.temp db 0
.fail db 0
.failop db 'Error opening file!',13,10,0 .failop db 'Error opening file!',13,10,0
.opened db 'File opened successfully!',13,10,0 .opened db 'File opened successfully!',13,10,0
.mult db 'Multiple file format detected.',13,10,13,10,0 .mult db 'Multiple file format detected.',13,10,13,10,0
.maxromspace dd 0
.curromspace dd 0 SECTION .bss
NEWSYM GUIloadfailed, db 0
.multfound resb 1
.first resb 1
.cchar resb 1
.dotpos resd 1
.curfileofs resd 1
.filehand resw 1
.temp resb 1
.fail resb 1
.maxromspace resd 1
.curromspace resd 1
NEWSYM GUIloadfailed, resb 1
SECTION .text SECTION .text
@@ -5385,7 +5460,9 @@ NEWSYM convertsram
call Change_Dir call Change_Dir
ret ret
SECTION .data
NEWSYM CSStatus, db ' TYPE: CHSUM:OK ',0 NEWSYM CSStatus, db ' TYPE: CHSUM:OK ',0
SECTION .text
NEWSYM showinfogui NEWSYM showinfogui
mov esi,[romdata] mov esi,[romdata]
@@ -5880,7 +5957,6 @@ NEWSYM showinfo
ret ret
SECTION .data SECTION .data
.memfree times 30 db 0
.filename db 'Filename : ',0 .filename db 'Filename : ',0
.frameskip db 'Frame Skip : ',0 .frameskip db 'Frame Skip : ',0
.percexec db '% to Exec : ',0 .percexec db '% to Exec : ',0
@@ -5930,8 +6006,12 @@ SECTION .data
.doh db 'Cannot detect whether cartridge is HiROM or LoROM.',13,10,'Please use -h/-l',13,10,0 .doh db 'Cannot detect whether cartridge is HiROM or LoROM.',13,10,'Please use -h/-l',13,10,0
.intlvd db 'Image is uninterleaved.',13,10,0 .intlvd db 'Image is uninterleaved.',13,10,0
NEWSYM DSP1Type, db 0 SECTION .bss
NEWSYM intldone, db 0
.memfree resb 30
NEWSYM DSP1Type, resb 1
NEWSYM intldone, resb 1
SECTION .text SECTION .text
NEWSYM CheckROMType NEWSYM CheckROMType
@@ -6371,18 +6451,18 @@ NEWSYM CheckROMType
call SPC7110Load call SPC7110Load
ret ret
SECTION .data SECTION .bss
NEWSYM SFXEnable, db 0 NEWSYM SFXEnable, resb 1
NEWSYM C4Enable, db 0 NEWSYM C4Enable, resb 1
NEWSYM SPC7110Enable, db 0 NEWSYM SPC7110Enable, resb 1
NEWSYM RTCEnable, db 0 NEWSYM RTCEnable, resb 1
NEWSYM SA1Enable, db 0 NEWSYM SA1Enable, resb 1
NEWSYM SDD1Enable, db 0 NEWSYM SDD1Enable, resb 1
NEWSYM OBCEnable, db 0 NEWSYM OBCEnable, resb 1
NEWSYM C4RamR, dd 0 NEWSYM C4RamR, resd 1
NEWSYM C4RamW, dd 0 NEWSYM C4RamW, resd 1
NEWSYM C4Ram, dd 0 NEWSYM C4Ram, resd 1
NEWSYM ROMTypeNOTFound, db 0 NEWSYM ROMTypeNOTFound, resb 1
SECTION .text SECTION .text
NEWSYM SetIRQVectors NEWSYM SetIRQVectors
@@ -6482,8 +6562,9 @@ NEWSYM outofmemfix
mov dword[MessageOn],0FFFFFFFFh mov dword[MessageOn],0FFFFFFFFh
ret ret
SECTION .bss
NEWSYM yesoutofmemory, resb 1
SECTION .data SECTION .data
NEWSYM yesoutofmemory, db 0
NEWSYM outofmemoryerror, db 'OUT OF MEMORY.',0 NEWSYM outofmemoryerror, db 'OUT OF MEMORY.',0
NEWSYM outofmemoryerror2, db 'ROM IS TOO BIG.',0 NEWSYM outofmemoryerror2, db 'ROM IS TOO BIG.',0
SECTION .text SECTION .text