Bottles/Bug Catching Net, fix menu item icons

This commit is contained in:
scawful
2023-05-13 16:59:16 -05:00
parent 7fd64d89d6
commit 1a8f5e8fe2
9 changed files with 289 additions and 2841 deletions

View File

@@ -2,12 +2,6 @@
; Bottle Net Code
; =============================================================================
org $07B073
Link_CheckNewY_ButtonPress:
org $078028
Player_DoSfx2:
org $1EFE33
PlayerItem_SpawnFaerie:
@@ -18,123 +12,9 @@ PlayerItem_ReleaseBee:
; LinkItem_Bottle
org $07A15B
JMP $FFA0 ; Local Bank Conditional
; =============================================================================
; $07FFA0
org $07FFA0
{
LDA $030D
BNE $07FFBD
LDA $0300
BNE $07FFBD
LDA $7F5020
TAX
LDA $7EF35B, X
CMP #$02
BEQ $07FFBD
JSR $B073
JMP $A15E
; 07FFBD
JMP $AFF8 ; LinkItem_BugCatchingNet
JMP $FAF0 ;
NOP
JSR $B073
STZ $030F
JSL LinkItem_NewBottle
RTS
}
; =============================================================================
; LinkItem_BugCatchingNet
org $07AFF8
{
BIT $3A
BVS $07B029
LDA $6C
BNE $07AFB4
JSR $B073
BCC $07AFB4
LDA $2F
LSR
TAY
LDX $AFF4,Y
LDA $AFCC,X
STA $0300
LDA #$03
STA $3D
STZ $030D
LDA #$10
STA $037A
JSL $8EFEF0
STZ $2E
LDA #$32
JSR $8028
JSR $AE65
LDA $67
AND #$F0
STA $67
DEC $3D
BPL $07B072
LDX $030D
INX
STX $030D
LDA #$03
STA $3D
LDA $2F
LSR
TAY
LDA $AFF4,Y
CLC
ADC $030D
TAY
LDA $AFCC,Y
STA $0300
CPX #$0A
BNE $07B072
STZ $030D
STZ $0300
LDA $3A
AND #$80
STA $3A
STZ $037A
JSL $8EFEF8
STA $50
LDA #$80
STA $44
STA $45
RTS
}
; 07B073
org $07B073
{
BIT $3A
BVS $07B085
LDA $46
BNE $07B085
LDA $F4
AND #$40
BEQ $07B085
TSB $3A
SEC
RTS
; 07B085
org $07B085
CLC
RTS
}
; $8EFEF0
LDA #$01
TSB $50
STA $0112
RTL
; *$3A15B-$3A249 FREE SPACE STILL AVAILABLE
; =============================================================================
@@ -148,122 +28,28 @@ LinkItem_NewBottle:
; Check if the bottle is empty
CMP.b #$03 : BCC .empty_bottle
; If so, prepare and call the LinkItem_Bottles routine
JSR LinkItem_Bottles
; If no, prepare and call the LinkItem_Bottles routine
JSL LinkItem_Bottles_Long
BRA .exit
.empty_bottle
; Otherwise, prepare and call the LinkItem_BugCatchingNet routien
JSR LinkItem_BugCatchingNet
; Otherwise, prepare and call the LinkItem_BugCatchingNet routine
JSL LinkItem_BugCatchingNet_Long
.exit
RTL
}
; =============================================================================
; *$3A15B-$3A249 JUMP LOCATION
LinkItem_Bottles:
org $07FA9F
LinkItem_BugCatchingNet_Long:
{
LDA.b $3A : AND.b #$BF : STA.b $3A
; Check if we have a bottle or not
LDA.l $7EF34F : DEC A : TAX
LDA.l $7EF35C, X : BEQ .exit ; (RTS)
CMP.b #$03 : BCC .LinkItem_UselessBottle
CMP.b #$03 : BEQ .LinkItem_RedPotion
CMP.b #$04 : BEQ .LinkItem_GreenPotion
CMP.b #$05 : BEQ .LinkItem_BluePotion
CMP.b #$06 : BEQ .fairy
BRL .LinkItem_BeeBottle
.exit
RTS
.fairy:
BRL .LinkItem_FairyBottle
.LinkItem_RedPotion:
LDA.l $7EF36C : CMP.l $7EF36D : BNE .can_drink_red
.LinkItem_UselessBottle:
BRL $07A955 ; LinkGoBeep TODO(scawful): Investigate
.can_drink_red:
LDA.b #$02 : STA.l $7EF35C, X : STZ.w $0301
LDA.b #$04 : STA.b $11
LDA.b $10 : STA.w $010C
LDA.b #$0E : STA.b $10
LDA.b #$07 : STA.w $0208
JSL $0DFA58
RTS
.LinkItem_GreenPotion:
LDA $7EF36E : CMP.b #$80 : BNE .can_drink
BRL $07A955 ; LinkGoBeep TODO(scawful): Investigate
.can_drink:
LDA $02 : STA $7EF35C, X : STZ $0301
; submodule ????
LDA.b #$08 : STA $11
LDA $10 : STA $010C
; Go to text mode
LDA.b #$0E : STA $10
LDA.b #$07 : STA $0208
JSL $0DFA58 ; RebuildHUD_long TODO(scawful)
BRA .bottle_exit
.LinkItem_BluePotion:
LDA $7EF36C : CMP $7EF36D : BNE .useBluePotion
LDA $7EF36E : CMP.b #$80 : BNE .useBluePotion
BRL $07A955
.useBluePotion
LDA.b #$02 : STA $7EF35C, X : STZ $0301
; more submodule code
LDA.b #$09 : STA.b $11
LDA.b $10 : STA.w $010C
; Go to text mode (?)
LDA.b #$0E : STA.b $10
LDA.b #$07 : STA.w $0208
JSL $0DFA58 ; RebuildHUD_Long TODO(scawful)
BRA .bottle_exit
.LinkItem_FairyBottle:
STZ.w $0301
JSL PlayerItem_SpawnFaerie : BPL .BRANCH_NU
BRL $07A955
.BRANCH_NU:
LDA.b #$02 : STA.l $7EF35C, X
JSL $0DFA58 ; RebuildHUD_Long TODO(scawful)
BRA .bottle_exit
.LinkItem_BeeBottle:
STZ.w $0301
JSL PlayerItem_ReleaseBee : BPL .bee_spawn_success
BRL $07A955 ; LinkGoBeep
.bee_spawn_success
LDA.b #$02 : STA.l $7EF35C, X
JSL $0DFA58 ; RebuildHUD_Long TODO(scawful)
.bottle_exit:
RTS
PHB : PHK : PLB
JSR LinkItem_NewBugCatchingNet
PLB
RTL
}
; =============================================================================
pose_id:
db $0B, $06, $07, $08, $01, $02, $03, $04, $05, $06 ; up
db $01, $02, $03, $04, $05, $06, $07, $08, $01, $02 ; down
@@ -277,8 +63,15 @@ pose_offset:
db $1E ; right
; *$3AFF8-$3B072 LOCAL
LinkItem_BugCatchingNet:
LinkItem_NewBugCatchingNet:
{
BIT $3A : BVS .y_press
LDA $6C : BNE .bottle_exit ; (RTS)
JSR Link_CheckNewY_ButtonPress : BCC .bottle_exit ; (RTS)
LDA $2F : LSR A : TAY
LDX pose_offset, Y
LDA pose_id, X : STA $0300
@@ -291,20 +84,20 @@ LinkItem_BugCatchingNet:
STZ $2E
; LDA.b #$32 : JSL Player_DoSfx2
LDA.b #$32 : JSR Player_DoSfx2
.y_press:
JSR Unknown ; $3AE65 IN ROM
LDA $67 : AND.b #$F0 : STA $67
DEC $3D : BPL .BRANCH_BETA
DEC $3D : BPL .bottle_exit
LDX $030D : INX : STX $030D
LDA.b #$03 : STA $3D
LDA $2F : LSR A : TAY
LDA pose_offset, Y : CLC : ADC $030D : TAY
LDA pose_id, Y : STA $0300
CPX.b #$0A : BNE .BRANCH_BETA
CPX.b #$0A : BNE .bottle_exit
STZ $030D
STZ $0300
@@ -315,7 +108,7 @@ LinkItem_BugCatchingNet:
LDA $50 : AND.b #$FE : STA $50
LDA.b #$80 : STA $44 : STA $45
.BRANCH_BETA:
.bottle_exit:
RTS
}
@@ -341,9 +134,122 @@ Unknown:
STZ $67
.BRANCH_BETA:
.BRANCH_BETA:
NetExit:
RTS
}
print "Next address for jump in bank07: ", pc
; =============================================================================
org $07FB71
LinkItem_Bottles_Long:
{
PHB : PHK : PLB
JSR LinkItem_Bottles
PLB
RTL
}
LinkItem_Bottles:
{
JSR Link_CheckNewY_ButtonPress : BCC NetExit ; (RTS)
LDA.b $3A : AND.b #$BF : STA.b $3A
; Check if we have a bottle or not
LDA.l $7EF34F : DEC A : TAX
LDA.l $7EF35C, X : BEQ NetExit ; (RTS)
CMP.b #$03 : BCC .LinkItem_UselessBottle
CMP.b #$03 : BEQ .LinkItem_RedPotion
CMP.b #$04 : BEQ .LinkItem_GreenPotion
CMP.b #$05 : BEQ .LinkItem_BluePotion
CMP.b #$06 : BEQ .fairy
BRL .LinkItem_BeeBottle
.fairy:
BRL .LinkItem_FairyBottle
.LinkItem_RedPotion:
LDA.l $7EF36C : CMP.l $7EF36D : BNE .can_drink_red
.LinkItem_UselessBottle:
BRL $07A955 ; LinkGoBeep TODO(scawful): Investigate
.can_drink_red:
LDA.b #$02 : STA.l $7EF35C, X : STZ.w $0301
LDA.b #$04 : STA.b $11
LDA.b $10 : STA.w $010C
LDA.b #$0E : STA.b $10
LDA.b #$07 : STA.w $0208
JSL $0DFA58
RTS
.LinkItem_GreenPotion:
JSR $A1A9
LDA $7EF36E : CMP.b #$80 : BNE .can_drink
BRL $07A955 ; LinkGoBeep TODO(scawful): Investigate
.can_drink:
LDA $02 : STA $7EF35C, X : STZ $0301
; submodule ????
LDA.b #$08 : STA $11
LDA $10 : STA $010C
; Go to text mode
LDA.b #$0E : STA $10
LDA.b #$07 : STA $0208
JSL $0DFA58 ; RebuildHUD_long TODO(scawful)
RTS
.LinkItem_BluePotion:
LDA $7EF36C : CMP $7EF36D : BNE .useBluePotion
LDA $7EF36E : CMP.b #$80 : BNE .useBluePotion
BRL $07A955
.useBluePotion
LDA.b #$02 : STA $7EF35C, X : STZ $0301
; more submodule code
LDA.b #$09 : STA.b $11
LDA.b $10 : STA.w $010C
; Go to text mode (?)
LDA.b #$0E : STA.b $10
LDA.b #$07 : STA.w $0208
JSL $0DFA58 ; RebuildHUD_Long TODO(scawful)
RTS
.LinkItem_FairyBottle:
STZ.w $0301
JSL PlayerItem_SpawnFaerie : BPL .BRANCH_NU
BRL $07A955
.BRANCH_NU:
LDA.b #$02 : STA.l $7EF35C, X
JSL $0DFA58 ; RebuildHUD_Long TODO(scawful)
BRA .bottle_exit
.LinkItem_BeeBottle:
STZ.w $0301
JSL PlayerItem_ReleaseBee : BPL .bee_spawn_success
BRL $07A955 ; LinkGoBeep
.bee_spawn_success
LDA.b #$02 : STA.l $7EF35C, X
JSL $0DFA58 ; RebuildHUD_Long TODO(scawful)
.bottle_exit:
RTS
}
; =============================================================================

