SetupROM port and some cleanup.
This commit is contained in:
@@ -295,8 +295,7 @@ mrwp sfxbankd = { sfxaccessbankr8d, sfxaccessbankw8d, sfxaccessbankr16d, sfxacce
|
|||||||
|
|
||||||
|
|
||||||
void SetAddressingModes()
|
void SetAddressingModes()
|
||||||
{
|
{ // Banks
|
||||||
// Banks
|
|
||||||
map_mem(0x00, ®bank, 0x40); // 00 - 3F
|
map_mem(0x00, ®bank, 0x40); // 00 - 3F
|
||||||
map_mem(0x40, &membank, 0x30); // 49 - 6F
|
map_mem(0x40, &membank, 0x30); // 49 - 6F
|
||||||
map_mem(0x70, &srambank, 0x08); // 70 - 77
|
map_mem(0x70, &srambank, 0x08); // 70 - 77
|
||||||
@@ -309,7 +308,6 @@ void SetAddressingModes()
|
|||||||
|
|
||||||
void SetAddressingModesSA1()
|
void SetAddressingModesSA1()
|
||||||
{
|
{
|
||||||
// Banks
|
|
||||||
map_mem(0x00, &sa1regbank, 0x40); // 00 - 3F
|
map_mem(0x00, &sa1regbank, 0x40); // 00 - 3F
|
||||||
map_mem(0x40, &sa1rambank, 0x30); // 49 - 6F
|
map_mem(0x40, &sa1rambank, 0x30); // 49 - 6F
|
||||||
map_mem(0x70, &sa1rambankb, 0x08); // 70 - 77
|
map_mem(0x70, &sa1rambankb, 0x08); // 70 - 77
|
||||||
|
|||||||
@@ -67,19 +67,19 @@
|
|||||||
|
|
||||||
%include "macros.mac"
|
%include "macros.mac"
|
||||||
|
|
||||||
EXTSYM curblank, vidpastecopyscr, frameskip, newengen, vsyncon
|
EXTSYM curblank,vidpastecopyscr,frameskip,newengen,vsyncon
|
||||||
EXTSYM cvidmode, antienab, smallscreenon, smallscreence,NetQuit
|
EXTSYM cvidmode,antienab, smallscreenon, smallscreence,NetQuit
|
||||||
EXTSYM soundon, StereoSound, SoundQuality, MusicRelVol
|
EXTSYM soundon,StereoSound,SoundQuality,MusicRelVol
|
||||||
EXTSYM endprog, continueprog, spcBuffera, spcRamcmp, cbitmode, makepal
|
EXTSYM endprog,continueprog,spcBuffera,spcRamcmp,cbitmode,makepal
|
||||||
EXTSYM t1cc, LoadDir, LoadDrive, SRAMDir, SRAMChdir, SRAMDirCurDir, initsnes, romloadskip
|
EXTSYM t1cc,LoadDir,LoadDrive,SRAMDir,SRAMChdir,SRAMDirCurDir,initsnes
|
||||||
EXTSYM fname, makeextension, sram, loadfileGUI, GUIloadfailed
|
EXTSYM fname,makeextension,sram,loadfileGUI,GUIloadfailed,romloadskip
|
||||||
EXTSYM SetupROM, romdata, ForcePal, ramsize, ramsizeand, curromsize
|
EXTSYM SetupROM,romdata,ForcePal,ramsize,ramsizeand,curromsize
|
||||||
EXTSYM romispal, totlines, cfgloadsdir, init65816, procexecloop
|
EXTSYM romispal,totlines,cfgloadsdir,init65816,procexecloop
|
||||||
EXTSYM spcRam, spcPCRam, spcS, spcRamDP, spcA, spcX, spcY, spcP, spcNZ
|
EXTSYM spcRam,spcPCRam,spcS,spcRamDP,spcA,spcX,spcY,spcP,spcNZ
|
||||||
EXTSYM Voice0Status, Voice1Status, Voice2Status, Voice3Status, Voice4Status
|
EXTSYM Voice0Status,Voice1Status,Voice2Status,Voice3Status,Voice4Status
|
||||||
EXTSYM Voice5Status, Voice6Status, Voice7Status, romtype, SetIRQVectors
|
EXTSYM Voice5Status,Voice6Status,Voice7Status,romtype
|
||||||
EXTSYM ClearScreen, statesaver, loadstate2, vidbuffer, ASCII2Font, hirestiledat
|
EXTSYM ClearScreen,statesaver,loadstate2,vidbuffer,ASCII2Font,hirestiledat
|
||||||
EXTSYM showallext, ROMTypeNOTFound, scanlines,statefileloc,pl1selk,pl2selk
|
EXTSYM showallext,ROMTypeNOTFound,scanlines,statefileloc,pl1selk,pl2selk
|
||||||
EXTSYM fnamest,sprlefttot,spritetablea,fnames,CHIPBATT,sfxramdata,setaramdata,SETAEnable,cgram,srama
|
EXTSYM fnamest,sprlefttot,spritetablea,fnames,CHIPBATT,sfxramdata,setaramdata,SETAEnable,cgram,srama
|
||||||
EXTSYM tempco0,prevbright,maxbr,prevpal,coladdr,coladdg,coladdb
|
EXTSYM tempco0,prevbright,maxbr,prevpal,coladdr,coladdg,coladdb
|
||||||
EXTSYM scaddtype,ScreenScale,vesa2red10,initvideo2,initvideo,pressed,UpdateDevices
|
EXTSYM scaddtype,ScreenScale,vesa2red10,initvideo2,initvideo,pressed,UpdateDevices
|
||||||
@@ -3940,7 +3940,9 @@ InitGUI:
|
|||||||
call GetScreen
|
call GetScreen
|
||||||
.nong16b
|
.nong16b
|
||||||
call ClearScreen
|
call ClearScreen
|
||||||
|
pushad
|
||||||
call Clear2xSaIBuffer
|
call Clear2xSaIBuffer
|
||||||
|
popad
|
||||||
call GUISetPal
|
call GUISetPal
|
||||||
call GUIBufferData
|
call GUIBufferData
|
||||||
ret
|
ret
|
||||||
|
|||||||
@@ -1071,12 +1071,16 @@ GUIGUIOptnsKeys:
|
|||||||
cmp byte[En2xSaI],1
|
cmp byte[En2xSaI],1
|
||||||
jnae .guioptn15
|
jnae .guioptn15
|
||||||
call ClearScreen
|
call ClearScreen
|
||||||
|
pushad
|
||||||
call Clear2xSaIBuffer
|
call Clear2xSaIBuffer
|
||||||
|
popad
|
||||||
.guioptn15
|
.guioptn15
|
||||||
cmp byte[hqFilter],0
|
cmp byte[hqFilter],0
|
||||||
je .guioptn16
|
je .guioptn16
|
||||||
call ClearScreen
|
call ClearScreen
|
||||||
|
pushad
|
||||||
call Clear2xSaIBuffer
|
call Clear2xSaIBuffer
|
||||||
|
popad
|
||||||
.guioptn16
|
.guioptn16
|
||||||
ret
|
ret
|
||||||
|
|
||||||
@@ -1177,7 +1181,9 @@ GUIVideoKeys:
|
|||||||
mov bl,[cvidmode]
|
mov bl,[cvidmode]
|
||||||
cmp byte[GUI2xVID+ebx],0
|
cmp byte[GUI2xVID+ebx],0
|
||||||
je near .no2xsai
|
je near .no2xsai
|
||||||
|
pushad
|
||||||
call Clear2xSaIBuffer
|
call Clear2xSaIBuffer
|
||||||
|
popad
|
||||||
GUIkeystoggleoptn byte[En2xSaI],1
|
GUIkeystoggleoptn byte[En2xSaI],1
|
||||||
.no2xsai
|
.no2xsai
|
||||||
cmp dh,'E'
|
cmp dh,'E'
|
||||||
@@ -1186,7 +1192,9 @@ GUIVideoKeys:
|
|||||||
mov bl,[cvidmode]
|
mov bl,[cvidmode]
|
||||||
cmp byte[GUI2xVID+ebx],0
|
cmp byte[GUI2xVID+ebx],0
|
||||||
je near .nosupereagle
|
je near .nosupereagle
|
||||||
|
pushad
|
||||||
call Clear2xSaIBuffer
|
call Clear2xSaIBuffer
|
||||||
|
popad
|
||||||
GUIkeystoggleoptn byte[En2xSaI],2
|
GUIkeystoggleoptn byte[En2xSaI],2
|
||||||
.nosupereagle
|
.nosupereagle
|
||||||
cmp dh,'S'
|
cmp dh,'S'
|
||||||
@@ -1195,7 +1203,9 @@ GUIVideoKeys:
|
|||||||
mov bl,[cvidmode]
|
mov bl,[cvidmode]
|
||||||
cmp byte[GUI2xVID+ebx],0
|
cmp byte[GUI2xVID+ebx],0
|
||||||
je near .nosuper2xsai
|
je near .nosuper2xsai
|
||||||
|
pushad
|
||||||
call Clear2xSaIBuffer
|
call Clear2xSaIBuffer
|
||||||
|
popad
|
||||||
GUIkeystoggleoptn byte[En2xSaI],3
|
GUIkeystoggleoptn byte[En2xSaI],3
|
||||||
.nosuper2xsai
|
.nosuper2xsai
|
||||||
cmp dh,'I'
|
cmp dh,'I'
|
||||||
|
|||||||
@@ -293,8 +293,8 @@ GUIloadfilename:
|
|||||||
mov byte[CheatWinMode],0
|
mov byte[CheatWinMode],0
|
||||||
mov byte[CheatSearchStatus],0
|
mov byte[CheatSearchStatus],0
|
||||||
|
|
||||||
call SetupROM
|
|
||||||
pushad
|
pushad
|
||||||
|
call SetupROM
|
||||||
call showinfogui
|
call showinfogui
|
||||||
popad
|
popad
|
||||||
call initsnes
|
call initsnes
|
||||||
|
|||||||
@@ -361,7 +361,9 @@ SetDevice:
|
|||||||
|
|
||||||
NEWSYM GUIDoReset
|
NEWSYM GUIDoReset
|
||||||
call ClearScreen
|
call ClearScreen
|
||||||
|
pushad
|
||||||
call Clear2xSaIBuffer
|
call Clear2xSaIBuffer
|
||||||
|
popad
|
||||||
; mov byte[NetPlayNoMore],1
|
; mov byte[NetPlayNoMore],1
|
||||||
mov byte[RestoreValues],0
|
mov byte[RestoreValues],0
|
||||||
|
|
||||||
|
|||||||
@@ -1411,7 +1411,9 @@ GUIWinClicked:
|
|||||||
cmp edx,%2+8
|
cmp edx,%2+8
|
||||||
jg %%noclick
|
jg %%noclick
|
||||||
xor %3,1
|
xor %3,1
|
||||||
|
pushad
|
||||||
call Clear2xSaIBuffer
|
call Clear2xSaIBuffer
|
||||||
|
popad
|
||||||
%%noclick
|
%%noclick
|
||||||
%endmacro
|
%endmacro
|
||||||
|
|
||||||
|
|||||||
@@ -484,7 +484,9 @@ NEWSYM showmenu
|
|||||||
call StartSound
|
call StartSound
|
||||||
mov byte[ForceNonTransp],0
|
mov byte[ForceNonTransp],0
|
||||||
mov byte[GUIOn],0
|
mov byte[GUIOn],0
|
||||||
|
pushad
|
||||||
call Clear2xSaIBuffer
|
call Clear2xSaIBuffer
|
||||||
|
popad
|
||||||
cmp byte[MenuNoExit],1
|
cmp byte[MenuNoExit],1
|
||||||
je .noexitmenu
|
je .noexitmenu
|
||||||
jmp continueprognokeys
|
jmp continueprognokeys
|
||||||
|
|||||||
@@ -96,25 +96,12 @@ EXTSYM sfxaccessbankw8d,sfxramdata
|
|||||||
EXTSYM sramaccessbankr16,sramaccessbankr16s,sramaccessbankr8,sramaccessbankr8s
|
EXTSYM sramaccessbankr16,sramaccessbankr16s,sramaccessbankr8,sramaccessbankr8s
|
||||||
EXTSYM sramaccessbankw16,sramaccessbankw16s,sramaccessbankw8,sramaccessbankw8s
|
EXTSYM sramaccessbankw16,sramaccessbankw16s,sramaccessbankw8,sramaccessbankw8s
|
||||||
EXTSYM ScrDispl,wramreadptr,wramwriteptr
|
EXTSYM ScrDispl,wramreadptr,wramwriteptr
|
||||||
EXTSYM loadstate2,headerhack
|
EXTSYM loadstate2,CMovieExt,MoviePlay
|
||||||
|
|
||||||
;initc.c
|
;initc.c
|
||||||
EXTSYM clearmem,clearSPCRAM,PatchUsingIPS,loadZipFile,ZOpenFileName
|
EXTSYM clearmem,clearSPCRAM,PatchUsingIPS,ZOpenFileName,loadROM,SPC7110IndexSize
|
||||||
EXTSYM loadROM,CalcChecksum,BankCheck,MirrorROM,SplittedROM,addOnStart,addOnSize
|
EXTSYM SPC7PackIndexLoad,IntlEHi,C4Enable,SPC7110Enable,RTCEnable,SA1Enable
|
||||||
EXTSYM SPC7PackIndexLoad,SPC7110IndexSize,DumpROMLoadInfo,SetupSramSize,IntlEHi
|
EXTSYM SDD1Enable,OBCEnable,SFXEnable,BSEnable,clearvidsound,headerhack,SetupROM
|
||||||
EXTSYM CHIPBATT,SETAEnable,C4Enable,SPC7110Enable,RTCEnable,SA1Enable,SDD1Enable
|
|
||||||
EXTSYM OBCEnable,SFXEnable,ST18Enable,SGBEnable,DSP1Enable,DSP2Enable,DSP3Enable
|
|
||||||
EXTSYM DSP4Enable,BSEnable,clearvidsound
|
|
||||||
|
|
||||||
EXTSYM calculate_state_sizes,InitRewindVars
|
|
||||||
|
|
||||||
EXTSYM SetaCmdEnable,setaramdata
|
|
||||||
EXTSYM setaaccessbankr8,setaaccessbankw8,setaaccessbankr8a,setaaccessbankw8a
|
|
||||||
EXTSYM setaaccessbankr16,setaaccessbankw16,setaaccessbankr16a,setaaccessbankw16a
|
|
||||||
EXTSYM DSP2Read8b,DSP2Read16b,DSP2Write8b,DSP2Write16b,InitDSP2
|
|
||||||
EXTSYM DSP4Read8b,DSP4Read16b,DSP4Write8b,DSP4Write16b,InitDSP4
|
|
||||||
|
|
||||||
EXTSYM SetupROMc,CMovieExt,MoviePlay
|
|
||||||
|
|
||||||
%ifdef __LINUX__
|
%ifdef __LINUX__
|
||||||
EXTSYM LoadDir,popdir,pushdir
|
EXTSYM LoadDir,popdir,pushdir
|
||||||
@@ -218,8 +205,8 @@ NEWSYM init
|
|||||||
.found
|
.found
|
||||||
mov byte[romloadskip],0
|
mov byte[romloadskip],0
|
||||||
call loadfile
|
call loadfile
|
||||||
call SetupROM
|
|
||||||
pushad
|
pushad
|
||||||
|
call SetupROM
|
||||||
call showinfogui
|
call showinfogui
|
||||||
popad
|
popad
|
||||||
.noloadfile
|
.noloadfile
|
||||||
@@ -2616,63 +2603,6 @@ NEWSYM CSStatus3, db 'VIDEO: CRC32: ',0
|
|||||||
SECTION .bss
|
SECTION .bss
|
||||||
NEWSYM DSP1Type, resb 1
|
NEWSYM DSP1Type, resb 1
|
||||||
NEWSYM intldone, resb 1
|
NEWSYM intldone, resb 1
|
||||||
SECTION .text
|
|
||||||
|
|
||||||
EXTSYM ClearScreen, cbitmode, makepal
|
|
||||||
|
|
||||||
NEWSYM SetupROM
|
|
||||||
pushad
|
|
||||||
call SetupROMc
|
|
||||||
popad
|
|
||||||
; call CheckROMType
|
|
||||||
call SetIRQVectors
|
|
||||||
call ClearScreen
|
|
||||||
cmp byte[cbitmode],0
|
|
||||||
jne .nomakepal
|
|
||||||
call makepal
|
|
||||||
.nomakepal
|
|
||||||
; get ROM and SRAM size
|
|
||||||
mov esi,[romdata]
|
|
||||||
add esi,[infoloc]
|
|
||||||
add esi,18h
|
|
||||||
mov cl,[esi-1]
|
|
||||||
mov [curromsize],cl
|
|
||||||
pushad
|
|
||||||
call SetupSramSize
|
|
||||||
call calculate_state_sizes
|
|
||||||
call InitRewindVars
|
|
||||||
popad
|
|
||||||
|
|
||||||
; get pal/ntsc
|
|
||||||
inc esi
|
|
||||||
mov al,[ForceROMTiming]
|
|
||||||
mov byte[ForcePal],al
|
|
||||||
xor al,al
|
|
||||||
mov al,[esi]
|
|
||||||
cmp byte[ForcePal],1
|
|
||||||
jne .nontsc
|
|
||||||
mov al,0
|
|
||||||
.nontsc
|
|
||||||
cmp byte[ForcePal],2
|
|
||||||
jne .nopal2
|
|
||||||
mov al,2
|
|
||||||
.nopal2
|
|
||||||
mov byte[romispal],0
|
|
||||||
mov word[totlines],263
|
|
||||||
mov dword[MsgCount],120
|
|
||||||
cmp byte[BSEnable],1
|
|
||||||
je .nopal
|
|
||||||
cmp al,1
|
|
||||||
jbe .nopal
|
|
||||||
cmp al,0Dh
|
|
||||||
jae .nopal
|
|
||||||
mov byte[romispal],1
|
|
||||||
mov word[totlines],314
|
|
||||||
mov dword[MsgCount],100
|
|
||||||
.nopal
|
|
||||||
ret
|
|
||||||
|
|
||||||
SECTION .bss
|
|
||||||
NEWSYM C4RamR, resd 1
|
NEWSYM C4RamR, resd 1
|
||||||
NEWSYM C4RamW, resd 1
|
NEWSYM C4RamW, resd 1
|
||||||
NEWSYM C4Ram, resd 1
|
NEWSYM C4Ram, resd 1
|
||||||
@@ -2680,64 +2610,6 @@ NEWSYM ROMTypeNOTFound, resb 1
|
|||||||
NEWSYM Interleaved, resb 1
|
NEWSYM Interleaved, resb 1
|
||||||
SECTION .text
|
SECTION .text
|
||||||
|
|
||||||
NEWSYM SetIRQVectors
|
|
||||||
; Get Vectors (NMI & Reset)
|
|
||||||
mov esi,[romdata]
|
|
||||||
add esi,[infoloc]
|
|
||||||
add esi,21
|
|
||||||
mov al,[esi]
|
|
||||||
test al,0F0h
|
|
||||||
jnz .yesfastrom
|
|
||||||
mov al,[opexec268]
|
|
||||||
mov [opexec358],al
|
|
||||||
mov al,[opexec268cph]
|
|
||||||
mov [opexec358cph],al
|
|
||||||
mov al,[cycpb268]
|
|
||||||
mov [cycpb358],al
|
|
||||||
.yesfastrom
|
|
||||||
add esi,0Fh
|
|
||||||
cmp word[esi+24],0FFFFh
|
|
||||||
jne .notreseterror
|
|
||||||
mov word[esi+6],0FF9Ch
|
|
||||||
mov word[esi+24],0FF80h
|
|
||||||
.notreseterror
|
|
||||||
lodsw
|
|
||||||
mov [copv],ax
|
|
||||||
lodsw
|
|
||||||
mov [brkv],ax
|
|
||||||
lodsw
|
|
||||||
mov [abortv],ax
|
|
||||||
lodsw
|
|
||||||
mov [nmiv],ax
|
|
||||||
mov [nmiv2],ax
|
|
||||||
add esi,2
|
|
||||||
lodsw
|
|
||||||
mov [irqv],ax
|
|
||||||
mov [irqv2],ax
|
|
||||||
add esi,4
|
|
||||||
; 8-bit and reset
|
|
||||||
lodsw
|
|
||||||
mov [copv8],ax
|
|
||||||
inc esi
|
|
||||||
inc esi
|
|
||||||
lodsw
|
|
||||||
mov [abortv8],ax
|
|
||||||
lodsw
|
|
||||||
mov [nmiv8],ax
|
|
||||||
lodsw
|
|
||||||
mov [resetv],ax
|
|
||||||
lodsw
|
|
||||||
mov [brkv8],ax
|
|
||||||
mov [irqv8],ax
|
|
||||||
cmp byte[yesoutofmemory],0
|
|
||||||
je .notfailed
|
|
||||||
mov word[resetv],8000h
|
|
||||||
mov esi,[romdata]
|
|
||||||
mov word[esi],0FE80h
|
|
||||||
mov word[esi+8000h],0FE80h
|
|
||||||
.notfailed
|
|
||||||
ret
|
|
||||||
|
|
||||||
NEWSYM outofmemfix
|
NEWSYM outofmemfix
|
||||||
mov esi,[romdata]
|
mov esi,[romdata]
|
||||||
cmp byte[romtype],2
|
cmp byte[romtype],2
|
||||||
|
|||||||
@@ -1854,7 +1854,6 @@ extern unsigned int spcnumread, spchalted;
|
|||||||
extern unsigned char NextLineCache, sramsavedis, sndrot, regsbackup[3019];
|
extern unsigned char NextLineCache, sramsavedis, sndrot, regsbackup[3019];
|
||||||
extern unsigned char yesoutofmemory, fnames[512];
|
extern unsigned char yesoutofmemory, fnames[512];
|
||||||
|
|
||||||
void SetupROM();
|
|
||||||
void initsnes();
|
void initsnes();
|
||||||
void outofmemfix();
|
void outofmemfix();
|
||||||
void GUIDoReset();
|
void GUIDoReset();
|
||||||
@@ -1876,34 +1875,6 @@ bool loadSRAM(char *sramname)
|
|||||||
else { return(false); }
|
else { return(false); }
|
||||||
}
|
}
|
||||||
|
|
||||||
void powercycle(bool sramload)
|
|
||||||
{
|
|
||||||
memset(sram, 0xFF, 32768);
|
|
||||||
clearSPCRAM();
|
|
||||||
|
|
||||||
nmiprevaddrl = 0;
|
|
||||||
nmiprevaddrh = 0;
|
|
||||||
nmirept = 0;
|
|
||||||
nmiprevline = 224;
|
|
||||||
nmistatus = 0;
|
|
||||||
spcnumread = 0;
|
|
||||||
spchalted = ~0;
|
|
||||||
NextLineCache = 0;
|
|
||||||
curexecstate = 1;
|
|
||||||
|
|
||||||
if (sramload) { loadSRAM(fnames+1); }
|
|
||||||
asm_call(SetupROM);
|
|
||||||
asm_call(initsnes);
|
|
||||||
|
|
||||||
sramsavedis = 0;
|
|
||||||
|
|
||||||
memcpy(&sndrot, regsbackup, 3019);
|
|
||||||
|
|
||||||
if (yesoutofmemory == 1) { asm_call(outofmemfix); }
|
|
||||||
|
|
||||||
asm_call(GUIDoReset);
|
|
||||||
}
|
|
||||||
|
|
||||||
extern unsigned int Voice0Freq, Voice1Freq, Voice2Freq, Voice3Freq;
|
extern unsigned int Voice0Freq, Voice1Freq, Voice2Freq, Voice3Freq;
|
||||||
extern unsigned int Voice4Freq, Voice5Freq, Voice6Freq, Voice7Freq;
|
extern unsigned int Voice4Freq, Voice5Freq, Voice6Freq, Voice7Freq;
|
||||||
extern unsigned int dspPAdj;
|
extern unsigned int dspPAdj;
|
||||||
@@ -1932,13 +1903,16 @@ void initpitch()
|
|||||||
|
|
||||||
extern unsigned int SfxR1, SfxR2, SetaCmdEnable, SfxSFR, SfxSCMR;
|
extern unsigned int SfxR1, SfxR2, SetaCmdEnable, SfxSFR, SfxSCMR;
|
||||||
extern unsigned char lorommapmode2, disablespcclr, *sfxramdata, SramExists;
|
extern unsigned char lorommapmode2, disablespcclr, *sfxramdata, SramExists;
|
||||||
extern unsigned char *setaramdata, *wramdata, *SA1RAMArea;
|
extern unsigned char *setaramdata, *wramdata, *SA1RAMArea, cbitmode, curromsize;
|
||||||
|
extern unsigned char ForcePal, ForceROMTiming, romispal;
|
||||||
|
extern unsigned short totlines;
|
||||||
void SetAddressingModes(), GenerateBank0Table();
|
void SetAddressingModes(), GenerateBank0Table();
|
||||||
void SetAddressingModesSA1(), GenerateBank0TableSA1();
|
void SetAddressingModesSA1(), GenerateBank0TableSA1();
|
||||||
|
void calculate_state_sizes(), InitRewindVars();
|
||||||
void InitDSP(), InitDSP2(), InitDSP4(), InitFxTables(), initregr(), initregw();
|
void InitDSP(), InitDSP2(), InitDSP4(), InitFxTables(), initregr(), initregw();
|
||||||
void SPC7110Load();
|
void SPC7110Load(), DOSClearScreen(), dosmakepal();
|
||||||
|
|
||||||
void CheckROMTypeC()
|
void CheckROMType()
|
||||||
{
|
{
|
||||||
unsigned char *ROM = (unsigned char *)romdata;
|
unsigned char *ROM = (unsigned char *)romdata;
|
||||||
|
|
||||||
@@ -1968,7 +1942,11 @@ void CheckROMTypeC()
|
|||||||
|
|
||||||
if (DSP1Enable || DSP2Enable || DSP3Enable)
|
if (DSP1Enable || DSP2Enable || DSP3Enable)
|
||||||
{
|
{
|
||||||
if (DSP2Enable) { asm_call(InitDSP2); }
|
if (DSP2Enable)
|
||||||
|
{
|
||||||
|
asm_call(InitDSP2);
|
||||||
|
}
|
||||||
|
|
||||||
InitDSP();
|
InitDSP();
|
||||||
|
|
||||||
DSP1Type = (romtype == 2) ? 2 : 1;
|
DSP1Type = (romtype == 2) ? 2 : 1;
|
||||||
@@ -2071,7 +2049,124 @@ void CheckROMTypeC()
|
|||||||
asm_call(SPC7110Load);
|
asm_call(SPC7110Load);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetupROMc()
|
extern unsigned short copv, brkv, abortv, nmiv, nmiv2, irqv, irqv2, resetv;
|
||||||
{
|
extern unsigned short copv8, brkv8, abortv8, nmiv8, irqv8;
|
||||||
CheckROMTypeC();
|
|
||||||
|
void SetIRQVectors()
|
||||||
|
{ // get vectors (NMI & reset)
|
||||||
|
unsigned char *ROM = (unsigned char *)romdata;
|
||||||
|
|
||||||
|
if (!(ROM[infoloc+21] & 0xF0)) // if not fastrom
|
||||||
|
{
|
||||||
|
opexec358 = opexec268;
|
||||||
|
opexec358cph = opexec268cph;
|
||||||
|
cycpb358 = cycpb268;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!memcmp(ROM+infoloc+36+24, "\0xFF\0xFF", 2)) // if reset error
|
||||||
|
{
|
||||||
|
memcpy(ROM+infoloc+36+6, "\0x9C\0xFF", 2);
|
||||||
|
memcpy(ROM+infoloc+36+24, "\0x80\0xFF", 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
memcpy(&copv, ROM+infoloc+0x24, 2);
|
||||||
|
memcpy(&brkv, ROM+infoloc+0x26, 2);
|
||||||
|
memcpy(&abortv, ROM+infoloc+0x28, 2);
|
||||||
|
memcpy(&nmiv, ROM+infoloc+0x2A, 2);
|
||||||
|
memcpy(&nmiv2, ROM+infoloc+0x2A, 2);
|
||||||
|
memcpy(&irqv, ROM+infoloc+0x2E, 2);
|
||||||
|
memcpy(&irqv2, ROM+infoloc+0x2E, 2);
|
||||||
|
|
||||||
|
// 8-bit and reset
|
||||||
|
memcpy(&copv8, ROM+infoloc+0x34, 2);
|
||||||
|
memcpy(&abortv8, ROM+infoloc+0x38, 2);
|
||||||
|
memcpy(&nmiv8, ROM+infoloc+0x3A, 2);
|
||||||
|
memcpy(&resetv, ROM+infoloc+0x3C, 2);
|
||||||
|
memcpy(&brkv8, ROM+infoloc+0x3E, 2);
|
||||||
|
memcpy(&irqv8, ROM+infoloc+0x3E, 2);
|
||||||
|
|
||||||
|
if (yesoutofmemory) // failed ?
|
||||||
|
{
|
||||||
|
resetv = 0x8000;
|
||||||
|
memcpy(ROM+0x0000, "\0x80\0xFE", 2);
|
||||||
|
memcpy(ROM+0x8000, "\0x80\0xFE", 2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetupROM()
|
||||||
|
{
|
||||||
|
unsigned char *ROM = (unsigned char *)romdata;
|
||||||
|
|
||||||
|
CheckROMType();
|
||||||
|
SetIRQVectors();
|
||||||
|
|
||||||
|
#ifdef __MSDOS__
|
||||||
|
asm_call(DOSClearScreen);
|
||||||
|
|
||||||
|
if (!cbitmode) // 8-bit mode uses a palette
|
||||||
|
{
|
||||||
|
asm_call(dosmakepal);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// get ROM and SRAM sizes
|
||||||
|
curromsize = ROM[infoloc+0x17];
|
||||||
|
|
||||||
|
SetupSramSize();
|
||||||
|
calculate_state_sizes();
|
||||||
|
InitRewindVars();
|
||||||
|
|
||||||
|
// get timing (pal/ntsc)
|
||||||
|
ForcePal = ForceROMTiming;
|
||||||
|
|
||||||
|
switch (ForcePal)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
romispal = 0;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
romispal = (!BSEnable);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
romispal = ((!BSEnable) && (ROM[infoloc+0x19] > 1) && (ROM[infoloc+0x19] < 0xD));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (romispal)
|
||||||
|
{
|
||||||
|
totlines = 314;
|
||||||
|
MsgCount = 100;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
totlines = 263;
|
||||||
|
MsgCount = 120;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void powercycle(bool sramload)
|
||||||
|
{
|
||||||
|
memset(sram, 0xFF, 32768);
|
||||||
|
clearSPCRAM();
|
||||||
|
|
||||||
|
nmiprevaddrl = 0;
|
||||||
|
nmiprevaddrh = 0;
|
||||||
|
nmirept = 0;
|
||||||
|
nmiprevline = 224;
|
||||||
|
nmistatus = 0;
|
||||||
|
spcnumread = 0;
|
||||||
|
spchalted = ~0;
|
||||||
|
NextLineCache = 0;
|
||||||
|
curexecstate = 1;
|
||||||
|
|
||||||
|
if (sramload) { loadSRAM(fnames+1); }
|
||||||
|
SetupROM();
|
||||||
|
asm_call(initsnes);
|
||||||
|
|
||||||
|
sramsavedis = 0;
|
||||||
|
|
||||||
|
memcpy(&sndrot, regsbackup, 3019);
|
||||||
|
|
||||||
|
if (yesoutofmemory == 1) { asm_call(outofmemfix); }
|
||||||
|
|
||||||
|
asm_call(GUIDoReset);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ EXTSYM GUICPC, newgfx16b
|
|||||||
EXTSYM vesa2_clbitng,vesa2_clbitng2,vesa2_clbitng3
|
EXTSYM vesa2_clbitng,vesa2_clbitng2,vesa2_clbitng3
|
||||||
EXTSYM granadd,CSStatus,CSStatus2,CSStatus3
|
EXTSYM granadd,CSStatus,CSStatus2,CSStatus3
|
||||||
EXTSYM SpecialLine
|
EXTSYM SpecialLine
|
||||||
EXTSYM vidbufferofsb
|
EXTSYM Clear2xSaIBuffer
|
||||||
;EXTSYM Super2xSaI
|
;EXTSYM Super2xSaI
|
||||||
EXTSYM HalfTransB,HalfTransC
|
EXTSYM HalfTransB,HalfTransC
|
||||||
|
|
||||||
@@ -2081,7 +2081,9 @@ SECTION .text
|
|||||||
mov byte[f3menuen],0
|
mov byte[f3menuen],0
|
||||||
mov byte[ForceNonTransp],0
|
mov byte[ForceNonTransp],0
|
||||||
mov byte[GUIOn],0
|
mov byte[GUIOn],0
|
||||||
|
pushad
|
||||||
call Clear2xSaIBuffer
|
call Clear2xSaIBuffer
|
||||||
|
popad
|
||||||
cmp byte[MovieProcessing],0
|
cmp byte[MovieProcessing],0
|
||||||
jz .nomovie3
|
jz .nomovie3
|
||||||
pushad
|
pushad
|
||||||
@@ -3711,19 +3713,6 @@ NEWSYM vidpaste
|
|||||||
|
|
||||||
SECTION .bss
|
SECTION .bss
|
||||||
.SSRedCo resw 1
|
.SSRedCo resw 1
|
||||||
SECTION .text
|
|
||||||
|
|
||||||
|
|
||||||
NEWSYM Clear2xSaIBuffer
|
|
||||||
mov ebx,[vidbufferofsb]
|
|
||||||
add ebx,288*2
|
|
||||||
mov ecx,144*239
|
|
||||||
.nextb
|
|
||||||
mov dword[ebx],0FFFFFFFFh
|
|
||||||
add ebx,4
|
|
||||||
dec ecx
|
|
||||||
jnz .nextb
|
|
||||||
ret
|
|
||||||
|
|
||||||
SECTION .data
|
SECTION .data
|
||||||
NEWSYM MsgCount, dd 120 ; How long message will stay (PAL = 100)
|
NEWSYM MsgCount, dd 120 ; How long message will stay (PAL = 100)
|
||||||
|
|||||||
@@ -22,8 +22,20 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __LINUX__
|
||||||
|
#include "gblhdr.h"
|
||||||
|
#define DIR_SLASH "/"
|
||||||
|
#else
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#define DIR_SLASH "\\"
|
||||||
|
#endif
|
||||||
|
|
||||||
extern unsigned int newengen, nggposng[2];
|
extern unsigned int newengen, nggposng[2];
|
||||||
extern unsigned short PrevPicture[64*56], *vidbuffer;
|
extern unsigned short PrevPicture[64*56], *vidbuffer, *vidbufferofsb;
|
||||||
|
|
||||||
void CapturePicture()
|
void CapturePicture()
|
||||||
{
|
{
|
||||||
@@ -61,3 +73,8 @@ void CapturePicture()
|
|||||||
} // 0111 1111 1110 0000 and 0000 0000 0001 1111
|
} // 0111 1111 1110 0000 and 0000 0000 0001 1111
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Clear2xSaIBuffer()
|
||||||
|
{
|
||||||
|
memset(vidbufferofsb+576, 0xFF, 576*239);
|
||||||
|
}
|
||||||
|
|||||||
@@ -2098,7 +2098,7 @@ void initwinvideo(void)
|
|||||||
if (Force60hz) Refresh = 60;
|
if (Force60hz) Refresh = 60;
|
||||||
InitDirectDraw();
|
InitDirectDraw();
|
||||||
clearwin();
|
clearwin();
|
||||||
asm_call(Clear2xSaIBuffer);
|
Clear2xSaIBuffer();
|
||||||
clear_display();
|
clear_display();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -2110,11 +2110,10 @@ void initwinvideo(void)
|
|||||||
ReleaseDirectDraw();
|
ReleaseDirectDraw();
|
||||||
InitDirectDraw();
|
InitDirectDraw();
|
||||||
clearwin();
|
clearwin();
|
||||||
asm_call(Clear2xSaIBuffer);
|
Clear2xSaIBuffer();
|
||||||
clear_display();
|
clear_display();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
extern unsigned int vidbuffer;
|
extern unsigned int vidbuffer;
|
||||||
|
|||||||
Reference in New Issue
Block a user