SetupROM port and some cleanup.

This commit is contained in:
grinvader
2005-04-07 16:53:45 +00:00
parent 2da78e1866
commit c2af9fb265
12 changed files with 380 additions and 392 deletions

View File

@@ -252,14 +252,14 @@ void repackfunct()
} }
void regaccessbankr8(), regaccessbankw8(), regaccessbankr16(), regaccessbankw16(); void regaccessbankr8(), regaccessbankw8(), regaccessbankr16(), regaccessbankw16();
void memaccessbankr8(), memaccessbankw8(), memaccessbankr16(), memaccessbankw16(); void memaccessbankr8(), memaccessbankw8(), memaccessbankr16(), memaccessbankw16();
void wramaccessbankr8(), wramaccessbankw8(), wramaccessbankr16(), wramaccessbankw16(); void wramaccessbankr8(), wramaccessbankw8(), wramaccessbankr16(), wramaccessbankw16();
void sramaccessbankr8(), sramaccessbankw8(), sramaccessbankr16(), sramaccessbankw16(); void sramaccessbankr8(), sramaccessbankw8(), sramaccessbankr16(), sramaccessbankw16();
void eramaccessbankr8(), eramaccessbankw8(), eramaccessbankr16(), eramaccessbankw16(); void eramaccessbankr8(), eramaccessbankw8(), eramaccessbankr16(), eramaccessbankw16();
void regaccessbankr8SA1(), regaccessbankw8SA1(), regaccessbankr16SA1(), regaccessbankw16SA1(); void regaccessbankr8SA1(), regaccessbankw8SA1(), regaccessbankr16SA1(), regaccessbankw16SA1();
void SA1RAMaccessbankr8(), SA1RAMaccessbankw8(), SA1RAMaccessbankr16(), SA1RAMaccessbankw16(); void SA1RAMaccessbankr8(), SA1RAMaccessbankw8(), SA1RAMaccessbankr16(), SA1RAMaccessbankw16();
void SA1RAMaccessbankr8b(), SA1RAMaccessbankw8b(), SA1RAMaccessbankr16b(), SA1RAMaccessbankw16b(); void SA1RAMaccessbankr8b(), SA1RAMaccessbankw8b(), SA1RAMaccessbankr16b(), SA1RAMaccessbankw16b();
void sramaccessbankr8s(), sramaccessbankw8s(), sramaccessbankr16s(), sramaccessbankw16s(); void sramaccessbankr8s(), sramaccessbankw8s(), sramaccessbankr16s(), sramaccessbankw16s();
void DSP1Read8b3F(), DSP1Write8b3F(), DSP1Read16b3F(), DSP1Write16b3F(); void DSP1Read8b3F(), DSP1Write8b3F(), DSP1Read16b3F(), DSP1Write16b3F();
@@ -272,13 +272,13 @@ void sfxaccessbankr8b(), sfxaccessbankw8b(), sfxaccessbankr16b(), sfxaccessbankw
void sfxaccessbankr8c(), sfxaccessbankw8c(), sfxaccessbankr16c(), sfxaccessbankw16c(); void sfxaccessbankr8c(), sfxaccessbankw8c(), sfxaccessbankr16c(), sfxaccessbankw16c();
void sfxaccessbankr8d(), sfxaccessbankw8d(), sfxaccessbankr16d(), sfxaccessbankw16d(); void sfxaccessbankr8d(), sfxaccessbankw8d(), sfxaccessbankr16d(), sfxaccessbankw16d();
mrwp regbank = { regaccessbankr8, regaccessbankw8, regaccessbankr16, regaccessbankw16 }; mrwp regbank = { regaccessbankr8, regaccessbankw8, regaccessbankr16, regaccessbankw16 };
mrwp membank = { memaccessbankr8, memaccessbankw8, memaccessbankr16, memaccessbankw16 }; mrwp membank = { memaccessbankr8, memaccessbankw8, memaccessbankr16, memaccessbankw16 };
mrwp wrambank = { wramaccessbankr8, wramaccessbankw8, wramaccessbankr16, wramaccessbankw16 }; mrwp wrambank = { wramaccessbankr8, wramaccessbankw8, wramaccessbankr16, wramaccessbankw16 };
mrwp srambank = { sramaccessbankr8, sramaccessbankw8, sramaccessbankr16, sramaccessbankw16 }; mrwp srambank = { sramaccessbankr8, sramaccessbankw8, sramaccessbankr16, sramaccessbankw16 };
mrwp erambank = { eramaccessbankr8, eramaccessbankw8, eramaccessbankr16, eramaccessbankw16 }; mrwp erambank = { eramaccessbankr8, eramaccessbankw8, eramaccessbankr16, eramaccessbankw16 };
mrwp sa1regbank = { regaccessbankr8SA1, regaccessbankw8SA1, regaccessbankr16SA1, regaccessbankw16SA1 }; mrwp sa1regbank = { regaccessbankr8SA1, regaccessbankw8SA1, regaccessbankr16SA1, regaccessbankw16SA1 };
mrwp sa1rambank = { SA1RAMaccessbankr8, SA1RAMaccessbankw8, SA1RAMaccessbankr16, SA1RAMaccessbankw16 }; mrwp sa1rambank = { SA1RAMaccessbankr8, SA1RAMaccessbankw8, SA1RAMaccessbankr16, SA1RAMaccessbankw16 };
mrwp sa1rambankb = { SA1RAMaccessbankr8b, SA1RAMaccessbankw8b, SA1RAMaccessbankr16b, SA1RAMaccessbankw16b }; mrwp sa1rambankb = { SA1RAMaccessbankr8b, SA1RAMaccessbankw8b, SA1RAMaccessbankr16b, SA1RAMaccessbankw16b };
@@ -295,8 +295,7 @@ mrwp sfxbankd = { sfxaccessbankr8d, sfxaccessbankw8d, sfxaccessbankr16d, sfxacce
void SetAddressingModes() void SetAddressingModes()
{ { // Banks
// Banks
map_mem(0x00, &regbank, 0x40); // 00 - 3F map_mem(0x00, &regbank, 0x40); // 00 - 3F
map_mem(0x40, &membank, 0x30); // 49 - 6F map_mem(0x40, &membank, 0x30); // 49 - 6F
map_mem(0x70, &srambank, 0x08); // 70 - 77 map_mem(0x70, &srambank, 0x08); // 70 - 77
@@ -309,7 +308,6 @@ void SetAddressingModes()
void SetAddressingModesSA1() void SetAddressingModesSA1()
{ {
// Banks
map_mem(0x00, &sa1regbank, 0x40); // 00 - 3F map_mem(0x00, &sa1regbank, 0x40); // 00 - 3F
map_mem(0x40, &sa1rambank, 0x30); // 49 - 6F map_mem(0x40, &sa1rambank, 0x30); // 49 - 6F
map_mem(0x70, &sa1rambankb, 0x08); // 70 - 77 map_mem(0x70, &sa1rambankb, 0x08); // 70 - 77

View File

@@ -18,7 +18,7 @@
;along with this program; if not, write to the Free Software ;along with this program; if not, write to the Free Software
;Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ;Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
; Sorry. The GUI code is a total mess. One problem I encountered is that ; Sorry. The GUI code is a total mess. One problem I encountered is that
; there seems to be a bug in nasm with using math calculations combined ; there seems to be a bug in nasm with using math calculations combined
; with macros within macros, so in some macro definitions, I had to ; with macros within macros, so in some macro definitions, I had to
@@ -63,23 +63,23 @@
; ButtonProcess - routines that processes boxed buttons ; ButtonProcess - routines that processes boxed buttons
; CheatCodeSearchInit ; CheatCodeSearchInit
; guiwincontrol ; guiwincontrol
%include "macros.mac" %include "macros.mac"
EXTSYM curblank, vidpastecopyscr, frameskip, newengen, vsyncon EXTSYM curblank,vidpastecopyscr,frameskip,newengen,vsyncon
EXTSYM cvidmode, antienab, smallscreenon, smallscreence,NetQuit EXTSYM cvidmode,antienab, smallscreenon, smallscreence,NetQuit
EXTSYM soundon, StereoSound, SoundQuality, MusicRelVol EXTSYM soundon,StereoSound,SoundQuality,MusicRelVol
EXTSYM endprog, continueprog, spcBuffera, spcRamcmp, cbitmode, makepal EXTSYM endprog,continueprog,spcBuffera,spcRamcmp,cbitmode,makepal
EXTSYM t1cc, LoadDir, LoadDrive, SRAMDir, SRAMChdir, SRAMDirCurDir, initsnes, romloadskip EXTSYM t1cc,LoadDir,LoadDrive,SRAMDir,SRAMChdir,SRAMDirCurDir,initsnes
EXTSYM fname, makeextension, sram, loadfileGUI, GUIloadfailed EXTSYM fname,makeextension,sram,loadfileGUI,GUIloadfailed,romloadskip
EXTSYM SetupROM, romdata, ForcePal, ramsize, ramsizeand, curromsize EXTSYM SetupROM,romdata,ForcePal,ramsize,ramsizeand,curromsize
EXTSYM romispal, totlines, cfgloadsdir, init65816, procexecloop EXTSYM romispal,totlines,cfgloadsdir,init65816,procexecloop
EXTSYM spcRam, spcPCRam, spcS, spcRamDP, spcA, spcX, spcY, spcP, spcNZ EXTSYM spcRam,spcPCRam,spcS,spcRamDP,spcA,spcX,spcY,spcP,spcNZ
EXTSYM Voice0Status, Voice1Status, Voice2Status, Voice3Status, Voice4Status EXTSYM Voice0Status,Voice1Status,Voice2Status,Voice3Status,Voice4Status
EXTSYM Voice5Status, Voice6Status, Voice7Status, romtype, SetIRQVectors EXTSYM Voice5Status,Voice6Status,Voice7Status,romtype
EXTSYM ClearScreen, statesaver, loadstate2, vidbuffer, ASCII2Font, hirestiledat EXTSYM ClearScreen,statesaver,loadstate2,vidbuffer,ASCII2Font,hirestiledat
EXTSYM showallext, ROMTypeNOTFound, scanlines,statefileloc,pl1selk,pl2selk EXTSYM showallext,ROMTypeNOTFound,scanlines,statefileloc,pl1selk,pl2selk
EXTSYM fnamest,sprlefttot,spritetablea,fnames,CHIPBATT,sfxramdata,setaramdata,SETAEnable,cgram,srama EXTSYM fnamest,sprlefttot,spritetablea,fnames,CHIPBATT,sfxramdata,setaramdata,SETAEnable,cgram,srama
EXTSYM tempco0,prevbright,maxbr,prevpal,coladdr,coladdg,coladdb EXTSYM tempco0,prevbright,maxbr,prevpal,coladdr,coladdg,coladdb
EXTSYM scaddtype,ScreenScale,vesa2red10,initvideo2,initvideo,pressed,UpdateDevices EXTSYM scaddtype,ScreenScale,vesa2red10,initvideo2,initvideo,pressed,UpdateDevices
@@ -148,7 +148,7 @@ EXTSYM outofmemfix,yesoutofmemory
EXTSYM JoyX,JoyY,JoyMinX,JoyMinY,JoyMaxX,JoyMaxY,JoyMinX209,JoyMaxX209 EXTSYM JoyX,JoyY,JoyMinX,JoyMinY,JoyMaxX,JoyMaxY,JoyMinX209,JoyMaxX209
EXTSYM JoyMinY209,JoyMaxY209,GetCoords,GetCoords3 EXTSYM JoyMinY209,JoyMaxY209,GetCoords,GetCoords3
EXTSYM MultiTap,SFXEnable EXTSYM MultiTap,SFXEnable
EXTSYM RestoreSystemVars EXTSYM RestoreSystemVars
EXTSYM TCPIPStartServer EXTSYM TCPIPStartServer
EXTSYM TCPIPInitConnectToServer EXTSYM TCPIPInitConnectToServer
EXTSYM TCPIPWaitForConnection EXTSYM TCPIPWaitForConnection
@@ -234,7 +234,7 @@ NEWSYM WaterOn, db 1
; Video ; Video
; Sound ; Sound
; Paths ; Paths
; Saves ; Saves
; MultiPlay only has "Internet" for Windows/Linux ; MultiPlay only has "Internet" for Windows/Linux
@@ -386,10 +386,10 @@ GUIloadfntype db 0
NEWSYM pl3selk, dd 0 ; 3SELECT = SHIFT NEWSYM pl3selk, dd 0 ; 3SELECT = SHIFT
NEWSYM pl3startk, dd 0 ; 3START = ENTER NEWSYM pl3startk, dd 0 ; 3START = ENTER
NEWSYM pl3upk, dd 0 ; 3UP = up NEWSYM pl3upk, dd 0 ; 3UP = up
NEWSYM pl3downk, dd 0 ; 3DOWN = down NEWSYM pl3downk, dd 0 ; 3DOWN = down
NEWSYM pl3leftk, dd 0 ; 3LEFT = left NEWSYM pl3leftk, dd 0 ; 3LEFT = left
NEWSYM pl3rightk, dd 0 ; 3RIGHT = right NEWSYM pl3rightk, dd 0 ; 3RIGHT = right
NEWSYM pl3Xk, dd 0 ; 3X = INS NEWSYM pl3Xk, dd 0 ; 3X = INS
NEWSYM pl3Ak, dd 0 ; 3A = HOME NEWSYM pl3Ak, dd 0 ; 3A = HOME
NEWSYM pl3Lk, dd 0 ; 3L = PAGE UP NEWSYM pl3Lk, dd 0 ; 3L = PAGE UP
@@ -398,10 +398,10 @@ NEWSYM pl3Bk, dd 0 ; 3B = END
NEWSYM pl3Rk, dd 0 ; 3R = PAGE DOWN NEWSYM pl3Rk, dd 0 ; 3R = PAGE DOWN
NEWSYM pl4selk, dd 0 ; 4SELECT = SHIFT NEWSYM pl4selk, dd 0 ; 4SELECT = SHIFT
NEWSYM pl4startk, dd 0 ; 4START = ENTER NEWSYM pl4startk, dd 0 ; 4START = ENTER
NEWSYM pl4upk, dd 0 ; 4UP = up NEWSYM pl4upk, dd 0 ; 4UP = up
NEWSYM pl4downk, dd 0 ; 4DOWN = down NEWSYM pl4downk, dd 0 ; 4DOWN = down
NEWSYM pl4leftk, dd 0 ; 4LEFT = left NEWSYM pl4leftk, dd 0 ; 4LEFT = left
NEWSYM pl4rightk, dd 0 ; 4RIGHT = right NEWSYM pl4rightk, dd 0 ; 4RIGHT = right
NEWSYM pl4Xk, dd 0 ; 4X = INS NEWSYM pl4Xk, dd 0 ; 4X = INS
NEWSYM pl4Ak, dd 0 ; 4A = HOME NEWSYM pl4Ak, dd 0 ; 4A = HOME
NEWSYM pl4Lk, dd 0 ; 4L = PAGE UP NEWSYM pl4Lk, dd 0 ; 4L = PAGE UP
@@ -544,10 +544,10 @@ NEWSYM GUIEffect, db 0
NEWSYM pl5selk, dd 0 ; 4SELECT = SHIFT NEWSYM pl5selk, dd 0 ; 4SELECT = SHIFT
NEWSYM pl5startk, dd 0 ; 4START = ENTER NEWSYM pl5startk, dd 0 ; 4START = ENTER
NEWSYM pl5upk, dd 0 ; 4UP = up NEWSYM pl5upk, dd 0 ; 4UP = up
NEWSYM pl5downk, dd 0 ; 4DOWN = down NEWSYM pl5downk, dd 0 ; 4DOWN = down
NEWSYM pl5leftk, dd 0 ; 4LEFT = left NEWSYM pl5leftk, dd 0 ; 4LEFT = left
NEWSYM pl5rightk, dd 0 ; 4RIGHT = right NEWSYM pl5rightk, dd 0 ; 4RIGHT = right
NEWSYM pl5Xk, dd 0 ; 4X = INS NEWSYM pl5Xk, dd 0 ; 4X = INS
NEWSYM pl5Ak, dd 0 ; 4A = HOME NEWSYM pl5Ak, dd 0 ; 4A = HOME
NEWSYM pl5Lk, dd 0 ; 4L = PAGE UP NEWSYM pl5Lk, dd 0 ; 4L = PAGE UP
@@ -851,7 +851,7 @@ clearsram:
dec ecx dec ecx
jnz .loop2 jnz .loop2
.nosfxbatt .nosfxbatt
cmp byte[SETAEnable],0 cmp byte[SETAEnable],0
je .nosetasram je .nosetasram
mov eax,[setaramdata] mov eax,[setaramdata]
@@ -866,7 +866,7 @@ clearsram:
cmp byte[SA1Enable],1 cmp byte[SA1Enable],1
jne .nosa1 jne .nosa1
cmp byte[CHIPBATT],1 cmp byte[CHIPBATT],1
jne .nosa1 jne .nosa1
mov eax,[SA1RAMArea] mov eax,[SA1RAMArea]
mov ecx,65536*2 mov ecx,65536*2
.loop3 .loop3
@@ -1496,26 +1496,26 @@ NEWSYM SaveSramData
je .savesramdone je .savesramdone
mov edx,[sram] mov edx,[sram]
cmp byte[SFXEnable],1 cmp byte[SFXEnable],1
jne .notsfx jne .notsfx
mov edx,[sfxramdata] mov edx,[sfxramdata]
.notsfx .notsfx
cmp byte[SA1Enable],1 cmp byte[SA1Enable],1
jne .notsa1 jne .notsa1
mov edx,[SA1RAMArea] mov edx,[SA1RAMArea]
.notsa1 .notsa1
cmp byte[SETAEnable],1 cmp byte[SETAEnable],1
jne .notseta jne .notseta
mov edx,[setaramdata] mov edx,[setaramdata]
.notseta .notseta
cmp edx,[sram] cmp edx,[sram]
je .notspecial je .notspecial
cmp byte[CHIPBATT],0 cmp byte[CHIPBATT],0
je .savesramdone je .savesramdone
.notspecial .notspecial
clim clim
push edx ;Backup data to save push edx ;Backup data to save
mov edx,fnames+1 mov edx,fnames+1
call Create_File call Create_File
@@ -1527,11 +1527,11 @@ NEWSYM SaveSramData
call Write_File call Write_File
call Close_File call Close_File
push edx ;Dirty hack for the next line push edx ;Dirty hack for the next line
.failed .failed
pop edx ;This is needed here because if the jump to failed is carried out, edx is never popped pop edx ;This is needed here because if the jump to failed is carried out, edx is never popped
stim stim
.savesramdone .savesramdone
call SaveCombFile call SaveCombFile
; change dir to InitDrive/InitDir ; change dir to InitDrive/InitDir
@@ -1852,7 +1852,7 @@ NEWSYM StartGUI
call GUIQuickLoadUpdate call GUIQuickLoadUpdate
call LoadDetermine call LoadDetermine
; change dir to LoadDrive/LoadDir ; change dir to LoadDrive/LoadDir
mov dl,[LoadDrive] mov dl,[LoadDrive]
mov ebx,LoadDir mov ebx,LoadDir
@@ -2357,8 +2357,8 @@ NEWSYM StartGUI
mov dword[PBackupPos],0 mov dword[PBackupPos],0
call RestoreCVFrame call RestoreCVFrame
popad popad
mov esi,[tempesi] mov esi,[tempesi]
mov edi,[tempedi] mov edi,[tempedi]
mov ebp,[tempebp] mov ebp,[tempebp]
.norestoreval .norestoreval
@@ -2861,8 +2861,8 @@ guipostvideo:
cmp dword[GUIkeydelay],0 cmp dword[GUIkeydelay],0
je .pressedokay je .pressedokay
mov byte[pressed+39h],0 mov byte[pressed+39h],0
call JoyRead call JoyRead
cmp byte[pressed+39h],0 cmp byte[pressed+39h],0
jne .pressedokay jne .pressedokay
@@ -3415,10 +3415,10 @@ DisplayBoxes:
jmp .finstuff jmp .finstuff
.noguichosesave .noguichosesave
cmp al,3 cmp al,3
jne .noguiinput jne .noguiinput
call DisplayGUIInput call DisplayGUIInput
jmp .finstuff jmp .finstuff
.noguiinput .noguiinput
cmp al,4 cmp al,4
jne .noguioption jne .noguioption
call DisplayGUIOption call DisplayGUIOption
@@ -3598,9 +3598,9 @@ GUIProcReset:
jne .nomovierecording jne .nomovierecording
call ResetDuringMovie call ResetDuringMovie
jmp .movieendif jmp .movieendif
.nomovierecording .nomovierecording
call GUIDoReset call GUIDoReset
.movieendif .movieendif
popad popad
cmp byte[CNetType],20 cmp byte[CNetType],20
jne .noreset jne .noreset
@@ -3940,7 +3940,9 @@ InitGUI:
call GetScreen call GetScreen
.nong16b .nong16b
call ClearScreen call ClearScreen
pushad
call Clear2xSaIBuffer call Clear2xSaIBuffer
popad
call GUISetPal call GUISetPal
call GUIBufferData call GUIBufferData
ret ret
@@ -5408,7 +5410,7 @@ GUIIconDataCheckBoxUC:
GUIIconDataCheckBoxC: GUIIconDataCheckBoxC:
db 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,165,0 db 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,165,0
db 0 ,0 ,0 ,0 ,0 ,0 ,0 ,165,0 ,0 db 0 ,0 ,0 ,0 ,0 ,0 ,0 ,165,0 ,0
db 0 ,0 ,0 ,0 ,0 ,0 ,165,0 ,0 ,0 db 0 ,0 ,0 ,0 ,0 ,0 ,165,0 ,0 ,0
db 0 ,220,219,218,217,165,215,0 ,0 ,0 db 0 ,220,219,218,217,165,215,0 ,0 ,0
db 0 ,165,165,217,165,165,214,202,0 ,0 db 0 ,165,165,217,165,165,214,202,0 ,0

View File

@@ -915,11 +915,11 @@ GUIOptionKeys:
cmp dh,'P' cmp dh,'P'
jne .noautopatch jne .noautopatch
xor byte[AutoPatch],1 xor byte[AutoPatch],1
.noautopatch .noautopatch
cmp dh,'T' cmp dh,'T'
jne .norominfo jne .norominfo
xor byte[RomInfo],1 xor byte[RomInfo],1
.norominfo .norominfo
%ifdef __WIN32__ %ifdef __WIN32__
cmp dh,'I' cmp dh,'I'
jne .noscreensaver jne .noscreensaver
@@ -927,7 +927,7 @@ GUIOptionKeys:
.noscreensaver .noscreensaver
%endif %endif
ret ret
GUISaveKeys: GUISaveKeys:
cmp dh,'a' cmp dh,'a'
jb .nocap jb .nocap
@@ -1071,12 +1071,16 @@ GUIGUIOptnsKeys:
cmp byte[En2xSaI],1 cmp byte[En2xSaI],1
jnae .guioptn15 jnae .guioptn15
call ClearScreen call ClearScreen
pushad
call Clear2xSaIBuffer call Clear2xSaIBuffer
popad
.guioptn15 .guioptn15
cmp byte[hqFilter],0 cmp byte[hqFilter],0
je .guioptn16 je .guioptn16
call ClearScreen call ClearScreen
pushad
call Clear2xSaIBuffer call Clear2xSaIBuffer
popad
.guioptn16 .guioptn16
ret ret
@@ -1105,7 +1109,7 @@ GUIVideoKeys:
jmp .refresh jmp .refresh
.nomodeq .nomodeq
cmp byte[cvidmode],5 cmp byte[cvidmode],5
jne .nofullscanlines jne .nofullscanlines
.refresh .refresh
mov byte[cbitmode],1 mov byte[cbitmode],1
call initvideo2 call initvideo2
@@ -1177,7 +1181,9 @@ GUIVideoKeys:
mov bl,[cvidmode] mov bl,[cvidmode]
cmp byte[GUI2xVID+ebx],0 cmp byte[GUI2xVID+ebx],0
je near .no2xsai je near .no2xsai
pushad
call Clear2xSaIBuffer call Clear2xSaIBuffer
popad
GUIkeystoggleoptn byte[En2xSaI],1 GUIkeystoggleoptn byte[En2xSaI],1
.no2xsai .no2xsai
cmp dh,'E' cmp dh,'E'
@@ -1186,7 +1192,9 @@ GUIVideoKeys:
mov bl,[cvidmode] mov bl,[cvidmode]
cmp byte[GUI2xVID+ebx],0 cmp byte[GUI2xVID+ebx],0
je near .nosupereagle je near .nosupereagle
pushad
call Clear2xSaIBuffer call Clear2xSaIBuffer
popad
GUIkeystoggleoptn byte[En2xSaI],2 GUIkeystoggleoptn byte[En2xSaI],2
.nosupereagle .nosupereagle
cmp dh,'S' cmp dh,'S'
@@ -1195,7 +1203,9 @@ GUIVideoKeys:
mov bl,[cvidmode] mov bl,[cvidmode]
cmp byte[GUI2xVID+ebx],0 cmp byte[GUI2xVID+ebx],0
je near .nosuper2xsai je near .nosuper2xsai
pushad
call Clear2xSaIBuffer call Clear2xSaIBuffer
popad
GUIkeystoggleoptn byte[En2xSaI],3 GUIkeystoggleoptn byte[En2xSaI],3
.nosuper2xsai .nosuper2xsai
cmp dh,'I' cmp dh,'I'
@@ -1371,7 +1381,7 @@ GUIVideoKeys:
cmp dl,72 cmp dl,72
jne .noup jne .noup
%endif %endif
.up .up
cmp dword[GUIcurrentvideocursloc],0 cmp dword[GUIcurrentvideocursloc],0
je .noup je .noup
mov ebx,[GUIcurrentvideocursloc] mov ebx,[GUIcurrentvideocursloc]
@@ -1754,7 +1764,7 @@ GUIPathKeys:
jmp .findend jmp .findend
.foundend .foundend
cmp dh,8 ;Backspace cmp dh,8 ;Backspace
jne .notbackspace jne .notbackspace
cmp eax,ecx cmp eax,ecx
je .cantback je .cantback
@@ -1762,7 +1772,7 @@ GUIPathKeys:
.cantback .cantback
ret ret
.notbackspace .notbackspace
cmp dh,13 ;Enter cmp dh,13 ;Enter
jne .notenter jne .notenter
mov dword[GUIInputBox],0 mov dword[GUIInputBox],0

View File

@@ -273,7 +273,7 @@ GUIloadfilename:
mov dword[nmiprevline],224 mov dword[nmiprevline],224
mov dword[nmistatus],0 mov dword[nmistatus],0
mov dword[spcnumread],0 mov dword[spcnumread],0
mov dword[spchalted],-1 mov dword[spchalted],-1
mov byte[NextLineCache],0 mov byte[NextLineCache],0
mov byte[curexecstate],1 mov byte[curexecstate],1
@@ -293,8 +293,8 @@ GUIloadfilename:
mov byte[CheatWinMode],0 mov byte[CheatWinMode],0
mov byte[CheatSearchStatus],0 mov byte[CheatSearchStatus],0
call SetupROM
pushad pushad
call SetupROM
call showinfogui call showinfogui
popad popad
call initsnes call initsnes

View File

@@ -128,7 +128,7 @@ SetAllKeys:
mov edi,pl5selk mov edi,pl5selk
mov dword[keycontrolval],pl5contrl mov dword[keycontrolval],pl5contrl
.nopl5 .nopl5
;Check if controller is set ;Check if controller is set
push eax push eax
mov eax,dword[keycontrolval] mov eax,dword[keycontrolval]
@@ -136,7 +136,7 @@ SetAllKeys:
pop eax pop eax
jne .noLockInputChange jne .noLockInputChange
ret ret
.noLockInputChange .noLockInputChange
mov dword[guicpressptr],edi mov dword[guicpressptr],edi
xor ebx,ebx xor ebx,ebx
mov ecx,12 mov ecx,12
@@ -361,7 +361,9 @@ SetDevice:
NEWSYM GUIDoReset NEWSYM GUIDoReset
call ClearScreen call ClearScreen
pushad
call Clear2xSaIBuffer call Clear2xSaIBuffer
popad
; mov byte[NetPlayNoMore],1 ; mov byte[NetPlayNoMore],1
mov byte[RestoreValues],0 mov byte[RestoreValues],0

View File

@@ -1411,7 +1411,9 @@ GUIWinClicked:
cmp edx,%2+8 cmp edx,%2+8
jg %%noclick jg %%noclick
xor %3,1 xor %3,1
pushad
call Clear2xSaIBuffer call Clear2xSaIBuffer
popad
%%noclick %%noclick
%endmacro %endmacro
@@ -2119,7 +2121,7 @@ DisplayGUIMovieClick:
GUIPButtonHole 100,40,byte[CMovieExt],'7' GUIPButtonHole 100,40,byte[CMovieExt],'7'
GUIPButtonHole 120,40,byte[CMovieExt],'8' GUIPButtonHole 120,40,byte[CMovieExt],'8'
GUIPButtonHole 140,40,byte[CMovieExt],'9' GUIPButtonHole 140,40,byte[CMovieExt],'9'
DGOptnsProcBox 116,68,[KeyInsrtChap] DGOptnsProcBox 116,68,[KeyInsrtChap]
DGOptnsProcBox 116,84,[KeyNextChap] DGOptnsProcBox 116,84,[KeyNextChap]
DGOptnsProcBox 116,100,[KeyPrevChap] DGOptnsProcBox 116,100,[KeyPrevChap]
@@ -2244,7 +2246,7 @@ DisplayGUIInputClick:
mov edi,pl5selk mov edi,pl5selk
mov dword[keycontrolval],pl5contrl mov dword[keycontrolval],pl5contrl
.nopl5 .nopl5
;Check if controller is set ;Check if controller is set
push eax push eax
mov eax,dword[keycontrolval] mov eax,dword[keycontrolval]
@@ -3333,9 +3335,9 @@ DisplayGUISaveClick:
GUIPHoldbutton2 173,32,181,40,72,byte[RewindFrames],1,40 GUIPHoldbutton2 173,32,181,40,72,byte[RewindFrames],1,40
GUIPHoldbutton2 184,32,192,40,73,byte[RewindFrames],-1,0 GUIPHoldbutton2 184,32,192,40,73,byte[RewindFrames],-1,0
DGOptnsProcBox 27,121,[KeyStateSlc0] DGOptnsProcBox 27,121,[KeyStateSlc0]
DGOptnsProcBox 27+45,121,[KeyStateSlc1] DGOptnsProcBox 27+45,121,[KeyStateSlc1]
DGOptnsProcBox 27+45*2,121,[KeyStateSlc2] DGOptnsProcBox 27+45*2,121,[KeyStateSlc2]
DGOptnsProcBox 27+45*3,121,[KeyStateSlc3] DGOptnsProcBox 27+45*3,121,[KeyStateSlc3]
DGOptnsProcBox 27,130,[KeyStateSlc4] DGOptnsProcBox 27,130,[KeyStateSlc4]
DGOptnsProcBox 27+45,130,[KeyStateSlc5] DGOptnsProcBox 27+45,130,[KeyStateSlc5]
DGOptnsProcBox 27+45*2,130,[KeyStateSlc6] DGOptnsProcBox 27+45*2,130,[KeyStateSlc6]

View File

@@ -30,7 +30,7 @@ EXTSYM spcon,vesa2_bpos,vesa2_clbit,vesa2_gpos,vesa2_rpos,vesa2selec
EXTSYM vidbuffer,spritetablea,sprlefttot,newengen,spcextraram,resolutn EXTSYM vidbuffer,spritetablea,sprlefttot,newengen,spcextraram,resolutn
EXTSYM Open_File,Close_File,Read_File,Write_File,Create_File,Get_Key,Get_Date EXTSYM Open_File,Close_File,Read_File,Write_File,Create_File,Get_Key,Get_Date
EXTSYM continueprognokeys,ForceNonTransp,GUIOn,Check_Key,JoyRead EXTSYM continueprognokeys,ForceNonTransp,GUIOn,Check_Key,JoyRead
EXTSYM GetScreen,SSKeyPressed,SPCKeyPressed,StopSound,StartSound EXTSYM GetScreen,SSKeyPressed,SPCKeyPressed,StopSound,StartSound
EXTSYM ExecExitOkay,t1cc EXTSYM ExecExitOkay,t1cc
EXTSYM Clear2xSaIBuffer EXTSYM Clear2xSaIBuffer
EXTSYM romdata,romtype,ScreenShotFormat EXTSYM romdata,romtype,ScreenShotFormat
@@ -213,7 +213,7 @@ NEWSYM showmenu
.nomenuinc3 .nomenuinc3
mov dword[menudrawbox8b.stringi+13],' BMP' mov dword[menudrawbox8b.stringi+13],' BMP'
%ifndef NO_PNG %ifndef NO_PNG
cmp byte[ScreenShotFormat],0 cmp byte[ScreenShotFormat],0
je .normalscrn je .normalscrn
mov dword[menudrawbox8b.stringi+13],' PNG' mov dword[menudrawbox8b.stringi+13],' PNG'
@@ -484,7 +484,9 @@ NEWSYM showmenu
call StartSound call StartSound
mov byte[ForceNonTransp],0 mov byte[ForceNonTransp],0
mov byte[GUIOn],0 mov byte[GUIOn],0
pushad
call Clear2xSaIBuffer call Clear2xSaIBuffer
popad
cmp byte[MenuNoExit],1 cmp byte[MenuNoExit],1
je .noexitmenu je .noexitmenu
jmp continueprognokeys jmp continueprognokeys
@@ -1172,7 +1174,7 @@ NEWSYM savepcx
ret ret
.notpng .notpng
%endif %endif
mov byte[pressed+1],0 mov byte[pressed+1],0
mov byte[pressed+59],0 mov byte[pressed+59],0
cmp byte[cbitmode],1 cmp byte[cbitmode],1

View File

@@ -96,25 +96,12 @@ EXTSYM sfxaccessbankw8d,sfxramdata
EXTSYM sramaccessbankr16,sramaccessbankr16s,sramaccessbankr8,sramaccessbankr8s EXTSYM sramaccessbankr16,sramaccessbankr16s,sramaccessbankr8,sramaccessbankr8s
EXTSYM sramaccessbankw16,sramaccessbankw16s,sramaccessbankw8,sramaccessbankw8s EXTSYM sramaccessbankw16,sramaccessbankw16s,sramaccessbankw8,sramaccessbankw8s
EXTSYM ScrDispl,wramreadptr,wramwriteptr EXTSYM ScrDispl,wramreadptr,wramwriteptr
EXTSYM loadstate2,headerhack EXTSYM loadstate2,CMovieExt,MoviePlay
;initc.c ;initc.c
EXTSYM clearmem,clearSPCRAM,PatchUsingIPS,loadZipFile,ZOpenFileName EXTSYM clearmem,clearSPCRAM,PatchUsingIPS,ZOpenFileName,loadROM,SPC7110IndexSize
EXTSYM loadROM,CalcChecksum,BankCheck,MirrorROM,SplittedROM,addOnStart,addOnSize EXTSYM SPC7PackIndexLoad,IntlEHi,C4Enable,SPC7110Enable,RTCEnable,SA1Enable
EXTSYM SPC7PackIndexLoad,SPC7110IndexSize,DumpROMLoadInfo,SetupSramSize,IntlEHi EXTSYM SDD1Enable,OBCEnable,SFXEnable,BSEnable,clearvidsound,headerhack,SetupROM
EXTSYM CHIPBATT,SETAEnable,C4Enable,SPC7110Enable,RTCEnable,SA1Enable,SDD1Enable
EXTSYM OBCEnable,SFXEnable,ST18Enable,SGBEnable,DSP1Enable,DSP2Enable,DSP3Enable
EXTSYM DSP4Enable,BSEnable,clearvidsound
EXTSYM calculate_state_sizes,InitRewindVars
EXTSYM SetaCmdEnable,setaramdata
EXTSYM setaaccessbankr8,setaaccessbankw8,setaaccessbankr8a,setaaccessbankw8a
EXTSYM setaaccessbankr16,setaaccessbankw16,setaaccessbankr16a,setaaccessbankw16a
EXTSYM DSP2Read8b,DSP2Read16b,DSP2Write8b,DSP2Write16b,InitDSP2
EXTSYM DSP4Read8b,DSP4Read16b,DSP4Write8b,DSP4Write16b,InitDSP4
EXTSYM SetupROMc,CMovieExt,MoviePlay
%ifdef __LINUX__ %ifdef __LINUX__
EXTSYM LoadDir,popdir,pushdir EXTSYM LoadDir,popdir,pushdir
@@ -137,7 +124,7 @@ blah times 450 db 0
NEWSYM autoloadstate, db 0 ; auto load state slot number NEWSYM autoloadstate, db 0 ; auto load state slot number
NEWSYM autoloadmovie, db 0 NEWSYM autoloadmovie, db 0
NEWSYM EndMessage NEWSYM EndMessage
db ' ',13,10,0 db ' ',13,10,0
SECTION .text SECTION .text
@@ -170,7 +157,7 @@ NEWSYM init
pushad pushad
call BackupSystemVars call BackupSystemVars
popad popad
xor eax,eax xor eax,eax
mov al,[cfgreinittime] mov al,[cfgreinittime]
mov ebx,50 mov ebx,50
@@ -218,8 +205,8 @@ NEWSYM init
.found .found
mov byte[romloadskip],0 mov byte[romloadskip],0
call loadfile call loadfile
call SetupROM
pushad pushad
call SetupROM
call showinfogui call showinfogui
popad popad
.noloadfile .noloadfile
@@ -254,7 +241,7 @@ NEWSYM init
jge .2digits jge .2digits
mov al,byte[autoloadstate] mov al,byte[autoloadstate]
add al,48 add al,48
mov byte[fnamest+ebx],al mov byte[fnamest+ebx],al
jmp .enddigits jmp .enddigits
.2digits .2digits
xor eax,eax xor eax,eax
@@ -300,13 +287,13 @@ NEWSYM init
mov al,'v' mov al,'v'
.notzero1 .notzero1
mov byte[CMovieExt],al mov byte[CMovieExt],al
pushad pushad
call MoviePlay call MoviePlay
popad popad
.noautloadmovie .noautloadmovie
xor eax,eax xor eax,eax
mov al,[cvidmode] mov al,[cvidmode]
cmp byte[GUI16VID+eax],1 cmp byte[GUI16VID+eax],1
@@ -379,7 +366,7 @@ NEWSYM pl1selk, dd 54
NEWSYM pl1startk, dd 28 NEWSYM pl1startk, dd 28
NEWSYM pl1upk, dd 200 NEWSYM pl1upk, dd 200
NEWSYM pl1downk, dd 208 NEWSYM pl1downk, dd 208
NEWSYM pl1leftk, dd 203 NEWSYM pl1leftk, dd 203
NEWSYM pl1rightk, dd 205 NEWSYM pl1rightk, dd 205
%endif %endif
NEWSYM pl1Xk, dd 31 NEWSYM pl1Xk, dd 31
@@ -1307,7 +1294,7 @@ NEWSYM init65816
jne .notbsx2 jne .notbsx2
mov eax,0FFFFFFFFh mov eax,0FFFFFFFFh
helpclearmem wramdataa, 65536 helpclearmem wramdataa, 65536
helpclearmem ram7fa, 65536 helpclearmem ram7fa, 65536
cmp byte[romtype],1 ;Hack for BS HiROMs cmp byte[romtype],1 ;Hack for BS HiROMs
jne .notbsx2 jne .notbsx2
mov dword[ram7fa+65528],01010101h mov dword[ram7fa+65528],01010101h
@@ -1710,7 +1697,7 @@ NEWSYM initsnes
stosd stosd
add eax,10000h add eax,10000h
dec ecx dec ecx
jnz .loopbb jnz .loopbb
; set banks 80-BF (40h x 32KB ROM banks @ 8000h) ; set banks 80-BF (40h x 32KB ROM banks @ 8000h)
mov eax,[romdata] mov eax,[romdata]
mov ecx,40h mov ecx,40h
@@ -2173,7 +2160,7 @@ NEWSYM printhex8
; Search for header size first which is filesize MOD 32768 ; Search for header size first which is filesize MOD 32768
NEWSYM PatchIPS NEWSYM PatchIPS
%ifdef __LINUX__ %ifdef __LINUX__
pushad pushad
call pushdir call pushdir
popad popad
@@ -2601,7 +2588,7 @@ NEWSYM CSStatus3, db 'VIDEO: CRC32: ',0
;******************************************************* ;*******************************************************
; Show Information ; Show Information
;******************************************************* ;*******************************************************
; ;
; Maker Code = FFB0-FFB1 ; Maker Code = FFB0-FFB1
; Game Code = FFB2-FFB5 ; Game Code = FFB2-FFB5
; Expansion RAM Size = FFBD (0=none, 1=16kbit, 3=64kbit, 5=256kbit,etc. ; Expansion RAM Size = FFBD (0=none, 1=16kbit, 3=64kbit, 5=256kbit,etc.
@@ -2616,63 +2603,6 @@ NEWSYM CSStatus3, db 'VIDEO: CRC32: ',0
SECTION .bss SECTION .bss
NEWSYM DSP1Type, resb 1 NEWSYM DSP1Type, resb 1
NEWSYM intldone, resb 1 NEWSYM intldone, resb 1
SECTION .text
EXTSYM ClearScreen, cbitmode, makepal
NEWSYM SetupROM
pushad
call SetupROMc
popad
; call CheckROMType
call SetIRQVectors
call ClearScreen
cmp byte[cbitmode],0
jne .nomakepal
call makepal
.nomakepal
; get ROM and SRAM size
mov esi,[romdata]
add esi,[infoloc]
add esi,18h
mov cl,[esi-1]
mov [curromsize],cl
pushad
call SetupSramSize
call calculate_state_sizes
call InitRewindVars
popad
; get pal/ntsc
inc esi
mov al,[ForceROMTiming]
mov byte[ForcePal],al
xor al,al
mov al,[esi]
cmp byte[ForcePal],1
jne .nontsc
mov al,0
.nontsc
cmp byte[ForcePal],2
jne .nopal2
mov al,2
.nopal2
mov byte[romispal],0
mov word[totlines],263
mov dword[MsgCount],120
cmp byte[BSEnable],1
je .nopal
cmp al,1
jbe .nopal
cmp al,0Dh
jae .nopal
mov byte[romispal],1
mov word[totlines],314
mov dword[MsgCount],100
.nopal
ret
SECTION .bss
NEWSYM C4RamR, resd 1 NEWSYM C4RamR, resd 1
NEWSYM C4RamW, resd 1 NEWSYM C4RamW, resd 1
NEWSYM C4Ram, resd 1 NEWSYM C4Ram, resd 1
@@ -2680,64 +2610,6 @@ NEWSYM ROMTypeNOTFound, resb 1
NEWSYM Interleaved, resb 1 NEWSYM Interleaved, resb 1
SECTION .text SECTION .text
NEWSYM SetIRQVectors
; Get Vectors (NMI & Reset)
mov esi,[romdata]
add esi,[infoloc]
add esi,21
mov al,[esi]
test al,0F0h
jnz .yesfastrom
mov al,[opexec268]
mov [opexec358],al
mov al,[opexec268cph]
mov [opexec358cph],al
mov al,[cycpb268]
mov [cycpb358],al
.yesfastrom
add esi,0Fh
cmp word[esi+24],0FFFFh
jne .notreseterror
mov word[esi+6],0FF9Ch
mov word[esi+24],0FF80h
.notreseterror
lodsw
mov [copv],ax
lodsw
mov [brkv],ax
lodsw
mov [abortv],ax
lodsw
mov [nmiv],ax
mov [nmiv2],ax
add esi,2
lodsw
mov [irqv],ax
mov [irqv2],ax
add esi,4
; 8-bit and reset
lodsw
mov [copv8],ax
inc esi
inc esi
lodsw
mov [abortv8],ax
lodsw
mov [nmiv8],ax
lodsw
mov [resetv],ax
lodsw
mov [brkv8],ax
mov [irqv8],ax
cmp byte[yesoutofmemory],0
je .notfailed
mov word[resetv],8000h
mov esi,[romdata]
mov word[esi],0FE80h
mov word[esi+8000h],0FE80h
.notfailed
ret
NEWSYM outofmemfix NEWSYM outofmemfix
mov esi,[romdata] mov esi,[romdata]
cmp byte[romtype],2 cmp byte[romtype],2

View File

@@ -216,7 +216,7 @@ void CheckIntlEHi(unsigned char *ROM)
//Swap 4MB ROM with the other one //Swap 4MB ROM with the other one
SwapData(romdata, romdata+((NumofBytes-0x400000)/4), 0x100000); SwapData(romdata, romdata+((NumofBytes-0x400000)/4), 0x100000);
//Deinterleave the 4MB ROM first //Deinterleave the 4MB ROM first
NumofBanks = 128; NumofBanks = 128;
deintlv1(); deintlv1();
@@ -252,7 +252,7 @@ void IntlEHi()
{ {
SwapData(romdata, romdata + 0x100000, 0x80000); SwapData(romdata, romdata + 0x100000, 0x80000);
SwapData(romdata + 0x80000, romdata + 0x100000, 0x80000); SwapData(romdata + 0x80000, romdata + 0x100000, 0x80000);
NumofBanks = 64; NumofBanks = 64;
intlv1(); intlv1();
NumofBanks = 192; NumofBanks = 192;
@@ -415,12 +415,12 @@ void chip_detect()
BSEnable = false; BSEnable = false;
SFXEnable = false; SFXEnable = false;
SETAEnable = false; SETAEnable = false;
//DSP Family //DSP Family
if (ROM[infoloc+TypeOffset] == 3) if (ROM[infoloc+TypeOffset] == 3)
{ {
if (ROM[infoloc+BankOffset] == 48) if (ROM[infoloc+BankOffset] == 48)
{ {
DSP4Enable = true; DSP4Enable = true;
} }
else else
@@ -428,16 +428,16 @@ void chip_detect()
DSP1Enable = true; DSP1Enable = true;
} }
return; return;
} }
if (ROM[infoloc+TypeOffset] == 5) if (ROM[infoloc+TypeOffset] == 5)
{ {
CHIPBATT = true; CHIPBATT = true;
if (ROM[infoloc+BankOffset] == 32) if (ROM[infoloc+BankOffset] == 32)
{ {
DSP2Enable = true; DSP2Enable = true;
} }
else if (ROM[infoloc+BankOffset] == 48 && ROM[infoloc+CompanyOffset] == 0xB2) //Bandai else if (ROM[infoloc+BankOffset] == 48 && ROM[infoloc+CompanyOffset] == 0xB2) //Bandai
{ {
DSP3Enable = true; DSP3Enable = true;
} }
else else
@@ -454,26 +454,26 @@ void chip_detect()
SFXEnable = true; SFXEnable = true;
return; return;
break; break;
case 0x1520: //GSU-x + Battery case 0x1520: //GSU-x + Battery
case 0x1A20: //GSU-1 + Battery + Start in 21MHz case 0x1A20: //GSU-1 + Battery + Start in 21MHz
SFXEnable = true; SFXEnable = true;
CHIPBATT = true; CHIPBATT = true;
return; return;
break; break;
case 0x2530: case 0x2530:
OBCEnable = true; OBCEnable = true;
CHIPBATT = true; CHIPBATT = true;
return; return;
break; break;
case 0x3423: case 0x3423:
SA1Enable = true; SA1Enable = true;
return; return;
break; break;
case 0x3523: case 0x3523:
SA1Enable = true; SA1Enable = true;
CHIPBATT = true; CHIPBATT = true;
@@ -487,38 +487,38 @@ void chip_detect()
case 0x4532: case 0x4532:
SDD1Enable = true; SDD1Enable = true;
CHIPBATT = true; CHIPBATT = true;
return; return;
break; break;
case 0x5535: case 0x5535:
RTCEnable = true; RTCEnable = true;
CHIPBATT = true; CHIPBATT = true;
return; return;
break; break;
case 0xE320: case 0xE320:
SGBEnable = true; SGBEnable = true;
return; return;
break; break;
case 0xF320: case 0xF320:
C4Enable = true; C4Enable = true;
return; return;
break; break;
case 0xF530: case 0xF530:
ST18Enable = true; ST18Enable = true;
CHIPBATT = true; //Check later if this should be removed CHIPBATT = true; //Check later if this should be removed
return; return;
break; break;
case 0xF53A: case 0xF53A:
SPC7110Enable = true; SPC7110Enable = true;
CHIPBATT = true; CHIPBATT = true;
return; return;
break; break;
case 0xF630: case 0xF630:
SETAEnable = true; SETAEnable = true;
CHIPBATT = true; CHIPBATT = true;
@@ -527,7 +527,7 @@ void chip_detect()
case 0xF93A: case 0xF93A:
SPC7110Enable = true; SPC7110Enable = true;
RTCEnable = true; RTCEnable = true;
CHIPBATT = true; CHIPBATT = true;
return; return;
break; break;
@@ -679,7 +679,7 @@ char *lastROMFileName;
void DumpROMLoadInfo() void DumpROMLoadInfo()
{ {
FILE *fp = 0; FILE *fp = 0;
if (RomInfo) //rominfo.txt info dumping enabled? if (RomInfo) //rominfo.txt info dumping enabled?
{ {
fp = fopen("rominfo.txt", "w"); fp = fopen("rominfo.txt", "w");
@@ -740,7 +740,7 @@ void loadFile(char *filename)
curromspace += stat_results.st_size; curromspace += stat_results.st_size;
if (!multifile) { return; } if (!multifile) { return; }
(*incrementer)++; (*incrementer)++;
} }
else else
@@ -768,16 +768,16 @@ void loadGZipFile(char *filename)
if ((unsigned int)size > maxromspace+512) { return; } if ((unsigned int)size > maxromspace+512) { return; }
//Open GZip file for decompression //Open GZip file for decompression
GZipFile = gzopen(filename, "rb"); GZipFile = gzopen(filename, "rb");
//Decompress file into memory //Decompress file into memory
err = gzread(GZipFile, romdata, size); err = gzread(GZipFile, romdata, size);
//Close compressed file //Close compressed file
gzclose(GZipFile); gzclose(GZipFile);
if (err != size) { return; } if (err != size) { return; }
curromspace = size; curromspace = size;
} }
@@ -791,7 +791,7 @@ void loadZipFile(char *filename)
{ {
int err, fileSize; int err, fileSize;
unsigned char *ROM = (unsigned char *)romdata; unsigned char *ROM = (unsigned char *)romdata;
bool multifile = false, NSS = false; bool multifile = false, NSS = false;
char *incrementer = 0; char *incrementer = 0;
unzFile zipfile = unzOpen(filename); //Open zip file unzFile zipfile = unzOpen(filename); //Open zip file
@@ -799,11 +799,11 @@ void loadZipFile(char *filename)
unz_file_info cFileInfo; //Create variable to hold info for a compressed file unz_file_info cFileInfo; //Create variable to hold info for a compressed file
int LargestGoodFile = 0; //To keep track of largest file int LargestGoodFile = 0; //To keep track of largest file
//Variables for the file we pick //Variables for the file we pick
char ourFile[256]; char ourFile[256];
ourFile[0] = '\n'; ourFile[0] = '\n';
while(cFile == UNZ_OK) //While not at end of compressed file list while(cFile == UNZ_OK) //While not at end of compressed file list
{ {
//Temporary char array for file name //Temporary char array for file name
@@ -825,13 +825,13 @@ void loadZipFile(char *filename)
incrementer = ourFile+strlen(ourFile)-1; incrementer = ourFile+strlen(ourFile)-1;
multifile = true; multifile = true;
break; break;
} }
} }
//Find Nintendo Super System ROMs //Find Nintendo Super System ROMs
if (strlen(cFileName) >= 5) //Char + ".IC2" if (strlen(cFileName) >= 5) //Char + ".IC2"
{ {
char *ext = cFileName+strlen(cFileName)-4; char *ext = cFileName+strlen(cFileName)-4;
if (!strncasecmp(ext, ".IC", 3)) if (!strncasecmp(ext, ".IC", 3))
{ {
strcpy(ourFile, cFileName); strcpy(ourFile, cFileName);
@@ -848,12 +848,12 @@ void loadZipFile(char *filename)
{ {
strcpy(ourFile, cFileName); strcpy(ourFile, cFileName);
LargestGoodFile = fileSize; LargestGoodFile = fileSize;
} }
//Go to next file in zip file //Go to next file in zip file
cFile = unzGoToNextFile(zipfile); cFile = unzGoToNextFile(zipfile);
} }
//No files found //No files found
if (ourFile[0] == '\n') if (ourFile[0] == '\n')
{ {
@@ -883,14 +883,14 @@ void loadZipFile(char *filename)
//Too big? //Too big?
if (curromspace + fileSize > maxromspace+512) if (curromspace + fileSize > maxromspace+512)
{ {
unzClose(zipfile); unzClose(zipfile);
return; return;
} }
//Open file //Open file
unzOpenCurrentFile(zipfile); unzOpenCurrentFile(zipfile);
//Read file into memory //Read file into memory
err = unzReadCurrentFile(zipfile, ROM+curromspace, fileSize); err = unzReadCurrentFile(zipfile, ROM+curromspace, fileSize);
@@ -899,7 +899,7 @@ void loadZipFile(char *filename)
//Encountered error? //Encountered error?
if (err != fileSize) if (err != fileSize)
{ {
unzClose(zipfile); unzClose(zipfile);
return; return;
} }
@@ -920,7 +920,7 @@ void loadZipFile(char *filename)
} }
if (!multifile) if (!multifile)
{ {
unzClose(zipfile); unzClose(zipfile);
return; return;
} }
@@ -934,7 +934,7 @@ void SplitSetup(char *basepath, char *basefile, unsigned int MirrorSystem)
curromspace = 0; curromspace = 0;
if (maxromspace < addOnStart+addOnSize) { return; } if (maxromspace < addOnStart+addOnSize) { return; }
memcpy(ROM+addOnStart, ROM, addOnSize); memcpy(ROM+addOnStart, ROM, addOnSize);
if (*basepath == 0) if (*basepath == 0)
{ {
@@ -974,19 +974,19 @@ void SplitSetup(char *basepath, char *basefile, unsigned int MirrorSystem)
case 1: case 1:
memcpy(ROM+0x100000, ROM, 0x100000); //Mirror 8 to 16 memcpy(ROM+0x100000, ROM, 0x100000); //Mirror 8 to 16
break; break;
case 2: case 2:
memcpy(ROM+0x180000, ROM+0x100000, 0x80000); //Mirrors 12 to 16 memcpy(ROM+0x180000, ROM+0x100000, 0x80000); //Mirrors 12 to 16
memcpy(ROM+0x200000, ROM+0x400000, 0x80000); //Copy base over memcpy(ROM+0x200000, ROM+0x400000, 0x80000); //Copy base over
memset(ROM+0x280000, 0, 0x180000); //Blank out rest memset(ROM+0x280000, 0, 0x180000); //Blank out rest
break; break;
case 3: case 3:
memcpy(ROM+0x40000, ROM, 0x40000); memcpy(ROM+0x40000, ROM, 0x40000);
memcpy(ROM+0x80000, ROM, 0x80000); memcpy(ROM+0x80000, ROM, 0x80000);
break; break;
} }
curromspace = addOnStart+addOnSize; curromspace = addOnStart+addOnSize;
SplittedROM = true; SplittedROM = true;
} }
@@ -998,7 +998,7 @@ void SplitSupport()
{ {
unsigned char *ROM = (unsigned char *)romdata; unsigned char *ROM = (unsigned char *)romdata;
SplittedROM = false; SplittedROM = false;
//Same Game add on //Same Game add on
if (ROM[Hi+CompanyOffset] == 0x33 && curromspace == 0x80000 && if (ROM[Hi+CompanyOffset] == 0x33 && curromspace == 0x80000 &&
!ROM[Hi+BankOffset] && !ROM[Hi+BSMonthOffset] && !ROM[Hi+BSDayOffset]) !ROM[Hi+BankOffset] && !ROM[Hi+BSMonthOffset] && !ROM[Hi+BSDayOffset])
@@ -1006,9 +1006,9 @@ void SplitSupport()
addOnStart = 0x200000; addOnStart = 0x200000;
addOnSize = 0x80000; addOnSize = 0x80000;
SplitSetup(SGPath, "SAMEGAME.ZIP", 1); SplitSetup(SGPath, "SAMEGAME.ZIP", 1);
} }
//SD Gundam G-Next add on //SD Gundam G-Next add on
if (ROM[Lo+CompanyOffset] == 0x33 && curromspace == 0x80000 && if (ROM[Lo+CompanyOffset] == 0x33 && curromspace == 0x80000 &&
!ROM[Lo+BankOffset] && !ROM[Lo+BSMonthOffset] && !ROM[Lo+BSDayOffset] && !strncmp(ROM+Lo, "GNEXT", 5)) !ROM[Lo+BankOffset] && !ROM[Lo+BSMonthOffset] && !ROM[Lo+BSDayOffset] && !strncmp(ROM+Lo, "GNEXT", 5))
{ {
@@ -1016,7 +1016,7 @@ void SplitSupport()
addOnSize = 0x80000; addOnSize = 0x80000;
SplitSetup(GNextPath, "G-NEXT.ZIP", 2); SplitSetup(GNextPath, "G-NEXT.ZIP", 2);
addOnStart = 0x200000; addOnStart = 0x200000;
} }
//Sufami Turbo //Sufami Turbo
if (!strncmp(ROM, "BANDAI SFC-ADX", 14)) if (!strncmp(ROM, "BANDAI SFC-ADX", 14))
@@ -1024,7 +1024,7 @@ void SplitSupport()
addOnStart = 0x100000; addOnStart = 0x100000;
addOnSize = curromspace; addOnSize = curromspace;
SplitSetup(STPath, "STBIOS.ZIP", 3); SplitSetup(STPath, "STBIOS.ZIP", 3);
} }
} }
bool NSRTHead(unsigned char *ROM) bool NSRTHead(unsigned char *ROM)
@@ -1038,9 +1038,9 @@ bool NSRTHead(unsigned char *ROM)
(NSRTHead[0] & 0x0F) > 13 || (NSRTHead[0] & 0x0F) > 13 ||
((NSRTHead[0] & 0xF0) >> 4) > 3 || ((NSRTHead[0] & 0xF0) >> 4) > 3 ||
((NSRTHead[0] & 0xF0) >> 4) == 0) ((NSRTHead[0] & 0xF0) >> 4) == 0)
{ {
return(false); //Corrupt return(false); //Corrupt
} }
return(true); //NSRT header return(true); //NSRT header
} }
return(false); //None return(false); //None
@@ -1122,7 +1122,7 @@ void loadROM()
case 512: case 512:
Header512 = true; Header512 = true;
break; break;
default: default:
{ {
unsigned char *ROM = (unsigned char *)romdata; unsigned char *ROM = (unsigned char *)romdata;
@@ -1149,7 +1149,7 @@ void loadROM()
} }
} }
snesmouse = 0; snesmouse = 0;
input1gp = true; input1gp = true;
input1mouse = true; input1mouse = true;
input2gp = true; input2gp = true;
@@ -1158,11 +1158,11 @@ void loadROM()
input2just = true; input2just = true;
if (Header512) if (Header512)
{ {
unsigned char *ROM = (unsigned char *)romdata; unsigned char *ROM = (unsigned char *)romdata;
if (NSRTHead(ROM)) if (NSRTHead(ROM))
{ {
switch (ROM[0x1ED]) switch (ROM[0x1ED])
{ {
default: break; default: break;
@@ -1179,7 +1179,7 @@ void loadROM()
input2scope = false; input2scope = false;
input2just = false; input2just = false;
input1mouse = false; input1mouse = false;
break; break;
case 0x03: //Super Scope port 2 case 0x03: //Super Scope port 2
snesmouse = 3; snesmouse = 3;
@@ -1248,7 +1248,7 @@ void loadROM()
} }
} }
curromspace -= 512; curromspace -= 512;
memmove((unsigned char *)romdata, ((unsigned char *)romdata)+512, curromspace); memmove((unsigned char *)romdata, ((unsigned char *)romdata)+512, curromspace);
} }
snesinputdefault = snesmouse; snesinputdefault = snesmouse;
@@ -1854,7 +1854,6 @@ extern unsigned int spcnumread, spchalted;
extern unsigned char NextLineCache, sramsavedis, sndrot, regsbackup[3019]; extern unsigned char NextLineCache, sramsavedis, sndrot, regsbackup[3019];
extern unsigned char yesoutofmemory, fnames[512]; extern unsigned char yesoutofmemory, fnames[512];
void SetupROM();
void initsnes(); void initsnes();
void outofmemfix(); void outofmemfix();
void GUIDoReset(); void GUIDoReset();
@@ -1876,34 +1875,6 @@ bool loadSRAM(char *sramname)
else { return(false); } else { return(false); }
} }
void powercycle(bool sramload)
{
memset(sram, 0xFF, 32768);
clearSPCRAM();
nmiprevaddrl = 0;
nmiprevaddrh = 0;
nmirept = 0;
nmiprevline = 224;
nmistatus = 0;
spcnumread = 0;
spchalted = ~0;
NextLineCache = 0;
curexecstate = 1;
if (sramload) { loadSRAM(fnames+1); }
asm_call(SetupROM);
asm_call(initsnes);
sramsavedis = 0;
memcpy(&sndrot, regsbackup, 3019);
if (yesoutofmemory == 1) { asm_call(outofmemfix); }
asm_call(GUIDoReset);
}
extern unsigned int Voice0Freq, Voice1Freq, Voice2Freq, Voice3Freq; extern unsigned int Voice0Freq, Voice1Freq, Voice2Freq, Voice3Freq;
extern unsigned int Voice4Freq, Voice5Freq, Voice6Freq, Voice7Freq; extern unsigned int Voice4Freq, Voice5Freq, Voice6Freq, Voice7Freq;
extern unsigned int dspPAdj; extern unsigned int dspPAdj;
@@ -1932,13 +1903,16 @@ void initpitch()
extern unsigned int SfxR1, SfxR2, SetaCmdEnable, SfxSFR, SfxSCMR; extern unsigned int SfxR1, SfxR2, SetaCmdEnable, SfxSFR, SfxSCMR;
extern unsigned char lorommapmode2, disablespcclr, *sfxramdata, SramExists; extern unsigned char lorommapmode2, disablespcclr, *sfxramdata, SramExists;
extern unsigned char *setaramdata, *wramdata, *SA1RAMArea; extern unsigned char *setaramdata, *wramdata, *SA1RAMArea, cbitmode, curromsize;
extern unsigned char ForcePal, ForceROMTiming, romispal;
extern unsigned short totlines;
void SetAddressingModes(), GenerateBank0Table(); void SetAddressingModes(), GenerateBank0Table();
void SetAddressingModesSA1(), GenerateBank0TableSA1(); void SetAddressingModesSA1(), GenerateBank0TableSA1();
void calculate_state_sizes(), InitRewindVars();
void InitDSP(), InitDSP2(), InitDSP4(), InitFxTables(), initregr(), initregw(); void InitDSP(), InitDSP2(), InitDSP4(), InitFxTables(), initregr(), initregw();
void SPC7110Load(); void SPC7110Load(), DOSClearScreen(), dosmakepal();
void CheckROMTypeC() void CheckROMType()
{ {
unsigned char *ROM = (unsigned char *)romdata; unsigned char *ROM = (unsigned char *)romdata;
@@ -1947,7 +1921,7 @@ void CheckROMTypeC()
lorommapmode2 = 0; lorommapmode2 = 0;
if (!strncmp(ROM+0x207FC0, "DERBY STALLION 96", 17) || !strncmp(ROM+Lo, "SOUND NOVEL-TCOOL", 17)) if (!strncmp(ROM+0x207FC0, "DERBY STALLION 96", 17) || !strncmp(ROM+Lo, "SOUND NOVEL-TCOOL", 17))
{ {
lorommapmode2 = 1; lorommapmode2 = 1;
} }
@@ -1968,7 +1942,11 @@ void CheckROMTypeC()
if (DSP1Enable || DSP2Enable || DSP3Enable) if (DSP1Enable || DSP2Enable || DSP3Enable)
{ {
if (DSP2Enable) { asm_call(InitDSP2); } if (DSP2Enable)
{
asm_call(InitDSP2);
}
InitDSP(); InitDSP();
DSP1Type = (romtype == 2) ? 2 : 1; DSP1Type = (romtype == 2) ? 2 : 1;
@@ -1983,7 +1961,7 @@ void CheckROMTypeC()
} }
if (SFXEnable) if (SFXEnable)
{ {
// Setup SuperFX stuff // Setup SuperFX stuff
if (Sup48mbit) if (Sup48mbit)
{ {
@@ -1992,10 +1970,10 @@ void CheckROMTypeC()
map_mem(0x71, &sfxbankb, 1); map_mem(0x71, &sfxbankb, 1);
map_mem(0x72, &sfxbankc, 1); map_mem(0x72, &sfxbankc, 1);
map_mem(0x73, &sfxbankd, 1); map_mem(0x73, &sfxbankd, 1);
//SRAM mapping, banks 78 - 79 //SRAM mapping, banks 78 - 79
map_mem(0x78, &sramsbank, 2); map_mem(0x78, &sramsbank, 2);
SfxR1 = 0; SfxR1 = 0;
SfxR2 = 0; SfxR2 = 0;
memset(sfxramdata, 0, 262144); // clear 256kB SFX ram memset(sfxramdata, 0, 262144); // clear 256kB SFX ram
@@ -2016,11 +1994,11 @@ void CheckROMTypeC()
if (SETAEnable) if (SETAEnable)
{ {
// Setup SETA 010/011 stuff // Setup SETA 010/011 stuff
// Really banks 68h-6Fh:0000-7FFF are all mapped the same by the chip but // Really banks 68h-6Fh:0000-7FFF are all mapped the same by the chip but
// F1 ROC II only uses bank 68h // F1 ROC II only uses bank 68h
map_mem(0x68, &setabank, 1); map_mem(0x68, &setabank, 1);
// Control register (and some status?) is in banks 60h-67h:0000-3FFF // Control register (and some status?) is in banks 60h-67h:0000-3FFF
map_mem(0x60, &setabanka, 1); map_mem(0x60, &setabanka, 1);
@@ -2029,7 +2007,7 @@ void CheckROMTypeC()
// proper SETA sram area // proper SETA sram area
if (SramExists) if (SramExists)
{ {
memcpy(setaramdata, sram, 4096); memcpy(setaramdata, sram, 4096);
} }
} }
@@ -2059,7 +2037,7 @@ void CheckROMTypeC()
map_mem(0x30, &dsp1bank, 0x10); map_mem(0x30, &dsp1bank, 0x10);
map_mem(0xB0, &dsp1bank, 0x10); map_mem(0xB0, &dsp1bank, 0x10);
map_mem(0xE0, &dsp1bank, 0x10); map_mem(0xE0, &dsp1bank, 0x10);
if (DSP2Enable) if (DSP2Enable)
{ {
map_mem(0x3F, &dsp2bank, 1); map_mem(0x3F, &dsp2bank, 1);
@@ -2071,7 +2049,124 @@ void CheckROMTypeC()
asm_call(SPC7110Load); asm_call(SPC7110Load);
} }
void SetupROMc() extern unsigned short copv, brkv, abortv, nmiv, nmiv2, irqv, irqv2, resetv;
{ extern unsigned short copv8, brkv8, abortv8, nmiv8, irqv8;
CheckROMTypeC();
void SetIRQVectors()
{ // get vectors (NMI & reset)
unsigned char *ROM = (unsigned char *)romdata;
if (!(ROM[infoloc+21] & 0xF0)) // if not fastrom
{
opexec358 = opexec268;
opexec358cph = opexec268cph;
cycpb358 = cycpb268;
}
if (!memcmp(ROM+infoloc+36+24, "\0xFF\0xFF", 2)) // if reset error
{
memcpy(ROM+infoloc+36+6, "\0x9C\0xFF", 2);
memcpy(ROM+infoloc+36+24, "\0x80\0xFF", 2);
}
memcpy(&copv, ROM+infoloc+0x24, 2);
memcpy(&brkv, ROM+infoloc+0x26, 2);
memcpy(&abortv, ROM+infoloc+0x28, 2);
memcpy(&nmiv, ROM+infoloc+0x2A, 2);
memcpy(&nmiv2, ROM+infoloc+0x2A, 2);
memcpy(&irqv, ROM+infoloc+0x2E, 2);
memcpy(&irqv2, ROM+infoloc+0x2E, 2);
// 8-bit and reset
memcpy(&copv8, ROM+infoloc+0x34, 2);
memcpy(&abortv8, ROM+infoloc+0x38, 2);
memcpy(&nmiv8, ROM+infoloc+0x3A, 2);
memcpy(&resetv, ROM+infoloc+0x3C, 2);
memcpy(&brkv8, ROM+infoloc+0x3E, 2);
memcpy(&irqv8, ROM+infoloc+0x3E, 2);
if (yesoutofmemory) // failed ?
{
resetv = 0x8000;
memcpy(ROM+0x0000, "\0x80\0xFE", 2);
memcpy(ROM+0x8000, "\0x80\0xFE", 2);
}
}
void SetupROM()
{
unsigned char *ROM = (unsigned char *)romdata;
CheckROMType();
SetIRQVectors();
#ifdef __MSDOS__
asm_call(DOSClearScreen);
if (!cbitmode) // 8-bit mode uses a palette
{
asm_call(dosmakepal);
}
#endif
// get ROM and SRAM sizes
curromsize = ROM[infoloc+0x17];
SetupSramSize();
calculate_state_sizes();
InitRewindVars();
// get timing (pal/ntsc)
ForcePal = ForceROMTiming;
switch (ForcePal)
{
case 1:
romispal = 0;
break;
case 2:
romispal = (!BSEnable);
break;
default:
romispal = ((!BSEnable) && (ROM[infoloc+0x19] > 1) && (ROM[infoloc+0x19] < 0xD));
}
if (romispal)
{
totlines = 314;
MsgCount = 100;
}
else
{
totlines = 263;
MsgCount = 120;
}
}
void powercycle(bool sramload)
{
memset(sram, 0xFF, 32768);
clearSPCRAM();
nmiprevaddrl = 0;
nmiprevaddrh = 0;
nmirept = 0;
nmiprevline = 224;
nmistatus = 0;
spcnumread = 0;
spchalted = ~0;
NextLineCache = 0;
curexecstate = 1;
if (sramload) { loadSRAM(fnames+1); }
SetupROM();
asm_call(initsnes);
sramsavedis = 0;
memcpy(&sndrot, regsbackup, 3019);
if (yesoutofmemory == 1) { asm_call(outofmemfix); }
asm_call(GUIDoReset);
} }

View File

@@ -63,7 +63,7 @@ EXTSYM GUICPC, newgfx16b
EXTSYM vesa2_clbitng,vesa2_clbitng2,vesa2_clbitng3 EXTSYM vesa2_clbitng,vesa2_clbitng2,vesa2_clbitng3
EXTSYM granadd,CSStatus,CSStatus2,CSStatus3 EXTSYM granadd,CSStatus,CSStatus2,CSStatus3
EXTSYM SpecialLine EXTSYM SpecialLine
EXTSYM vidbufferofsb EXTSYM Clear2xSaIBuffer
;EXTSYM Super2xSaI ;EXTSYM Super2xSaI
EXTSYM HalfTransB,HalfTransC EXTSYM HalfTransB,HalfTransC
@@ -134,7 +134,7 @@ NEWSYM FPUZero
dec ecx dec ecx
jnz .TopOfLoop jnz .TopOfLoop
fstp st0 fstp st0
%endif %endif
ret ret
%if 0 %if 0
@@ -553,11 +553,11 @@ NEWSYM FontData
db 01111100b,11000110b,11000000b,11000000b ; G, 11 db 01111100b,11000110b,11000000b,11000000b ; G, 11
db 11001110b,11000110b,01111100b,00000000b db 11001110b,11000110b,01111100b,00000000b
db 11000110b,11000110b,11000110b,11111110b ; H, 12 db 11000110b,11000110b,11000110b,11111110b ; H, 12
db 11000110b,11000110b,11000110b,00000000b db 11000110b,11000110b,11000110b,00000000b
db 00111100b,00011000b,00011000b,00011000b ; I, 13 db 00111100b,00011000b,00011000b,00011000b ; I, 13
db 00011000b,00011000b,00111100b,00000000b db 00011000b,00011000b,00111100b,00000000b
db 00011110b,00001100b,00001100b,00001100b ; J, 14 db 00011110b,00001100b,00001100b,00001100b ; J, 14
db 00001100b,11001100b,00111100b,00000000b db 00001100b,11001100b,00111100b,00000000b
db 11001100b,11011000b,11110000b,11100000b ; K, 15 db 11001100b,11011000b,11110000b,11100000b ; K, 15
db 11110000b,11011000b,11001100b,00000000b db 11110000b,11011000b,11001100b,00000000b
db 11000000b,11000000b,11000000b,11000000b ; L, 16 db 11000000b,11000000b,11000000b,11000000b ; L, 16
@@ -622,7 +622,7 @@ NEWSYM FontData
; #, 31 (, 3A {, 43 ; #, 31 (, 3A {, 43
; =, 32 ), 3B }, 44 ; =, 32 ), 3B }, 44
; ", 33 @, 3C Up,45 ; ", 33 @, 3C Up,45
; \, 34 ', 3D Dn,46 ; \, 34 ', 3D Dn,46
; *, 35 !, 3E Lt,47 ; *, 35 !, 3E Lt,47
; ?, 36 $, 3F Rt,48 ; ?, 36 $, 3F Rt,48
; %, 37 ;, 40 Bk,49 ; %, 37 ;, 40 Bk,49
@@ -1540,7 +1540,7 @@ NEWSYM saveselect
pushad pushad
call mzt_chdir call mzt_chdir
popad popad
.nomovie .nomovie
mov byte[f3menuen],1 mov byte[f3menuen],1
mov byte[ForceNonTransp],1 mov byte[ForceNonTransp],1
cmp byte[ForceNewGfxOff],0 cmp byte[ForceNewGfxOff],0
@@ -1774,7 +1774,7 @@ NEWSYM saveselect
pushad pushad
call UpChdir call UpChdir
popad popad
.nomovie2 .nomovie2
ret ret
SECTION .bss SECTION .bss
@@ -2081,13 +2081,15 @@ SECTION .text
mov byte[f3menuen],0 mov byte[f3menuen],0
mov byte[ForceNonTransp],0 mov byte[ForceNonTransp],0
mov byte[GUIOn],0 mov byte[GUIOn],0
pushad
call Clear2xSaIBuffer call Clear2xSaIBuffer
popad
cmp byte[MovieProcessing],0 cmp byte[MovieProcessing],0
jz .nomovie3 jz .nomovie3
pushad pushad
call UpChdir call UpChdir
popad popad
.nomovie3 .nomovie3
ret ret
SECTION .data SECTION .data
@@ -3227,12 +3229,12 @@ NEWSYM chatTL, resd 1
SECTION .data SECTION .data
NEWSYM chatreqtable NEWSYM chatreqtable
db 0 ,2 ,'1','2','3','4','5','6','7','8','9','0','-','=',8 ,0 db 0 ,2 ,'1','2','3','4','5','6','7','8','9','0','-','=',8 ,0
db 'Q','W','E','R','T','Y','U','I','O','P','[',']',13 ,0 ,'A','S' db 'Q','W','E','R','T','Y','U','I','O','P','[',']',13 ,0 ,'A','S'
db 'D','F','G','H','J','K','L',';',27h,'`',1 ,'\','Z','X','C','V' db 'D','F','G','H','J','K','L',';',27h,'`',1 ,'\','Z','X','C','V'
db 'B','N','M',',','.','/',1 ,0 ,0 ,' ',0 ,0 ,0 ,0 ,0 ,0 db 'B','N','M',',','.','/',1 ,0 ,0 ,' ',0 ,0 ,0 ,0 ,0 ,0
; Shift Key Presses ; Shift Key Presses
db 0 ,2 ,'!','@','#','$','%','^','&','*','(',')','_','+',8 ,0 db 0 ,2 ,'!','@','#','$','%','^','&','*','(',')','_','+',8 ,0
db 'Q','W','E','R','T','Y','U','I','O','P','{','}',13 ,0 ,'A','S' db 'Q','W','E','R','T','Y','U','I','O','P','{','}',13 ,0 ,'A','S'
db 'D','F','G','H','J','K','L',':','"','~',1 ,'|','Z','X','C','V' db 'D','F','G','H','J','K','L',':','"','~',1 ,'|','Z','X','C','V'
db 'B','N','M','<','>','?',1 ,0 ,0 ,' ',0 ,0 ,0 ,0 ,0 ,0 db 'B','N','M','<','>','?',1 ,0 ,0 ,' ',0 ,0 ,0 ,0 ,0 ,0
@@ -3581,13 +3583,13 @@ NEWSYM copyvid
jne .not16bframe jne .not16bframe
mov esi,216*288*2+32*2 mov esi,216*288*2+32*2
add esi,[vidbuffer] add esi,[vidbuffer]
call OutputGraphicString16b5x5 call OutputGraphicString16b5x5
jmp .nomovie4 jmp .nomovie4
.not16bframe .not16bframe
mov esi,216*288+32 mov esi,216*288+32
add esi,[vidbuffer] add esi,[vidbuffer]
call OutputGraphicString5x5 call OutputGraphicString5x5
.nomovie4 .nomovie4
jmp vidpaste jmp vidpaste
SECTION .bss SECTION .bss
.sdrawptr resd 1 .sdrawptr resd 1
@@ -3711,19 +3713,6 @@ NEWSYM vidpaste
SECTION .bss SECTION .bss
.SSRedCo resw 1 .SSRedCo resw 1
SECTION .text
NEWSYM Clear2xSaIBuffer
mov ebx,[vidbufferofsb]
add ebx,288*2
mov ecx,144*239
.nextb
mov dword[ebx],0FFFFFFFFh
add ebx,4
dec ecx
jnz .nextb
ret
SECTION .data SECTION .data
NEWSYM MsgCount, dd 120 ; How long message will stay (PAL = 100) NEWSYM MsgCount, dd 120 ; How long message will stay (PAL = 100)

View File

@@ -22,8 +22,20 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#ifdef __LINUX__
#include "gblhdr.h"
#define DIR_SLASH "/"
#else
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <sys/stat.h>
#define DIR_SLASH "\\"
#endif
extern unsigned int newengen, nggposng[2]; extern unsigned int newengen, nggposng[2];
extern unsigned short PrevPicture[64*56], *vidbuffer; extern unsigned short PrevPicture[64*56], *vidbuffer, *vidbufferofsb;
void CapturePicture() void CapturePicture()
{ {
@@ -61,3 +73,8 @@ void CapturePicture()
} // 0111 1111 1110 0000 and 0000 0000 0001 1111 } // 0111 1111 1110 0000 and 0000 0000 0001 1111
} }
} }
void Clear2xSaIBuffer()
{
memset(vidbufferofsb+576, 0xFF, 576*239);
}

View File

@@ -26,7 +26,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
extern "C" { extern "C" {
#include <windows.h> #include <windows.h>
#include <stdio.h> #include <stdio.h>
#include <ddraw.h> #include <ddraw.h>
//#include <initguid.h> //#include <initguid.h>
#include <mmsystem.h> #include <mmsystem.h>
#include <time.h> #include <time.h>
@@ -390,7 +390,7 @@ void DrawScreen()
DD_Primary->Blt(&rcWindow, AltSurface == 0 ? DD_CFB : DD_CFB16, &BlitArea, DDBLT_WAIT, NULL); DD_Primary->Blt(&rcWindow, AltSurface == 0 ? DD_CFB : DD_CFB16, &BlitArea, DDBLT_WAIT, NULL);
} }
} }
DWORD InputEn=0; DWORD InputEn=0;
BOOL InputAcquire(void) BOOL InputAcquire(void)
@@ -652,11 +652,11 @@ LRESULT CALLBACK Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
case WM_PAINT: case WM_PAINT:
ValidateRect(hWnd,NULL); ValidateRect(hWnd,NULL);
break; break;
case WM_ACTIVATE: case WM_ACTIVATE:
if (LOWORD(wParam) != WA_INACTIVE) if (LOWORD(wParam) != WA_INACTIVE)
{ {
IsActivated = 1; IsActivated = 1;
if (FirstActivate == 0) initwinvideo(); if (FirstActivate == 0) initwinvideo();
InputAcquire(); InputAcquire();
if (FirstActivate == 1) FirstActivate = 0; if (FirstActivate == 1) FirstActivate = 0;
CheckPriority(); CheckPriority();
@@ -769,7 +769,7 @@ BOOL InitSound()
else UsePrimaryBuffer=0; else UsePrimaryBuffer=0;
} }
} }
else else
{ {
return FALSE; return FALSE;
} }
@@ -826,7 +826,7 @@ BOOL InitSound()
wfx.wBitsPerSample = 16; wfx.wBitsPerSample = 16;
wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign; wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign;
wfx.cbSize=0; wfx.cbSize=0;
memset(&dsbd, 0, sizeof(DSBUFFERDESC)); memset(&dsbd, 0, sizeof(DSBUFFERDESC));
dsbd.dwSize = sizeof(DSBUFFERDESC); dsbd.dwSize = sizeof(DSBUFFERDESC);
dsbd.dwFlags = DSBCAPS_GETCURRENTPOSITION2 | DSBCAPS_STICKYFOCUS; dsbd.dwFlags = DSBCAPS_GETCURRENTPOSITION2 | DSBCAPS_STICKYFOCUS;
@@ -863,8 +863,8 @@ BOOL InitSound()
SoundEnabled=1; SoundEnabled=1;
FirstSound=0; FirstSound=0;
return TRUE; return TRUE;
} }
else else
{ {
return FALSE; return FALSE;
} }
@@ -955,7 +955,7 @@ BOOL ReInitSound()
wfx.wBitsPerSample = 16; wfx.wBitsPerSample = 16;
wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign; wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign;
wfx.cbSize=0; wfx.cbSize=0;
memset(&dsbd, 0, sizeof(DSBUFFERDESC)); memset(&dsbd, 0, sizeof(DSBUFFERDESC));
dsbd.dwSize = sizeof(DSBUFFERDESC); dsbd.dwSize = sizeof(DSBUFFERDESC);
dsbd.dwFlags = DSBCAPS_GETCURRENTPOSITION2 | DSBCAPS_STICKYFOCUS; dsbd.dwFlags = DSBCAPS_GETCURRENTPOSITION2 | DSBCAPS_STICKYFOCUS;
@@ -992,8 +992,8 @@ BOOL ReInitSound()
SoundEnabled=1; SoundEnabled=1;
FirstSound=0; FirstSound=0;
return TRUE; return TRUE;
} }
else else
{ {
return FALSE; return FALSE;
} }
@@ -1100,7 +1100,7 @@ BOOL FAR PASCAL InitJoystickInput(LPCDIDEVICEINSTANCE pdinst, LPVOID pvRef)
return DIENUM_CONTINUE; return DIENUM_CONTINUE;
} }
if (didc.dwButtons <= 16) if (didc.dwButtons <= 16)
NumBTN[CurrentJoy] = didc.dwButtons; NumBTN[CurrentJoy] = didc.dwButtons;
else else
NumBTN[CurrentJoy] = 16; NumBTN[CurrentJoy] = 16;
@@ -1396,7 +1396,7 @@ void TestJoy()
} }
} }
} }
} }
@@ -1462,7 +1462,7 @@ int InitDirectDraw()
} }
ReleaseDirectDraw(); ReleaseDirectDraw();
GetClientRect(hMainWindow, &rcWindow); GetClientRect(hMainWindow, &rcWindow);
ClientToScreen(hMainWindow, ( LPPOINT )&rcWindow); ClientToScreen(hMainWindow, ( LPPOINT )&rcWindow);
ClientToScreen(hMainWindow, ( LPPOINT )&rcWindow + 1); ClientToScreen(hMainWindow, ( LPPOINT )&rcWindow + 1);
@@ -1550,7 +1550,7 @@ int InitDirectDraw()
ddsd2.dwSize = sizeof(DDSURFACEDESC2); ddsd2.dwSize = sizeof(DDSURFACEDESC2);
ddsd2.dwFlags = DDSD_CAPS; ddsd2.dwFlags = DDSD_CAPS;
ddsd2.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE; ddsd2.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE;
if (FullScreen == 1) if (FullScreen == 1)
{ {
ddsd2.dwFlags |= DDSD_BACKBUFFERCOUNT; ddsd2.dwFlags |= DDSD_BACKBUFFERCOUNT;
@@ -1592,20 +1592,20 @@ int InitDirectDraw()
lpDD=NULL; lpDD=NULL;
return FALSE; return FALSE;
} }
if (lpDDClipper->SetHWnd(0,hMainWindow) != DD_OK) if (lpDDClipper->SetHWnd(0,hMainWindow) != DD_OK)
{ {
lpDD->Release(); lpDD->Release();
lpDD=NULL; lpDD=NULL;
return FALSE; return FALSE;
} }
if (DD_Primary->SetClipper(lpDDClipper) != DD_OK) if (DD_Primary->SetClipper(lpDDClipper) != DD_OK)
{ {
return FALSE; return FALSE;
} }
} }
format.dwSize = sizeof(DDPIXELFORMAT); format.dwSize = sizeof(DDPIXELFORMAT);
if (DD_Primary->GetPixelFormat(&format) != DD_OK) if (DD_Primary->GetPixelFormat(&format) != DD_OK)
@@ -1720,7 +1720,7 @@ DWORD LockSurface()
} }
else else
return(0); return(0);
} }
} }
void UnlockSurface() void UnlockSurface()
@@ -1948,8 +1948,8 @@ void initwinvideo(void)
if (DMode == 1) if (DMode == 1)
{ {
if ((DSMode == 1) || (FullScreen == 0)) if ((DSMode == 1) || (FullScreen == 0))
SurfaceX = 512; SurfaceX = 512;
else else
SurfaceX = 640; SurfaceX = 640;
SurfaceY=480; SurfaceY=480;
} }
@@ -2078,7 +2078,7 @@ void initwinvideo(void)
CheckAlwaysOnTop(); CheckAlwaysOnTop();
if (!hMainWindow) if (!hMainWindow)
{ {
return; return;
} }
@@ -2098,7 +2098,7 @@ void initwinvideo(void)
if (Force60hz) Refresh = 60; if (Force60hz) Refresh = 60;
InitDirectDraw(); InitDirectDraw();
clearwin(); clearwin();
asm_call(Clear2xSaIBuffer); Clear2xSaIBuffer();
clear_display(); clear_display();
return; return;
} }
@@ -2110,11 +2110,10 @@ void initwinvideo(void)
ReleaseDirectDraw(); ReleaseDirectDraw();
InitDirectDraw(); InitDirectDraw();
clearwin(); clearwin();
asm_call(Clear2xSaIBuffer); Clear2xSaIBuffer();
clear_display(); clear_display();
return; return;
} }
} }
extern unsigned int vidbuffer; extern unsigned int vidbuffer;
@@ -2149,7 +2148,7 @@ void CheckTimers(void)
} }
} }
start2 += update_ticks_pc2; start2 += update_ticks_pc2;
} }
if (T60HZEnabled == 1) if (T60HZEnabled == 1)
{ {
@@ -2159,7 +2158,7 @@ void CheckTimers(void)
{ {
Game60hzcall(); Game60hzcall();
start += update_ticks_pc; start += update_ticks_pc;
} }
} }
if (T36HZEnabled == 1) if (T36HZEnabled == 1)
@@ -2170,7 +2169,7 @@ void CheckTimers(void)
{ {
GUI36hzcall(); GUI36hzcall();
start += update_ticks_pc; start += update_ticks_pc;
} }
} }
} }
@@ -2533,7 +2532,7 @@ void drawscreenwin(void)
SURFDW=(DWORD *) &SurfBuf[(resolutn-1)*pitch]; SURFDW=(DWORD *) &SurfBuf[(resolutn-1)*pitch];
color32=0x7F000000; color32=0x7F000000;
for(i=0;i<256;i++) for(i=0;i<256;i++)
{ {
SURFDW[i]=color32; SURFDW[i]=color32;
@@ -2541,11 +2540,11 @@ void drawscreenwin(void)
SURFDW=(DWORD *) &SurfBuf[resolutn*pitch]; SURFDW=(DWORD *) &SurfBuf[resolutn*pitch];
color32=0x7F000000; color32=0x7F000000;
for(i=0;i<256;i++) for(i=0;i<256;i++)
{ {
SURFDW[i]=color32; SURFDW[i]=color32;
} }
break; break;
case 24: case 24:
MessageBox (NULL, "Sorry. ZSNESw does not work in windowed 24 bit color modes. \nClick 'OK' to switch to a full screen mode.", "DDRAW Error" , MB_ICONERROR ); MessageBox (NULL, "Sorry. ZSNESw does not work in windowed 24 bit color modes. \nClick 'OK' to switch to a full screen mode.", "DDRAW Error" , MB_ICONERROR );
@@ -2579,7 +2578,7 @@ void drawscreenwin(void)
{ {
SURFDW=(DWORD *) &SurfBuf[j*pitch]; SURFDW=(DWORD *) &SurfBuf[j*pitch];
color32=0x7F000000; color32=0x7F000000;
for(i=0;i<320;i++) for(i=0;i<320;i++)
{ {
SURFDW[i]=color32; SURFDW[i]=color32;
@@ -2612,7 +2611,7 @@ void drawscreenwin(void)
ScreenPtr=ScreenPtr+576-512; ScreenPtr=ScreenPtr+576-512;
SURFDW=(DWORD *) &SurfBuf[(j)*pitch]; SURFDW=(DWORD *) &SurfBuf[(j)*pitch];
} }
for(j=((resolutn-1)+8);j<240;j++) for(j=((resolutn-1)+8);j<240;j++)
{ {
SURFDW=(DWORD *) &SurfBuf[j*pitch]; SURFDW=(DWORD *) &SurfBuf[j*pitch];
@@ -2856,7 +2855,7 @@ void WinUpdateDevices()
case 4500: case 4500:
keys[0x100 + i * 32 + 0] = 1; keys[0x100 + i * 32 + 0] = 1;
keys[0x100 + i * 32 + 3] = 1; keys[0x100 + i * 32 + 3] = 1;
break; break;
case 9000: case 9000:
keys[0x100 + i * 32 + 0] = 1; keys[0x100 + i * 32 + 0] = 1;
break; break;
@@ -2893,7 +2892,7 @@ void WinUpdateDevices()
keys[0x100 + i * 32 + j] = 0; keys[0x100 + i * 32 + j] = 0;
} }
} }
} }
} }
@@ -3068,7 +3067,7 @@ void FrameSemaphore()
QueryPerformanceCounter((LARGE_INTEGER*)&end); QueryPerformanceCounter((LARGE_INTEGER*)&end);
delay = ((update_ticks_pc - (end - start)) * 1000.0 / freq) - 3.0; delay = ((update_ticks_pc - (end - start)) * 1000.0 / freq) - 3.0;
if (delay>0.0) WaitForSingleObject(hLock, (unsigned int)delay); if (delay>0.0) WaitForSingleObject(hLock, (unsigned int)delay);
} }