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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1411,7 +1411,9 @@ GUIWinClicked:
cmp edx,%2+8
jg %%noclick
xor %3,1
pushad
call Clear2xSaIBuffer
popad
%%noclick
%endmacro
@@ -2119,7 +2121,7 @@ DisplayGUIMovieClick:
GUIPButtonHole 100,40,byte[CMovieExt],'7'
GUIPButtonHole 120,40,byte[CMovieExt],'8'
GUIPButtonHole 140,40,byte[CMovieExt],'9'
DGOptnsProcBox 116,68,[KeyInsrtChap]
DGOptnsProcBox 116,84,[KeyNextChap]
DGOptnsProcBox 116,100,[KeyPrevChap]
@@ -2244,7 +2246,7 @@ DisplayGUIInputClick:
mov edi,pl5selk
mov dword[keycontrolval],pl5contrl
.nopl5
;Check if controller is set
push eax
mov eax,dword[keycontrolval]
@@ -3333,9 +3335,9 @@ DisplayGUISaveClick:
GUIPHoldbutton2 173,32,181,40,72,byte[RewindFrames],1,40
GUIPHoldbutton2 184,32,192,40,73,byte[RewindFrames],-1,0
DGOptnsProcBox 27,121,[KeyStateSlc0]
DGOptnsProcBox 27+45,121,[KeyStateSlc1]
DGOptnsProcBox 27+45,121,[KeyStateSlc1]
DGOptnsProcBox 27+45*2,121,[KeyStateSlc2]
DGOptnsProcBox 27+45*3,121,[KeyStateSlc3]
DGOptnsProcBox 27+45*3,121,[KeyStateSlc3]
DGOptnsProcBox 27,130,[KeyStateSlc4]
DGOptnsProcBox 27+45,130,[KeyStateSlc5]
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 Open_File,Close_File,Read_File,Write_File,Create_File,Get_Key,Get_Date
EXTSYM continueprognokeys,ForceNonTransp,GUIOn,Check_Key,JoyRead
EXTSYM GetScreen,SSKeyPressed,SPCKeyPressed,StopSound,StartSound
EXTSYM GetScreen,SSKeyPressed,SPCKeyPressed,StopSound,StartSound
EXTSYM ExecExitOkay,t1cc
EXTSYM Clear2xSaIBuffer
EXTSYM romdata,romtype,ScreenShotFormat
@@ -213,7 +213,7 @@ NEWSYM showmenu
.nomenuinc3
mov dword[menudrawbox8b.stringi+13],' BMP'
%ifndef NO_PNG
%ifndef NO_PNG
cmp byte[ScreenShotFormat],0
je .normalscrn
mov dword[menudrawbox8b.stringi+13],' PNG'
@@ -484,7 +484,9 @@ NEWSYM showmenu
call StartSound
mov byte[ForceNonTransp],0
mov byte[GUIOn],0
pushad
call Clear2xSaIBuffer
popad
cmp byte[MenuNoExit],1
je .noexitmenu
jmp continueprognokeys
@@ -1172,7 +1174,7 @@ NEWSYM savepcx
ret
.notpng
%endif
mov byte[pressed+1],0
mov byte[pressed+59],0
cmp byte[cbitmode],1

View File

