Reorganize Bank07 free space with pushpc/pullpc

This commit is contained in:
scawful
2023-05-31 11:20:59 -05:00
parent 4e2fbb41b5
commit cda7295783
6 changed files with 96 additions and 113 deletions

View File

@@ -12,13 +12,14 @@ PlayerItem_ReleaseBee:
; LinkItem_Bottle ; LinkItem_Bottle
org $07A15B org $07A15B
JSL LinkItem_NewBottle JSR LinkItem_NewBottle
RTS RTS
; *$3A15B-$3A249 FREE SPACE STILL AVAILABLE ; *$3A15B-$3A249 FREE SPACE STILL AVAILABLE
; ============================================================================= ; =============================================================================
org $2C8000 ; Bank 07 Free Space
org $07FAAD
LinkItem_NewBottle: LinkItem_NewBottle:
{ {
; Check if we have a bottle or not ; Check if we have a bottle or not
@@ -29,29 +30,19 @@ LinkItem_NewBottle:
CMP.b #$03 : BCC .empty_bottle CMP.b #$03 : BCC .empty_bottle
; If no, prepare and call the LinkItem_Bottles routine ; If no, prepare and call the LinkItem_Bottles routine
JSL LinkItem_Bottles_Long JSR LinkItem_Bottles
BRA .exit BRA .exit
.empty_bottle .empty_bottle
; Otherwise, prepare and call the LinkItem_BugCatchingNet routine ; Otherwise, prepare and call the LinkItem_BugCatchingNet routine
JSL LinkItem_BugCatchingNet_Long JSR LinkItem_NewBugCatchingNet
.exit .exit
RTL RTS
} }
; ============================================================================= ; =============================================================================
; Bank 07 Free Space
; Previous Zora Mask
org $07FAAD
LinkItem_BugCatchingNet_Long:
{
PHB : PHK : PLB
JSR LinkItem_NewBugCatchingNet
PLB
RTL
}
pose_id: pose_id:
db $0B, $06, $07, $08, $01, $02, $03, $04, $05, $06 ; up db $0B, $06, $07, $08, $01, $02, $03, $04, $05, $06 ; up
db $01, $02, $03, $04, $05, $06, $07, $08, $01, $02 ; down db $01, $02, $03, $04, $05, $06, $07, $08, $01, $02 ; down
@@ -65,7 +56,6 @@ pose_offset:
db $1E ; right db $1E ; right
; *$3AFF8-$3B072 LOCAL ; *$3AFF8-$3B072 LOCAL
LinkItem_NewBugCatchingNet: LinkItem_NewBugCatchingNet:
{ {
BIT $3A : BVS .y_press BIT $3A : BVS .y_press
@@ -117,14 +107,6 @@ NetExit:
; ============================================================================= ; =============================================================================
LinkItem_Bottles_Long:
{
PHB : PHK : PLB
JSR LinkItem_Bottles
PLB
RTL
}
LinkItem_Bottles: LinkItem_Bottles:
{ {
JSR Link_CheckNewY_ButtonPress : BCC NetExit ; (RTS) JSR Link_CheckNewY_ButtonPress : BCC NetExit ; (RTS)
@@ -165,7 +147,6 @@ LinkItem_Bottles:
RTS RTS
.LinkItem_GreenPotion: .LinkItem_GreenPotion:
JSR $A1A9
LDA $7EF36E : CMP.b #$80 : BNE .can_drink LDA $7EF36E : CMP.b #$80 : BNE .can_drink
BRL $07A955 ; LinkGoBeep TODO(scawful): Investigate BRL $07A955 ; LinkGoBeep TODO(scawful): Investigate
@@ -181,7 +162,7 @@ LinkItem_Bottles:
LDA.b #$07 : STA $0208 LDA.b #$07 : STA $0208
JSL $0DFA58 ; RebuildHUD_long TODO(scawful) JSL $0DFA58 ; RebuildHUD_long TODO(scawful)
RTS BRA .bottle_exit
.LinkItem_BluePotion: .LinkItem_BluePotion:
LDA $7EF36C : CMP $7EF36D : BNE .useBluePotion LDA $7EF36C : CMP $7EF36D : BNE .useBluePotion
@@ -200,14 +181,14 @@ LinkItem_Bottles:
LDA.b #$07 : STA.w $0208 LDA.b #$07 : STA.w $0208
JSL $0DFA58 ; RebuildHUD_Long TODO(scawful) JSL $0DFA58 ; RebuildHUD_Long TODO(scawful)
RTS BRA .bottle_exit
.LinkItem_FairyBottle: .LinkItem_FairyBottle:
STZ.w $0301 STZ.w $0301
JSL PlayerItem_SpawnFaerie : BPL .BRANCH_NU JSL PlayerItem_SpawnFaerie : BPL .released
BRL $07A955 BRL $07A955
.BRANCH_NU: .released:
LDA.b #$02 : STA.l $7EF35C, X LDA.b #$02 : STA.l $7EF35C, X
JSL $0DFA58 ; RebuildHUD_Long TODO(scawful) JSL $0DFA58 ; RebuildHUD_Long TODO(scawful)
BRA .bottle_exit BRA .bottle_exit
@@ -225,4 +206,6 @@ LinkItem_Bottles:
RTS RTS
} }
print pc
; ============================================================================= ; =============================================================================

View File

@@ -1,11 +1,7 @@
; ============================================================================= ; =============================================================================
; Deku Mask ; Deku Mask
; ============================================================================= ; =============================================================================
; Link Sprite hook
org $008A01
LDA $BC
; ============================================================================= ; =============================================================================
@@ -14,6 +10,52 @@ incbin gfx/deku_link.bin
; ============================================================================= ; =============================================================================
org $07A64B ; formerly Quake
LinkItem_DekuMask:
{
; Check for R button held
LDA $F2 : CMP #$10 : BNE .return
JSR Link_CheckNewY_ButtonPress : BCC .return
LDA $3A : AND.b #$BF : STA $3A ; clear the Y button state
LDA $6C : BNE .return ; in a doorway
LDA $0FFC : BNE .return ; can't open menu
LDY.b #$04 : LDA.b #$23
JSL AddTransformationCloud
LDA.b #$14 : JSR Player_DoSfx2
LDA $02B2 : CMP #$01 : BEQ .unequip ; is the deku mask on?
JSL Palette_ArmorAndGloves ; set the palette
LDA.l $7EF359 : STA $0AA5 ; Store the current sword
LDA.l $7EF35A : STA $0AAF ; Store the current shield
LDA.b #$00 : STA $7EF359 : STA $7EF35A ; Clear the sword and shield
LDA #$02 : STA $7E03FC ; Set the override to Bow (pea shooter)
LDA #$35 : STA $BC ; put the mask on
LDA #$01 : STA $02B2
BRA .return
.unequip
JSL Palette_ArmorAndGloves
STZ $5D
; Restore the sword and shield
LDA $0AA5 : STA.l $7EF359
LDA $0AAF : STA.l $7EF35A
LDA #$00 : STA $7E03FC ; clear the override
LDA #$10 : STA $BC : STZ $02B2 ; take the mask off
.return
RTS
}
; =============================================================================
org $079CD9 org $079CD9
JSL LinkItem_CheckForSwordSwing_Masks JSL LinkItem_CheckForSwordSwing_Masks
@@ -113,51 +155,6 @@ LinkItem_SlingshotPrepare:
} }
; =============================================================================
org $07A64B ; formerly Quake
LinkItem_DekuMask:
{
; Check for R button held
LDA $F2 : CMP #$10 : BNE .return
JSR Link_CheckNewY_ButtonPress : BCC .return
LDA $3A : AND.b #$BF : STA $3A ; clear the Y button state
LDA $6C : BNE .return ; in a doorway
LDA $0FFC : BNE .return ; can't open menu
LDY.b #$04 : LDA.b #$23
JSL AddTransformationCloud
LDA.b #$14 : JSR Player_DoSfx2
LDA $02B2 : CMP #$01 : BEQ .unequip ; is the deku mask on?
JSL Palette_ArmorAndGloves ; set the palette
LDA.l $7EF359 : STA $0AA5 ; Store the current sword
LDA.l $7EF35A : STA $0AAF ; Store the current shield
LDA.b #$00 : STA $7EF359 : STA $7EF35A ; Clear the sword and shield
LDA #$02 : STA $7E03FC ; Set the override to Bow (pea shooter)
LDA #$35 : STA $BC ; put the mask on
LDA #$01 : STA $02B2
BRA .return
.unequip
JSL Palette_ArmorAndGloves
STZ $5D
; Restore the sword and shield
LDA $0AA5 : STA.l $7EF359
LDA $0AAF : STA.l $7EF35A
LDA #$00 : STA $7E03FC ; clear the override
LDA #$10 : STA $BC : STZ $02B2 ; take the mask off
.return
RTS
}
; ============================================================================= ; =============================================================================
@@ -165,8 +162,8 @@ org $07811A
JSR Link_HandleDekuTransformation JSR Link_HandleDekuTransformation
; Bank 07 Free Space ; Bank 07 Free Space
; Previous function LinkState_CheckMinishTile ; TODO: CHECK IF THIS ACTUALLY EXECUTES CAUSE I'M NOT SURE IT DOES
org $07F903 pullpc
Link_HandleDekuTransformation: Link_HandleDekuTransformation:
{ {
LDA $5D : CMP.b #$0A : BEQ .continue LDA $5D : CMP.b #$0A : BEQ .continue
@@ -181,5 +178,4 @@ Link_HandleDekuTransformation:
RTS RTS
} }
pushpc
print "==> Link_HandleDekuTransformation ", pc