View File

@@ -30,8 +30,6 @@ Link_HandleDekuTransformation:
RTS
}
print "here", pc
org $07811A
JSR Link_HandleDekuTransformation

File diff suppressed because it is too large Load Diff

View File

@@ -34,22 +34,10 @@ org $07B073
org $078028
Player_DoSfx2:
; =============================================================================
org $008827
JSL StartupMasks
org $1BEDF9
JSL Palette_ArmorAndGloves ; 4bytes
RTL ; 1byte
NOP #$01
org $1BEE1B
JSL Palette_ArmorAndGloves_part_two
RTL
; =============================================================================
JSL StartupMasks
org $278000
StartupMasks:
@@ -66,16 +54,15 @@ StartupMasks:
; =============================================================================
CancelMask:
{
JSL Palette_ArmorAndGloves
LDA #$10 : STA $BC : STZ $02B2
org $1BEDF9
JSL Palette_ArmorAndGloves ; 4bytes
RTL ; 1byte
NOP #$01
org $1BEE1B
JSL Palette_ArmorAndGloves_part_two
RTL
}
; =============================================================================
; Code :
org $398000
Palette_ArmorAndGloves:
{
@@ -239,7 +226,54 @@ LinkState_ResetMaskAnimated:
RTL
}
print "Next address for jump in bank07: ", pc
Link_CheckNewL_ButtonPress:
{
; Check if the L button is already down.
BIT $3B : BVS .noNewInput
; Flag to see if Link is recoiling from damage or other stuff.
LDA $46 : BNE .noNewInput
; Check joypad readings for new input during this frame.
LDA $F6 : AND.b #$08 : BEQ .noNewInput ; AND with 00001000 to isolate L
TSB $3B
SEC
RTS
.noNewInput
; I'm guessing this is like a cancel indicator.
CLC
RTS
}
Link_CheckNewR_ButtonPress:
{
; Check if the R button is already down.
BIT $3B : BVS .noNewInput
; Flag to see if Link is recoiling from damage or other stuff.
LDA $46 : BNE .noNewInput
; Check joypad readings for new input during this frame.
LDA $F6 : AND.b #$04 : BEQ .noNewInput ; AND with 00000100 to isolate R
TSB $3B
SEC
RTS
.noNewInput
; I'm guessing this is like a cancel indicator.
CLC
RTS
}
; =============================================================================