@@ -96,25 +96,12 @@ EXTSYM sfxaccessbankw8d,sfxramdata
EXTSYM sramaccessbankr16,sramaccessbankr16s,sramaccessbankr8,sramaccessbankr8s
EXTSYM sramaccessbankw16,sramaccessbankw16s,sramaccessbankw8,sramaccessbankw8s
EXTSYM ScrDispl,wramreadptr,wramwriteptr
EXTSYM loadstate2,headerhack
EXTSYM loadstate2,CMovieExt,MoviePlay
;initc.c
EXTSYM clearmem,clearSPCRAM,PatchUsingIPS,loadZipFile,ZOpenFileName
EXTSYM loadROM,CalcChecksum,BankCheck,MirrorROM,SplittedROM,addOnStart,addOnSize
EXTSYM SPC7PackIndexLoad,SPC7110IndexSize,DumpROMLoadInfo,SetupSramSize,IntlEHi
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
EXTSYM clearmem,clearSPCRAM,PatchUsingIPS,ZOpenFileName,loadROM,SPC7110IndexSize
EXTSYM SPC7PackIndexLoad,IntlEHi,C4Enable,SPC7110Enable,RTCEnable,SA1Enable
EXTSYM SDD1Enable,OBCEnable,SFXEnable,BSEnable,clearvidsound,headerhack,SetupROM
%ifdef __LINUX__
EXTSYM LoadDir,popdir,pushdir
@@ -137,7 +124,7 @@ blah times 450 db 0
NEWSYM autoloadstate, db 0 ; auto load state slot number
NEWSYM autoloadmovie, db 0
NEWSYM EndMessage
NEWSYM EndMessage
db ' ',13,10,0
SECTION .text
@@ -170,7 +157,7 @@ NEWSYM init
pushad
call BackupSystemVars
popad
xor eax,eax
mov al,[cfgreinittime]
mov ebx,50
@@ -218,8 +205,8 @@ NEWSYM init
.found
mov byte[romloadskip],0
call loadfile
call SetupROM
pushad
call SetupROM
call showinfogui
popad
.noloadfile
@@ -254,7 +241,7 @@ NEWSYM init
jge .2digits
mov al,byte[autoloadstate]
add al,48
mov byte[fnamest+ebx],al
mov byte[fnamest+ebx],al
jmp .enddigits
.2digits
xor eax,eax
@@ -300,13 +287,13 @@ NEWSYM init
mov al,'v'
.notzero1
mov byte[CMovieExt],al
pushad
call MoviePlay
popad
.noautloadmovie
xor eax,eax
mov al,[cvidmode]
cmp byte[GUI16VID+eax],1
@@ -379,7 +366,7 @@ NEWSYM pl1selk, dd 54
NEWSYM pl1startk, dd 28
NEWSYM pl1upk, dd 200
NEWSYM pl1downk, dd 208
NEWSYM pl1leftk, dd 203
NEWSYM pl1leftk, dd 203
NEWSYM pl1rightk, dd 205
%endif
NEWSYM pl1Xk, dd 31
@@ -1307,7 +1294,7 @@ NEWSYM init65816
jne .notbsx2
mov eax,0FFFFFFFFh
helpclearmem wramdataa, 65536
helpclearmem ram7fa, 65536
helpclearmem ram7fa, 65536
cmp byte[romtype],1 ;Hack for BS HiROMs
jne .notbsx2
mov dword[ram7fa+65528],01010101h
@@ -1710,7 +1697,7 @@ NEWSYM initsnes
stosd
add eax,10000h
dec ecx
jnz .loopbb
jnz .loopbb
; set banks 80-BF (40h x 32KB ROM banks @ 8000h)
mov eax,[romdata]
mov ecx,40h
@@ -2173,7 +2160,7 @@ NEWSYM printhex8
; Search for header size first which is filesize MOD 32768
NEWSYM PatchIPS
%ifdef __LINUX__
%ifdef __LINUX__
pushad
call pushdir
popad
@@ -2601,7 +2588,7 @@ NEWSYM CSStatus3, db 'VIDEO: CRC32: ',0
;*******************************************************
; Show Information
;*******************************************************
;
;
; Maker Code = FFB0-FFB1
; Game Code = FFB2-FFB5
; 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
NEWSYM DSP1Type, 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 C4RamW, resd 1
NEWSYM C4Ram, resd 1
@@ -2680,64 +2610,6 @@ NEWSYM ROMTypeNOTFound, resb 1
NEWSYM Interleaved, resb 1
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
mov esi,[romdata]
cmp byte[romtype],2

View File

