Remove defines from LTTP_RND_GeneralBugfixes
Replace more labels Add ROM version and reserve extra 16 bytes in unused hardware vector in LTTP_RND_GeneralBugfixes Move IncrementChestCounter to ChestPrep in newitems.asm Remove IncrementChestCounter hook which was getting overwritten More revisions to sram.asm
This commit is contained in:
@@ -2,6 +2,7 @@
|
|||||||
; The Legend of Zelda, A Link to the Past - Randomizer General Development & Bugfixes
|
; The Legend of Zelda, A Link to the Past - Randomizer General Development & Bugfixes
|
||||||
;================================================================================
|
;================================================================================
|
||||||
lorom
|
lorom
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
|
|
||||||
;org $00FFC0 ; <- 7FC0 - Bank00.asm : 9173 (db "THE LEGEND OF ZELDA " ; 21 bytes)
|
;org $00FFC0 ; <- 7FC0 - Bank00.asm : 9173 (db "THE LEGEND OF ZELDA " ; 21 bytes)
|
||||||
@@ -41,28 +42,7 @@ dw !ROM_VERSION_HIGH
|
|||||||
!BLT = "BCC"
|
!BLT = "BCC"
|
||||||
!BGE = "BCS"
|
!BGE = "BCS"
|
||||||
|
|
||||||
; Rando Specific SRAM assignments
|
|
||||||
!NPC_FLAGS = "$7EF410"
|
|
||||||
!NPC_FLAGS_2 = "$7EF411"
|
|
||||||
!MAP_OVERLAY = "$7EF414" ; [w]
|
|
||||||
!PROGRESSIVE_SHIELD = "$7EF416" ; ss-- ----
|
|
||||||
!HUD_FLAG = "$7EF416" ; --h- ----
|
|
||||||
!FORCE_PYRAMID = "$7EF416" ; ---- p---
|
|
||||||
!IGNORE_FAIRIES = "$7EF416" ; ---- -i--
|
|
||||||
!SHAME_CHEST = "$7EF416" ; ---s ----
|
|
||||||
!HAS_GROVE_ITEM = "$7EF416" ; ---- ---g general flags, don't waste these
|
|
||||||
!HIGHEST_SWORD_LEVEL = "$7EF417" ; --- -sss
|
|
||||||
;$7EF418 - Goal Item Counter
|
|
||||||
;$7EF419 - Service Sequence
|
|
||||||
;$7EF420 - $7EF46D - Stat Tracking Bank 1 (overlaps with RNG Item Flags)
|
|
||||||
;$7EF4A0 - $7EF4A7 - Service Request Block
|
|
||||||
;$700500 - $70050F - Extended File Name
|
|
||||||
;$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"
|
|
||||||
|
|
||||||
!REDRAW = "$7F5000"
|
!REDRAW = "$7F5000"
|
||||||
!GANON_WARP_CHAIN = "$7F5032";
|
!GANON_WARP_CHAIN = "$7F5032";
|
||||||
@@ -114,7 +94,6 @@ incsrc heartpieces.asm
|
|||||||
incsrc npcitems.asm
|
incsrc npcitems.asm
|
||||||
incsrc utilities.asm
|
incsrc utilities.asm
|
||||||
incsrc flipperkill.asm
|
incsrc flipperkill.asm
|
||||||
incsrc previewdatacopy.asm
|
|
||||||
incsrc pendantcrystalhud.asm
|
incsrc pendantcrystalhud.asm
|
||||||
incsrc potions.asm
|
incsrc potions.asm
|
||||||
incsrc shopkeeper.asm
|
incsrc shopkeeper.asm
|
||||||
@@ -335,21 +314,21 @@ warnpc $B08000
|
|||||||
;RAM
|
;RAM
|
||||||
;$7EC900[0x1F00]: BIGRAM buffer
|
;$7EC900[0x1F00]: BIGRAM buffer
|
||||||
;$7EF000[0x500]: SRAM mirror First 0x500 bytes of SRAM
|
;$7EF000[0x500]: SRAM mirror First 0x500 bytes of SRAM
|
||||||
|
; See sram.asm for labels and assignments
|
||||||
;$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[0x1000]: SRAM buffer mapped to vanilla save slots 1 and 2
|
||||||
;$7F6000[0x500]: SRAM buffer save 2 0x500
|
; See sram.asm for labels and assignments
|
||||||
;$7F6500[0xB00]: SRAM mirror for last 0xB00 bytes of SRAM (extended sram)
|
|
||||||
;$7F7667[0x6719] - free ram
|
;$7F7667[0x6719] - free ram
|
||||||
;================================================================================
|
;================================================================================
|
||||||
;SRAM Map
|
;SRAM Map
|
||||||
;$70:0000 ( 4K) Game state
|
;See sram.asm for rando-specific assignments
|
||||||
; 0000-04FF Vanilla Slot 1 (mirrored at 0x7EF000)
|
;$70:0000 (5K) Game state
|
||||||
; See earlier in this file for rando specific assignments
|
; 0000-04FF Vanilla Slot 1 (mirrored at $7EF000)
|
||||||
; 0500-0FFF Ext Slot 1 (not yet mirrored)
|
; 0500-14FF Ext Slot 1 (mirrored at $7F6000)
|
||||||
; See earlier in this file for rando specific assignments
|
;$70:2000 (0x25) ROM Name and version number
|
||||||
;$70:1000 (20K) Log entries
|
;$70:3000 (0x16) Password
|
||||||
;$70:6000 ( 8K) Scratch buffers
|
;$70:6000 (8K) Scratch buffers
|
||||||
;================================================================================
|
;================================================================================
|
||||||
;org $0080DC ; <- 0xDC - Bank00.asm:179 - Kill Music
|
;org $0080DC ; <- 0xDC - Bank00.asm:179 - Kill Music
|
||||||
;db #$A9, #$00, #$EA
|
;db #$A9, #$00, #$EA
|
||||||
|
|||||||
@@ -541,10 +541,6 @@ org $0288D1 ; <- 108D1 - Bank02.asm : 1690 (STZ $0646)
|
|||||||
JSL.l IndoorSubtileTransitionCounter
|
JSL.l IndoorSubtileTransitionCounter
|
||||||
NOP #2
|
NOP #2
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $07B574 ; <- 3B574 - Bank07.asm : 8519 (LDA.b #$01 : STA $02E9)
|
|
||||||
JSL.l IncrementChestCounter
|
|
||||||
NOP
|
|
||||||
;--------------------------------------------------------------------------------
|
|
||||||
;org $05FC7E ; <- 2FC7E - sprite_dash_item.asm : 118 (LDA $7EF36F : INC A : STA $7EF36F)
|
;org $05FC7E ; <- 2FC7E - sprite_dash_item.asm : 118 (LDA $7EF36F : INC A : STA $7EF36F)
|
||||||
;JSL.l IncrementSmallKeys
|
;JSL.l IncrementSmallKeys
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -2101,7 +2097,7 @@ JSL.l ItemCheck_TreeKid2
|
|||||||
|
|
||||||
org $06AF9B ; <- 32F9B - FluteBoy_Chillin : 73 : LDA $7EF34C : CMP.b #$02 : BCS .player_has_flute
|
org $06AF9B ; <- 32F9B - FluteBoy_Chillin : 73 : LDA $7EF34C : CMP.b #$02 : BCS .player_has_flute
|
||||||
;NOP #8
|
;NOP #8
|
||||||
LDA !HAS_GROVE_ITEM : AND.b #$01
|
LDA HasGroveItem : AND.b #$01
|
||||||
db #$D0 ; BNE
|
db #$D0 ; BNE
|
||||||
|
|
||||||
org $06B062 ; <- 33062 - FluteAardvark_InitialStateFromFluteState : 225 : LDA $7EF34C : AND.b #$03 : !BGE #$05
|
org $06B062 ; <- 33062 - FluteAardvark_InitialStateFromFluteState : 225 : LDA $7EF34C : AND.b #$03 : !BGE #$05
|
||||||
@@ -2472,7 +2468,7 @@ org $00DF62 ; <- Bank00.asm:4672 (LDX.w #$0000 : LDY.w #$0040)
|
|||||||
JML ReloadingFloors
|
JML ReloadingFloors
|
||||||
NOP : NOP
|
NOP : NOP
|
||||||
ReloadingFloorsResume:
|
ReloadingFloorsResume:
|
||||||
org $00DF6E ; <- A few instructions later, right after JSR Do3To4High16Bit
|
org $00DF6E ; <- A few instructions later, right after JSR Do3To.high16Bit
|
||||||
ReloadingFloorsCancel:
|
ReloadingFloorsCancel:
|
||||||
;================================================================================
|
;================================================================================
|
||||||
|
|
||||||
|
|||||||
2
init.asm
2
init.asm
@@ -1,5 +1,3 @@
|
|||||||
RomVersionSRAM = $701FFC
|
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; Init_Primary
|
; Init_Primary
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|||||||
190
inventory.asm
190
inventory.asm
@@ -1,17 +1,16 @@
|
|||||||
;================================================================================
|
;================================================================================
|
||||||
; Inventory Updates
|
; Inventory Updates
|
||||||
;================================================================================
|
;================================================================================
|
||||||
; Item Tracking Slot
|
|
||||||
; InventoryTracking
|
; InventoryTracking
|
||||||
; brmpnskf -------q
|
; brmpnskf ------oq
|
||||||
; b = blue boomerang |
|
; b = blue boomerang | -
|
||||||
; r = red boomerang |
|
; r = red boomerang | -
|
||||||
; m = mushroom current |
|
; m = mushroom current | -
|
||||||
; p = magic powder |
|
; p = magic powder | -
|
||||||
; n = mushroom past |
|
; n = mushroom past | -
|
||||||
; s = shovel |
|
; s = shovel | -
|
||||||
; k = fake flute |
|
; k = fake flute | o = any bomb acquired from item location
|
||||||
; f = working flute |
|
; f = working flute | q = quickswap locked
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; BowTracking
|
; BowTracking
|
||||||
; Item Tracking Slot #2
|
; Item Tracking Slot #2
|
||||||
@@ -35,8 +34,8 @@ ProcessMenuButtons:
|
|||||||
BIT #$20 : BNE .sel_pressed ; check for P1 Select button
|
BIT #$20 : BNE .sel_pressed ; check for P1 Select button
|
||||||
LDA $F0 : BIT #$20 : BNE .sel_held
|
LDA $F0 : BIT #$20 : BNE .sel_held
|
||||||
.sel_unheld
|
.sel_unheld
|
||||||
LDA !HUD_FLAG : AND #$20 : BEQ +
|
LDA HudFlag : AND #$20 : BEQ +
|
||||||
LDA !HUD_FLAG : AND #$DF : STA !HUD_FLAG ; select is released, unset hud flag
|
LDA HudFlag : AND #$DF : STA HudFlag ; select is released, unset hud flag
|
||||||
LDA $1B : BEQ + ; skip if outdoors
|
LDA $1B : BEQ + ; skip if outdoors
|
||||||
LDA.b #$20 : STA $012F ; menu select sound
|
LDA.b #$20 : STA $012F ; menu select sound
|
||||||
+
|
+
|
||||||
@@ -45,11 +44,8 @@ ProcessMenuButtons:
|
|||||||
.sel_held
|
.sel_held
|
||||||
CLC ; no buttons
|
CLC ; no buttons
|
||||||
RTL
|
RTL
|
||||||
;.l_pressed
|
|
||||||
;JSL.l SpawnAngryCucco
|
|
||||||
;RTL
|
|
||||||
.sel_pressed
|
.sel_pressed
|
||||||
LDA !HUD_FLAG : ORA #$20 : STA !HUD_FLAG ; set hud flag
|
LDA HudFlag : ORA #$20 : STA HudFlag ; set hud flag
|
||||||
LDA.b #$20 : STA $012F ; menu select sound
|
LDA.b #$20 : STA $012F ; menu select sound
|
||||||
JSL.l ResetEquipment
|
JSL.l ResetEquipment
|
||||||
RTL
|
RTL
|
||||||
@@ -178,8 +174,6 @@ RTL
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; AddInventory:
|
; AddInventory:
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
!LOCK_STATS = "$7EF443"
|
|
||||||
|
|
||||||
macro TopHalf(address)
|
macro TopHalf(address)
|
||||||
LDA <address> : !ADD #$10 : STA <address>
|
LDA <address> : !ADD #$10 : STA <address>
|
||||||
endmacro
|
endmacro
|
||||||
@@ -193,16 +187,16 @@ macro BottomHalf(address)
|
|||||||
endmacro
|
endmacro
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
;FullInventoryExternal:
|
;FullInventoryExternal:
|
||||||
; LDA !LOCK_STATS : BEQ + : RTL : +
|
; LDA StatsLocked : BEQ + : RTL : +
|
||||||
; PHA : PHX : PHP : JMP AddInventory_fullItemCounts
|
; PHA : PHX : PHP : JMP AddInventory_fullItemCounts
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
FullInventoryExternal:
|
FullInventoryExternal:
|
||||||
LDA !LOCK_STATS : BEQ + : RTL : +
|
LDA StatsLocked : BEQ + : RTL : +
|
||||||
PHA : PHX : PHP : JMP AddInventory_incrementCounts
|
PHA : PHX : PHP : JMP AddInventory_incrementCounts
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
!SHAME_CHEST = "$7EF416" ; ---s ----
|
|
||||||
AddInventory:
|
AddInventory:
|
||||||
PHA : PHX : PHP
|
PHA : PHX : PHP
|
||||||
|
PHA : LDA DummyValue : PLA
|
||||||
CPY.b #$0C : BNE + ; Blue Boomerang
|
CPY.b #$0C : BNE + ; Blue Boomerang
|
||||||
LDA InventoryTracking : ORA #$80 : STA InventoryTracking
|
LDA InventoryTracking : ORA #$80 : STA InventoryTracking
|
||||||
JMP .incrementCounts
|
JMP .incrementCounts
|
||||||
@@ -248,7 +242,7 @@ AddInventory:
|
|||||||
+
|
+
|
||||||
|
|
||||||
.incrementCounts
|
.incrementCounts
|
||||||
LDA !LOCK_STATS : BEQ + : JMP .done : +
|
LDA StatsLocked : BEQ + : JMP .done : +
|
||||||
|
|
||||||
; don't count any of this stuff
|
; don't count any of this stuff
|
||||||
CPY.b #$20 : BNE + : JMP .itemCounts : + ; Crystal
|
CPY.b #$20 : BNE + : JMP .itemCounts : + ; Crystal
|
||||||
@@ -292,79 +286,63 @@ AddInventory:
|
|||||||
|
|
||||||
.dungeonCounts
|
.dungeonCounts
|
||||||
LDA $1B : BNE + : JMP .fullItemCounts : +
|
LDA $1B : BNE + : JMP .fullItemCounts : +
|
||||||
; ==BEGIN INDOOR-ONLY SECTION
|
|
||||||
|
|
||||||
;REP #$20 ; Set 16-bit Accumulator
|
|
||||||
;LDA $A0 ; load room ID
|
|
||||||
;CMP.w #$0010 : BNE + ; Ganon Fall Room - I think this got taken out
|
|
||||||
;!SHAME_CHEST = "$7EF416" ; ---s ----
|
|
||||||
;LDA !SHAME_CHEST : ORA.w #$0010 : STA !SHAME_CHEST
|
|
||||||
;+
|
|
||||||
SEP #$20 ; Set 8-bit Accumulator
|
SEP #$20 ; Set 8-bit Accumulator
|
||||||
|
|
||||||
LDA $040C ; get dungeon id
|
LDA $040C ; get dungeon id
|
||||||
|
|
||||||
CMP.b #$00 : BNE + ; Sewers (Escape)
|
CMP.b #$00 : BNE + ; Sewers (Escape)
|
||||||
|
LDA SewersLocations : INC : STA SewersLocations
|
||||||
|
LDA HCLocations : INC : STA HCLocations
|
||||||
BRA ++
|
BRA ++
|
||||||
+ CMP.b #$02 : BNE + ; Hyrule Castle (Escape)
|
+ CMP.b #$02 : BNE + ; Hyrule Castle (Escape)
|
||||||
++
|
++
|
||||||
CPY.b #$32 : BNE ++ : JMP .itemCounts : ++ ; Ball & Chain Guard's Big Key
|
CPY.b #$32 : BNE ++ : JMP .itemCounts : ++ ; Ball & Chain Guard's Big Key
|
||||||
%TopHalf($7EF434)
|
LDA HCLocations : INC : STA HCLocations
|
||||||
|
LDA SewersLocations : INC : STA SewersLocations
|
||||||
JMP .fullItemCounts
|
JMP .fullItemCounts
|
||||||
+ CMP.b #$04 : BNE + ; Eastern Palace
|
+ CMP.b #$04 : BNE + ; Eastern Palace
|
||||||
LDA $7EF436 : INC : AND #$07 : TAX
|
LDA EPLocations : INC : STA EPLocations
|
||||||
LDA $7EF436 : AND #$F8 : STA $7EF436
|
|
||||||
TXA : ORA $7EF436 : STA $7EF436
|
|
||||||
JMP .fullItemCounts
|
JMP .fullItemCounts
|
||||||
+ CMP.b #$06 : BNE + ; Desert Palace
|
+ CMP.b #$06 : BNE + ; Desert Palace
|
||||||
LDA $7EF435 : !ADD #$20 : STA $7EF435
|
LDA DPLocations : INC : STA DPLocations
|
||||||
JMP .fullItemCounts
|
JMP .fullItemCounts
|
||||||
+ CMP.b #$08 : BNE + ; Agahnim's Tower
|
+ CMP.b #$08 : BNE + ; Agahnim's Tower
|
||||||
LDA $7EF435 : INC : AND #$03 : TAX
|
LDA CTLocations : INC : STA CTLocations
|
||||||
LDA $7EF435 : AND #$FC : STA $7EF435
|
|
||||||
TXA : ORA $7EF435 : STA $7EF435
|
|
||||||
JMP .fullItemCounts
|
JMP .fullItemCounts
|
||||||
+ CMP.b #$0A : BNE + ; Swamp Palace
|
+ CMP.b #$0A : BNE + ; Swamp Palace
|
||||||
%BottomHalf($7EF439)
|
LDA SPLocations : INC : STA SPLocations
|
||||||
JMP .fullItemCounts
|
JMP .fullItemCounts
|
||||||
+ CMP.b #$0C : BNE + ; Palace of Darkness
|
+ CMP.b #$0C : BNE + ; Palace of Darkness
|
||||||
%BottomHalf($7EF434)
|
LDA PDLocations : INC : STA PDLocations
|
||||||
JMP .fullItemCounts
|
JMP .fullItemCounts
|
||||||
+ CMP.b #$0E : BNE + ; Misery Mire
|
+ CMP.b #$0E : BNE + ; Misery Mire
|
||||||
%BottomHalf($7EF438)
|
LDA MMLocations : INC : STA MMLocations
|
||||||
JMP .fullItemCounts
|
JMP .fullItemCounts
|
||||||
+ CMP.b #$10 : BNE + ; Skull Woods
|
+ CMP.b #$10 : BNE + ; Skull Woods
|
||||||
%TopHalf($7EF437)
|
LDA SWLocations : INC : STA SWLocations
|
||||||
JMP .fullItemCounts
|
JMP .fullItemCounts
|
||||||
+ CMP.b #$12 : BNE + ; Ice Palace
|
+ CMP.b #$12 : BNE + ; Ice Palace
|
||||||
%TopHalf($7EF438)
|
LDA IPLocations : INC : STA IPLocations
|
||||||
JMP .fullItemCounts
|
JMP .fullItemCounts
|
||||||
+ CMP.b #$14 : BNE + ; Tower of Hera
|
+ CMP.b #$14 : BNE + ; Tower of Hera
|
||||||
LDA $7EF435 : !ADD #$04 : AND #$1C : TAX
|
LDA THLocations : INC : STA THLocations
|
||||||
LDA $7EF435 : AND #$E3 : STA $7EF435
|
|
||||||
TXA : ORA $7EF435 : STA $7EF435
|
|
||||||
JMP .fullItemCounts
|
JMP .fullItemCounts
|
||||||
+ CMP.b #$16 : BNE + ; Thieves' Town
|
+ CMP.b #$16 : BNE + ; Thieves' Town
|
||||||
%BottomHalf($7EF437)
|
LDA TTLocations : INC : STA TTLocations
|
||||||
JMP .fullItemCounts
|
JMP .fullItemCounts
|
||||||
+ CMP.b #$18 : BNE + ; Turtle Rock
|
+ CMP.b #$18 : BNE + ; Turtle Rock
|
||||||
%TopHalf($7EF439)
|
LDA TRLocations : INC : STA TRLocations
|
||||||
JMP .fullItemCounts
|
JMP .fullItemCounts
|
||||||
+ CMP.b #$1A : BNE + ; Ganon's Tower
|
+ CMP.b #$1A : BNE + ; Ganon's Tower
|
||||||
LDA $7EF436 : !ADD #$08 : STA $7EF436
|
LDA GTLocations : INC : STA GTLocations
|
||||||
LDA BigKeyField : AND #$04 : BNE ++
|
LDA BigKeyField : AND #$04 : BNE ++
|
||||||
JSR .incrementGTowerPreBigKey
|
JSR .incrementGTowerPreBigKey
|
||||||
++
|
++
|
||||||
;JMP .fullItemCounts
|
|
||||||
+
|
+
|
||||||
|
|
||||||
; == END INDOOR-ONLY SECTION
|
; == END INDOOR-ONLY SECTION
|
||||||
.fullItemCounts
|
.fullItemCounts
|
||||||
|
|
||||||
;CPY.b #$3B : BNE + ; Skip Total Counts for Repeat Silver Arrows
|
|
||||||
; LDA $7EF42A : BIT #$20 : BEQ + : BRA .itemCounts
|
|
||||||
;+
|
|
||||||
|
|
||||||
LDA BootsEquipment : BNE + ; Check for Boots
|
LDA BootsEquipment : BNE + ; Check for Boots
|
||||||
LDA PreBootsLocations : INC : STA PreBootsLocations ; Increment Pre Boots Counter
|
LDA PreBootsLocations : INC : STA PreBootsLocations ; Increment Pre Boots Counter
|
||||||
+
|
+
|
||||||
@@ -377,7 +355,7 @@ AddInventory:
|
|||||||
LDA PreFluteLocations : INC : STA PreFluteLocations ; Increment Pre Mirror Counter
|
LDA PreFluteLocations : INC : STA PreFluteLocations ; Increment Pre Mirror Counter
|
||||||
+
|
+
|
||||||
|
|
||||||
LDA $7EF423 : INC : STA $7EF423 ; Increment Item Total
|
LDA TotalItemCounter : INC : STA TotalItemCounter ; Increment Item Total
|
||||||
|
|
||||||
.itemCounts
|
.itemCounts
|
||||||
|
|
||||||
@@ -462,12 +440,12 @@ AddInventory:
|
|||||||
;JSR .incrementHeartContainer
|
;JSR .incrementHeartContainer
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CPY.b #$27 : BNE + ; 1 Bomb
|
+ CPY.b #$27 : BNE + ; 1 Bomb
|
||||||
;JSR .maybeIncrementBombs
|
JSR .maybeIncrementBombs
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CPY.b #$28 : BNE + ; 3 Bombs
|
+ CPY.b #$28 : BNE + ; 3 Bombs
|
||||||
;JSR .maybeIncrementBombs
|
JSR .maybeIncrementBombs
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CPY.b #$29 : BNE + ; Musoroom
|
+ CPY.b #$29 : BNE + ; Mushroom
|
||||||
JSR .incrementY
|
JSR .incrementY
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CPY.b #$2A : !BLT + ; Items $2A - $2D
|
+ CPY.b #$2A : !BLT + ; Items $2A - $2D
|
||||||
@@ -475,7 +453,7 @@ AddInventory:
|
|||||||
JSR .incrementY
|
JSR .incrementY
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CPY.b #$31 : BNE + ; 10 Bombs
|
+ CPY.b #$31 : BNE + ; 10 Bombs
|
||||||
;JSR .maybeIncrementBombs
|
JSR .maybeIncrementBombs
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CPY.b #$32 : BNE + ; Big Key
|
+ CPY.b #$32 : BNE + ; Big Key
|
||||||
JSR .incrementBigKey
|
JSR .incrementBigKey
|
||||||
@@ -516,9 +494,9 @@ AddInventory:
|
|||||||
JSR .stampBoots
|
JSR .stampBoots
|
||||||
JSR .incrementA
|
JSR .incrementA
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CPY.b #$4C : BNE + ; Bomb Capacity Upgrade
|
+ CPY.b #$4C : BNE + ; 50 Bomb Capacity Upgrade
|
||||||
JSR .incrementCapacity
|
JSR .incrementCapacity
|
||||||
;JSR .maybeIncrementBombs
|
JSR .maybeIncrementBombs
|
||||||
JMP .done
|
JMP .done
|
||||||
+ CPY.b #$4D : !BLT + ; Items $4D - $4F - Capacity Upgrades
|
+ CPY.b #$4D : !BLT + ; Items $4D - $4F - Capacity Upgrades
|
||||||
CPY.b #$50 : !BGE +
|
CPY.b #$50 : !BGE +
|
||||||
@@ -528,6 +506,14 @@ AddInventory:
|
|||||||
LDX #$02
|
LDX #$02
|
||||||
JSR .incrementSword
|
JSR .incrementSword
|
||||||
JMP .done
|
JMP .done
|
||||||
|
+ CPY.b #$51 : BNE + ; 5 Bomb Capacity Upgrade
|
||||||
|
LDX #$02
|
||||||
|
JSR .maybeIncrementBombs
|
||||||
|
JMP .done
|
||||||
|
+ CPY.b #$52 : BNE + ; 10 Bomb Capacity Upgrade
|
||||||
|
LDX #$02
|
||||||
|
JSR .maybeIncrementBombs
|
||||||
|
JMP .done
|
||||||
+ CPY.b #$51 : !BLT + ; Items $51 - $54 - Capacity Upgrades
|
+ CPY.b #$51 : !BLT + ; Items $51 - $54 - Capacity Upgrades
|
||||||
CPY.b #$55 : !BGE +
|
CPY.b #$55 : !BGE +
|
||||||
JSR .incrementCapacity
|
JSR .incrementCapacity
|
||||||
@@ -577,49 +563,42 @@ RTL
|
|||||||
; WHICH BEE IS BOTTLED?
|
; WHICH BEE IS BOTTLED?
|
||||||
; MAKE SURE FAIRY FOUNTAINS DON'T FUCK THE COUNTS UP
|
; MAKE SURE FAIRY FOUNTAINS DON'T FUCK THE COUNTS UP
|
||||||
|
|
||||||
!NMI_TIME = "$7EF43E"
|
|
||||||
|
|
||||||
!SWORD_TIME = "$7EF458"
|
|
||||||
!BOOTS_TIME = "$7EF45C"
|
|
||||||
!FLUTE_TIME = "$7EF460"
|
|
||||||
!MIRROR_TIME = "$7EF464"
|
|
||||||
|
|
||||||
.stampSword
|
.stampSword
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$20 ; set 16-bit accumulator
|
||||||
LDA !SWORD_TIME : BNE +
|
LDA SwordTime : BNE +
|
||||||
LDA !SWORD_TIME+2 : BNE +
|
LDA SwordTime+2 : BNE +
|
||||||
LDA !NMI_TIME : STA !SWORD_TIME
|
LDA NMIFrames : STA SwordTime
|
||||||
LDA !NMI_TIME+2 : STA !SWORD_TIME+2
|
LDA NMIFrames+2 : STA SwordTime+2
|
||||||
+
|
+
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
.stampBoots
|
.stampBoots
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$20 ; set 16-bit accumulator
|
||||||
LDA !BOOTS_TIME : BNE +
|
LDA BootsTime : BNE +
|
||||||
LDA !BOOTS_TIME+2 : BNE +
|
LDA BootsTime+2 : BNE +
|
||||||
LDA !NMI_TIME : STA !BOOTS_TIME
|
LDA NMIFrames : STA BootsTime
|
||||||
LDA !NMI_TIME+2 : STA !BOOTS_TIME+2
|
LDA NMIFrames+2 : STA BootsTime+2
|
||||||
+
|
+
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
.stampFlute
|
.stampFlute
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$20 ; set 16-bit accumulator
|
||||||
LDA !FLUTE_TIME : BNE +
|
LDA FluteTime : BNE +
|
||||||
LDA !FLUTE_TIME+2 : BNE +
|
LDA FluteTime+2 : BNE +
|
||||||
LDA !NMI_TIME : STA !FLUTE_TIME
|
LDA NMIFrames : STA FluteTime
|
||||||
LDA !NMI_TIME+2 : STA !FLUTE_TIME+2
|
LDA NMIFrames+2 : STA FluteTime+2
|
||||||
+
|
+
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
.stampMirror
|
.stampMirror
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$20 ; set 16-bit accumulator
|
||||||
LDA !MIRROR_TIME : BNE +
|
LDA MirrorTime : BNE +
|
||||||
LDA !MIRROR_TIME+2 : BNE +
|
LDA MirrorTime+2 : BNE +
|
||||||
LDA !NMI_TIME : STA !MIRROR_TIME
|
LDA NMIFrames : STA MirrorTime
|
||||||
LDA !NMI_TIME+2 : STA !MIRROR_TIME+2
|
LDA NMIFrames+2 : STA MirrorTime+2
|
||||||
+
|
+
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
RTS
|
RTS
|
||||||
@@ -684,36 +663,30 @@ RTS
|
|||||||
RTL
|
RTL
|
||||||
|
|
||||||
.incrementKey
|
.incrementKey
|
||||||
PHA : PHX
|
LDA SmallKeyCounter : INC : STA SmallKeyCounter
|
||||||
LDA $7EF424 : INC : AND #$3F : TAX
|
|
||||||
LDA $7EF424 : AND #$C0 : STA $7EF424
|
|
||||||
TXA : ORA $7EF424 : STA $7EF424
|
|
||||||
PLX : PLA
|
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
.incrementCompass
|
.incrementCompass
|
||||||
%BottomHalf($7EF428)
|
%BottomHalf(MapsCompasses)
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
.incrementBigKey
|
.incrementBigKey
|
||||||
LDA $7EF427 : !ADD #$10 : STA $7EF427
|
%TopHalf(BigKeysBigChests)
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
.incrementGTowerPreBigKey
|
.incrementGTowerPreBigKey
|
||||||
LDA $7EF42A : INC : AND #$1F : TAX
|
LDA PreGTBKLocations : INC : STA PreGTBKLocations
|
||||||
LDA $7EF42A : AND #$E0 : STA $7EF42A
|
|
||||||
TXA : ORA $7EF42A : STA $7EF42A
|
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
;.maybeIncrementBombs
|
.maybeIncrementBombs
|
||||||
; LDA $7EF42A : AND #$80 : BNE +
|
LDA InventoryTracking+1 : AND #$02 : BNE +
|
||||||
; LDA $7EF42A : ORA #$80 : STA $7EF42A
|
LDA InventoryTracking+1 : ORA #$02 : STA InventoryTracking+1
|
||||||
; JSR .incrementY
|
JSR .incrementY
|
||||||
; +
|
+
|
||||||
;RTS
|
RTS
|
||||||
|
|
||||||
.incrementMap
|
.incrementMap
|
||||||
LDA $7EF428 : !ADD #$10 : STA $7EF428
|
%TopHalf(MapsCompasses)
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
.incrementBossSwordLong
|
.incrementBossSwordLong
|
||||||
@@ -723,16 +696,17 @@ RTL
|
|||||||
.incrementBossSword
|
.incrementBossSword
|
||||||
LDA SwordEquipment
|
LDA SwordEquipment
|
||||||
BNE + : -
|
BNE + : -
|
||||||
%TopHalf($7EF452) : RTS
|
LDA SwordlessBossKills : INC : STA SwordlessBossKills
|
||||||
|
RTS
|
||||||
+ CMP #$FF : BEQ -
|
+ CMP #$FF : BEQ -
|
||||||
+ CMP #$01 : BNE +
|
+ CMP #$01 : BNE +
|
||||||
%TopHalf($7EF425) : RTS
|
%TopHalf(SwordBossKills) : RTS
|
||||||
+ CMP #$02 : BNE +
|
+ CMP #$02 : BNE +
|
||||||
%BottomHalf($7EF425) : RTS
|
%BottomHalf(SwordBossKills) : RTS
|
||||||
+ CMP #$03 : BNE +
|
+ CMP #$03 : BNE +
|
||||||
%TopHalf($7EF426) : RTS
|
%TopHalf(SwordBossKills+1) : RTS
|
||||||
+ CMP #$04 : BNE +
|
+ CMP #$04 : BNE +
|
||||||
%BottomHalf($7EF426)
|
%BottomHalf(SwordBossKills+1)
|
||||||
+
|
+
|
||||||
RTS
|
RTS
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -865,7 +839,7 @@ LoadKeys:
|
|||||||
LDA CurrentGenericKeys
|
LDA CurrentGenericKeys
|
||||||
RTL
|
RTL
|
||||||
+
|
+
|
||||||
LDA SewerKeys, X
|
LDA DungeonKeys, X
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
@@ -878,7 +852,7 @@ SaveKeys:
|
|||||||
PLA : STA CurrentGenericKeys
|
PLA : STA CurrentGenericKeys
|
||||||
RTL
|
RTL
|
||||||
+
|
+
|
||||||
PLA : STA SewerKeys, X
|
PLA : STA DungeonKeys, X
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|||||||
16
newitems.asm
16
newitems.asm
@@ -155,14 +155,14 @@ ProcessEventItems:
|
|||||||
LDA $02D8
|
LDA $02D8
|
||||||
CMP.b #$E0 : BNE +
|
CMP.b #$E0 : BNE +
|
||||||
REP #$30 ; set 16-bit accumulator & index registers
|
REP #$30 ; set 16-bit accumulator & index registers
|
||||||
LDA $7EF450 : ASL : TAX
|
LDA RNGItem : ASL : TAX
|
||||||
LDA.l EventDataOffsets, X : !ADD #EventDataTable : STA $00
|
LDA.l EventDataOffsets, X : !ADD #EventDataTable : STA $00
|
||||||
|
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
LDA.b #$AF : STA $02
|
LDA.b #$AF : STA $02
|
||||||
|
|
||||||
JSL.l LoadDialogAddressIndirect
|
JSL.l LoadDialogAddressIndirect
|
||||||
LDA $7EF450 : INC : STA $7EF450
|
LDA RNGItem : INC : STA RNGItem
|
||||||
|
|
||||||
SEP #$10 ; set 8-bit index registers
|
SEP #$10 ; set 8-bit index registers
|
||||||
|
|
||||||
@@ -373,7 +373,7 @@ AddReceivedItemExpandedGetItem:
|
|||||||
JMP .done
|
JMP .done
|
||||||
+ CMP.b #$A0 : !BLT + : CMP.b #$B0 : !BGE + ; Free Small Key
|
+ CMP.b #$A0 : !BLT + : CMP.b #$B0 : !BGE + ; Free Small Key
|
||||||
AND #$0F : TAX
|
AND #$0F : TAX
|
||||||
LDA SewerKeys, X : INC : STA SewerKeys, X ; Increment Key Count
|
LDA DungeonKeys, X : INC : STA DungeonKeys, X ; Increment Key Count
|
||||||
|
|
||||||
CPX.b #$00 : BNE ++
|
CPX.b #$00 : BNE ++
|
||||||
STA HyruleCastleKeys ; copy HC to sewers
|
STA HyruleCastleKeys ; copy HC to sewers
|
||||||
@@ -400,8 +400,6 @@ RTL
|
|||||||
; #$90 - Big Keys
|
; #$90 - Big Keys
|
||||||
; #$A0 - Small Keys
|
; #$A0 - Small Keys
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
!HIGHEST_ARMOR_SHIELD_SWORD = "$7EF416" ; ss-- ----
|
|
||||||
!RNG_ITEM = "$7EF450"
|
|
||||||
!SCRATCH_AREA = "$7F5020"
|
!SCRATCH_AREA = "$7F5020"
|
||||||
!SINGLE_INDEX_TEMP = "$7F5020"
|
!SINGLE_INDEX_TEMP = "$7F5020"
|
||||||
!SINGLE_INDEX_OFFSET_TEMP = "$7F5021"
|
!SINGLE_INDEX_OFFSET_TEMP = "$7F5021"
|
||||||
@@ -966,7 +964,6 @@ RTL
|
|||||||
LDA.b #$24 : STA $7EC723
|
LDA.b #$24 : STA $7EC723
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
!RNG_ITEM = "$7EF450"
|
|
||||||
!SCRATCH_AREA = "$7F5020"
|
!SCRATCH_AREA = "$7F5020"
|
||||||
!SINGLE_INDEX_TEMP = "$7F5020"
|
!SINGLE_INDEX_TEMP = "$7F5020"
|
||||||
!SINGLE_INDEX_OFFSET_TEMP = "$7F5021"
|
!SINGLE_INDEX_OFFSET_TEMP = "$7F5021"
|
||||||
@@ -1004,7 +1001,7 @@ RTL
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
CheckSingleItem:
|
CheckSingleItem:
|
||||||
LSR #3 : TAX
|
LSR #3 : TAX
|
||||||
LDA.l !RNG_ITEM, X : STA !SINGLE_INDEX_BITMASK_TEMP ; load value to temporary
|
LDA.l RNGItem, X : STA !SINGLE_INDEX_BITMASK_TEMP ; load value to temporary
|
||||||
PHX
|
PHX
|
||||||
LDA !SINGLE_INDEX_TEMP : AND #$07 : TAX ; load 0-7 part into X
|
LDA !SINGLE_INDEX_TEMP : AND #$07 : TAX ; load 0-7 part into X
|
||||||
LDA !SINGLE_INDEX_BITMASK_TEMP
|
LDA !SINGLE_INDEX_BITMASK_TEMP
|
||||||
@@ -1022,7 +1019,7 @@ MarkRNGItemSingle:
|
|||||||
;STA !SINGLE_INDEX_TEMP
|
;STA !SINGLE_INDEX_TEMP
|
||||||
|
|
||||||
LSR #3 : STA !SINGLE_INDEX_OFFSET_TEMP : TAX
|
LSR #3 : STA !SINGLE_INDEX_OFFSET_TEMP : TAX
|
||||||
LDA.l !RNG_ITEM, X
|
LDA.l RNGItem, X
|
||||||
STA.l !SINGLE_INDEX_BITMASK_TEMP
|
STA.l !SINGLE_INDEX_BITMASK_TEMP
|
||||||
LDA.l !SINGLE_INDEX_TEMP : AND #$07 : TAX ; load 0-7 part into X
|
LDA.l !SINGLE_INDEX_TEMP : AND #$07 : TAX ; load 0-7 part into X
|
||||||
LDA.b #01
|
LDA.b #01
|
||||||
@@ -1037,7 +1034,7 @@ MarkRNGItemSingle:
|
|||||||
LDA.l !SINGLE_INDEX_OFFSET_TEMP : TAX
|
LDA.l !SINGLE_INDEX_OFFSET_TEMP : TAX
|
||||||
PLA
|
PLA
|
||||||
ORA.l !SINGLE_INDEX_BITMASK_TEMP
|
ORA.l !SINGLE_INDEX_BITMASK_TEMP
|
||||||
STA.l !RNG_ITEM, X
|
STA.l RNGItem, X
|
||||||
RTS
|
RTS
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
GetRNGItemMulti:
|
GetRNGItemMulti:
|
||||||
@@ -1114,6 +1111,7 @@ JML.l StatsFinalPrep
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
ChestPrep:
|
ChestPrep:
|
||||||
LDA.b #$01 : STA $02E9
|
LDA.b #$01 : STA $02E9
|
||||||
|
JSL.l IncrementChestCounter
|
||||||
LDA.l ServerRequestMode : BEQ +
|
LDA.l ServerRequestMode : BEQ +
|
||||||
JSL.l ChestItemServiceRequest
|
JSL.l ChestItemServiceRequest
|
||||||
RTL
|
RTL
|
||||||
|
|||||||
7
sram.asm
7
sram.asm
@@ -1,4 +1,3 @@
|
|||||||
org 0
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
; SRAM Labels & Assertions
|
; SRAM Labels & Assertions
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -9,6 +8,7 @@ org 0
|
|||||||
; $7F6000 - $7F6FFF in WRAM maps to the next 4k bytes, occupying the 2nd and 3rd vanilla
|
; $7F6000 - $7F6FFF in WRAM maps to the next 4k bytes, occupying the 2nd and 3rd vanilla
|
||||||
; save file locations. ($700500 - $701500)
|
; save file locations. ($700500 - $701500)
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
org 0 ; This module writes no bytes. Asar gives bank cross errors without this.
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
; Room Data ($7EF000 - $7EF27F
|
; Room Data ($7EF000 - $7EF27F
|
||||||
@@ -365,7 +365,8 @@ ExtendedFileNameSRAM: skip 24 ; We read and write the file name directly from
|
|||||||
skip $1AE8 ;
|
skip $1AE8 ;
|
||||||
RomNameSRAM: skip 21 ; ROM name from $FFC0, burned in during init (21 bytes)
|
RomNameSRAM: skip 21 ; ROM name from $FFC0, burned in during init (21 bytes)
|
||||||
; If value in the ROM doesn't match SRAM, save is cleared.
|
; If value in the ROM doesn't match SRAM, save is cleared.
|
||||||
VERSIONSRAM: skip 4 ; ALTTPR ROM version (32 bytes)
|
RomVersionSRAM: skip 4 ; ALTTPR ROM version. Low byte is the version, high byte writes
|
||||||
|
; $01 for now (32-bits total)
|
||||||
skip 4071 ;
|
skip 4071 ;
|
||||||
PasswordSRAM: skip 16 ; Password value (16 bytes)
|
PasswordSRAM: skip 16 ; Password value (16 bytes)
|
||||||
|
|
||||||
@@ -573,7 +574,7 @@ assert InventoryTrackingSRAM = $70038C, "InventoryTracking labeled at incorrect
|
|||||||
assert BowTrackingSRAM = $70038E, "BowTracking labeled at incorrect address"
|
assert BowTrackingSRAM = $70038E, "BowTracking labeled at incorrect address"
|
||||||
assert ExtendedFileNameSRAM = $700500, "ExtendedFilenameSRAM labeled at incorrect address"
|
assert ExtendedFileNameSRAM = $700500, "ExtendedFilenameSRAM labeled at incorrect address"
|
||||||
assert RomNameSRAM = $702000, "RomNameSRAM at incorrect address"
|
assert RomNameSRAM = $702000, "RomNameSRAM at incorrect address"
|
||||||
assert VERSIONSRAM = $702015, "VERSIONSRAM at incorrect address"
|
assert RomVersionSRAM = $702015, "RomVersionSRAM at incorrect address"
|
||||||
assert PasswordSRAM = $703000, "PasswordSRAM at incorrect address"
|
assert PasswordSRAM = $703000, "PasswordSRAM at incorrect address"
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|||||||
Reference in New Issue
Block a user