View File

@@ -31,6 +31,8 @@ LinkItem_WolfMask:
{
LDA $02B2 : CMP #$03 : BNE .equip
; FIXME: activates whenever you press the Y button
; needs a delay or something?
JSR LinkItem_Shovel
.equip
@@ -61,6 +63,8 @@ LinkItem_WolfMask:
RTS
}
print "End of LinkItem_WolfMask ", pc
; =============================================================================
org $388000

View File

@@ -240,3 +240,5 @@ org $0782D2
org $07C307
JSR LinkState_UsingZoraMask_dungeon_stairs
RTS

View File

@@ -374,6 +374,7 @@ Menu_ScrollFrom:
Menu_ScrollUp:
{
JSL $0DFA58 ; HUD_Rebuild_Long
LDA.b #$12 : STA.w $012F ; play menu exit sound effect
SEP #$10
REP #$20
@@ -396,22 +397,23 @@ Menu_ScrollUp:
; =============================================================================
; 09 CHECK BOTTLE
print pc
Menu_CheckBottle:
{
LDA.w $0202 : CMP.b #$06 : BNE .not_first
LDA.b #$01 : BRA .prepare_bottle
LDA.b #$0001 : JMP .prepare_bottle
.not_first
LDA.w $0202 : CMP.b #$0C : BNE .not_second
LDA.b #$02 : BRA .prepare_bottle
LDA.b #$0002 : JMP .prepare_bottle
.not_second
LDA.w $0202 : CMP.b #$12 : BNE .not_third
LDA.b #$03 : BRA .prepare_bottle
LDA.b #$03 : JMP .prepare_bottle
.not_third
LDA.w $0202 : CMP.b #$18 : BNE .not_any
LDA.b #$04 : BRA .prepare_bottle
LDA.b #$04
.prepare_bottle
STA.l $7EF34F
@@ -427,7 +429,6 @@ Menu_CheckBottle:
Menu_Exit:
{
JSL LinkState_ResetMaskAnimated
REP #$20
; reset submodule

View File

@@ -105,7 +105,7 @@ BookGFX:
; -------------------------------------
BottlesGFX:
dw $2044, $2045, $2046, $2047 ; Mushroom
dw $2044, $2045, $2046, $2047 ; Mushroom
dw $2837, $2838, $2CC3, $2CD3 ; Empty bottle
dw $24D2, $64D2, $24E2, $24E3 ; Red potion
dw $3CD2, $7CD2, $3CE2, $3CE3 ; Green potion

View File

@@ -319,14 +319,27 @@ HUD_UpdateItemBox:
LDA.w #$0001
.bombsNotEquipped
CPX.w #$0010 : BNE .bottleNotEquipped
TXY : TAX : LDA $7EF35B, X : AND.w #$00FF : TYX
.bottleNotEquipped
CPX.w #$0006 : BNE .bottle1NotEquipped
JMP .loadBottleContent
.bottle1NotEquipped
CPX.w #$000C : BNE .bottle2NotEquipped
LDA.w #$0002
JMP .loadBottleContent
.bottle2NotEquipped
CPX.w #$0012 : BNE .bottle3NotEquipped
LDA.w #$0003
JMP .loadBottleContent
.bottle3NotEquipped
CPX.w #$0018 : BNE .bottleNotEquipped
LDA.w #$0004
.loadBottleContent
TXY : TAX : LDA $7EF35B, X : AND.w #$00FF : TYX
.bottleNotEquipped
STA $02
TXA : DEC A : ASL A : TAX
LDA $FA93, X : STA $04
; LDA.w HudItems, X : STA $04
LDA $02 : ASL #3 : TAY
; These addresses form the item box graphics.
@@ -412,15 +425,6 @@ HexToDecimal:
; =============================================================================
; dw BowsGFX, BoomsGFX, HookGFX
; dw BombsGFX, PowderGFX, BottlesGFX
; dw HammerGFX, LampGFX, Fire_rodGFX
; dw Ice_rodGFX, MirrorGFX, BottlesGFX
; dw OcarinaGFX, BookGFX, SomariaGFX
; dw ByrnaGFX, JumpFeatherGFX, BottlesGFX
; dw DekuMaskGFX, ZoraMaskGFX, WolfMaskGFX
; dw BunnyHoodGFX, StoneMaskGFX, BottlesGFX
; $6FA93-$6FAFC DATA
org $0DFA93
HudItems:
@@ -431,13 +435,70 @@ HudItems:
dw $F701, $F6F1, $F6A1, $F6B1, $F7C9, $F751
; flute, book, somaria, byrna, feather, bottle3
dw $F711, $F741, $F799, $F7A9, $F731, $F751
; bombos, quake, ether, stone mask
dw $F6E1, $F6C1, $F6D1, $F7B9, $F811, $F751
; deku, zora, wolf, bunny, stne
dw $F6E1, $F821, $F6D1, $F7B9, $F811, $F751
}
org $0DF751
dw $20F5, $20F5, $20F5, $20F5 ; No bottle
dw $2044, $2045, $2046, $2047 ; Mushroom
dw $2837, $2838, $2CC3, $2CD3 ; Empty bottle
dw $24D2, $64D2, $24E2, $24E3 ; Red potion
dw $3CD2, $7CD2, $3CE2, $3CE3 ; Green potion
dw $2CD2, $6CD2, $2CE2, $2CE3 ; Blue potion
dw $2855, $6855, $2C57, $2C5A ; Fairy
dw $2837, $2838, $2839, $283A ; Bee
dw $2837, $2838, $2839, $283A ; Good bee
; Boomerang
org $0DF651
dw $2CB8, $2CB9, $2CF5, $2CC9 ; Blue boomerang
dw $24B8, $24B9, $24F5, $24C9 ; Red boomerang
dw $20F5, $20F5, $20F5, $20F5 ; No boomerang
dw $2CB8, $2CB9, $2CC9, $ACB9 ; Blue boomerang
dw $24B8, $24B9, $24C9, $A4B9 ; Red boomerang
; Powder
org $0DF689
dw $20F5, $20F5, $20F5, $20F5 ; No powder
dw $2444, $2445, $2446, $2447 ; Mushroom
dw $283B, $283C, $283D, $283E ; Powder
; Hammer
org $0DF701
dw $20F5, $20F5, $20F5, $20F5 ; No
dw $24B6, $24B7, $20C6, $24C7 ; Hammer
; Mirror
org $0DF7C9
dw $20F5, $20F5, $20F5, $20F5 ; No mirror
dw $2C62, $2C63, $2C72, $2C73 ; Mirror
; Byrna
org $0DF7A9
dw $20F5, $20F5, $20F5, $20F5 ; No Byrna
dw $2CDC, $2CDD, $2CEC, $2CED ; Cane of Byrna
org $0DF6E1
dw $20F5, $20F5, $20F5, $20F5 ; No bombos
dw $2066, $6066, $2076, $6076 ; Deku Mask
; Zora
org $0DF821
dw $20F5, $20F5, $20F5, $20F5
dw $2C88, $6C88, $2C89, $6C89
dw $2C88, $6C88, $2C89, $6C89
; Wolf
org $0DF6D1
dw $3086, $7086, $3087, $7087
; Bunny
org $0DF7B9
dw $3469, $7469, $3479, $7479
; Stone Mask
org $0DF811
dw $20F5, $20F5, $20F5, $20F5
dw $30B4, $30B5, $30C4, $30C5
; =============================================================================
; $6FE77-$6FFC0
@@ -462,7 +523,7 @@ HUD_Tilemap:
dw $201B, $344B
dw $344B, $344B, $344B, $344B
; item frame left part
; item frame left part
dw $20DE, $207F, $207F, $20DF
dw $207F, $207F, $207F, $207F, $207F, $207F, $207F, $207F