@@ -216,7 +216,7 @@ void CheckIntlEHi(unsigned char *ROM)
//Swap 4MB ROM with the other one
SwapData(romdata, romdata+((NumofBytes-0x400000)/4), 0x100000);
//Deinterleave the 4MB ROM first
NumofBanks = 128;
deintlv1();
@@ -252,7 +252,7 @@ void IntlEHi()
{
SwapData(romdata, romdata + 0x100000, 0x80000);
SwapData(romdata + 0x80000, romdata + 0x100000, 0x80000);
NumofBanks = 64;
intlv1();
NumofBanks = 192;
@@ -415,12 +415,12 @@ void chip_detect()
BSEnable = false;
SFXEnable = false;
SETAEnable = false;
//DSP Family
if (ROM[infoloc+TypeOffset] == 3)
{
if (ROM[infoloc+BankOffset] == 48)
{
{
DSP4Enable = true;
}
else
@@ -428,16 +428,16 @@ void chip_detect()
DSP1Enable = true;
}
return;
}
}
if (ROM[infoloc+TypeOffset] == 5)
{
CHIPBATT = true;
if (ROM[infoloc+BankOffset] == 32)
{
{
DSP2Enable = true;
}
else if (ROM[infoloc+BankOffset] == 48 && ROM[infoloc+CompanyOffset] == 0xB2) //Bandai
{
{
DSP3Enable = true;
}
else
@@ -454,26 +454,26 @@ void chip_detect()
SFXEnable = true;
return;
break;
case 0x1520: //GSU-x + Battery
case 0x1A20: //GSU-1 + Battery + Start in 21MHz
SFXEnable = true;
CHIPBATT = true;
CHIPBATT = true;
return;
break;
case 0x2530:
OBCEnable = true;
CHIPBATT = true;
return;
break;
case 0x3423:
SA1Enable = true;
return;
break;
case 0x3523:
SA1Enable = true;
CHIPBATT = true;
@@ -487,38 +487,38 @@ void chip_detect()
case 0x4532:
SDD1Enable = true;
CHIPBATT = true;
CHIPBATT = true;
return;
break;
case 0x5535:
RTCEnable = true;
CHIPBATT = true;
return;
break;
case 0xE320:
SGBEnable = true;
return;
break;
case 0xF320:
case 0xF320:
C4Enable = true;
return;
break;
case 0xF530:
case 0xF530:
ST18Enable = true;
CHIPBATT = true; //Check later if this should be removed
CHIPBATT = true; //Check later if this should be removed
return;
break;
case 0xF53A:
SPC7110Enable = true;
CHIPBATT = true;
return;
break;
case 0xF630:
SETAEnable = true;
CHIPBATT = true;
@@ -527,7 +527,7 @@ void chip_detect()
case 0xF93A:
SPC7110Enable = true;
RTCEnable = true;
RTCEnable = true;
CHIPBATT = true;
return;
break;
@@ -679,7 +679,7 @@ char *lastROMFileName;
void DumpROMLoadInfo()
{
FILE *fp = 0;
if (RomInfo) //rominfo.txt info dumping enabled?
{
fp = fopen("rominfo.txt", "w");
@@ -740,7 +740,7 @@ void loadFile(char *filename)
curromspace += stat_results.st_size;
if (!multifile) { return; }
(*incrementer)++;
}
else
@@ -768,16 +768,16 @@ void loadGZipFile(char *filename)
if ((unsigned int)size > maxromspace+512) { return; }
//Open GZip file for decompression
GZipFile = gzopen(filename, "rb");
GZipFile = gzopen(filename, "rb");
//Decompress file into memory
err = gzread(GZipFile, romdata, size);
err = gzread(GZipFile, romdata, size);
//Close compressed file
gzclose(GZipFile);
if (err != size) { return; }
curromspace = size;
}
@@ -791,7 +791,7 @@ void loadZipFile(char *filename)
{
int err, fileSize;
unsigned char *ROM = (unsigned char *)romdata;
bool multifile = false, NSS = false;
bool multifile = false, NSS = false;
char *incrementer = 0;
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
int LargestGoodFile = 0; //To keep track of largest file
//Variables for the file we pick
char ourFile[256];
ourFile[0] = '\n';
while(cFile == UNZ_OK) //While not at end of compressed file list
{
//Temporary char array for file name
@@ -825,13 +825,13 @@ void loadZipFile(char *filename)
incrementer = ourFile+strlen(ourFile)-1;
multifile = true;
break;
}
}
}
//Find Nintendo Super System ROMs
if (strlen(cFileName) >= 5) //Char + ".IC2"
{
char *ext = cFileName+strlen(cFileName)-4;
char *ext = cFileName+strlen(cFileName)-4;
if (!strncasecmp(ext, ".IC", 3))
{
strcpy(ourFile, cFileName);
@@ -848,12 +848,12 @@ void loadZipFile(char *filename)
{
strcpy(ourFile, cFileName);
LargestGoodFile = fileSize;
}
}
//Go to next file in zip file
cFile = unzGoToNextFile(zipfile);
//Go to next file in zip file
cFile = unzGoToNextFile(zipfile);
}
//No files found
if (ourFile[0] == '\n')
{
@@ -883,14 +883,14 @@ void loadZipFile(char *filename)
//Too big?
if (curromspace + fileSize > maxromspace+512)
{
{
unzClose(zipfile);
return;
}
//Open file
unzOpenCurrentFile(zipfile);
//Read file into memory
err = unzReadCurrentFile(zipfile, ROM+curromspace, fileSize);
@@ -899,7 +899,7 @@ void loadZipFile(char *filename)
//Encountered error?
if (err != fileSize)
{
{
unzClose(zipfile);
return;
}
@@ -920,7 +920,7 @@ void loadZipFile(char *filename)
}
if (!multifile)
{
{
unzClose(zipfile);
return;
}
@@ -934,7 +934,7 @@ void SplitSetup(char *basepath, char *basefile, unsigned int MirrorSystem)
curromspace = 0;
if (maxromspace < addOnStart+addOnSize) { return; }
memcpy(ROM+addOnStart, ROM, addOnSize);
memcpy(ROM+addOnStart, ROM, addOnSize);
if (*basepath == 0)
{
@@ -974,19 +974,19 @@ void SplitSetup(char *basepath, char *basefile, unsigned int MirrorSystem)
case 1:
memcpy(ROM+0x100000, ROM, 0x100000); //Mirror 8 to 16
break;
case 2:
case 2:
memcpy(ROM+0x180000, ROM+0x100000, 0x80000); //Mirrors 12 to 16
memcpy(ROM+0x200000, ROM+0x400000, 0x80000); //Copy base over
memset(ROM+0x280000, 0, 0x180000); //Blank out rest
break;
case 3:
memcpy(ROM+0x40000, ROM, 0x40000);
memcpy(ROM+0x80000, ROM, 0x80000);
break;
}
curromspace = addOnStart+addOnSize;
SplittedROM = true;
}
@@ -998,7 +998,7 @@ void SplitSupport()
{
unsigned char *ROM = (unsigned char *)romdata;
SplittedROM = false;
//Same Game add on
if (ROM[Hi+CompanyOffset] == 0x33 && curromspace == 0x80000 &&
!ROM[Hi+BankOffset] && !ROM[Hi+BSMonthOffset] && !ROM[Hi+BSDayOffset])
@@ -1006,9 +1006,9 @@ void SplitSupport()
addOnStart = 0x200000;
addOnSize = 0x80000;
SplitSetup(SGPath, "SAMEGAME.ZIP", 1);
}
}
//SD Gundam G-Next add on
//SD Gundam G-Next add on
if (ROM[Lo+CompanyOffset] == 0x33 && curromspace == 0x80000 &&
!ROM[Lo+BankOffset] && !ROM[Lo+BSMonthOffset] && !ROM[Lo+BSDayOffset] && !strncmp(ROM+Lo, "GNEXT", 5))
{
@@ -1016,7 +1016,7 @@ void SplitSupport()
addOnSize = 0x80000;
SplitSetup(GNextPath, "G-NEXT.ZIP", 2);
addOnStart = 0x200000;
}
}
//Sufami Turbo
if (!strncmp(ROM, "BANDAI SFC-ADX", 14))
@@ -1024,7 +1024,7 @@ void SplitSupport()
addOnStart = 0x100000;
addOnSize = curromspace;
SplitSetup(STPath, "STBIOS.ZIP", 3);
}
}
}
bool NSRTHead(unsigned char *ROM)
@@ -1038,9 +1038,9 @@ bool NSRTHead(unsigned char *ROM)
(NSRTHead[0] & 0x0F) > 13 ||
((NSRTHead[0] & 0xF0) >> 4) > 3 ||
((NSRTHead[0] & 0xF0) >> 4) == 0)
{
{
return(false); //Corrupt
}
}
return(true); //NSRT header
}
return(false); //None
@@ -1122,7 +1122,7 @@ void loadROM()
case 512:
Header512 = true;
break;
default:
{
unsigned char *ROM = (unsigned char *)romdata;
@@ -1149,7 +1149,7 @@ void loadROM()
}
}
snesmouse = 0;
snesmouse = 0;
input1gp = true;
input1mouse = true;
input2gp = true;
@@ -1158,11 +1158,11 @@ void loadROM()
input2just = true;
if (Header512)
{
{
unsigned char *ROM = (unsigned char *)romdata;
if (NSRTHead(ROM))
{
switch (ROM[0x1ED])
switch (ROM[0x1ED])
{
default: break;
@@ -1179,7 +1179,7 @@ void loadROM()
input2scope = false;
input2just = false;
input1mouse = false;
break;
break;
case 0x03: //Super Scope port 2
snesmouse = 3;
@@ -1248,7 +1248,7 @@ void loadROM()
}
}
curromspace -= 512;
memmove((unsigned char *)romdata, ((unsigned char *)romdata)+512, curromspace);
memmove((unsigned char *)romdata, ((unsigned char *)romdata)+512, curromspace);
}
snesinputdefault = snesmouse;
@@ -1854,7 +1854,6 @@ extern unsigned int spcnumread, spchalted;
extern unsigned char NextLineCache, sramsavedis, sndrot, regsbackup[3019];
extern unsigned char yesoutofmemory, fnames[512];
void SetupROM();
void initsnes();
void outofmemfix();
void GUIDoReset();
@@ -1876,34 +1875,6 @@ bool loadSRAM(char *sramname)
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 Voice4Freq, Voice5Freq, Voice6Freq, Voice7Freq;
extern unsigned int dspPAdj;
@@ -1932,13 +1903,16 @@ void initpitch()
extern unsigned int SfxR1, SfxR2, SetaCmdEnable, SfxSFR, SfxSCMR;
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 SetAddressingModesSA1(), GenerateBank0TableSA1();
void calculate_state_sizes(), InitRewindVars();
void InitDSP(), InitDSP2(), InitDSP4(), InitFxTables(), initregr(), initregw();
void SPC7110Load();
void SPC7110Load(), DOSClearScreen(), dosmakepal();
void CheckROMTypeC()
void CheckROMType()
{
unsigned char *ROM = (unsigned char *)romdata;
@@ -1947,7 +1921,7 @@ void CheckROMTypeC()
lorommapmode2 = 0;
if (!strncmp(ROM+0x207FC0, "DERBY STALLION 96", 17) || !strncmp(ROM+Lo, "SOUND NOVEL-TCOOL", 17))
{
{
lorommapmode2 = 1;
}
@@ -1968,7 +1942,11 @@ void CheckROMTypeC()
if (DSP1Enable || DSP2Enable || DSP3Enable)
{
if (DSP2Enable) { asm_call(InitDSP2); }
if (DSP2Enable)
{
asm_call(InitDSP2);
}
InitDSP();
DSP1Type = (romtype == 2) ? 2 : 1;
@@ -1983,7 +1961,7 @@ void CheckROMTypeC()
}
if (SFXEnable)
{
{
// Setup SuperFX stuff
if (Sup48mbit)
{
@@ -1992,10 +1970,10 @@ void CheckROMTypeC()
map_mem(0x71, &sfxbankb, 1);
map_mem(0x72, &sfxbankc, 1);
map_mem(0x73, &sfxbankd, 1);
//SRAM mapping, banks 78 - 79
map_mem(0x78, &sramsbank, 2);
SfxR1 = 0;
SfxR2 = 0;
memset(sfxramdata, 0, 262144); // clear 256kB SFX ram
@@ -2016,11 +1994,11 @@ void CheckROMTypeC()
if (SETAEnable)
{
// Setup SETA 010/011 stuff
// Really banks 68h-6Fh:0000-7FFF are all mapped the same by the chip but
// F1 ROC II only uses bank 68h
map_mem(0x68, &setabank, 1);
// Control register (and some status?) is in banks 60h-67h:0000-3FFF
map_mem(0x60, &setabanka, 1);
@@ -2029,7 +2007,7 @@ void CheckROMTypeC()
// proper SETA sram area
if (SramExists)
{
{
memcpy(setaramdata, sram, 4096);
}
}
@@ -2059,7 +2037,7 @@ void CheckROMTypeC()
map_mem(0x30, &dsp1bank, 0x10);
map_mem(0xB0, &dsp1bank, 0x10);
map_mem(0xE0, &dsp1bank, 0x10);
if (DSP2Enable)
{
map_mem(0x3F, &dsp2bank, 1);
@@ -2071,7 +2049,124 @@ void CheckROMTypeC()
asm_call(SPC7110Load);
}
void SetupROMc()
{
CheckROMTypeC();
extern unsigned short copv, brkv, abortv, nmiv, nmiv2, irqv, irqv2, resetv;
extern unsigned short copv8, brkv8, abortv8, nmiv8, irqv8;
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 granadd,CSStatus,CSStatus2,CSStatus3
EXTSYM SpecialLine
EXTSYM vidbufferofsb
EXTSYM Clear2xSaIBuffer
;EXTSYM Super2xSaI
EXTSYM HalfTransB,HalfTransC
@@ -134,7 +134,7 @@ NEWSYM FPUZero
dec ecx
jnz .TopOfLoop
fstp st0
%endif
%endif
ret
%if 0
@@ -553,11 +553,11 @@ NEWSYM FontData
db 01111100b,11000110b,11000000b,11000000b ; G, 11
db 11001110b,11000110b,01111100b,00000000b
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 00011000b,00011000b,00111100b,00000000b
db 00011000b,00011000b,00111100b,00000000b
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 11110000b,11011000b,11001100b,00000000b
db 11000000b,11000000b,11000000b,11000000b ; L, 16
@@ -622,7 +622,7 @@ NEWSYM FontData
; #, 31 (, 3A {, 43
; =, 32 ), 3B }, 44
; ", 33 @, 3C Up,45
; \, 34 ', 3D Dn,46
; \, 34 ', 3D Dn,46
; *, 35 !, 3E Lt,47
; ?, 36 $, 3F Rt,48
; %, 37 ;, 40 Bk,49
@@ -1540,7 +1540,7 @@ NEWSYM saveselect
pushad
call mzt_chdir
popad
.nomovie
.nomovie
mov byte[f3menuen],1
mov byte[ForceNonTransp],1
cmp byte[ForceNewGfxOff],0
@@ -1774,7 +1774,7 @@ NEWSYM saveselect
pushad
call UpChdir
popad
.nomovie2
.nomovie2
ret
SECTION .bss
@@ -2081,13 +2081,15 @@ SECTION .text
mov byte[f3menuen],0
mov byte[ForceNonTransp],0
mov byte[GUIOn],0
pushad
call Clear2xSaIBuffer
popad
cmp byte[MovieProcessing],0
jz .nomovie3
pushad
call UpChdir
popad
.nomovie3
.nomovie3
ret
SECTION .data
@@ -3227,12 +3229,12 @@ NEWSYM chatTL, resd 1
SECTION .data
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 '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
; 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 '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
@@ -3581,13 +3583,13 @@ NEWSYM copyvid
jne .not16bframe
mov esi,216*288*2+32*2
add esi,[vidbuffer]
call OutputGraphicString16b5x5
call OutputGraphicString16b5x5
jmp .nomovie4
.not16bframe
mov esi,216*288+32
add esi,[vidbuffer]
call OutputGraphicString5x5
.nomovie4
.nomovie4
jmp vidpaste
SECTION .bss
.sdrawptr resd 1
@@ -3711,19 +3713,6 @@ NEWSYM vidpaste
SECTION .bss
.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
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 short PrevPicture[64*56], *vidbuffer;
extern unsigned short PrevPicture[64*56], *vidbuffer, *vidbufferofsb;
void CapturePicture()
{
@@ -61,3 +73,8 @@ void CapturePicture()
} // 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" {
#include <windows.h>
#include <stdio.h>
#include <ddraw.h>
#include <ddraw.h>
//#include <initguid.h>
#include <mmsystem.h>
#include <time.h>
@@ -390,7 +390,7 @@ void DrawScreen()
DD_Primary->Blt(&rcWindow, AltSurface == 0 ? DD_CFB : DD_CFB16, &BlitArea, DDBLT_WAIT, NULL);
}
}
DWORD InputEn=0;
BOOL InputAcquire(void)
@@ -652,11 +652,11 @@ LRESULT CALLBACK Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
case WM_PAINT:
ValidateRect(hWnd,NULL);
break;
case WM_ACTIVATE:
case WM_ACTIVATE:
if (LOWORD(wParam) != WA_INACTIVE)
{
IsActivated = 1;
if (FirstActivate == 0) initwinvideo();
if (FirstActivate == 0) initwinvideo();
InputAcquire();
if (FirstActivate == 1) FirstActivate = 0;
CheckPriority();
@@ -769,7 +769,7 @@ BOOL InitSound()
else UsePrimaryBuffer=0;
}
}
else
else
{
return FALSE;
}
@@ -826,7 +826,7 @@ BOOL InitSound()
wfx.wBitsPerSample = 16;
wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign;
wfx.cbSize=0;
memset(&dsbd, 0, sizeof(DSBUFFERDESC));
dsbd.dwSize = sizeof(DSBUFFERDESC);
dsbd.dwFlags = DSBCAPS_GETCURRENTPOSITION2 | DSBCAPS_STICKYFOCUS;
@@ -863,8 +863,8 @@ BOOL InitSound()
SoundEnabled=1;
FirstSound=0;
return TRUE;
}
else
}
else
{
return FALSE;
}
@@ -955,7 +955,7 @@ BOOL ReInitSound()
wfx.wBitsPerSample = 16;
wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign;
wfx.cbSize=0;
memset(&dsbd, 0, sizeof(DSBUFFERDESC));
dsbd.dwSize = sizeof(DSBUFFERDESC);
dsbd.dwFlags = DSBCAPS_GETCURRENTPOSITION2 | DSBCAPS_STICKYFOCUS;
@@ -992,8 +992,8 @@ BOOL ReInitSound()
SoundEnabled=1;
FirstSound=0;
return TRUE;
}
else
}
else
{
return FALSE;
}
@@ -1100,7 +1100,7 @@ BOOL FAR PASCAL InitJoystickInput(LPCDIDEVICEINSTANCE pdinst, LPVOID pvRef)
return DIENUM_CONTINUE;
}
if (didc.dwButtons <= 16)
if (didc.dwButtons <= 16)
NumBTN[CurrentJoy] = didc.dwButtons;
else
NumBTN[CurrentJoy] = 16;
@@ -1396,7 +1396,7 @@ void TestJoy()
}
}
}
}
}
@@ -1462,7 +1462,7 @@ int InitDirectDraw()
}
ReleaseDirectDraw();
GetClientRect(hMainWindow, &rcWindow);
ClientToScreen(hMainWindow, ( LPPOINT )&rcWindow);
ClientToScreen(hMainWindow, ( LPPOINT )&rcWindow + 1);
@@ -1550,7 +1550,7 @@ int InitDirectDraw()
ddsd2.dwSize = sizeof(DDSURFACEDESC2);
ddsd2.dwFlags = DDSD_CAPS;
ddsd2.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE;
if (FullScreen == 1)
{
ddsd2.dwFlags |= DDSD_BACKBUFFERCOUNT;
@@ -1592,20 +1592,20 @@ int InitDirectDraw()
lpDD=NULL;
return FALSE;
}
if (lpDDClipper->SetHWnd(0,hMainWindow) != DD_OK)
{
lpDD->Release();
lpDD=NULL;
return FALSE;
}
if (DD_Primary->SetClipper(lpDDClipper) != DD_OK)
{
return FALSE;
}
}
format.dwSize = sizeof(DDPIXELFORMAT);
if (DD_Primary->GetPixelFormat(&format) != DD_OK)
@@ -1720,7 +1720,7 @@ DWORD LockSurface()
}
else
return(0);
}
}
}
void UnlockSurface()
@@ -1948,8 +1948,8 @@ void initwinvideo(void)
if (DMode == 1)
{
if ((DSMode == 1) || (FullScreen == 0))
SurfaceX = 512;
else
SurfaceX = 512;
else
SurfaceX = 640;
SurfaceY=480;
}
@@ -2078,7 +2078,7 @@ void initwinvideo(void)
CheckAlwaysOnTop();
if (!hMainWindow)
{
{
return;
}
@@ -2098,7 +2098,7 @@ void initwinvideo(void)
if (Force60hz) Refresh = 60;
InitDirectDraw();
clearwin();
asm_call(Clear2xSaIBuffer);
Clear2xSaIBuffer();
clear_display();
return;
}
@@ -2110,11 +2110,10 @@ void initwinvideo(void)
ReleaseDirectDraw();
InitDirectDraw();
clearwin();
asm_call(Clear2xSaIBuffer);
Clear2xSaIBuffer();
clear_display();
return;
}
}
extern unsigned int vidbuffer;
@@ -2149,7 +2148,7 @@ void CheckTimers(void)
}
}
start2 += update_ticks_pc2;
}
}
if (T60HZEnabled == 1)
{
@@ -2159,7 +2158,7 @@ void CheckTimers(void)
{
Game60hzcall();
start += update_ticks_pc;
}
}
}
if (T36HZEnabled == 1)
@@ -2170,7 +2169,7 @@ void CheckTimers(void)
{
GUI36hzcall();
start += update_ticks_pc;
}
}
}
}
@@ -2533,7 +2532,7 @@ void drawscreenwin(void)
SURFDW=(DWORD *) &SurfBuf[(resolutn-1)*pitch];
color32=0x7F000000;
for(i=0;i<256;i++)
{
SURFDW[i]=color32;
@@ -2541,11 +2540,11 @@ void drawscreenwin(void)
SURFDW=(DWORD *) &SurfBuf[resolutn*pitch];
color32=0x7F000000;
for(i=0;i<256;i++)
{
SURFDW[i]=color32;
}
}
break;
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 );
@@ -2579,7 +2578,7 @@ void drawscreenwin(void)
{
SURFDW=(DWORD *) &SurfBuf[j*pitch];
color32=0x7F000000;
for(i=0;i<320;i++)
{
SURFDW[i]=color32;
@@ -2612,7 +2611,7 @@ void drawscreenwin(void)
ScreenPtr=ScreenPtr+576-512;
SURFDW=(DWORD *) &SurfBuf[(j)*pitch];
}
for(j=((resolutn-1)+8);j<240;j++)
{
SURFDW=(DWORD *) &SurfBuf[j*pitch];
@@ -2856,7 +2855,7 @@ void WinUpdateDevices()
case 4500:
keys[0x100 + i * 32 + 0] = 1;
keys[0x100 + i * 32 + 3] = 1;
break;
break;
case 9000:
keys[0x100 + i * 32 + 0] = 1;
break;
@@ -2893,7 +2892,7 @@ void WinUpdateDevices()
keys[0x100 + i * 32 + j] = 0;
}
}
}
}
}
@@ -3068,7 +3067,7 @@ void FrameSemaphore()
QueryPerformanceCounter((LARGE_INTEGER*)&end);
delay = ((update_ticks_pc - (end - start)) * 1000.0 / freq) - 3.0;
if (delay>0.0) WaitForSingleObject(hLock, (unsigned int)delay);
}