Fixed a slew of SRAM problems.
This commit is contained in:
@@ -117,6 +117,7 @@ EXTSYM SfxSFR,nosprincr
|
|||||||
EXTSYM cpucycle,debstop,switchtovirqdeb,debstop3,switchtonmideb
|
EXTSYM cpucycle,debstop,switchtovirqdeb,debstop3,switchtonmideb
|
||||||
EXTSYM NetPlayNoMore
|
EXTSYM NetPlayNoMore
|
||||||
EXTSYM statefileloc
|
EXTSYM statefileloc
|
||||||
|
EXTSYM CHIPBATT,SaveSramData
|
||||||
|
|
||||||
%ifdef OPENSPC
|
%ifdef OPENSPC
|
||||||
EXTSYM OSPC_Run, ospc_cycle_frac
|
EXTSYM OSPC_Run, ospc_cycle_frac
|
||||||
@@ -856,21 +857,15 @@ NetSaveState:
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
%macro stim 0
|
%macro stim 0
|
||||||
; cmp byte[OSPort],1
|
|
||||||
; ja %%nosti
|
|
||||||
%ifdef __MSDOS__
|
%ifdef __MSDOS__
|
||||||
sti
|
sti
|
||||||
%endif
|
%endif
|
||||||
;%%nosti
|
|
||||||
%endmacro
|
%endmacro
|
||||||
|
|
||||||
%macro clim 0
|
%macro clim 0
|
||||||
; cmp byte[OSPort],1
|
|
||||||
; ja %%nocli
|
|
||||||
%ifdef __MSDOS__
|
%ifdef __MSDOS__
|
||||||
cli
|
cli
|
||||||
%endif
|
%endif
|
||||||
;%%nocli
|
|
||||||
%endmacro
|
%endmacro
|
||||||
|
|
||||||
%macro ProcessIRQStuffB 0
|
%macro ProcessIRQStuffB 0
|
||||||
@@ -1346,74 +1341,8 @@ NEWSYM endprog
|
|||||||
; mov eax,[numinst] ;Temporary
|
; mov eax,[numinst] ;Temporary
|
||||||
; mov eax,[NumBRRconv]
|
; mov eax,[NumBRRconv]
|
||||||
; call printnum
|
; call printnum
|
||||||
; save sram
|
|
||||||
|
|
||||||
; change to sram dir
|
|
||||||
mov dl,[SRAMDrive]
|
|
||||||
mov ebx,SRAMDir
|
|
||||||
call Change_Dir
|
|
||||||
|
|
||||||
cmp byte[sramsavedis],1
|
|
||||||
je .nosram
|
|
||||||
cmp dword[ramsize],0
|
|
||||||
je .nosram
|
|
||||||
xor eax,eax
|
|
||||||
xor ebx,ebx
|
|
||||||
xor ecx,ecx
|
|
||||||
xor edx,edx
|
|
||||||
xor esi,esi
|
|
||||||
xor edi,edi
|
|
||||||
mov edx,fnames+1
|
|
||||||
call Create_File
|
|
||||||
jc .nosram
|
|
||||||
mov bx,ax
|
|
||||||
xor ecx,ecx
|
|
||||||
mov ecx,[ramsize]
|
|
||||||
mov edx,[sram]
|
|
||||||
call Write_File
|
|
||||||
call Close_File
|
|
||||||
.nosram
|
|
||||||
cmp byte[SFXBATT],0
|
|
||||||
je .nosfxbatt
|
|
||||||
mov edx,fnames+1
|
|
||||||
call Create_File
|
|
||||||
jc .nosfxbatt
|
|
||||||
mov bx,ax
|
|
||||||
mov ecx,65536
|
|
||||||
mov edx,[sfxramdata]
|
|
||||||
call Write_File
|
|
||||||
call Close_File
|
|
||||||
.nosfxbatt
|
|
||||||
|
|
||||||
cmp byte[SETAEnable],0
|
|
||||||
je .nosetasram
|
|
||||||
mov edx,fnames+1
|
|
||||||
call Create_File
|
|
||||||
jc .nosetasram
|
|
||||||
mov bx,ax
|
|
||||||
mov ecx,4096
|
|
||||||
mov edx,[setaramdata]
|
|
||||||
call Write_File
|
|
||||||
call Close_File
|
|
||||||
.nosetasram
|
|
||||||
|
|
||||||
cmp byte[SA1Enable],1
|
|
||||||
jne .nosa1
|
|
||||||
mov edx,fnames+1
|
|
||||||
call Create_File
|
|
||||||
jc .nosa1
|
|
||||||
mov bx,ax
|
|
||||||
mov ecx,65536*2
|
|
||||||
mov edx,[SA1RAMArea]
|
|
||||||
call Write_File
|
|
||||||
call Close_File
|
|
||||||
.nosa1
|
|
||||||
|
|
||||||
; change dir to InitDrive/InitDir
|
|
||||||
mov dl,[InitDrive]
|
|
||||||
mov ebx,InitDir
|
|
||||||
call Change_Dir
|
|
||||||
|
|
||||||
|
call SaveSramData
|
||||||
call createnewcfg
|
call createnewcfg
|
||||||
call GUISaveVars
|
call GUISaveVars
|
||||||
|
|
||||||
@@ -1497,7 +1426,6 @@ NEWSYM initaddrl, dd 0 ; initial address location
|
|||||||
NEWSYM NetSent, dd 0
|
NEWSYM NetSent, dd 0
|
||||||
NEWSYM nextframe, dd 0 ; tick count for timer
|
NEWSYM nextframe, dd 0 ; tick count for timer
|
||||||
NEWSYM curfps, db 0 ; frame/sec for current screen
|
NEWSYM curfps, db 0 ; frame/sec for current screen
|
||||||
NEWSYM SFXBATT, db 0
|
|
||||||
NEWSYM newgfxerror, db 'NEED MEMORY FOR GFX ENGINE',0
|
NEWSYM newgfxerror, db 'NEED MEMORY FOR GFX ENGINE',0
|
||||||
NEWSYM newgfxerror2, db 'NEED 320x240 FOR NEW GFX 16B',0
|
NEWSYM newgfxerror2, db 'NEED 320x240 FOR NEW GFX 16B',0
|
||||||
;newgfxerror db 'NEW GFX IN 16BIT IS N/A',0
|
;newgfxerror db 'NEW GFX IN 16BIT IS N/A',0
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ EXTSYM Voice0Status, Voice1Status, Voice2Status, Voice3Status, Voice4Status
|
|||||||
EXTSYM Voice5Status, Voice6Status, Voice7Status, romtype, SetIRQVectors
|
EXTSYM Voice5Status, Voice6Status, Voice7Status, romtype, SetIRQVectors
|
||||||
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,SFXBATT,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
|
||||||
EXTSYM memtabler8,memtablew8,writeon,pl1contrl,pl2contrl,JoyRead,SetInputDevice
|
EXTSYM memtabler8,memtablew8,writeon,pl1contrl,pl2contrl,JoyRead,SetInputDevice
|
||||||
@@ -821,7 +821,9 @@ clearsram:
|
|||||||
inc eax
|
inc eax
|
||||||
dec ecx
|
dec ecx
|
||||||
jnz .loop
|
jnz .loop
|
||||||
cmp byte[SFXBATT],0
|
cmp byte[SFXEnable],0
|
||||||
|
je .nosfxbatt
|
||||||
|
cmp byte[CHIPBATT],0
|
||||||
je .nosfxbatt
|
je .nosfxbatt
|
||||||
mov eax,[sfxramdata]
|
mov eax,[sfxramdata]
|
||||||
mov ecx,65536
|
mov ecx,65536
|
||||||
@@ -845,6 +847,8 @@ clearsram:
|
|||||||
|
|
||||||
cmp byte[SA1Enable],1
|
cmp byte[SA1Enable],1
|
||||||
jne .nosa1
|
jne .nosa1
|
||||||
|
cmp byte[CHIPBATT],1
|
||||||
|
jne .nosa1
|
||||||
mov eax,[SA1RAMArea]
|
mov eax,[SA1RAMArea]
|
||||||
mov ecx,65536*2
|
mov ecx,65536*2
|
||||||
.loop3
|
.loop3
|
||||||
@@ -1462,12 +1466,21 @@ SECTION .text
|
|||||||
|
|
||||||
|
|
||||||
NEWSYM SaveSramData
|
NEWSYM SaveSramData
|
||||||
; save sram
|
; change to sram dir
|
||||||
|
mov dl,[SRAMDrive]
|
||||||
|
mov ebx,SRAMDir
|
||||||
|
call Change_Dir
|
||||||
|
|
||||||
|
clim
|
||||||
|
|
||||||
|
cmp byte[SFXEnable],1
|
||||||
|
je .nosram
|
||||||
|
cmp byte[SA1Enable],1
|
||||||
|
je .nosram
|
||||||
cmp byte[sramsavedis],1
|
cmp byte[sramsavedis],1
|
||||||
je .nosram
|
je .nosram
|
||||||
cmp dword[ramsize],0
|
cmp dword[ramsize],0
|
||||||
je .nosram
|
je .nosram
|
||||||
clim
|
|
||||||
xor eax,eax
|
xor eax,eax
|
||||||
xor ebx,ebx
|
xor ebx,ebx
|
||||||
xor ecx,ecx
|
xor ecx,ecx
|
||||||
@@ -1478,14 +1491,60 @@ NEWSYM SaveSramData
|
|||||||
call Create_File
|
call Create_File
|
||||||
jc .failed
|
jc .failed
|
||||||
mov bx,ax
|
mov bx,ax
|
||||||
|
xor ecx,ecx
|
||||||
mov ecx,[ramsize]
|
mov ecx,[ramsize]
|
||||||
mov edx,[sram]
|
mov edx,[sram]
|
||||||
call Write_File
|
call Write_File
|
||||||
call Close_File
|
call Close_File
|
||||||
|
.nosram
|
||||||
|
cmp byte[SFXEnable],0
|
||||||
|
je .nosfxbatt
|
||||||
|
cmp byte[CHIPBATT],0
|
||||||
|
je .nosfxbatt
|
||||||
|
mov edx,fnames+1
|
||||||
|
call Create_File
|
||||||
|
jc .failed
|
||||||
|
mov bx,ax
|
||||||
|
mov ecx,65536
|
||||||
|
mov edx,[sfxramdata]
|
||||||
|
call Write_File
|
||||||
|
call Close_File
|
||||||
|
.nosfxbatt
|
||||||
|
|
||||||
|
cmp byte[SETAEnable],0
|
||||||
|
je .nosetasram
|
||||||
|
mov edx,fnames+1
|
||||||
|
call Create_File
|
||||||
|
jc .failed
|
||||||
|
mov bx,ax
|
||||||
|
mov ecx,4096
|
||||||
|
mov edx,[setaramdata]
|
||||||
|
call Write_File
|
||||||
|
call Close_File
|
||||||
|
.nosetasram
|
||||||
|
|
||||||
|
cmp byte[SA1Enable],1
|
||||||
|
jne .nosa1
|
||||||
|
cmp byte[CHIPBATT],1
|
||||||
|
jne .nosa1
|
||||||
|
mov edx,fnames+1
|
||||||
|
call Create_File
|
||||||
|
jc .failed
|
||||||
|
mov bx,ax
|
||||||
|
mov ecx,65536*2
|
||||||
|
mov edx,[SA1RAMArea]
|
||||||
|
call Write_File
|
||||||
|
call Close_File
|
||||||
|
.nosa1
|
||||||
.failed
|
.failed
|
||||||
stim
|
stim
|
||||||
.nosram
|
|
||||||
call SaveCombFile
|
call SaveCombFile
|
||||||
|
|
||||||
|
; change dir to InitDrive/InitDir
|
||||||
|
mov dl,[InitDrive]
|
||||||
|
mov ebx,InitDir
|
||||||
|
call Change_Dir
|
||||||
ret
|
ret
|
||||||
|
|
||||||
NEWSYM ProcRewind
|
NEWSYM ProcRewind
|
||||||
@@ -1798,7 +1857,9 @@ NEWSYM StartGUI
|
|||||||
|
|
||||||
call SaveSramData
|
call SaveSramData
|
||||||
|
|
||||||
cmp byte[SFXBATT],0
|
cmp byte[SFXEnable],0
|
||||||
|
je .nosfxbatt
|
||||||
|
cmp byte[CHIPBATT],0
|
||||||
je .nosfxbatt
|
je .nosfxbatt
|
||||||
clim
|
clim
|
||||||
mov edx,fnames+1
|
mov edx,fnames+1
|
||||||
|
|||||||
@@ -1422,12 +1422,20 @@ SECTION .data
|
|||||||
SECTION .text
|
SECTION .text
|
||||||
|
|
||||||
transfersram:
|
transfersram:
|
||||||
cmp byte[SFXBATT],0
|
;Do players want SRAM sent?
|
||||||
jne .nosram
|
cmp byte[UseRemoteSRAMData],0
|
||||||
|
je .nosram
|
||||||
|
|
||||||
|
;It has a battery, send it.
|
||||||
|
cmp byte[CHIPBATT],1
|
||||||
|
je .yessram
|
||||||
|
|
||||||
|
;If last if failed, no battery, so no SRAM sending for SA1 (SFX doesn't set ramsize)
|
||||||
cmp byte[SA1Enable],1
|
cmp byte[SA1Enable],1
|
||||||
je .nosram
|
je .nosram
|
||||||
cmp dword[ramsize],0
|
cmp dword[ramsize],0
|
||||||
je .nosram
|
je .nosram
|
||||||
|
.yessram
|
||||||
cmp byte[UseRemoteSRAMData],1
|
cmp byte[UseRemoteSRAMData],1
|
||||||
je .uselocal
|
je .uselocal
|
||||||
cmp byte[UseRemoteSRAMData],2
|
cmp byte[UseRemoteSRAMData],2
|
||||||
@@ -1436,6 +1444,7 @@ transfersram:
|
|||||||
call clearsram
|
call clearsram
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
|
||||||
.uselocal
|
.uselocal
|
||||||
call PreparePacket
|
call PreparePacket
|
||||||
mov al,233
|
mov al,233
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ EXTSYM SRAMDir,SRAMDrive,cfgloadsdir,fnamest,statefileloc
|
|||||||
EXTSYM ForcePal,ForceROMTiming,ForceHiLoROM,InitDir,InitDrive,enterpress,frameskip
|
EXTSYM ForcePal,ForceROMTiming,ForceHiLoROM,InitDir,InitDrive,enterpress,frameskip
|
||||||
EXTSYM maxromspace,curromspace,infoloc, patchfile
|
EXTSYM maxromspace,curromspace,infoloc, patchfile
|
||||||
EXTSYM gotoroot,headdata,printnum,romispal
|
EXTSYM gotoroot,headdata,printnum,romispal
|
||||||
EXTSYM InitFxTables,SFXBATT,SfxR1,SfxR2,SfxSCMR,SfxSFR,finterleave
|
EXTSYM InitFxTables,SfxR1,SfxR2,SfxSCMR,SfxSFR,finterleave
|
||||||
EXTSYM initregr,initregw,memtabler16,DSP1Read16b3F,memaccessbankr16
|
EXTSYM initregr,initregw,memtabler16,DSP1Read16b3F,memaccessbankr16
|
||||||
EXTSYM memtabler8,DSP1Read8b3F,memaccessbankr8,memtablew16,DSP1Write16b
|
EXTSYM memtabler8,DSP1Read8b3F,memaccessbankr8,memtablew16,DSP1Write16b
|
||||||
EXTSYM memaccessbankw16,memtablew8,DSP1Write8b,memaccessbankw8,DSP1Write16b3F
|
EXTSYM memaccessbankw16,memtablew8,DSP1Write8b,memaccessbankw8,DSP1Write16b3F
|
||||||
@@ -4134,7 +4134,6 @@ NEWSYM CheckROMType
|
|||||||
mov byte[RTCEnable],0
|
mov byte[RTCEnable],0
|
||||||
mov byte[SA1Enable],0
|
mov byte[SA1Enable],0
|
||||||
mov byte[SDD1Enable],0
|
mov byte[SDD1Enable],0
|
||||||
mov byte[SFXBATT],0
|
|
||||||
mov byte[OBCEnable],0
|
mov byte[OBCEnable],0
|
||||||
mov byte[CHIPBATT],0
|
mov byte[CHIPBATT],0
|
||||||
mov byte[SGBEnable],0
|
mov byte[SGBEnable],0
|
||||||
@@ -4215,13 +4214,13 @@ NEWSYM CheckROMType
|
|||||||
cmp ax,01520h
|
cmp ax,01520h
|
||||||
jne .notSFXC
|
jne .notSFXC
|
||||||
mov byte[SFXEnable],1
|
mov byte[SFXEnable],1
|
||||||
mov byte[SFXBATT],1 ;Contains Battery
|
mov byte[CHIPBATT],1 ;Contains Battery
|
||||||
jmp .endchpdtct
|
jmp .endchpdtct
|
||||||
.notSFXC
|
.notSFXC
|
||||||
cmp ax,01A20h
|
cmp ax,01A20h
|
||||||
jne .notSFXD
|
jne .notSFXD
|
||||||
mov byte[SFXEnable],1
|
mov byte[SFXEnable],1
|
||||||
mov byte[SFXBATT],1 ;Contains Battery
|
mov byte[CHIPBATT],1 ;Contains Battery
|
||||||
jmp .endchpdtct
|
jmp .endchpdtct
|
||||||
.notSFXD
|
.notSFXD
|
||||||
cmp ax,05535h
|
cmp ax,05535h
|
||||||
|
|||||||
Reference in New Issue
Block a user