View File

@@ -13,6 +13,10 @@ org $078028
; ============================================================================= ; =============================================================================
; Link Sprite hook
org $008A01
LDA $BC
org $008827 org $008827
JSL StartupMasks JSL StartupMasks
@@ -24,8 +28,8 @@ org $1BEDF9
org $1BEE1B org $1BEE1B
JSL Palette_ArmorAndGloves_part_two JSL Palette_ArmorAndGloves_part_two
RTL RTL
org $278000 org $3A8000
StartupMasks: StartupMasks:
{ {
; from vanilla: ; from vanilla:
@@ -40,9 +44,6 @@ StartupMasks:
; ============================================================================= ; =============================================================================
org $398000
Palette_ArmorAndGloves: Palette_ArmorAndGloves:
{ {
LDA $02B2 : CMP #$01 : BEQ .deku_mask LDA $02B2 : CMP #$01 : BEQ .deku_mask
@@ -161,6 +162,8 @@ Overworld_CgramAuxToMain_Override:
RTL RTL
} }
; =============================================================================
org $02C769 org $02C769
Overworld_CgramAuxToMain: Overworld_CgramAuxToMain:
{ {
@@ -168,8 +171,4 @@ Overworld_CgramAuxToMain:
RTS RTS
} }
; no glove color (don't think this does anything?)
org $0DEE24
db $80
; ============================================================================= ; =============================================================================

View File

@@ -4,7 +4,7 @@
; Reacts to Tile ID 64 to transform into Minish Link ; Reacts to Tile ID 64 to transform into Minish Link
; ============================================================================= ; =============================================================================
org $3A8000 org $398000
incbin gfx/minish_link.4bpp incbin gfx/minish_link.4bpp
; ============================================================================= ; =============================================================================
@@ -12,10 +12,9 @@ incbin gfx/minish_link.4bpp
org $07DA2A org $07DA2A
TileDetection_OverworldAttributeJumpTable: TileDetection_OverworldAttributeJumpTable:
; Tile ID 64
org $07DAF2 org $07DAF2
dw LinkState_CheckForMinishForm dw LinkState_CheckForMinishForm ; Tile ID 64
dw LinkState_CheckMinishTile dw LinkState_CheckMinishTile ; Tile ID 65
; ============================================================================= ; =============================================================================
@@ -49,7 +48,7 @@ LinkState_CheckForMinishForm:
RTS RTS
} }
print "==> LinkState_CheckForMinishForm ", pc ; =============================================================================
LinkState_CheckMinishTile: LinkState_CheckMinishTile:
{ {
@@ -64,5 +63,6 @@ LinkState_CheckMinishTile:
RTS RTS
} }
print "==> LinkState_CheckMinishTile ", pc
pushpc
print "==> LinkState_CheckMinishTile ", pc

View File

@@ -57,8 +57,7 @@ LinkItem_ShovelAndFlute:
; ============================================================================= ; =============================================================================
; Bank 07 Free Space ; Bank 07 Free Space
; Previous routine `Link_HandleDekuTransformation` pullpc
org $07F914
LinkItem_WolfMask: LinkItem_WolfMask:
{ {
LDA $02B2 : CMP #$03 : BNE .equip LDA $02B2 : CMP #$03 : BNE .equip
@@ -88,6 +87,4 @@ LinkItem_WolfMask:
.return .return
CLC CLC
RTS RTS
} }
print "==> LinkItem_WolfMask ", pc

View File

@@ -1,11 +1,19 @@
; ============================================================================= ; =============================================================================
; Zora Mask ; Zora Mask - by scawful
; Fairy Flippers RAM Position $7EF33C - 01 ; Based on the Fairy Flippers item by Conn
; Normal Flippers RAM Position $7EF356 - 01 ; Special Thanks to Zarby89 for the PaletteArmorAndGloves hook
;
; Transforms Link into Zora Link
; Allows Link to dive underwater in the overworld and dungeons as Zora Link.
;
; How To Use:
; Press R to transform into Zora Link. Press R again to transform back.
; Press Y in deep water to dive. Press Y again to resurface.
; ;
; Underwater Flag RAM Position $7F500E ; RAM Used:
; ============================================================================= ; $02B2 - Current Form
; $0AAB - Diving Flag
;
; ============================================================================= ; =============================================================================
org $368000 org $368000
@@ -97,7 +105,8 @@ org $07C307
; Bank07 Free Space ; Bank07 Free Space
; Predecessor: Wolf Mask I think ; Predecessor: Wolf Mask I think
org $07F95D ; org $07F95D
pullpc
LinkState_UsingZoraMask: LinkState_UsingZoraMask:
{ {
; Check if the mask is equipped ; Check if the mask is equipped
@@ -209,7 +218,7 @@ LinkState_UsingZoraMask:
LDA $0114 : CMP #$85 : BEQ .return_default LDA $0114 : CMP #$85 : BEQ .return_default
LDA $0114 : CMP #$09 : BEQ .return_default LDA $0114 : CMP #$09 : BEQ .return_default
LDA $5B : CMP #$02 : BEQ .player_is_falling LDA $5B : CMP #$02 : BEQ .dungeon_stairs
; Check if the ground level is safe ; Check if the ground level is safe
; Otherwise, eject the player back to the surface ; Otherwise, eject the player back to the surface
@@ -286,5 +295,4 @@ LinkState_ResetMaskAnimated:
} }
print "==> LinkState_ResetMaskAnimated ", pc print "==> LinkState_ResetMaskAnimated ", pc
pushpc