A lot of updates
This commit is contained in:
@@ -21,7 +21,7 @@ EXTSYM BRRPlace0,BRRPlace1,BRRPlace2,BRRPlace3,BRRPlace4,BRRPlace5,BRRPlace6
|
||||
EXTSYM BRRPlace7,Decrease,DecreaseRateExp,EchoFB,EchoRate,EchoVL,EchoVR
|
||||
EXTSYM FIRTAPVal0,FIRTAPVal1,FIRTAPVal2,FIRTAPVal3,FIRTAPVal4,FIRTAPVal5
|
||||
EXTSYM FIRTAPVal6,FIRTAPVal7,GlobalVL,GlobalVR,Increase,IncreaseBent
|
||||
EXTSYM MaxEcho,MusicVol,NoiseInc,NoiseSpeeds,SBToSPC,Voice0End,Voice0EnvInc
|
||||
EXTSYM MaxEcho,MusicVol,NoiseInc,NoiseSpeeds,dspPAdj,Voice0End,Voice0EnvInc
|
||||
EXTSYM Voice0IncNumber,Voice0Loop,Voice0Noise,Voice0Prev0,Voice0Prev1
|
||||
EXTSYM Voice0Start,Voice0State,Voice0Status,Voice0Time,Voice1End,Voice1Noise
|
||||
EXTSYM Voice1Prev0,Voice1Prev1,Voice1Start,Voice2End,Voice2Noise,Voice2Prev0
|
||||
@@ -47,7 +47,9 @@ NEWSYM DspAsmStart
|
||||
|
||||
;none times 256 db 0
|
||||
|
||||
SECTION .data
|
||||
identcode db 255,1,78,78
|
||||
SECTION .text
|
||||
;sardcode db 234,76,80,128,65,65 ; 6
|
||||
;efxcode db 17,47,62,97,26,126,98 ; 7
|
||||
;zopcode db 54,39,21,0,0,8,14,12,18 ; 9
|
||||
@@ -67,9 +69,10 @@ identcode db 255,1,78,78
|
||||
mov [DSPMem+00h+%1],al
|
||||
%endmacro
|
||||
|
||||
ALIGN32
|
||||
|
||||
NEWSYM DSPMem, times 256 db 0
|
||||
SECTION .bss ;ALIGN=32
|
||||
alignb 32
|
||||
NEWSYM DSPMem, resb 256
|
||||
SECTION .text
|
||||
|
||||
;Read DSP Registers functions
|
||||
|
||||
@@ -1114,7 +1117,7 @@ NEWSYM RDSPRegFF ;
|
||||
test byte [DSPMem+07h+%1*10h],40h
|
||||
jnz near %%Increase
|
||||
test byte [DSPMem+07h+%1*10h],20h
|
||||
jz near %%LinearDec
|
||||
jz %%LinearDec
|
||||
xor eax,eax
|
||||
mov al,[DSPMem+07h+%1*10h]
|
||||
and al,1Fh
|
||||
@@ -1216,7 +1219,7 @@ NEWSYM RDSPRegFF ;
|
||||
test byte [DSPMem+07h+%1*10h],40h
|
||||
jnz near %%Increase
|
||||
test byte [DSPMem+07h+%1*10h],20h
|
||||
jz near %%LinearDec
|
||||
jz %%LinearDec
|
||||
xor eax,eax
|
||||
mov al,[DSPMem+07h+%1*10h]
|
||||
and al,1Fh
|
||||
@@ -1524,11 +1527,11 @@ NEWSYM RDSPRegFF ;
|
||||
|
||||
%macro VoiceGain 1
|
||||
test byte[MuteVoiceF],1 << %1
|
||||
jnz near .nogain
|
||||
jnz .nogain
|
||||
cmp byte[Voice0State+%1],200
|
||||
je near .nogain
|
||||
je .nogain
|
||||
cmp [DSPMem+07h+%1*10h],al
|
||||
je near .nogain
|
||||
je .nogain
|
||||
mov [DSPMem+07h+%1*10h],al
|
||||
cmp byte[Voice0Status+%1],1
|
||||
jne .nogain
|
||||
@@ -1550,7 +1553,9 @@ NEWSYM RDSPRegFF ;
|
||||
ProcessGain2 %1
|
||||
%endmacro
|
||||
|
||||
NEWSYM ADSRGAINSwitch, db 0
|
||||
SECTION .bss
|
||||
NEWSYM ADSRGAINSwitch, resb 1
|
||||
SECTION .text
|
||||
|
||||
;Write DSP Registers functions
|
||||
|
||||
@@ -1584,7 +1589,9 @@ NEWSYM WDSPReg04 ; Voice 0 SCRN
|
||||
mov [DSPMem+04h],al
|
||||
ret
|
||||
|
||||
NEWSYM TempValueSnd, db 0
|
||||
SECTION .bss
|
||||
NEWSYM TempValueSnd, resb 1
|
||||
SECTION .text
|
||||
|
||||
NEWSYM WDSPReg05 ; Voice 0 ADSR (1)
|
||||
inc byte[TempValueSnd]
|
||||
@@ -2231,7 +2238,9 @@ NEWSYM WDSPReg6B ; Voice 6
|
||||
mov [DSPMem+06Bh],al
|
||||
ret
|
||||
|
||||
spcres db 0
|
||||
SECTION .bss
|
||||
spcres resb 1
|
||||
SECTION .text
|
||||
|
||||
NEWSYM WDSPReg6C ; Voice 6
|
||||
mov [DSPMem+06Ch],al
|
||||
@@ -2258,10 +2267,8 @@ NEWSYM WDSPReg6C ; Voice 6
|
||||
and eax,1Fh
|
||||
xor edx,edx
|
||||
mov eax,[NoiseSpeeds+eax*4]
|
||||
mov ebx,[SBToSPC]
|
||||
shl eax,16
|
||||
div ebx
|
||||
shl eax,2
|
||||
Mul dword [dspPAdj]
|
||||
ShrD EAX, EDX, 17
|
||||
mov [NoiseInc],eax
|
||||
pop edx
|
||||
pop ecx
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -28,8 +28,8 @@ EXTSYM Op08X,Op18X,Op28X,Op0CA,Op02FX,Op0AVS,Op06X,Op0DX,Op03F,Op14Zr
|
||||
EXTSYM Op0EH,DSP1Type,Op01m
|
||||
EXTSYM Voice0Status
|
||||
EXTSYM UpdateDPage
|
||||
EXTSYM Interror,MessageOn,MsgCount,Msgptr,StartGUI,cbitmode,debuggeron,romdata
|
||||
EXTSYM frameskip,initvideo,newgfx16b,oldhandSBo,oldhandSBs,soundon,cvidmode
|
||||
EXTSYM MessageOn,MsgCount,Msgptr,StartGUI,cbitmode,debuggeron,romdata
|
||||
EXTSYM frameskip,initvideo,newgfx16b,soundon,cvidmode
|
||||
EXTSYM vidbuffer,vidbufferofsa,vidbufferofsb,disable65816sh,GUISaveVars,virqnodisable
|
||||
EXTSYM KeySaveState,KeyLoadState,KeyQuickExit,KeyQuickLoad,KeyQuickRst,GUIDoReset
|
||||
EXTSYM KeyOnStA,KeyOnStB,ProcessKeyOn,printnum,sramsavedis,DSPDisable,C4Enable
|
||||
@@ -39,8 +39,8 @@ EXTSYM csounddisable,videotroub,Open_File,Close_File,Read_File,ResetTripleBuf
|
||||
EXTSYM Write_File,Output_Text,Create_File,Check_Key,Get_Key,Change_Dir,InitPreGame
|
||||
;EXTSYM OSPort
|
||||
; EXTSYM tempblah,romdata
|
||||
EXTSYM Curtableaddr,DeInitSPC,InitSB,PICMaskP,SBHandler,SBInt
|
||||
EXTSYM SBIrq,curcyc,debugdisble,dmadata,guioff,memtabler8,SetupPreGame
|
||||
EXTSYM Curtableaddr
|
||||
EXTSYM curcyc,debugdisble,dmadata,guioff,memtabler8,SetupPreGame
|
||||
EXTSYM memtablew8,regaccessbankr8,showmenu,snesmap2,snesmmap,DeInitPostGame
|
||||
EXTSYM spcPCRam,startdebugger,xp,xpb,xpc,tablead,tableadb,tableadc
|
||||
; EXTSYM oamram
|
||||
@@ -53,8 +53,10 @@ EXTSYM OSExit,DosExit,InitDir,InitDrive,createnewcfg,fnames,gotoroot,previdmode
|
||||
EXTSYM ramsize,sfxramdata,sram,SRAMDrive,SRAMDir,welcome
|
||||
; EXTSYM tempstore
|
||||
EXTSYM printhex
|
||||
%ifdef __MSDOS__
|
||||
EXTSYM ModemInitStat, DeInitModem
|
||||
EXTSYM deinitipx
|
||||
%endif
|
||||
EXTSYM deinitvideo
|
||||
EXTSYM BRRBuffer,DSPMem,PrepareSaveState,ResetState,SFXEnable,PHdspsave
|
||||
EXTSYM fnamest,sndrot,spcRam,spcRamDP,tableA,unpackfunct,vram,wramdata
|
||||
@@ -67,11 +69,10 @@ EXTSYM CapturePicture,PrevPicture,NoPictureSave
|
||||
EXTSYM BRRPlace0,SfxCPB,SfxCROM,SfxLastRamAdr,SfxMemTable,Totalbyteloaded
|
||||
EXTSYM SfxRAMBR,SfxRAMMem,SfxROMBR,SfxRomBuffer,Voice0Freq
|
||||
EXTSYM cycpbl,cycpbl2,cycpblt,cycpblt2,irqon,nexthdma
|
||||
EXTSYM repackfunct,spcnumread,spcon,versn,headerhack,initpitch
|
||||
EXTSYM repackfunct,spcnumread,spchalted,spcon,versn,headerhack,initpitch
|
||||
EXTSYM SPCMultA,PHnum2writespc7110reg
|
||||
EXTSYM multchange,procexecloop,vidmemch2
|
||||
EXTSYM romispal
|
||||
EXTSYM dssel
|
||||
EXTSYM scrndis,sprlefttot,sprleftpr,processsprites,cachesprites
|
||||
EXTSYM NextLineStart,FlipWait,LastLineStart
|
||||
EXTSYM opcjmptab
|
||||
@@ -118,6 +119,14 @@ EXTSYM ReadSPC7110log,WriteSPC7110log
|
||||
EXTSYM NetPlayNoMore
|
||||
EXTSYM statefileloc
|
||||
|
||||
%ifdef OPENSPC
|
||||
EXTSYM OSPC_Run, ospc_cycle_frac
|
||||
%endif
|
||||
|
||||
%ifdef __MSDOS__
|
||||
EXTSYM dssel
|
||||
%endif
|
||||
|
||||
NEWSYM ExecuteAsmStart
|
||||
|
||||
%macro BackupCVMacM 2
|
||||
@@ -130,7 +139,8 @@ NEWSYM ExecuteAsmStart
|
||||
movq [ebx+8],mm1
|
||||
add edx,16
|
||||
add ebx,16
|
||||
loop %%loop
|
||||
dec ecx
|
||||
jnz %%loop
|
||||
%endmacro
|
||||
|
||||
%macro BackupCVMac 2
|
||||
@@ -141,7 +151,8 @@ NEWSYM ExecuteAsmStart
|
||||
mov [ebx],eax
|
||||
add edx,4
|
||||
add ebx,4
|
||||
loop %%loop
|
||||
dec ecx
|
||||
jnz %%loop
|
||||
%endmacro
|
||||
|
||||
%macro BackupCVMacB 2
|
||||
@@ -152,7 +163,8 @@ NEWSYM ExecuteAsmStart
|
||||
mov [ebx],al
|
||||
inc edx
|
||||
inc ebx
|
||||
loop %%loop
|
||||
dec ecx
|
||||
jnz %%loop
|
||||
%endmacro
|
||||
|
||||
%macro BackupCVRMacM 2
|
||||
@@ -165,7 +177,8 @@ NEWSYM ExecuteAsmStart
|
||||
movq [edx+8],mm1
|
||||
add edx,16
|
||||
add ebx,16
|
||||
loop %%loop
|
||||
dec ecx
|
||||
jnz %%loop
|
||||
%endmacro
|
||||
|
||||
%macro BackupCVRMac 2
|
||||
@@ -176,7 +189,8 @@ NEWSYM ExecuteAsmStart
|
||||
mov [edx],eax
|
||||
add edx,4
|
||||
add ebx,4
|
||||
loop %%loop
|
||||
dec ecx
|
||||
jnz %%loop
|
||||
%endmacro
|
||||
|
||||
%macro BackupCVRMacB 2
|
||||
@@ -187,46 +201,57 @@ NEWSYM ExecuteAsmStart
|
||||
mov [edx],al
|
||||
inc edx
|
||||
inc ebx
|
||||
loop %%loop
|
||||
dec ecx
|
||||
jnz %%loop
|
||||
%endmacro
|
||||
|
||||
NEWSYM CBackupPos, dd 0
|
||||
NEWSYM StateBackup, dd 0
|
||||
NEWSYM PBackupPos, dd 0
|
||||
NEWSYM PPValue, dd 0 ; Previous PValue
|
||||
NEWSYM DPValue, dd 0 ; Destination PValue
|
||||
NEWSYM CurRecv, dd 0 ; Set to 1 if Recovery mode is on
|
||||
SECTION .bss
|
||||
NEWSYM CBackupPos, resd 1
|
||||
NEWSYM StateBackup, resd 1
|
||||
NEWSYM PBackupPos, resd 1
|
||||
NEWSYM PPValue, resd 1 ; Previous PValue
|
||||
NEWSYM DPValue, resd 1 ; Destination PValue
|
||||
NEWSYM CurRecv, resd 1 ; Set to 1 if Recovery mode is on
|
||||
; if CurRecv=1, then do not send tcp/ip data, always frame skip, do not
|
||||
; draw to screen, do not key on, restore previous local key presses,
|
||||
; when disabling key ons, divert dspmem write/read to a different
|
||||
; array temporarly, then re-copy back in when finished
|
||||
NEWSYM PPContrl, times 16 dd 0 ; Previous Controller 1 Data
|
||||
NEWSYM PPContrl2, times 16 dd 0 ; Previous Controller 2 Data
|
||||
NEWSYM PPContrl3, times 16 dd 0 ; Previous Controller 3 Data
|
||||
NEWSYM PPContrl4, times 16 dd 0 ; Previous Controller 4 Data
|
||||
NEWSYM PPContrl5, times 16 dd 0 ; Previous Controller 5 Data
|
||||
NEWSYM tempedx, dd 0
|
||||
NEWSYM NetSent2, dd 0
|
||||
NEWSYM NetQuitter, dd 0
|
||||
NEWSYM QBackupPos, dd 0
|
||||
NEWSYM LatencyV, times 256 db 0
|
||||
NEWSYM LatencyRecvPtr, dd 0
|
||||
NEWSYM LatencySendPtr, dd 0
|
||||
NEWSYM latencytimer, dd 0
|
||||
NEWSYM PPContrl, resd 16 ; Previous Controller 1 Data
|
||||
NEWSYM PPContrl2, resd 16 ; Previous Controller 2 Data
|
||||
NEWSYM PPContrl3, resd 16 ; Previous Controller 3 Data
|
||||
NEWSYM PPContrl4, resd 16 ; Previous Controller 4 Data
|
||||
NEWSYM PPContrl5, resd 16 ; Previous Controller 5 Data
|
||||
NEWSYM tempedx, resd 1
|
||||
NEWSYM NetSent2, resd 1
|
||||
NEWSYM NetQuitter, resd 1
|
||||
NEWSYM QBackupPos, resd 1
|
||||
NEWSYM LatencyV, resb 256
|
||||
NEWSYM LatencyRecvPtr, resd 1
|
||||
NEWSYM LatencySendPtr, resd 1
|
||||
NEWSYM latencytimer, resd 1
|
||||
|
||||
SECTION .data
|
||||
NEWSYM BackState, db 1
|
||||
NEWSYM BackStateSize, dd 6
|
||||
NEWSYM nojoystickpoll, dd 0
|
||||
NEWSYM RemoteLValue, db 0
|
||||
NEWSYM LocalLValue, db 0
|
||||
NEWSYM chatstrLt, times 15 db 0
|
||||
NEWSYM RewindOldPos, dd 0
|
||||
NEWSYM RewindPos, dd 0
|
||||
NEWSYM RewindTimer, dd 0
|
||||
|
||||
SECTION .bss
|
||||
NEWSYM nojoystickpoll, resd 1
|
||||
NEWSYM RemoteLValue, resb 1
|
||||
NEWSYM LocalLValue, resb 1
|
||||
NEWSYM chatstrLt, resb 15
|
||||
NEWSYM RewindOldPos, resd 1
|
||||
NEWSYM RewindPos, resd 1
|
||||
NEWSYM RewindTimer, resd 1
|
||||
|
||||
SECTION .data
|
||||
NEWSYM ResendTimer, dd 60
|
||||
NEWSYM valuea, dd 0
|
||||
NEWSYM valueb, dd 0
|
||||
NEWSYM valuet, dd 0
|
||||
BackupArray times 2000 dd 0
|
||||
|
||||
SECTION .bss
|
||||
NEWSYM valuea, resd 1
|
||||
NEWSYM valueb, resd 1
|
||||
NEWSYM valuet, resd 1
|
||||
BackupArray resd 3000
|
||||
SECTION .text
|
||||
|
||||
NEWSYM SplitStringChat
|
||||
push ebx
|
||||
@@ -352,7 +377,9 @@ NEWSYM GenLatencyDisplay
|
||||
mov [chatstrLt+4],dl
|
||||
mov [chatstrLt+3],al
|
||||
ret
|
||||
.temp dd 0
|
||||
SECTION .bss
|
||||
.temp resd 1
|
||||
SECTION .text
|
||||
|
||||
NEWSYM ResetExecStuff
|
||||
mov dword[soundcycleft],0
|
||||
@@ -363,7 +390,8 @@ NEWSYM ResetExecStuff
|
||||
mov dword[nmiprevline],224
|
||||
mov dword[nmistatus],0
|
||||
mov byte[NextLineCache],0
|
||||
mov byte[spcnumread],0
|
||||
mov dword[spcnumread],0
|
||||
mov dword[spchalted],-1
|
||||
mov dword[timer2upd],0
|
||||
mov dword[HIRQCycNext],0
|
||||
mov byte[HIRQNextExe],0
|
||||
@@ -465,7 +493,8 @@ NEWSYM BackupSystemVars
|
||||
BackupCVMac spc700read,10
|
||||
BackupCVMac timer2upd,1
|
||||
BackupCVMac xa,14
|
||||
BackupCVMacB spcnumread,1
|
||||
BackupCVMacB spcnumread,4
|
||||
BackupCVMacB spchalted,4
|
||||
BackupCVMac opcd,6
|
||||
BackupCVMacB HIRQCycNext,5
|
||||
BackupCVMac oamaddr,14
|
||||
@@ -487,7 +516,8 @@ NEWSYM RestoreSystemVars
|
||||
BackupCVRMac spc700read,10
|
||||
BackupCVRMac timer2upd,1
|
||||
BackupCVRMac xa,14
|
||||
BackupCVRMacB spcnumread,1
|
||||
BackupCVRMacB spcnumread,4
|
||||
BackupCVRMacB spchalted,4
|
||||
BackupCVRMac opcd,6
|
||||
BackupCVRMacB HIRQCycNext,5
|
||||
BackupCVRMac oamaddr,14
|
||||
@@ -560,7 +590,8 @@ NEWSYM BackupCVFrame
|
||||
BackupCVMac spc700read,10
|
||||
BackupCVMac timer2upd,1
|
||||
BackupCVMac xa,14
|
||||
BackupCVMacB spcnumread,1
|
||||
BackupCVMacB spcnumread,4
|
||||
BackupCVMacB spchalted,4
|
||||
BackupCVMac opcd,6
|
||||
BackupCVMacB HIRQCycNext,5
|
||||
BackupCVMac oamaddr,14
|
||||
@@ -654,7 +685,8 @@ NEWSYM RestoreCVFrame
|
||||
BackupCVRMac spc700read,10
|
||||
BackupCVRMac timer2upd,1
|
||||
BackupCVRMac xa,14
|
||||
BackupCVRMacB spcnumread,1
|
||||
BackupCVRMacB spcnumread,4
|
||||
BackupCVRMacB spchalted,4
|
||||
BackupCVRMac opcd,6
|
||||
BackupCVRMacB HIRQCycNext,5
|
||||
BackupCVRMac oamaddr,14
|
||||
@@ -689,7 +721,9 @@ NEWSYM RestoreCVFrame
|
||||
emms
|
||||
ret
|
||||
|
||||
NEWSYM MuteVoiceF, db 0
|
||||
SECTION .bss
|
||||
NEWSYM MuteVoiceF, resb 0
|
||||
SECTION .text
|
||||
|
||||
VoiceEndMute:
|
||||
mov byte[MuteVoiceF],0
|
||||
@@ -973,19 +1007,22 @@ NetSaveState:
|
||||
; pexecs
|
||||
; *** Copy to PC whenever a non-relative jump is executed
|
||||
|
||||
NEWSYM romloadskip, db 0
|
||||
NEWSYM abcdefg, dd 0
|
||||
NEWSYM abcdefg1, dd 0
|
||||
NEWSYM abcdefg2, dd 0
|
||||
NEWSYM abcdefg3, dd 0
|
||||
NEWSYM SSKeyPressed, dd 0
|
||||
NEWSYM SPCKeyPressed, dd 0
|
||||
NEWSYM NoSoundReinit, dd 0
|
||||
NEWSYM NextNGDisplay, db 0
|
||||
NEWSYM TempVidInfo, dd 0
|
||||
SECTION .bss
|
||||
NEWSYM romloadskip, resb 1
|
||||
NEWSYM abcdefg, resd 1
|
||||
NEWSYM abcdefg1, resd 1
|
||||
NEWSYM abcdefg2, resd 1
|
||||
NEWSYM abcdefg3, resd 1
|
||||
NEWSYM SSKeyPressed, resd 1
|
||||
NEWSYM SPCKeyPressed, resd 1
|
||||
NEWSYM NoSoundReinit, resd 1
|
||||
NEWSYM NextNGDisplay, resb 1
|
||||
NEWSYM TempVidInfo, resd 1
|
||||
|
||||
|
||||
NEWSYM tempdh, db 0
|
||||
NEWSYM tempdh, resb 1
|
||||
|
||||
SECTION .text
|
||||
|
||||
NEWSYM start65816
|
||||
|
||||
@@ -1282,8 +1319,10 @@ reexecuteb2:
|
||||
jnz near endprog
|
||||
jmp StartGUI
|
||||
|
||||
SECTION .data
|
||||
NEWSYM EndMessage
|
||||
db ' ',13,10,0
|
||||
SECTION .text
|
||||
|
||||
NEWSYM endprog
|
||||
call deinitvideo
|
||||
@@ -1417,6 +1456,7 @@ NEWSYM endprog
|
||||
mov ebx,InitDir
|
||||
call Change_Dir
|
||||
|
||||
%ifdef __MSDOS__
|
||||
; Deinit modem if necessary
|
||||
cmp byte[ModemInitStat],0
|
||||
je .nodeinitmodem
|
||||
@@ -1424,12 +1464,13 @@ NEWSYM endprog
|
||||
.nodeinitmodem
|
||||
; cmp byte[OSPort],1
|
||||
; jae .nodeinitipx
|
||||
%ifdef __MSDOS__
|
||||
call deinitipx
|
||||
%endif
|
||||
;.nodeinitipx
|
||||
%endif
|
||||
jmp OSExit
|
||||
SECTION .data
|
||||
NEWSYM sdd1fname, db 'sdd1dat.dat',0,0
|
||||
SECTION .text
|
||||
|
||||
NEWSYM interror
|
||||
stim
|
||||
@@ -1439,31 +1480,38 @@ NEWSYM interror
|
||||
call Output_Text ;to print a string
|
||||
jmp DosExit
|
||||
|
||||
SECTION .data
|
||||
.nohand db 'Cannot process interrupt handler!',13,10,0
|
||||
|
||||
SECTION .bss
|
||||
; global variables
|
||||
NEWSYM invalid, db 0
|
||||
NEWSYM invopcd, db 0
|
||||
NEWSYM pressed, times 256+128+64 db 0 ; keyboard pressed keys in scancode
|
||||
NEWSYM exiter, db 0
|
||||
NEWSYM oldhand9o, dd 0
|
||||
NEWSYM oldhand9s, dw 0
|
||||
NEWSYM oldhand8o, dd 0
|
||||
NEWSYM oldhand8s, dw 0
|
||||
NEWSYM opcd, dd 0
|
||||
NEWSYM pdh, dd 0
|
||||
NEWSYM pcury, dd 0
|
||||
NEWSYM timercount, dd 0
|
||||
NEWSYM initaddrl, dd 0 ; initial address location
|
||||
NEWSYM NetSent, dd 0
|
||||
NEWSYM nextframe, dd 0 ; tick count for timer
|
||||
NEWSYM curfps, db 0 ; frame/sec for current screen
|
||||
NEWSYM SFXSRAM, db 0
|
||||
NEWSYM invalid, resb 1
|
||||
NEWSYM invopcd, resb 1
|
||||
NEWSYM pressed, resb 256+128+64 ; keyboard pressed keys in scancode
|
||||
NEWSYM exiter, resb 1
|
||||
NEWSYM oldhand9o, resd 1
|
||||
NEWSYM oldhand9s, resw 1
|
||||
NEWSYM oldhand8o, resd 1
|
||||
NEWSYM oldhand8s, resw 1
|
||||
NEWSYM opcd, resd 1
|
||||
NEWSYM pdh, resd 1
|
||||
NEWSYM pcury, resd 1
|
||||
NEWSYM timercount, resd 1
|
||||
NEWSYM initaddrl, resd 1 ; initial address location
|
||||
NEWSYM NetSent, resd 1
|
||||
NEWSYM nextframe, resd 1 ; tick count for timer
|
||||
NEWSYM curfps, resb 1 ; frame/sec for current screen
|
||||
NEWSYM SFXSRAM, resb 1
|
||||
|
||||
SECTION .data
|
||||
NEWSYM newgfxerror, db 'NEED MEMORY FOR GFX ENGINE',0
|
||||
NEWSYM newgfxerror2, db 'NEED 320x240 FOR NEW GFX 16B',0
|
||||
;newgfxerror db 'NEW GFX IN 16BIT IS N/A',0
|
||||
NEWSYM HIRQCycNext, dd 0
|
||||
NEWSYM HIRQNextExe, db 0
|
||||
|
||||
SECTION .bss
|
||||
NEWSYM HIRQCycNext, resd 1
|
||||
NEWSYM HIRQNextExe, resb 1
|
||||
SECTION .text
|
||||
|
||||
;*******************************************************
|
||||
; Save/Load States
|
||||
@@ -1496,10 +1544,13 @@ NEWSYM sramsave
|
||||
mov [MessageOn],eax
|
||||
jmp reexecute
|
||||
|
||||
SECTION .data
|
||||
.savesrmmsg1 db 'SRAM DATA SAVED.',0
|
||||
.savesrmmsg2 db 'NO SRAM DATA.',0
|
||||
|
||||
NEWSYM firstsaveinc, db 0
|
||||
SECTION .bss
|
||||
NEWSYM firstsaveinc, resb 1
|
||||
SECTION .text
|
||||
|
||||
NEWSYM statesaver
|
||||
clim
|
||||
@@ -1671,8 +1722,10 @@ NEWSYM statesaver
|
||||
mov [MessageOn],eax
|
||||
ret
|
||||
|
||||
SECTION .data
|
||||
.savemsg db 'STATE - SAVED.',0
|
||||
.savemsgfail db 'UNABLE TO SAVE.',0
|
||||
SECTION .text
|
||||
|
||||
NEWSYM savestate
|
||||
jmp .save
|
||||
@@ -1708,9 +1761,12 @@ NEWSYM savestate
|
||||
call statesaver
|
||||
jmp reexecuteb
|
||||
|
||||
SECTION .data
|
||||
.fname2 db 9,'image.dat',0
|
||||
|
||||
cycpblblah dd 0,0
|
||||
SECTION .bss
|
||||
cycpblblah resd 2
|
||||
SECTION .text
|
||||
|
||||
; Load State
|
||||
NEWSYM stateloader
|
||||
@@ -1835,7 +1891,8 @@ NEWSYM stateloader
|
||||
.nosdd1
|
||||
call Close_File
|
||||
call repackfunct
|
||||
mov byte[spcnumread],0
|
||||
mov dword[spcnumread],0
|
||||
mov dword[spchalted],-1
|
||||
mov byte[nexthdma],0
|
||||
|
||||
; call headerhack
|
||||
@@ -1900,7 +1957,8 @@ NEWSYM stateloader
|
||||
call Close_File
|
||||
call repackfunct
|
||||
mov dword[cycpbl],0
|
||||
mov byte[spcnumread],0
|
||||
mov dword[spcnumread],0
|
||||
mov dword[spchalted],-1
|
||||
mov byte[nexthdma],0
|
||||
call headerhack
|
||||
call initpitch
|
||||
@@ -1964,9 +2022,11 @@ NEWSYM loadstate
|
||||
stim
|
||||
jmp reexecuteb
|
||||
|
||||
SECTION .data
|
||||
.loadmsg db 'STATE - LOADED.',0
|
||||
.convmsg db 'STATE - LOADED/CONVERTED',0
|
||||
.nfndmsg db 'UNABLE TO LOAD STATE -.',0
|
||||
SECTION .text
|
||||
|
||||
NEWSYM loadstate2
|
||||
mov edx,fnamest+1
|
||||
@@ -2034,6 +2094,7 @@ NEWSYM Game60hzcall
|
||||
inc byte[nextframe]
|
||||
ret
|
||||
|
||||
%ifdef __MSDOS__
|
||||
NEWSYM handler8h
|
||||
cli
|
||||
push ds
|
||||
@@ -2056,16 +2117,23 @@ NEWSYM handler8hseg
|
||||
pop ds
|
||||
sti
|
||||
iretd
|
||||
%endif
|
||||
|
||||
SECTION .data
|
||||
NEWSYM timeradj, dd 65536
|
||||
NEWSYM t1cc, dw 0
|
||||
SECTION .bss
|
||||
NEWSYM t1cc, resw 1
|
||||
SECTION .text
|
||||
|
||||
;*******************************************************
|
||||
; Int 09h vector
|
||||
;*******************************************************
|
||||
|
||||
NEWSYM skipnextkey42, db 0
|
||||
SECTION .bss
|
||||
NEWSYM skipnextkey42, resb 1
|
||||
SECTION .text
|
||||
|
||||
%ifdef __MSDOS__
|
||||
NEWSYM handler9h
|
||||
cli
|
||||
push ds
|
||||
@@ -2127,21 +2195,26 @@ NEWSYM handler9h
|
||||
pop ds
|
||||
sti
|
||||
iretd
|
||||
%endif
|
||||
|
||||
ALIGN32
|
||||
SECTION .bss ;ALIGN=32
|
||||
NEWSYM soundcycleft, resd 1
|
||||
NEWSYM curexecstate, resd 1
|
||||
|
||||
NEWSYM soundcycleft, dd 0
|
||||
NEWSYM curexecstate, dd 0
|
||||
NEWSYM nmiprevaddrl, resd 1 ; observed address -5
|
||||
NEWSYM nmiprevaddrh, resd 1 ; observed address +5
|
||||
NEWSYM nmirept, resd 1 ; NMI repeat check, if 6 then okay
|
||||
|
||||
NEWSYM nmiprevaddrl, dd 0 ; observed address -5
|
||||
NEWSYM nmiprevaddrh, dd 0 ; observed address +5
|
||||
NEWSYM nmirept, dd 0 ; NMI repeat check, if 6 then okay
|
||||
SECTION .data
|
||||
NEWSYM nmiprevline, dd 224 ; previous line
|
||||
NEWSYM nmistatus, dd 0 ; 0 = none, 1 = waiting for nmi location,
|
||||
|
||||
SECTION .bss
|
||||
NEWSYM nmistatus, resd 1 ; 0 = none, 1 = waiting for nmi location,
|
||||
; 2 = found, disable at next line
|
||||
NEWSYM joycontren, dd 0 ; joystick read control check
|
||||
NEWSYM NextLineCache, db 0
|
||||
NEWSYM NetQuit, db 0
|
||||
NEWSYM joycontren, resd 1 ; joystick read control check
|
||||
NEWSYM NextLineCache, resb 1
|
||||
NEWSYM NetQuit, resb 1
|
||||
SECTION .text
|
||||
|
||||
Donextlinecache:
|
||||
cmp word[curypos],0
|
||||
@@ -2235,6 +2308,8 @@ Donextlinecache:
|
||||
; 65816 execution
|
||||
;*******************************************************
|
||||
|
||||
SECTION .data
|
||||
|
||||
SpeedHackSafeTable
|
||||
db 1,0,1,0,0,0,1,0,1,0,1,1,0,0,0,0
|
||||
db 0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0
|
||||
@@ -2252,6 +2327,7 @@ SpeedHackSafeTable
|
||||
db 0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0
|
||||
db 0,1,0,1,0,1,1,1,1,1,0,0,0,1,1,1
|
||||
db 0,1,1,1,0,1,1,1,0,1,0,0,0,1,1,1
|
||||
SECTION .text
|
||||
|
||||
NEWSYM exitloop2
|
||||
mov byte[ExecExitOkay],0
|
||||
@@ -2316,7 +2392,6 @@ ALIGN16
|
||||
%%noflip
|
||||
%endmacro
|
||||
|
||||
|
||||
NEWSYM execute
|
||||
NEWSYM execloop
|
||||
mov bl,dl
|
||||
@@ -2333,6 +2408,17 @@ NEWSYM execloop
|
||||
jmp cpuover
|
||||
.sound
|
||||
mov edi,[tableadc+ebx*4]
|
||||
%ifdef OPENSPC
|
||||
pushad
|
||||
mov bl,[esi]
|
||||
movzx eax,byte[cpucycle+ebx]
|
||||
mov ebx,0xC3A13DE6
|
||||
mul ebx
|
||||
add [ospc_cycle_frac],eax
|
||||
adc [SPC_Cycles],edx
|
||||
call OSPC_Run
|
||||
popad
|
||||
%else
|
||||
sub dword[cycpbl],55
|
||||
jnc .skipallspc
|
||||
mov eax,[cycpblt]
|
||||
@@ -2343,6 +2429,7 @@ NEWSYM execloop
|
||||
call dword near [opcjmptab+ebx*4]
|
||||
xor ebx,ebx
|
||||
.skipallspc
|
||||
%endif
|
||||
mov bl,[esi]
|
||||
inc esi
|
||||
sub dh,[cpucycle+ebx]
|
||||
@@ -2353,25 +2440,27 @@ NEWSYM execloop
|
||||
|
||||
|
||||
|
||||
SECTION .data
|
||||
SECTION .data ;ALIGN=32
|
||||
ALIGN32
|
||||
NEWSYM ExecExitOkay, db 1
|
||||
NEWSYM JoyABack, dd 0
|
||||
NEWSYM JoyBBack, dd 0
|
||||
NEWSYM JoyCBack, dd 0
|
||||
NEWSYM JoyDBack, dd 0
|
||||
NEWSYM JoyEBack, dd 0
|
||||
NEWSYM NetCommand, dd 0
|
||||
NEWSYM spc700read, dd 0
|
||||
NEWSYM lowestspc, dd 0
|
||||
NEWSYM highestspc, dd 0
|
||||
NEWSYM SA1UBound, dd 0
|
||||
NEWSYM SA1LBound, dd 0
|
||||
NEWSYM SA1SH, dd 0
|
||||
NEWSYM SA1SHb, dd 0
|
||||
NEWSYM NumberOfOpcodes2, dd 0
|
||||
NEWSYM ChangeOps, dd 0
|
||||
NEWSYM SFXProc, dd 0
|
||||
|
||||
SECTION .bss ;ALIGN=32
|
||||
NEWSYM JoyABack, resd 1
|
||||
NEWSYM JoyBBack, resd 1
|
||||
NEWSYM JoyCBack, resd 1
|
||||
NEWSYM JoyDBack, resd 1
|
||||
NEWSYM JoyEBack, resd 1
|
||||
NEWSYM NetCommand, resd 1
|
||||
NEWSYM spc700read, resd 1
|
||||
NEWSYM lowestspc, resd 1
|
||||
NEWSYM highestspc, resd 1
|
||||
NEWSYM SA1UBound, resd 1
|
||||
NEWSYM SA1LBound, resd 1
|
||||
NEWSYM SA1SH, resd 1
|
||||
NEWSYM SA1SHb, resd 1
|
||||
NEWSYM NumberOfOpcodes2, resd 1
|
||||
NEWSYM ChangeOps, resd 1
|
||||
NEWSYM SFXProc, resd 1
|
||||
SECTION .text
|
||||
|
||||
|
||||
@@ -2388,7 +2477,7 @@ NEWSYM cpuover
|
||||
dec esi
|
||||
cmp byte[HIRQNextExe],0
|
||||
je .nohirq
|
||||
mov dh,[HIRQCycNext]
|
||||
add dh,[HIRQCycNext]
|
||||
mov byte[HIRQCycNext],0
|
||||
jmp .hirq
|
||||
.nohirq
|
||||
@@ -3974,7 +4063,9 @@ NEWSYM cpuover
|
||||
pop eax
|
||||
jmp .returncheat
|
||||
|
||||
.numcheat db 0
|
||||
SECTION .bss ;ALIGN=32
|
||||
.numcheat resb 1
|
||||
SECTION .text ;ALIGN=32
|
||||
|
||||
ALIGN16
|
||||
|
||||
|
||||
@@ -31,9 +31,6 @@ NEWSYM Spc700AsmStart
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
; SPC 700 Emulation by _Demo_
|
||||
; Version 2.0
|
||||
|
||||
@@ -42,6 +39,7 @@ NEWSYM Spc700AsmStart
|
||||
; Read byte : read al from [ebx]
|
||||
; update timer : update the timers, called every scanline
|
||||
|
||||
SECTION .data ;ALIGN=32
|
||||
|
||||
ALIGN32
|
||||
|
||||
@@ -126,72 +124,81 @@ NEWSYM SPCROM
|
||||
db 0CBh,0F4h,0D7h,000h,0FCh,0D0h,0F3h,0ABh,001h,010h,0EFh,07Eh,0F4h,010h,0EBh,0BAh
|
||||
db 0F6h,0DAh,000h,0BAh,0F4h,0C4h,0F4h,0DDh,05Dh,0D0h,0DBh,01Fh,000h,000h,0C0h,0FFh
|
||||
|
||||
SECTION .text
|
||||
|
||||
%macro WriteByte 0
|
||||
cmp ebx,0ffh+spcRam
|
||||
ja .extramem
|
||||
ja %%extramem
|
||||
cmp ebx,0f0h+spcRam
|
||||
jb .normalmem
|
||||
jb %%normalmem
|
||||
sub ebx,spcRam
|
||||
call dword near [spcWptr+ebx*4-0f0h*4]
|
||||
jmp .finished
|
||||
.extramem
|
||||
push dword %%finished
|
||||
jmp dword near [spcWptr+ebx*4-0f0h*4]
|
||||
; call dword near [spcWptr+ebx*4-0f0h*4]
|
||||
; jmp .finished
|
||||
%%extramem
|
||||
cmp ebx,0ffc0h+spcRam
|
||||
jb .normalmem
|
||||
jb %%normalmem
|
||||
mov [spcextraram+ebx-0FFC0h-spcRam],al
|
||||
test byte[spcRam+0F1h],80h
|
||||
jnz .finished
|
||||
jnz %%finished
|
||||
; push ecx
|
||||
; mov cl,[DSPMem+06Ch]
|
||||
; test cl,20h
|
||||
; pop ecx
|
||||
; jz .finished
|
||||
.normalmem
|
||||
%%normalmem
|
||||
mov [ebx],al
|
||||
.finished
|
||||
%%finished
|
||||
%endmacro
|
||||
|
||||
%macro ReadByte 0
|
||||
cmp ebx,0f0h+spcRam
|
||||
jb .rnormalmem2
|
||||
jb %%normalmem2
|
||||
cmp ebx,0ffh+spcRam
|
||||
ja .rnormalmem
|
||||
ja %%normalmem
|
||||
sub ebx,spcRam
|
||||
call dword near [spcRptr+ebx*4-0f0h*4]
|
||||
jmp .rfinished
|
||||
.rnormalmem
|
||||
push dword %%finished
|
||||
jmp dword near [spcRptr+ebx*4-0f0h*4]
|
||||
; call dword near [spcRptr+ebx*4-0f0h*4]
|
||||
; jmp .rfinished
|
||||
%%normalmem
|
||||
; cmp ebx,0ffc0h+spcRam
|
||||
; jb .rnormalmem2
|
||||
; test byte [DSPMem+6Ch],10h
|
||||
; jz .rnormalmem2
|
||||
; mov al,[spcextraram+ebx-0FFC0h-spcRam]
|
||||
; jmp .rfinished
|
||||
.rnormalmem2
|
||||
%%normalmem2
|
||||
mov al,[ebx]
|
||||
.rfinished
|
||||
%%finished
|
||||
%endmacro
|
||||
|
||||
%macro ReadByte2 0
|
||||
cmp ebx,0f0h+spcRam
|
||||
jb .rnormalmem2
|
||||
jb %%normalmem2
|
||||
cmp ebx,0ffh+spcRam
|
||||
ja .rnormalmem
|
||||
ja %%normalmem
|
||||
sub ebx,spcRam
|
||||
call dword near [spcRptr+ebx*4-0f0h*4]
|
||||
add ebx,spcRam
|
||||
jmp .rfinished
|
||||
.rnormalmem
|
||||
jmp %%finished
|
||||
%%normalmem
|
||||
; cmp ebx,0ffc0h+spcRam
|
||||
; jb .rnormalmem2
|
||||
; test byte [DSPMem+6Ch],10h
|
||||
; jz .rnormalmem2
|
||||
; mov al,[spcextraram+ebx-0FFC0h-spcRam]
|
||||
; jmp .rfinished
|
||||
.rnormalmem2
|
||||
%%normalmem2
|
||||
mov al,[ebx]
|
||||
.rfinished
|
||||
%%finished
|
||||
%endmacro
|
||||
|
||||
NEWSYM timer2upd, dd 0
|
||||
SECTION .bss
|
||||
NEWSYM timer2upd, resd 1
|
||||
SECTION .text
|
||||
|
||||
; This function is called every scanline (262*60 times/sec)
|
||||
; Make it call 0.9825 times (393/400) (skip when divisible by 64)
|
||||
; 2 8khz, 1 64khz
|
||||
@@ -223,6 +230,8 @@ NEWSYM updatetimer
|
||||
mov [timinl0],al
|
||||
cmp byte[spcRam+0FDh],1
|
||||
jne .noin0
|
||||
cmp byte[spchalted],0
|
||||
jz .noin0
|
||||
reenablespc
|
||||
mov dword[cycpbl],0
|
||||
.noin0
|
||||
@@ -235,6 +244,8 @@ NEWSYM updatetimer
|
||||
mov [timinl1],al
|
||||
cmp byte[spcRam+0FEh],1
|
||||
jne .noin1
|
||||
cmp byte[spchalted+1],0
|
||||
jz .noin1
|
||||
reenablespc
|
||||
mov dword[cycpbl],0
|
||||
.noin1
|
||||
@@ -248,6 +259,8 @@ NEWSYM updatetimer
|
||||
mov [timinl2],al
|
||||
cmp byte[spcRam+0FFh],1
|
||||
jne .noin2
|
||||
cmp byte[spchalted+2],0
|
||||
jz .noin2
|
||||
reenablespc
|
||||
mov dword[cycpbl],0
|
||||
.noin2
|
||||
@@ -258,6 +271,8 @@ NEWSYM updatetimer
|
||||
mov [timinl2],al
|
||||
cmp byte[spcRam+0FFh],1
|
||||
jne .noin2b
|
||||
cmp byte[spchalted+2],0
|
||||
jz .noin2b
|
||||
reenablespc
|
||||
mov dword[cycpbl],0
|
||||
.noin2b
|
||||
@@ -268,6 +283,8 @@ NEWSYM updatetimer
|
||||
mov [timinl2],al
|
||||
cmp byte[spcRam+0FFh],1
|
||||
jne .noin2c
|
||||
cmp byte[spchalted+2],0
|
||||
jz .noin2c
|
||||
reenablespc
|
||||
mov dword[cycpbl],0
|
||||
.noin2c
|
||||
@@ -278,6 +295,8 @@ NEWSYM updatetimer
|
||||
mov [timinl2],al
|
||||
cmp byte[spcRam+0FFh],1
|
||||
jne .noin2d
|
||||
cmp byte[spchalted+2],0
|
||||
jz .noin2d
|
||||
reenablespc
|
||||
mov dword[cycpbl],0
|
||||
.noin2d
|
||||
@@ -438,17 +457,63 @@ NEWSYM RSPCRegF2
|
||||
NEWSYM RSPCRegF3
|
||||
mov al,[spcRam+0f3h]
|
||||
ret
|
||||
|
||||
%ifdef SPCDUMP
|
||||
SECTION .bss
|
||||
ALIGNB 4
|
||||
NEWSYM SPCSave_start, resd 2
|
||||
NEWSYM SPCSave_buffer, resb 4
|
||||
NEWSYM SPCSave_ports, resb 4
|
||||
SECTION .text
|
||||
|
||||
EXTSYM SPCSave_dump, SPCSave_handle, Write_File
|
||||
|
||||
%macro spcdump 1
|
||||
cmp byte[SPCSave_dump], 1
|
||||
jne %%nodump
|
||||
|
||||
inc dword[SPCSave_buffer]
|
||||
cmp [SPCSave_ports+%1], al
|
||||
je %%nodump
|
||||
mov [SPCSave_ports+%1], al
|
||||
pushad
|
||||
mov byte[SPCSave_buffer+2], %1
|
||||
mov byte[SPCSave_buffer+3], al
|
||||
mov ebx, [SPCSave_handle]
|
||||
mov ecx, 4
|
||||
mov edx, SPCSave_buffer
|
||||
call Write_File
|
||||
xor eax, eax
|
||||
mov [SPCSave_buffer], eax
|
||||
|
||||
popad
|
||||
%%nodump
|
||||
%endmacro
|
||||
%endif
|
||||
|
||||
NEWSYM RSPCRegF4
|
||||
mov al,[spcRam+0f4h]
|
||||
%ifdef SPCDUMP
|
||||
spcdump 0
|
||||
%endif
|
||||
ret
|
||||
NEWSYM RSPCRegF5
|
||||
mov al,[spcRam+0f5h]
|
||||
%ifdef SPCDUMP
|
||||
spcdump 1
|
||||
%endif
|
||||
ret
|
||||
NEWSYM RSPCRegF6
|
||||
mov al,[spcRam+0f6h]
|
||||
%ifdef SPCDUMP
|
||||
spcdump 2
|
||||
%endif
|
||||
ret
|
||||
NEWSYM RSPCRegF7
|
||||
mov al,[spcRam+0f7h]
|
||||
%ifdef SPCDUMP
|
||||
spcdump 3
|
||||
%endif
|
||||
ret
|
||||
NEWSYM RSPCRegF8
|
||||
mov al,0 ;[spcRam+0f8h]
|
||||
@@ -465,30 +530,74 @@ NEWSYM RSPCRegFB
|
||||
NEWSYM RSPCRegFC
|
||||
mov al,[spcRam+0fch]
|
||||
ret
|
||||
|
||||
%macro skipmacro 1
|
||||
.spcnextskip
|
||||
test byte[timeron],1<<%1
|
||||
je .ret
|
||||
cmp byte[timincr0+%1],0
|
||||
je .ret
|
||||
;cmp byte[SpeedHack],0
|
||||
;je .ret
|
||||
inc byte[spcnumread+%1]
|
||||
cmp byte[spcnumread+%1],8h
|
||||
je near haltspc
|
||||
.ret
|
||||
ret
|
||||
%endmacro
|
||||
|
||||
ALIGN16
|
||||
NEWSYM haltspc
|
||||
cmp byte[SPC700sh],1
|
||||
je .nochangestate
|
||||
mov dword[cycpbl],0FFFFFFFFh
|
||||
test byte[curexecstate],02h
|
||||
jz .nochangestate
|
||||
and byte[curexecstate],0FDh
|
||||
push ebx
|
||||
|
||||
mov ebx,[spcnumread]
|
||||
mov [spchalted],ebx
|
||||
|
||||
xor ebx,ebx
|
||||
mov bl,dl
|
||||
mov edi,[tableadb+ebx*4]
|
||||
pop ebx
|
||||
.nochangestate
|
||||
mov dword[spcnumread],0
|
||||
ret
|
||||
|
||||
NEWSYM RSPCRegFD
|
||||
mov al,[spcRam+0fdh]
|
||||
and al,0Fh
|
||||
cmp byte[spcRam+0fdh],0
|
||||
je spcnextskip
|
||||
je .spcnextskip
|
||||
mov byte [spcRam+0fdh],0
|
||||
mov byte [spcnumread],0
|
||||
ret
|
||||
skipmacro 0
|
||||
|
||||
NEWSYM RSPCRegFE
|
||||
mov al,[spcRam+0feh]
|
||||
and al,0Fh
|
||||
cmp byte[spcRam+0feh],0
|
||||
je spcnextskip
|
||||
je .spcnextskip
|
||||
mov byte [spcRam+0feh],0
|
||||
mov byte [spcnumread],0
|
||||
mov byte [spcnumread+1],0
|
||||
ret
|
||||
skipmacro 1
|
||||
|
||||
NEWSYM RSPCRegFF
|
||||
mov al,[spcRam+0ffh]
|
||||
and al,0Fh
|
||||
cmp byte[spcRam+0ffh],0
|
||||
je spcnextskip
|
||||
je .spcnextskip
|
||||
mov byte [spcRam+0ffh],0
|
||||
mov byte [spcnumread],0
|
||||
mov byte [spcnumread+2],0
|
||||
ret
|
||||
skipmacro 2
|
||||
|
||||
%if 0
|
||||
NEWSYM spcnextskip
|
||||
inc byte[spcnumread]
|
||||
cmp byte[spcnumread],5
|
||||
@@ -510,9 +619,12 @@ NEWSYM haltspc
|
||||
.nochangestate
|
||||
mov byte[spcnumread],0
|
||||
ret
|
||||
%endif
|
||||
|
||||
NEWSYM spcnumread, db 0
|
||||
|
||||
SECTION .data
|
||||
NEWSYM spcnumread, dd 0
|
||||
NEWSYM spchalted, dd 0
|
||||
SECTION .text
|
||||
|
||||
%macro SPCSetFlagnzc 0
|
||||
js .setsignflag
|
||||
|
||||
Reference in New Issue
Block a user