Merge branch 'master' into master

This commit is contained in:
spannerisms
2021-04-03 00:31:23 -04:00
committed by GitHub
12 changed files with 96 additions and 49 deletions

View File

@@ -6,7 +6,8 @@
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
IncrementBombs: IncrementBombs:
LDA !BOMB_UPGRADES ; get bomb upgrades LDA !BOMB_UPGRADES ; get bomb upgrades
!ADD.l StartingMaxBombs : DEC !ADD.l StartingMaxBombs : BEQ + ; Skip if we can't have bombs
DEC
CMP !BOMB_CURRENT CMP !BOMB_CURRENT

View File

@@ -78,6 +78,12 @@ OnAga2Defeated:
JSL.l Dungeon_SaveRoomData_justKeys ; thing we wrote over, make sure this is first JSL.l Dungeon_SaveRoomData_justKeys ; thing we wrote over, make sure this is first
JML.l IncrementAgahnim2Sword JML.l IncrementAgahnim2Sword
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
OnFileCreation:
TAX ; what we wrote over
LDA StartingEquipment+$4C : STA $700340+$4C ; copy starting equipment swaps to file select screen
LDA StartingEquipment+$4E : STA $700340+$4E
RTL
;--------------------------------------------------------------------------------
!RNG_ITEM_LOCK_IN = "$7F5090" !RNG_ITEM_LOCK_IN = "$7F5090"
OnFileLoad: OnFileLoad:
REP #$10 ; set 16 bit index registers REP #$10 ; set 16 bit index registers
@@ -145,8 +151,16 @@ OnNewFile:
+ +
LDA StartingSword : STA $7EF359 ; set starting sword type LDA StartingSword : STA $7EF359 ; set starting sword type
LDA !INVENTORY_SWAP : STA $70038C ; copy starting equipment swaps to file select screen
LDA !INVENTORY_SWAP_2 : STA $70038E ; reset some values on new file that are otherwise only reset on hard reset
STZ $03C4 ; ancilla slot index
STZ $047A ; EG
STZ $0B08 : STZ $0B09 ; arc variable
STZ $0CFB ; enemies killed (pull trees)
STZ $0CFC ; times taken damage (pull trees)
STZ $0FC7 : STZ $0FC8 : STZ $0FC9 : STZ $0FCA : STZ $0FCB : STZ $0FCC : STZ $0FCD ; prize packs
LDA #$00 : STA $7EC011 ; mosaic
JSL InitRNGPointerTable ; boss RNG
PLP : PLX PLP : PLX
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------

View File

