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
|
||||
!FRESH_FILE_MARKER = "$7EF4F0" ; zero if fresh file
|
||||
;$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"
|
||||
!DARK_WORLD = "$7EF3CA"
|
||||
@@ -175,6 +177,7 @@ incsrc inverted.asm
|
||||
incsrc invertedmaps.asm
|
||||
incsrc newhud.asm
|
||||
incsrc compasses.asm
|
||||
incsrc save.asm
|
||||
incsrc password.asm
|
||||
incsrc enemy_adjustments.asm
|
||||
incsrc hudtext.asm
|
||||
@@ -300,7 +303,7 @@ warnpc $B08000
|
||||
;$7F5000[0x800]: Rando's main free ram region
|
||||
; See tables.asm for specific assignments
|
||||
;$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
|
||||
;================================================================================
|
||||
;SRAM Map
|
||||
|
||||
@@ -719,11 +719,6 @@ SetItemLayoutPriority:
|
||||
|
||||
RTL
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
Validate_SRAM:
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
LoadFullItemTiles:
|
||||
PHA : PHX
|
||||
|
||||
54
hooks.asm
54
hooks.asm
@@ -215,9 +215,57 @@ SKIP 7 : NOP #3
|
||||
SKIP 7 : NOP #3
|
||||
SKIP 7 : NOP #3
|
||||
;--------------------------------------------------------------------------------
|
||||
; Clearing mirrored copy on file erase
|
||||
org $0CD4E7 ; <- 654E7 - Bank0C.asm : 2282 (STA $700400, X : STA $700F00, X : STA $701000, X : STA $701100, X)
|
||||
NOP #20
|
||||
; remove Clearing mirrored copy on file erase, instead clearing the extended save file too
|
||||
org $0CD4E3 ; <- Bank0C.asm : 2282 (STA $700400, X : STA $700F00, X : STA $701000, X : STA $701100, X)
|
||||
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_SELECTION_POSITION = "$C9"
|
||||
!PASSWORD_SRAM = "$700510"
|
||||
!PASSWORD_SRAM = "$701000"
|
||||
|
||||
|
||||
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