SetupROM port and some cleanup.
This commit is contained in:
@@ -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, ®bank, 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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user