@@ -261,7 +261,9 @@ org $0CCE85 ; <- Bank0C.asm : 1953 (LDA $C8 : ASL A : INC #2 : STA $701FFE)
NOP #4 NOP #4
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
org $0CDB4C ; <- Bank0C.asm : 3655 (LDA $C8 : ASL A : INC #2 : STA $701FFE : TAX) org $0CDB4C ; <- Bank0C.asm : 3655 (LDA $C8 : ASL A : INC #2 : STA $701FFE : TAX)
NOP #4 JSL OnFileCreation
NOP
;Additionally, display inventory swap starting equipment on file select
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
org $09F5EA ; <- module_death.asm : 510 (LDA $701FFE : TAX : DEX #2) org $09F5EA ; <- module_death.asm : 510 (LDA $701FFE : TAX : DEX #2)
LDA.w #$0002 : NOP LDA.w #$0002 : NOP

View File

@@ -56,5 +56,6 @@ RTL
Init_PostRAMClear: Init_PostRAMClear:
JSL MSUInit JSL MSUInit
JSL InitRNGPointerTable
JML $00D463 ; The original target of the jump table that we hijacked JML $00D463 ; The original target of the jump table that we hijacked

View File

@@ -124,7 +124,9 @@ RTL
;ProcessBottleMenu: ;ProcessBottleMenu:
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
ProcessBottleMenu: ProcessBottleMenu:
LDA $F4 : AND #$40 : BEQ .y_not_pressed ; skip if Y is not down ; LDA $F6 : AND #$30 : CMP.b #$30 : BEQ .double_shoulder_pressed
; LDA $F4 : AND #$40 : BEQ .y_not_pressed ; skip if Y is not down
; .double_shoulder_pressed
LDA $7EF34F ; check bottle state LDA $7EF34F ; check bottle state
BEQ .no_bottles ; skip if we have no bottles BEQ .no_bottles ; skip if we have no bottles
PHX PHX
@@ -137,9 +139,9 @@ ProcessBottleMenu:
.no_bottles .no_bottles
LDA #$00 ; pretend like the controller state was 0 from the overridden load LDA #$00 ; pretend like the controller state was 0 from the overridden load
RTL RTL
.y_not_pressed ; .y_not_pressed
LDA $F4 : AND.b #$0C ; thing we wrote over - load controller state ; LDA $F4 : AND.b #$0C ; thing we wrote over - load controller state
RTL ;RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
@@ -738,6 +740,7 @@ RTS
Link_ReceiveItem_HUDRefresh: Link_ReceiveItem_HUDRefresh:
LDA $7EF343 : BNE + ; skip if we have bombs LDA $7EF343 : BNE + ; skip if we have bombs
LDA $7EF375 : BEQ + ; skip if we are filling no bombs LDA $7EF375 : BEQ + ; skip if we are filling no bombs
LDA $7EF370 : !ADD.l StartingMaxBombs : BEQ + ; skip if we can't have bombs
DEC : STA $7EF375 ; decrease bomb fill count DEC : STA $7EF375 ; decrease bomb fill count
LDA.b #$01 : STA $7EF343 ; increase actual bomb count LDA.b #$01 : STA $7EF343 ; increase actual bomb count
+ +
@@ -753,6 +756,7 @@ RTL
HandleBombAbsorbtion: HandleBombAbsorbtion:
STA $7EF375 ; thing we wrote over STA $7EF375 ; thing we wrote over
LDA $0303 : BNE + ; skip if we already have some item selected LDA $0303 : BNE + ; skip if we already have some item selected
LDA $7EF370 : !ADD.l StartingMaxBombs : BEQ + ; skip if we can't have bombs
LDA.b #$04 : STA $0202 ; set selected item to bombs LDA.b #$04 : STA $0202 ; set selected item to bombs
LDA.b #$01 : STA $0303 ; set selected item to bombs LDA.b #$01 : STA $0303 ; set selected item to bombs
JSL.l HUD_RebuildLong JSL.l HUD_RebuildLong

View File

@@ -12,11 +12,18 @@ RTL
InitOpenMode: InitOpenMode:
LDA.l OpenMode : BEQ + ; Skip if not open mode LDA.l OpenMode : BEQ + ; Skip if not open mode
LDA $7EF3C5 : CMP #$02 : !BGE + ; Skip if already past escape LDA $7EF3C5 : CMP #$02 : !BGE + ; Skip if already past escape
LDA.b #02 : STA $7EF3C5 ; Go to post-escape phase (pre aga1) LDA.b #$02 : STA $7EF3C5 ; Go to post-escape phase (pre aga1)
LDA $7EF3C6 : ORA #$14 : STA $7EF3C6 ; remove uncle LDA $7EF3C6 : ORA #$14 : STA $7EF3C6 ; remove uncle
LDA $7EF3C8 : CMP #$05 : BEQ ++ : LDA.b #$01 : ++ : STA $7EF3C8 ; set spawn points to house+sanc unless already house+sanc+mountain LDA $7EF3C8 : CMP #$05 : BEQ ++ : LDA.b #$01 : ++ : STA $7EF3C8 ; set spawn points to house+sanc unless already house+sanc+mountain
LDA $7EF29B : ORA.b #$20 : STA $7EF29B ; open castle gate LDA $7EF29B : ORA.b #$20 : STA $7EF29B ; open castle gate
RTL JSL MaybeSetPostAgaWorldState
+
RTL
;--------------------------------------------------------------------------------
MaybeSetPostAgaWorldState:
LDA.l InstantPostAgaWorldState : BEQ + ; Skip if not enabled
LDA.b #$03 : STA $7EF3C5 ; Go to post-aga phase
LDA $7EF282 : ORA.b #$20 : STA $7EF282 ; make lumberjack tree accessible
+ +
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------

View File

@@ -38,6 +38,7 @@ QuickSwap:
CPX.b #$01 : BEQ + ; bow CPX.b #$01 : BEQ + ; bow
CPX.b #$05 : BEQ + ; powder CPX.b #$05 : BEQ + ; powder
CPX.b #$0D : BEQ + ; flute CPX.b #$0D : BEQ + ; flute
CPX.b #$10 : BEQ + ; bottle
BRA .store BRA .store
+ STX $0202 : JSL ProcessMenuButtons_y_pressed + STX $0202 : JSL ProcessMenuButtons_y_pressed
@@ -54,20 +55,20 @@ RTL
RCode: RCode:
LDA.w $0202 : TAX LDA.w $0202 : TAX
- -
CPX.b #$0F : BNE + ; incrementing into bottle ; CPX.b #$0F : BNE + ; incrementing into bottle
LDX.b #$00 : BRA ++ ; LDX.b #$00 : BRA ++
+ CPX.b #$10 : BNE + ; incrementing bottle ; + CPX.b #$10 : BNE + ; incrementing bottle
LDA.l $7EF34F : TAX ; LDA.l $7EF34F : TAX
-- : ++ ; -- : ++
CPX.b #$04 : BEQ .noMoreBottles ; CPX.b #$04 : BEQ .noMoreBottles
INX ; INX
LDA.l $7EF35B,X : BEQ -- ; LDA.l $7EF35B,X : BEQ --
TXA : STA.l $7EF34F ; TXA : STA.l $7EF34F
LDX #$10 ; LDX #$10
RTS ; RTS
.noMoreBottles ; .noMoreBottles
LDX #$11 ; LDX #$11
BRA .nextItem ; BRA .nextItem
+ CPX.b #$14 : BNE + : LDX.b #$00 ;will wrap around to 1 + CPX.b #$14 : BNE + : LDX.b #$00 ;will wrap around to 1
+ INX + INX
.nextItem .nextItem
@@ -77,19 +78,19 @@ RTS
LCode: LCode:
LDA.w $0202 : TAX LDA.w $0202 : TAX
- -
CPX.b #$11 : BNE + ; decrementing into bottle ; CPX.b #$11 : BNE + ; decrementing into bottle
LDX.b #$05 : BRA ++ ; LDX.b #$05 : BRA ++
+ CPX.b #$10 : BNE + ; decrementing bottle ; + CPX.b #$10 : BNE + ; decrementing bottle
LDA.l $7EF34F : TAX ; LDA.l $7EF34F : TAX
-- : ++ ; -- : ++
CPX.b #$01 : BEQ .noMoreBottles ; CPX.b #$01 : BEQ .noMoreBottles
DEX ; DEX
LDA.l $7EF35B,X : BEQ -- ; LDA.l $7EF35B,X : BEQ --
TXA : STA.l $7EF34F ; TXA : STA.l $7EF34F
LDX.b #$10 ; LDX.b #$10
RTS ; RTS
.noMoreBottles ; .noMoreBottles
LDX.b #$0F : BRA .nextItem ; LDX.b #$0F : BRA .nextItem
+ CPX.b #$01 : BNE + : LDX.b #$15 ; will wrap around to $14 + CPX.b #$01 : BNE + : LDX.b #$15 ; will wrap around to $14
+ DEX + DEX
.nextItem .nextItem

View File

@@ -107,9 +107,9 @@ RTL
!RNG_POINTERS = "$7F5200" !RNG_POINTERS = "$7F5200"
GetStaticRNG: GetStaticRNG:
PHX : PHP PHX : PHP
REP #$20 ; set 16-bit accumulator and index registers REP #$30 ; set 16-bit accumulator and index registers
AND.w #$007F AND.w #$000F
ASL : TAX : LDA !RNG_POINTERS, X : INC : AND.w #$03FF : STA !RNG_POINTERS, X : TAX : ASL ; increment pointer and move value to X ASL : TAX : LDA !RNG_POINTERS, X : INC : AND.w #$03FF : STA !RNG_POINTERS, X : TAX ; increment pointer and move value to X
LDA Static_RNG, X ; load RNG value LDA Static_RNG, X ; load RNG value
PLP : PLX PLP : PLX
RTL RTL
@@ -123,7 +123,7 @@ InitRNGPointerTable:
LDA.l .rngDefaults, X : STA !RNG_POINTERS, X : INX #2 LDA.l .rngDefaults, X : STA !RNG_POINTERS, X : INX #2
LDA.l .rngDefaults, X : STA !RNG_POINTERS, X : INX #2 LDA.l .rngDefaults, X : STA !RNG_POINTERS, X : INX #2
LDA.l .rngDefaults, X : STA !RNG_POINTERS, X : INX #2 LDA.l .rngDefaults, X : STA !RNG_POINTERS, X : INX #2
CPX.w #$007F : !BLT - CPX.w #$001F : !BLT -
PLP : PLX PLP : PLX
RTL RTL
.rngDefaults .rngDefaults

View File

@@ -1,5 +1,13 @@
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
Validate_SRAM: Validate_SRAM:
REP #$30 ; vanilla behavior from $0CCD45, includes prize pack reset after save and quit
LDX #$00FE : -
STZ $0D00, X
STZ $0E00, X
STZ $0F00, X
DEX #2
BPL -
SEP #$30
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
ClearExtendedSaveFile: ClearExtendedSaveFile:

View File

@@ -244,7 +244,8 @@ IncrementSmallKeysNoPrimary:
LDA $1B : BEQ + ; skip room check if outdoors LDA $1B : BEQ + ; skip room check if outdoors
PHP : REP #$20 ; set 16-bit accumulator PHP : REP #$20 ; set 16-bit accumulator
LDA $048E : CMP.w #$0087 : BNE ++ ; hera basement LDA $048E : CMP.w #$0087 : BNE ++ ; hera basement
PLP : PHY : LDY.b #24 : JSL.l FullInventoryExternal : PLY : BRA + PLP : PHY : LDY.b #$24 : JSL.l FullInventoryExternal
JSR CountChestKey : PLY : BRA +
++ ++
PLP PLP
+ +
@@ -264,12 +265,15 @@ RTL
CountChestKey: ; called by neighbor functions CountChestKey: ; called by neighbor functions
PHA : PHX PHA : PHX
CPY #$24 : BEQ + ; small key for this dungeon - use $040C CPY #$24 : BEQ + ; small key for this dungeon - use $040C
CPY #$A0 : !BLT .end ; Ignore most items CPY #$A0 : !BLT .end ; Ignore most items
CPY #$AE : !BGE .end ; Ignore reserved key and generic key CPY #$AE : !BGE .end ; Ignore reserved key and generic key
TYA : AND.B #$0F : BNE ++ ; If this is a sewers key, instead count it as an HC key TYA : AND.B #$0F : BNE ++ ; If this is a sewers key, instead count it as an HC key
INC INC
++ TAX : BRA .count ; use Key id instead of $040C (Keysanity) ++ TAX : BRA .count ; use Key id instead of $040C (Keysanity)
+ LDA $040C : LSR : TAX + LDA $040C : LSR
BNE +
INC ; combines HC and Sewer counts
+ TAX
.count .count
LDA $7EF4E0, X : INC : STA $7EF4E0, X LDA $7EF4E0, X : INC : STA $7EF4E0, X
.end .end

View File

@@ -381,7 +381,11 @@ org $30808C ; PC 0x18008C
PreopenGanonsTower: PreopenGanonsTower:
db $00 ; #$00 = Off (default) - #$01 = On db $00 ; #$00 = Off (default) - #$01 = On
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
; 0x18008D - 0x18008F (unused) org $30808D ; PC 0x18008D
InstantPostAgaWorldState:
db $00 ; #$00 = Off (default) - #$01 = On
;--------------------------------------------------------------------------------
; 0x18008E - 0x18008F (unused)
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
org $308090 ; PC 0x180090 - 0x180097 org $308090 ; PC 0x180090 - 0x180097
ProgressiveSwordLimit: ProgressiveSwordLimit:

View File

@@ -12,6 +12,7 @@ EndRainState:
LDA $7EF3C5 : CMP.b #$02 : !BGE + ; skip if past escape already LDA $7EF3C5 : CMP.b #$02 : !BGE + ; skip if past escape already
LDA.b #$00 : STA !INFINITE_ARROWS : STA !INFINITE_BOMBS : STA !INFINITE_MAGIC LDA.b #$00 : STA !INFINITE_ARROWS : STA !INFINITE_BOMBS : STA !INFINITE_MAGIC
LDA.b #$02 : STA $7EF3C5 ; end rain state LDA.b #$02 : STA $7EF3C5 ; end rain state
JSL MaybeSetPostAgaWorldState
+ +
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------