Removed old, broken, and problematic code that wasn't really needed. Fixed more SRAM issues.
This commit is contained in:
@@ -1439,36 +1439,6 @@ SECTION .text
|
|||||||
; Save/Load States
|
; Save/Load States
|
||||||
;*******************************************************
|
;*******************************************************
|
||||||
|
|
||||||
NEWSYM sramsave
|
|
||||||
mov byte[pressed+1],0
|
|
||||||
mov byte[pressed+41],0
|
|
||||||
; save sram
|
|
||||||
cmp byte[sramsavedis],1
|
|
||||||
je .nosram
|
|
||||||
cmp word[ramsize],0
|
|
||||||
je .nosram
|
|
||||||
mov edx,fnames+1
|
|
||||||
call Create_File
|
|
||||||
jc .nosram
|
|
||||||
mov bx,ax
|
|
||||||
xor ecx,ecx
|
|
||||||
mov cx,[ramsize]
|
|
||||||
mov edx,[sram]
|
|
||||||
call Write_File
|
|
||||||
call Close_File
|
|
||||||
mov dword[Msgptr],.savesrmmsg1
|
|
||||||
mov eax,[MsgCount]
|
|
||||||
mov [MessageOn],eax
|
|
||||||
jmp reexecute
|
|
||||||
.nosram
|
|
||||||
mov dword[Msgptr],.savesrmmsg2
|
|
||||||
mov eax,[MsgCount]
|
|
||||||
mov [MessageOn],eax
|
|
||||||
jmp reexecute
|
|
||||||
|
|
||||||
SECTION .data
|
|
||||||
.savesrmmsg1 db 'SRAM DATA SAVED.',0
|
|
||||||
.savesrmmsg2 db 'NO SRAM DATA.',0
|
|
||||||
NEWSYM firstsaveinc, db 0
|
NEWSYM firstsaveinc, db 0
|
||||||
|
|
||||||
SECTION .text
|
SECTION .text
|
||||||
|
|||||||
@@ -1505,7 +1505,7 @@ NEWSYM SaveSramData
|
|||||||
call Create_File
|
call Create_File
|
||||||
jc .failed
|
jc .failed
|
||||||
mov bx,ax
|
mov bx,ax
|
||||||
mov ecx,65536
|
mov ecx,[ramsize]
|
||||||
mov edx,[sfxramdata]
|
mov edx,[sfxramdata]
|
||||||
call Write_File
|
call Write_File
|
||||||
call Close_File
|
call Close_File
|
||||||
@@ -1531,7 +1531,7 @@ NEWSYM SaveSramData
|
|||||||
call Create_File
|
call Create_File
|
||||||
jc .failed
|
jc .failed
|
||||||
mov bx,ax
|
mov bx,ax
|
||||||
mov ecx,65536*2
|
mov ecx,[ramsize]
|
||||||
mov edx,[SA1RAMArea]
|
mov edx,[SA1RAMArea]
|
||||||
call Write_File
|
call Write_File
|
||||||
call Close_File
|
call Close_File
|
||||||
|
|||||||
@@ -1430,7 +1430,9 @@ transfersram:
|
|||||||
cmp byte[CHIPBATT],1
|
cmp byte[CHIPBATT],1
|
||||||
je .yessram
|
je .yessram
|
||||||
|
|
||||||
;If last if failed, no battery, so no SRAM sending for SA1 (SFX doesn't set ramsize)
|
;If last if failed, no battery, so no SRAM sending for SA1 or SFX
|
||||||
|
cmp byte[SFXEnable],1
|
||||||
|
je .nosram
|
||||||
cmp byte[SA1Enable],1
|
cmp byte[SA1Enable],1
|
||||||
je .nosram
|
je .nosram
|
||||||
cmp dword[ramsize],0
|
cmp dword[ramsize],0
|
||||||
@@ -1462,10 +1464,6 @@ transfersram:
|
|||||||
|
|
||||||
; send sram
|
; send sram
|
||||||
mov ecx,[ramsize]
|
mov ecx,[ramsize]
|
||||||
cmp byte[SFXEnable],1
|
|
||||||
jne .notsfx
|
|
||||||
mov ecx,65536
|
|
||||||
.notsfx
|
|
||||||
mov ebx,[sram]
|
mov ebx,[sram]
|
||||||
xor esi,esi
|
xor esi,esi
|
||||||
.loop
|
.loop
|
||||||
@@ -1516,9 +1514,6 @@ transfersram:
|
|||||||
; receive sram
|
; receive sram
|
||||||
mov ecx,[ramsize]
|
mov ecx,[ramsize]
|
||||||
mov ebx,[sram]
|
mov ebx,[sram]
|
||||||
cmp byte[SFXEnable],1
|
|
||||||
jne .loopb
|
|
||||||
mov ecx,65536
|
|
||||||
.loopb
|
.loopb
|
||||||
.getnext
|
.getnext
|
||||||
pushad
|
pushad
|
||||||
|
|||||||
@@ -124,6 +124,7 @@ EXTSYM addOnStart
|
|||||||
EXTSYM addOnSize
|
EXTSYM addOnSize
|
||||||
EXTSYM SPC7PackIndexLoad,SPC7110IndexSize
|
EXTSYM SPC7PackIndexLoad,SPC7110IndexSize
|
||||||
EXTSYM DumpROMLoadInfo
|
EXTSYM DumpROMLoadInfo
|
||||||
|
EXTSYM SetupSramSize
|
||||||
|
|
||||||
EXTSYM SetaCmdEnable,setaramdata
|
EXTSYM SetaCmdEnable,setaramdata
|
||||||
EXTSYM setaaccessbankr8,setaaccessbankw8,setaaccessbankr8a,setaaccessbankw8a
|
EXTSYM setaaccessbankr8,setaaccessbankw8,setaaccessbankr8a,setaaccessbankw8a
|
||||||
@@ -233,7 +234,7 @@ NEWSYM init
|
|||||||
.found
|
.found
|
||||||
mov byte[romloadskip],0
|
mov byte[romloadskip],0
|
||||||
call loadfile
|
call loadfile
|
||||||
call showinfo
|
call SetupROM
|
||||||
call showinfogui
|
call showinfogui
|
||||||
.noloadfile
|
.noloadfile
|
||||||
call UpdateDevices
|
call UpdateDevices
|
||||||
@@ -409,8 +410,6 @@ NEWSYM JoyLC, db 5
|
|||||||
NEWSYM JoyRC, db 6
|
NEWSYM JoyRC, db 6
|
||||||
NEWSYM TurboSw, db 0
|
NEWSYM TurboSw, db 0
|
||||||
|
|
||||||
NEWSYM ramsize, dd 0 ; RAM size in bytes
|
|
||||||
NEWSYM ramsizeand, dd 0 ; RAM size in bytes (used to and)
|
|
||||||
NEWSYM romtype, db 0 ; ROM type in bytes
|
NEWSYM romtype, db 0 ; ROM type in bytes
|
||||||
NEWSYM resetv, dw 0 ; reset vector
|
NEWSYM resetv, dw 0 ; reset vector
|
||||||
NEWSYM abortv, dw 0 ; abort vector
|
NEWSYM abortv, dw 0 ; abort vector
|
||||||
@@ -1578,29 +1577,7 @@ NEWSYM init65816
|
|||||||
mov word[xpc],ax
|
mov word[xpc],ax
|
||||||
mov ebx,[romdata]
|
mov ebx,[romdata]
|
||||||
add eax,ebx
|
add eax,ebx
|
||||||
cmp word[xpc],8000h
|
|
||||||
jb .notrainer
|
|
||||||
cmp word[resetv],0F000h
|
|
||||||
jne .ntrchecka
|
|
||||||
jmp .yestrainer
|
|
||||||
.ntrchecka
|
|
||||||
sub eax,8000h
|
|
||||||
cmp byte[eax],5Ch
|
|
||||||
jne .notrainer
|
|
||||||
cmp word[eax+2],80h
|
|
||||||
je .notrainer
|
|
||||||
cmp word[eax+2],8080h
|
|
||||||
je .notrainer
|
|
||||||
cmp word[eax+2],89h
|
|
||||||
je .notrainer
|
|
||||||
cmp word[eax+2],8089h
|
|
||||||
je .notrainer
|
|
||||||
.yestrainer
|
|
||||||
mov dword[ramsize],32768
|
|
||||||
mov dword[ramsizeand],32767
|
|
||||||
.notrainer
|
|
||||||
pop ebx
|
pop ebx
|
||||||
|
|
||||||
mov byte[intrset],0
|
mov byte[intrset],0
|
||||||
cmp byte[romtype],1
|
cmp byte[romtype],1
|
||||||
je .nohirom
|
je .nohirom
|
||||||
@@ -3521,6 +3498,7 @@ NEWSYM showinfogui
|
|||||||
mov dword[Msgptr],CSStatus
|
mov dword[Msgptr],CSStatus
|
||||||
mov eax,[MsgCount]
|
mov eax,[MsgCount]
|
||||||
ret
|
ret
|
||||||
|
|
||||||
;*******************************************************
|
;*******************************************************
|
||||||
; Show Information
|
; Show Information
|
||||||
;*******************************************************
|
;*******************************************************
|
||||||
@@ -3535,462 +3513,8 @@ NEWSYM showinfogui
|
|||||||
; *3=ROM,*4=ROM+RAM,*5=ROM+RAM+BATTERY,*6=ROM+BATTERY
|
; *3=ROM,*4=ROM+RAM,*5=ROM+RAM+BATTERY,*6=ROM+BATTERY
|
||||||
; F3=C4
|
; F3=C4
|
||||||
|
|
||||||
; Convert to interleaved - If LoROM and offset 7FD5 contains 21h, then
|
|
||||||
; uninterleave
|
|
||||||
|
|
||||||
;This looks like the info it displays if loaded via the command line
|
|
||||||
;Very outdated
|
|
||||||
|
|
||||||
NEWSYM showinfo
|
|
||||||
mov edx,.romsizea
|
|
||||||
cmp byte[Sup48mbit],0
|
|
||||||
je .no48
|
|
||||||
mov edx,.romsizeb
|
|
||||||
cmp byte[newgfx16b],0
|
|
||||||
je .no48
|
|
||||||
mov edx,.romsized
|
|
||||||
.no48
|
|
||||||
cmp byte[Sup16mbit],0
|
|
||||||
je .no16
|
|
||||||
mov edx,.romsizec
|
|
||||||
.no16
|
|
||||||
mov ah,9
|
|
||||||
call Output_Text
|
|
||||||
mov edx,.filename
|
|
||||||
mov ah,9
|
|
||||||
call Output_Text
|
|
||||||
xor ecx,ecx
|
|
||||||
mov cl,[fname]
|
|
||||||
mov esi,fname+1
|
|
||||||
mov ah,2
|
|
||||||
.loopa
|
|
||||||
lodsb
|
|
||||||
mov dl,al
|
|
||||||
call Output_Text
|
|
||||||
dec ecx
|
|
||||||
jnz .loopa
|
|
||||||
mov edx,.ret
|
|
||||||
mov ah,9
|
|
||||||
call Output_Text
|
|
||||||
; frameskip = ?
|
|
||||||
mov edx,.frameskip
|
|
||||||
mov ah,9
|
|
||||||
call Output_Text
|
|
||||||
mov dl,[frameskip]
|
|
||||||
test dl,0FFh
|
|
||||||
jnz .yesfs
|
|
||||||
mov edx,.auto
|
|
||||||
mov ah,9
|
|
||||||
call Output_Text
|
|
||||||
jmp .skip
|
|
||||||
.yesfs
|
|
||||||
mov ah,2
|
|
||||||
add dl,47
|
|
||||||
call Output_Text
|
|
||||||
mov edx,.ret
|
|
||||||
mov ah,9
|
|
||||||
call Output_Text
|
|
||||||
.skip
|
|
||||||
; debugger on/off
|
|
||||||
mov edx,.debugon
|
|
||||||
mov ah,9
|
|
||||||
call Output_Text
|
|
||||||
mov al,[debugger]
|
|
||||||
test al,0FFh
|
|
||||||
jnz .debugron
|
|
||||||
mov edx,.off
|
|
||||||
mov ah,9
|
|
||||||
call Output_Text
|
|
||||||
jmp .skip2
|
|
||||||
.debugron
|
|
||||||
mov edx,.on
|
|
||||||
mov ah,9
|
|
||||||
call Output_Text
|
|
||||||
.skip2
|
|
||||||
mov edx,.ret
|
|
||||||
mov ah,9
|
|
||||||
call Output_Text
|
|
||||||
; memory free
|
|
||||||
mov edx,.memryfr
|
|
||||||
call Output_Text
|
|
||||||
mov edx,.memfree
|
|
||||||
call Get_Memfree
|
|
||||||
mov eax,[.memfree]
|
|
||||||
call printnum
|
|
||||||
mov edx,.ret
|
|
||||||
mov ah,9
|
|
||||||
call Output_Text
|
|
||||||
call Output_Text
|
|
||||||
|
|
||||||
; ROM Information
|
|
||||||
mov edx,.smcname
|
|
||||||
mov ah,9
|
|
||||||
call Output_Text
|
|
||||||
|
|
||||||
; determine whether hirom or lorom is used
|
|
||||||
cmp byte[romtype],0
|
|
||||||
jnz near .donecheck
|
|
||||||
call CheckROMType
|
|
||||||
|
|
||||||
cmp byte[ROMTypeNOTFound],0
|
|
||||||
je .donecheck
|
|
||||||
mov ah,09h
|
|
||||||
mov edx,.doh
|
|
||||||
call Output_Text
|
|
||||||
jmp DosExit
|
|
||||||
|
|
||||||
.donecheck
|
|
||||||
|
|
||||||
; COP Software 00FFF4,5 00FFE4,5 N/A
|
|
||||||
; ABORT Hardware 00FFF8,9 00FFE8,9 2
|
|
||||||
; NMI Hardware 00FFFA,B 00FFEA,B 3
|
|
||||||
; RES Hardware 00FFFC.D 00FFFC,D 1
|
|
||||||
; BRK Software 00FFFE,F 00FFE6,7 N/A
|
|
||||||
; IRQ Hardware 00FFFE,F 00FFEE,F 4
|
|
||||||
|
|
||||||
call SetIRQVectors
|
|
||||||
|
|
||||||
; Output Name
|
|
||||||
mov esi,[romdata]
|
|
||||||
add esi,[infoloc]
|
|
||||||
|
|
||||||
mov ecx,21
|
|
||||||
.loopb
|
|
||||||
lodsb
|
|
||||||
mov dl,al
|
|
||||||
mov ah,2
|
|
||||||
call Output_Text
|
|
||||||
dec ecx
|
|
||||||
jnz .loopb
|
|
||||||
inc esi
|
|
||||||
mov edx,.ret
|
|
||||||
|
|
||||||
; ROM Type
|
|
||||||
mov ah,9
|
|
||||||
call Output_Text
|
|
||||||
mov edx,.romtyp
|
|
||||||
call Output_Text
|
|
||||||
mov edx,.hirom
|
|
||||||
cmp byte[romtype],1
|
|
||||||
jne .nolorom
|
|
||||||
mov edx,.lorom
|
|
||||||
.nolorom
|
|
||||||
call Output_Text
|
|
||||||
mov edx,.romtype
|
|
||||||
xor ebx,ebx
|
|
||||||
mov bl,[esi]
|
|
||||||
|
|
||||||
; xor eax,eax
|
|
||||||
; mov al,bl
|
|
||||||
; call printnum
|
|
||||||
; jmp DosExit
|
|
||||||
|
|
||||||
mov al,bl
|
|
||||||
inc esi
|
|
||||||
cmp al,055h
|
|
||||||
jne .noRTC
|
|
||||||
mov bl,12
|
|
||||||
jmp .nochip
|
|
||||||
.noRTC
|
|
||||||
cmp al,0F5h
|
|
||||||
je .yesSPC7110
|
|
||||||
cmp al,0F9h
|
|
||||||
jne .noSPC7110
|
|
||||||
.yesSPC7110
|
|
||||||
mov bl,11
|
|
||||||
jmp .nochip
|
|
||||||
.noSPC7110
|
|
||||||
cmp al,0F3h
|
|
||||||
jne .noC4
|
|
||||||
mov bl,9
|
|
||||||
jmp .nochip
|
|
||||||
.noC4
|
|
||||||
and bl,0F0h
|
|
||||||
cmp bl,10h
|
|
||||||
je .sfx
|
|
||||||
cmp bl,30h
|
|
||||||
je .sa1
|
|
||||||
cmp bl,40h
|
|
||||||
je .sdd1
|
|
||||||
mov bl,20
|
|
||||||
cmp al,5
|
|
||||||
ja .okay
|
|
||||||
mov bl,al
|
|
||||||
.okay
|
|
||||||
jmp .nochip
|
|
||||||
.sfx
|
|
||||||
mov bl,6
|
|
||||||
jmp .nochip
|
|
||||||
.sa1
|
|
||||||
mov bl,7
|
|
||||||
jmp .nochip
|
|
||||||
.sdd1
|
|
||||||
mov bl,10
|
|
||||||
jmp .nochip
|
|
||||||
.nochip
|
|
||||||
cmp bl,20
|
|
||||||
je .unknown
|
|
||||||
shl bl,4
|
|
||||||
add edx,ebx
|
|
||||||
call Output_Text
|
|
||||||
jmp .nounknown
|
|
||||||
.unknown
|
|
||||||
mov edx,.unknowns
|
|
||||||
call Output_Text
|
|
||||||
mov al,[esi-1]
|
|
||||||
call printhex8
|
|
||||||
mov edx,.brackets
|
|
||||||
mov ah,9
|
|
||||||
call Output_Text
|
|
||||||
.nounknown
|
|
||||||
; Memory Map
|
|
||||||
; cmp byte[intldone],0
|
|
||||||
; je .nointerl
|
|
||||||
; mov ah,09h
|
|
||||||
; mov edx,.intlvd
|
|
||||||
; call Output_Text
|
|
||||||
;.nointerl
|
|
||||||
|
|
||||||
mov ah,09h
|
|
||||||
mov edx,.memmap
|
|
||||||
call Output_Text
|
|
||||||
push esi
|
|
||||||
mov esi,[romdata]
|
|
||||||
add esi,7FD5h
|
|
||||||
xor eax,eax
|
|
||||||
mov al,byte[esi]
|
|
||||||
and al,2Fh
|
|
||||||
pop esi
|
|
||||||
call printhex8
|
|
||||||
mov ah,09h
|
|
||||||
mov edx,.ret
|
|
||||||
call Output_Text
|
|
||||||
|
|
||||||
; ROM Size
|
|
||||||
mov edx,.romsize
|
|
||||||
mov ah,9
|
|
||||||
call Output_Text
|
|
||||||
mov cl,[esi]
|
|
||||||
mov [curromsize],cl
|
|
||||||
; cmp byte[NumofBanks],160
|
|
||||||
; jb .not48
|
|
||||||
; mov byte[curromsize],13
|
|
||||||
;.not48
|
|
||||||
|
|
||||||
inc esi
|
|
||||||
xor eax,eax
|
|
||||||
sub cl,7
|
|
||||||
mov al,1
|
|
||||||
shl al,cl
|
|
||||||
call printnum
|
|
||||||
mov edx,.megabit
|
|
||||||
mov ah,9
|
|
||||||
call Output_Text
|
|
||||||
|
|
||||||
; RAM Size
|
|
||||||
mov edx,.sramsize
|
|
||||||
mov ah,9
|
|
||||||
call Output_Text
|
|
||||||
and eax,0FFFFh
|
|
||||||
mov cl,[esi]
|
|
||||||
inc esi
|
|
||||||
xor eax,eax
|
|
||||||
mov al,1
|
|
||||||
shl al,cl
|
|
||||||
cmp al,1
|
|
||||||
jne .yessram
|
|
||||||
mov al,0
|
|
||||||
.yessram
|
|
||||||
call printnum
|
|
||||||
shl eax,10
|
|
||||||
cmp eax,65536*2
|
|
||||||
jbe .nosramc
|
|
||||||
mov eax,65536*2
|
|
||||||
.nosramc
|
|
||||||
mov [ramsize],eax
|
|
||||||
dec eax
|
|
||||||
mov [ramsizeand],eax
|
|
||||||
mov edx,.kilobit
|
|
||||||
mov ah,9
|
|
||||||
call Output_Text
|
|
||||||
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 al,1
|
|
||||||
jbe .nopal
|
|
||||||
cmp al,0Dh
|
|
||||||
je .nopal
|
|
||||||
mov byte[romispal],1
|
|
||||||
mov word[totlines],314
|
|
||||||
mov dword[MsgCount],100
|
|
||||||
mov edx,.romtypep
|
|
||||||
mov ah,9
|
|
||||||
call Output_Text
|
|
||||||
jmp .yespal
|
|
||||||
.nopal
|
|
||||||
mov edx,.romtypen
|
|
||||||
mov ah,9
|
|
||||||
call Output_Text
|
|
||||||
.yespal
|
|
||||||
mov esi,[headdata]
|
|
||||||
add esi,7FBDh
|
|
||||||
cmp byte[romtype],2
|
|
||||||
jne .nohirom4
|
|
||||||
add esi,8000h
|
|
||||||
.nohirom4
|
|
||||||
cmp byte[esi],0
|
|
||||||
je .nochipram
|
|
||||||
jmp .nochipram
|
|
||||||
mov edx,.ramsize
|
|
||||||
mov ah,9
|
|
||||||
call Output_Text
|
|
||||||
xor eax,eax
|
|
||||||
mov al,[esi]
|
|
||||||
shl eax,12
|
|
||||||
call printnum
|
|
||||||
mov edx,.kilobit
|
|
||||||
mov ah,9
|
|
||||||
call Output_Text
|
|
||||||
.nochipram
|
|
||||||
;FFBD (0=none, 1=16kbit, 3=64kbit, 5=256kbit,etc.
|
|
||||||
mov edx,.checksumc
|
|
||||||
mov ah,9
|
|
||||||
call Output_Text
|
|
||||||
mov ax,[Checksumvalue]
|
|
||||||
mov esi,[headdata]
|
|
||||||
add esi,7FDCh+2
|
|
||||||
cmp byte[romtype],2
|
|
||||||
jne .nohirom3
|
|
||||||
add esi,8000h
|
|
||||||
.nohirom3
|
|
||||||
cmp ax,[esi]
|
|
||||||
jne .failed
|
|
||||||
.cpassed2
|
|
||||||
mov edx,.cpassed
|
|
||||||
jmp .passed
|
|
||||||
.failed
|
|
||||||
mov ax,[Checksumvalue2]
|
|
||||||
cmp ax,[esi]
|
|
||||||
je .cpassed2
|
|
||||||
mov edx,.cfailed
|
|
||||||
.passed
|
|
||||||
mov ah,9
|
|
||||||
call Output_Text
|
|
||||||
; Display NMI & Reset
|
|
||||||
mov edx,.nmidisp
|
|
||||||
mov ah,9
|
|
||||||
call Output_Text
|
|
||||||
xor eax,eax
|
|
||||||
mov ax,[nmiv]
|
|
||||||
call printhex
|
|
||||||
mov edx,.ret
|
|
||||||
mov ah,9
|
|
||||||
call Output_Text
|
|
||||||
mov edx,.resetdisp
|
|
||||||
mov ah,9
|
|
||||||
call Output_Text
|
|
||||||
mov ax,[resetv]
|
|
||||||
call printhex
|
|
||||||
mov edx,.ret
|
|
||||||
mov ah,9
|
|
||||||
call Output_Text
|
|
||||||
cmp byte[intldone],1
|
|
||||||
jne .nointerl
|
|
||||||
mov edx,.intlvd
|
|
||||||
mov ah,9
|
|
||||||
call Output_Text
|
|
||||||
.nointerl
|
|
||||||
mov edx,.ret
|
|
||||||
mov ah,9
|
|
||||||
call Output_Text
|
|
||||||
mov edx,.waitkey
|
|
||||||
mov ah,9
|
|
||||||
call Output_Text
|
|
||||||
; wait for key
|
|
||||||
cmp byte[enterpress],0
|
|
||||||
jne .noesc
|
|
||||||
; cmp byte[OSPort],3
|
|
||||||
; je .noesc
|
|
||||||
%ifdef __MSDOS__
|
|
||||||
call Get_Key
|
|
||||||
cmp al,27
|
|
||||||
jne .noesc
|
|
||||||
mov dl,[InitDrive]
|
|
||||||
mov ebx,InitDir
|
|
||||||
call Change_Dir
|
|
||||||
jmp DosExit
|
|
||||||
%endif
|
|
||||||
.noesc
|
|
||||||
mov edx,.ret
|
|
||||||
call Output_Text
|
|
||||||
ret
|
|
||||||
|
|
||||||
SECTION .data
|
|
||||||
.filename db 'Filename : ',0
|
|
||||||
.frameskip db 'Frame Skip : ',0
|
|
||||||
.percexec db '% to Exec : ',0
|
|
||||||
.debugon db 'Debugger : ',0
|
|
||||||
.memryfr db 'Memory Free : ',0
|
|
||||||
.auto db 'AUTO',13,10,0
|
|
||||||
.on db 'ON',13,10,0
|
|
||||||
.off db 'OFF',13,10,0
|
|
||||||
.ret db 13,10,0
|
|
||||||
.waitkey db 'Press Any Key to Continue.',0
|
|
||||||
.smcname db 'Cartridge name : ',0
|
|
||||||
.romtyp db 'ROM type : ',0
|
|
||||||
.memmap db 'Memory Map : ',0
|
|
||||||
.hirom db 'HIROM/',0
|
|
||||||
.lorom db 'LOROM/',0
|
|
||||||
.romtype db 'ROM ',13,10,0
|
|
||||||
db 'ROM/RAM ',13,10,0
|
|
||||||
db 'ROM/SRAM ',13,10,0
|
|
||||||
db 'ROM/DSP1 ',13,10,0
|
|
||||||
db 'RAM/DSP1/RAM ',13,10,0
|
|
||||||
db 'ROM/DSP1/SRAM',13,10,0
|
|
||||||
db 'SFX ',13,10,0
|
|
||||||
db 'SA-1 ',13,10,0
|
|
||||||
db 'SFX2/RAM ',13,10,0
|
|
||||||
db 'C4/ROM ',13,10,0
|
|
||||||
db 'SDD-1 ',13,10,0
|
|
||||||
db 'SPC7110 ',13,10,0
|
|
||||||
db 'S-RTC ',13,10,0
|
|
||||||
.unknowns db 'UNKNOWN (',0
|
|
||||||
.brackets db ')',13,10,0
|
|
||||||
.romsize db 'ROM size : ',0
|
|
||||||
.sramsize db 'SRAM size : ',0
|
|
||||||
.ramsize db 'CartRAM size : ',0
|
|
||||||
.romtypep db 'ROM Type : PAL',13,10,0
|
|
||||||
.romtypen db 'ROM Type : NTSC',13,10,0
|
|
||||||
.checksumc db 'Checksum : ',0
|
|
||||||
.cpassed db 'PASSED',13,10,0
|
|
||||||
.cfailed db 'FAILED',13,10,0
|
|
||||||
.romsizea db 13,10,'Max 32mbit ROM support',13,10,13,10,0
|
|
||||||
.romsizeb db 13,10,'Max 48mbit ROM support + SuperFX/C4 support',13,10,13,10,0
|
|
||||||
.romsizec db 13,10,'Max 16mbit ROM support',13,10,13,10,0
|
|
||||||
.romsized db 13,10,'Max 48mbit ROM support + SuperFX/C4 support + 16bit New Gfx Engine',13,10,13,10,0
|
|
||||||
.megabit db ' Megabits',13,10,0
|
|
||||||
.kilobit db ' Kilobytes',13,10,0
|
|
||||||
.nmidisp db 'NMI Vector Location : ',0
|
|
||||||
.resetdisp db 'Reset Vector Location : ',0
|
|
||||||
.doh db 'Cannot detect whether cartridge is HiROM or LoROM.',13,10,'Please use -h/-l',13,10,0
|
|
||||||
.intlvd db 'Image is uninterleaved.',13,10,0
|
|
||||||
|
|
||||||
SECTION .bss
|
SECTION .bss
|
||||||
|
|
||||||
.memfree resb 30
|
|
||||||
|
|
||||||
NEWSYM DSP1Type, resb 1
|
NEWSYM DSP1Type, resb 1
|
||||||
NEWSYM intldone, resb 1
|
NEWSYM intldone, resb 1
|
||||||
SECTION .text
|
SECTION .text
|
||||||
@@ -4011,25 +3535,12 @@ NEWSYM SetupROM
|
|||||||
add esi,18h
|
add esi,18h
|
||||||
mov cl,[esi-1]
|
mov cl,[esi-1]
|
||||||
mov [curromsize],cl
|
mov [curromsize],cl
|
||||||
mov cl,[esi]
|
pushad
|
||||||
inc esi
|
call SetupSramSize
|
||||||
xor eax,eax
|
popad
|
||||||
mov al,1
|
|
||||||
shl al,cl
|
|
||||||
cmp al,1
|
|
||||||
jne .yessram
|
|
||||||
mov al,0
|
|
||||||
.yessram
|
|
||||||
shl eax,10
|
|
||||||
cmp eax,65536
|
|
||||||
jbe .nosramc
|
|
||||||
mov eax,65536
|
|
||||||
.nosramc
|
|
||||||
mov [ramsize],eax
|
|
||||||
dec eax
|
|
||||||
mov [ramsizeand],eax
|
|
||||||
|
|
||||||
; get pal/ntsc
|
; get pal/ntsc
|
||||||
|
inc esi
|
||||||
mov al,[ForceROMTiming]
|
mov al,[ForceROMTiming]
|
||||||
mov byte[ForcePal],al
|
mov byte[ForcePal],al
|
||||||
xor al,al
|
xor al,al
|
||||||
@@ -4306,7 +3817,6 @@ NEWSYM CheckROMType
|
|||||||
.notBS
|
.notBS
|
||||||
.endchpdtct
|
.endchpdtct
|
||||||
|
|
||||||
|
|
||||||
;Setup some Memmapping
|
;Setup some Memmapping
|
||||||
mov byte[DSP1Type],0
|
mov byte[DSP1Type],0
|
||||||
mov esi,[romdata]
|
mov esi,[romdata]
|
||||||
|
|||||||
@@ -73,6 +73,8 @@ extern unsigned char Interleaved;
|
|||||||
unsigned int maxromspace;
|
unsigned int maxromspace;
|
||||||
unsigned int curromspace;
|
unsigned int curromspace;
|
||||||
unsigned int infoloc;
|
unsigned int infoloc;
|
||||||
|
unsigned int ramsize;
|
||||||
|
unsigned int ramsizeand;
|
||||||
|
|
||||||
bool SplittedROM;
|
bool SplittedROM;
|
||||||
unsigned int addOnStart;
|
unsigned int addOnStart;
|
||||||
@@ -390,6 +392,31 @@ void MirrorROM()
|
|||||||
NumofBanks = curromspace >> 15;
|
NumofBanks = curromspace >> 15;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define SRAMSizeOffset 24
|
||||||
|
#define CompanyOffset 26
|
||||||
|
extern bool SFXEnable;
|
||||||
|
void SetupSramSize()
|
||||||
|
{
|
||||||
|
unsigned char *ROM = (unsigned char *)romdata;
|
||||||
|
if (SFXEnable)
|
||||||
|
{
|
||||||
|
if (ROM[infoloc+CompanyOffset] == 0x33) //Extended header
|
||||||
|
{
|
||||||
|
ramsize = 8 << ((unsigned int)ROM[infoloc-3]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ramsize = 256;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ramsize = ((ROM[infoloc+SRAMSizeOffset]) ? (8 << ((unsigned int)ROM[infoloc+SRAMSizeOffset])) : 0);
|
||||||
|
}
|
||||||
|
//Convert from Kb to bytes;
|
||||||
|
ramsize *= 128;
|
||||||
|
ramsizeand = ramsize-1;
|
||||||
|
}
|
||||||
|
|
||||||
//File loading code
|
//File loading code
|
||||||
extern char *ZOpenFileName;
|
extern char *ZOpenFileName;
|
||||||
|
|||||||
Reference in New Issue
Block a user