Make the exted save slot actually available
Including WRAM mirror
This commit is contained in:
@@ -60,7 +60,9 @@ db #$20, #$19, #$06, #$17 ; year/month/day
|
|||||||
;$7EF4A0 - $7EF4A7 - Service Request Block
|
;$7EF4A0 - $7EF4A7 - Service Request Block
|
||||||
!FRESH_FILE_MARKER = "$7EF4F0" ; zero if fresh file
|
!FRESH_FILE_MARKER = "$7EF4F0" ; zero if fresh file
|
||||||
;$700500 - $70050F - Extended File Name
|
;$700500 - $70050F - Extended File Name
|
||||||
;$700510 - $70051F - Password (eventually should be moved into non-mirrored area)
|
;$701000 - $70100F - Password (incorporate into log header)
|
||||||
|
;$702000 - $702014 - Rom title copy (incorporate into log header)
|
||||||
|
|
||||||
|
|
||||||
!MS_GOT = "$7F5031"
|
!MS_GOT = "$7F5031"
|
||||||
!DARK_WORLD = "$7EF3CA"
|
!DARK_WORLD = "$7EF3CA"
|
||||||
@@ -175,6 +177,7 @@ incsrc inverted.asm
|
|||||||
incsrc invertedmaps.asm
|
incsrc invertedmaps.asm
|
||||||
incsrc newhud.asm
|
incsrc newhud.asm
|
||||||
incsrc compasses.asm
|
incsrc compasses.asm
|
||||||
|
incsrc save.asm
|
||||||
incsrc password.asm
|
incsrc password.asm
|
||||||
incsrc enemy_adjustments.asm
|
incsrc enemy_adjustments.asm
|
||||||
incsrc hudtext.asm
|
incsrc hudtext.asm
|
||||||
@@ -300,7 +303,7 @@ warnpc $B08000
|
|||||||
;$7F5000[0x800]: Rando's main free ram region
|
;$7F5000[0x800]: Rando's main free ram region
|
||||||
; See tables.asm for specific assignments
|
; See tables.asm for specific assignments
|
||||||
;$7F6000[0x500]: Free RAM (reclaimed from damage table) Not allocated yet
|
;$7F6000[0x500]: Free RAM (reclaimed from damage table) Not allocated yet
|
||||||
;$7F6500[0xB00]: Reserved for SRAM mirror for last 0xB00 bytes of SRAM (extended sram)
|
;$7F6500[0xB00]: SRAM mirror for last 0xB00 bytes of SRAM (extended sram)
|
||||||
;$7F7667[0x6719] - free ram
|
;$7F7667[0x6719] - free ram
|
||||||
;================================================================================
|
;================================================================================
|
||||||
;SRAM Map
|
;SRAM Map
|
||||||
|
|||||||
@@ -719,11 +719,6 @@ SetItemLayoutPriority:
|
|||||||
|
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
Validate_SRAM:
|
|
||||||
RTL
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
LoadFullItemTiles:
|
LoadFullItemTiles:
|
||||||
PHA : PHX
|
PHA : PHX
|
||||||
|
|||||||
54
hooks.asm
54
hooks.asm
@@ -215,9 +215,57 @@ SKIP 7 : NOP #3
|
|||||||
SKIP 7 : NOP #3
|
SKIP 7 : NOP #3
|
||||||
SKIP 7 : NOP #3
|
SKIP 7 : NOP #3
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; Clearing mirrored copy on file erase
|
; remove Clearing mirrored copy on file erase, instead clearing the extended save file too
|
||||||
org $0CD4E7 ; <- 654E7 - Bank0C.asm : 2282 (STA $700400, X : STA $700F00, X : STA $701000, X : STA $701100, X)
|
org $0CD4E3 ; <- Bank0C.asm : 2282 (STA $700400, X : STA $700F00, X : STA $701000, X : STA $701100, X)
|
||||||
NOP #20
|
JSL.l ClearExtendedSaveFile
|
||||||
|
BRA +
|
||||||
|
NOP #18
|
||||||
|
+
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
;================================================================================
|
||||||
|
; Extended SRAM Save file
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $0ccf08 ; <- Bank0C.asm : 2036 (LDA.w #$0007 : STA $7EC00D : STA $7EC013)
|
||||||
|
JSL CopyExtendedSaveFileToWRAM
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $008998 ; <- Bank00.asm : 1296 (LDX.w #$0000)
|
||||||
|
JSL CopyExtendedWRAMSaveFileToSRAM
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $0CD7AB ; <- Bank0C.asm : 3342 (STA $700400, X)
|
||||||
|
JSL.l ClearExtendedSaveFile
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $0CC2EB ; <- Bank0C.asm : 348 (STA $7EF000, X : STA $7EF100, X : STA $7EF200, X : STA $7EF300, X : STA $7EF400, X)
|
||||||
|
JSL.l ClearExtendedWRAMSaveFile
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $09F653 ; <- module_death.asm : 556 (STA $7EF400, X)
|
||||||
|
JSL.l ClearExtendedWRAMSaveFile
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
;================================================================================
|
||||||
|
; Remove storage of selected file index from end of vanilla SRAM
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $0087EB ; <- Bank00.asm : 986 (STA $7EC500 : STA $701FFE)
|
||||||
|
BRA AfterFileWrittenChecks
|
||||||
|
;Also skip totally redundant checking and clearing the "file written" marker,
|
||||||
|
;since it is not even useful in the original code, much less with only one save slot
|
||||||
|
org $00881f ; <- Bank00.asm : 1011 (STY $01FE)
|
||||||
|
AfterFileWrittenChecks:
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $008951 ; <- Bank00.asm : 1278 (LDX $1FFE : LDA $00848A, X : TAY : PHY)
|
||||||
|
LDX #$0002
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $0CCE85 ; <- Bank0C.asm : 1953 (LDA $C8 : ASL A : INC #2 : STA $701FFE)
|
||||||
|
NOP #4
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $0CDB4C ; <- Bank0C.asm : 3655 (LDA $C8 : ASL A : INC #2 : STA $701FFE : TAX)
|
||||||
|
NOP #4
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $09F5EA ; <- module_death.asm : 510 (LDA $701FFE : TAX : DEX #2)
|
||||||
|
LDA.w #$0002 : NOP
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $0EEFEB ; <- vwf.asm : 310 (LDA $701FFE : TAX)
|
||||||
|
LDA.w #$0002 : NOP
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
!PASSWORD_CODE_POSITION = "$C8"
|
!PASSWORD_CODE_POSITION = "$C8"
|
||||||
!PASSWORD_SELECTION_POSITION = "$C9"
|
!PASSWORD_SELECTION_POSITION = "$C9"
|
||||||
!PASSWORD_SRAM = "$700510"
|
!PASSWORD_SRAM = "$701000"
|
||||||
|
|
||||||
|
|
||||||
Module_Password:
|
Module_Password:
|
||||||
|
|||||||
116
save.asm
Normal file
116
save.asm
Normal file
@@ -0,0 +1,116 @@
|
|||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
Validate_SRAM:
|
||||||
|
RTL
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
ClearExtendedSaveFile:
|
||||||
|
STA $700400, X ; what we wrote over
|
||||||
|
STA $700500, X
|
||||||
|
STA $700600, X
|
||||||
|
STA $700700, X
|
||||||
|
STA $700800, X
|
||||||
|
STA $700900, X
|
||||||
|
STA $700A00, X
|
||||||
|
STA $700B00, X
|
||||||
|
STA $700C00, X
|
||||||
|
STA $700D00, X
|
||||||
|
STA $700E00, X
|
||||||
|
STA $700F00, X
|
||||||
|
RTL
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
ClearExtendedWRAMSaveFile:
|
||||||
|
STA $7EF400, X ; what we wrote over
|
||||||
|
STA $7F6500, X
|
||||||
|
STA $7F6600, X
|
||||||
|
STA $7F6700, X
|
||||||
|
STA $7F6800, X
|
||||||
|
STA $7F6900, X
|
||||||
|
STA $7F6A00, X
|
||||||
|
STA $7F6B00, X
|
||||||
|
STA $7F6C00, X
|
||||||
|
STA $7F6D00, X
|
||||||
|
STA $7F6E00, X
|
||||||
|
STA $7F6F00, X
|
||||||
|
RTL
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
CopyExtendedSaveFileToWRAM:
|
||||||
|
PHA
|
||||||
|
SEP #$30
|
||||||
|
LDA $4300 : PHA ; preserve DMA parameters
|
||||||
|
LDA $4301 : PHA ; preserve DMA parameters
|
||||||
|
LDA $4302 : PHA ; preserve DMA parameters
|
||||||
|
LDA $4303 : PHA ; preserve DMA parameters
|
||||||
|
LDA $4304 : PHA ; preserve DMA parameters
|
||||||
|
LDA $4305 : PHA ; preserve DMA parameters
|
||||||
|
LDA $4306 : PHA ; preserve DMA parameters
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
LDA #$00 : STA $4300 ; set DMA transfer direction A -> B, bus A auto increment, single-byte mode
|
||||||
|
|
||||||
|
LDA #$80 : STA $4301 ; set bus B source to WRAM register
|
||||||
|
|
||||||
|
LDA #$00 : STA $2181 ; set WRAM register source address
|
||||||
|
LDA #$65 : STA $2182
|
||||||
|
LDA #$7F : STA $2183
|
||||||
|
|
||||||
|
STZ $4302 ; set bus A destination address to SRAM
|
||||||
|
LDA #$05 : STA $4303
|
||||||
|
LDA #$70 : STA $4304
|
||||||
|
|
||||||
|
LDA #$00 : STA $4305 ; set transfer size to 0xB00
|
||||||
|
LDA #$0B : STA $4306 ; STZ $4307
|
||||||
|
|
||||||
|
LDA #$01 : STA $420B ; begin DMA transfer
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
PLA : STA $4306 ; restore DMA parameters
|
||||||
|
PLA : STA $4305 ; restore DMA parameters
|
||||||
|
PLA : STA $4304 ; restore DMA parameters
|
||||||
|
PLA : STA $4303 ; restore DMA parameters
|
||||||
|
PLA : STA $4302 ; restore DMA parameters
|
||||||
|
PLA : STA $4301 ; restore DMA parameters
|
||||||
|
PLA : STA $4300 ; restore DMA parameters
|
||||||
|
REP #$30
|
||||||
|
PLA
|
||||||
|
STA $7EC00D ; what we wrote over
|
||||||
|
RTL
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
CopyExtendedWRAMSaveFileToSRAM:
|
||||||
|
PHA
|
||||||
|
PHB
|
||||||
|
SEP #$30
|
||||||
|
LDA #$00 : PHA : PLB
|
||||||
|
LDA $4300 : PHA ; preserve DMA parameters
|
||||||
|
LDA $4301 : PHA ; preserve DMA parameters
|
||||||
|
LDA $4302 : PHA ; preserve DMA parameters
|
||||||
|
LDA $4303 : PHA ; preserve DMA parameters
|
||||||
|
LDA $4304 : PHA ; preserve DMA parameters
|
||||||
|
LDA $4305 : PHA ; preserve DMA parameters
|
||||||
|
LDA $4306 : PHA ; preserve DMA parameters
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
LDA #$80 : STA $4300 ; set DMA transfer direction B -> A, bus A auto increment, single-byte mode
|
||||||
|
|
||||||
|
STA $4301 ; set bus B source to WRAM register
|
||||||
|
|
||||||
|
LDA #$00 : STA $2181 ; set WRAM register source address
|
||||||
|
LDA #$65 : STA $2182
|
||||||
|
LDA #$7F : STA $2183
|
||||||
|
|
||||||
|
STZ $4302 ; set bus A destination address to SRAM
|
||||||
|
LDA #$05 : STA $4303
|
||||||
|
LDA #$70 : STA $4304
|
||||||
|
|
||||||
|
LDA #$00 : STA $4305 ; set transfer size to 0xB00
|
||||||
|
LDA #$0B : STA $4306 ; STZ $4307
|
||||||
|
|
||||||
|
LDA #$01 : STA $420B ; begin DMA transfer
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
PLA : STA $4306 ; restore DMA parameters
|
||||||
|
PLA : STA $4305 ; restore DMA parameters
|
||||||
|
PLA : STA $4304 ; restore DMA parameters
|
||||||
|
PLA : STA $4303 ; restore DMA parameters
|
||||||
|
PLA : STA $4302 ; restore DMA parameters
|
||||||
|
PLA : STA $4301 ; restore DMA parameters
|
||||||
|
PLA : STA $4300 ; restore DMA parameters
|
||||||
|
REP #$30
|
||||||
|
PLB
|
||||||
|
PLA
|
||||||
|
LDX.w #$0000 : TXA ; what we wrote over
|
||||||
|
RTL
|
||||||
Reference in New Issue
Block a user