zora mask and bottle net disassembly

This commit is contained in:
scawful
2023-03-11 15:06:22 -06:00
parent 800d008013
commit 9c5f076852
5 changed files with 356 additions and 118 deletions

View File

@@ -2,7 +2,6 @@
; Bottle Net Code ; Bottle Net Code
; ============================================================================= ; =============================================================================
org $07B073 org $07B073
Link_CheckNewY_ButtonPress: Link_CheckNewY_ButtonPress:
@@ -19,19 +18,124 @@ PlayerItem_ReleaseBee:
; LinkItem_Bottle ; LinkItem_Bottle
org $07A15B org $07A15B
JMP $FFA0 ; Local Bank Conditional
; =============================================================================
; $07FFA0
org $07FFA0
{ {
BIT $3A : BVS .return ;if Y or B are already pressed LDA $030D
LDA $6C : BNE .return ; if we are standing in a dooray or not BNE $07FFBD
LDA $0300
BNE $07FFBD
LDA $7F5020
TAX
LDA $7EF35B, X
CMP #$02
BEQ $07FFBD
JSR $B073
JMP $A15E
JSR Link_CheckNewY_ButtonPress : BCC .return; Check if we just pressed Y Button ; ; 07FFBD
JMP $AFF8 ; LinkItem_BugCatchingNet
JSL LinkItem_NewBottle JMP $FAF0 ;
NOP
.return JSR $B073
STZ $030F
RTS 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
; ============================================================================= ; =============================================================================
org $338000 org $338000

View File

@@ -72,34 +72,59 @@ LinkItem_UsingZoraMask:
; Disassembled/Debugged Code of Conn's Zora Flippers ; Disassembled/Debugged Code of Conn's Zora Flippers
; May God Give Me Strength ; May God Give Me Strength
; =============================================================================
; 22E0E0
{
LDA $1B
BNE $22E0F7
LDA $7F500E
CMP #$01
BNE $22E0F7
LDA #$01
STA $55
STZ $5D
LDA #$08
STA $5E
RTL
;-------
LDA #$01
STA $4D
RTL
}
; ============================================================================= ; =============================================================================
; 22E100 ; 22E100
LDA $2F {
STA $0323 LDA $2F ; The direction the player is currently facing
JMP $E5F0 STA $0323 ; Mirror of $2F
JMP $E5F0
NOP NOP
NOP NOP
NOP NOP
NOP NOP
LDA $0345 LDA $0345 ; Set to 1 when we are in deep water, 0 otherwise
CMP #$01 CMP #$01 ; Are we in deep water?
BEQ $22E120 BEQ $22E120
LDA $7F500E LDA $7F500E
CMP #$01 CMP #$01
BEQ $22E11C BEQ $22E11C
RTL RTL
}
; ============================================================================= ; =============================================================================
; 22E120 ; 22E120
LDA $F0 {
LDA $F0 ; Joypad 1 Register
CMP #$40 CMP #$40
BEQ $22E12D BEQ .alpha ; $22E12D
LDA #$00 LDA #$00
STA $7F500F STA $7F500F
RTL RTL
;------- ;-------
.alpha
LDA $7F500F LDA $7F500F
CMP #$01 CMP #$01
BNE $22E136 BNE $22E136
@@ -116,26 +141,28 @@ LinkItem_UsingZoraMask:
CMP #$00 CMP #$00
BNE $22E163 BNE $22E163
JMP $E320 JMP $E320
}
; ============================================================================= ; =============================================================================
; 22E17D ; 22E17D
{
LDA $7F500E LDA $7F500E
CMP #$00 CMP #$00
BNE $22E1A3 BNE $22E1A3
LDA $5D LDA $5D ; Player Handler or "State"
CMP #$04 CMP #$04
BEQ $22E18C BEQ $22E18C
RTL RTL
;------- ;-------
LDA #$01 LDA #$01
STA $7F500E STA $7F500E
STZ $5D STZ $5D ; Player Handler or "State"
LDA #$01 LDA #$01
STA $55 STA $55 ; Cape flag
STA $037B STA $037B
LDA #$08 LDA #$08
STA $5E STA $5E ; Speed setting for link
NOP NOP
NOP NOP
NOP NOP
@@ -144,45 +171,97 @@ LinkItem_UsingZoraMask:
LDA #$00 LDA #$00
JSL $22EF80 JSL $22EF80
LDA #$04 LDA #$04
STA $5D STA $5D ; Player Handler or "State"
STZ $55 STZ $55 ; Reset cape flag (invisible invincible)
STZ $5E STZ $5E ; Reset Speed
LDA #$01 LDA #$01
STA $0345 STA $0345 ; Set to 1 when we are in deep water. 0 otherwise
STZ $037B STZ $037B
RTL RTL
}
; ============================================================================= ; =============================================================================
; 22E1E0 ; 22E1E0
; Observed behavior: Triggers when entering and exiting water indoors only
; Returns to 3C30B below
; Noted changes added
LDA $1B {
LDA $1B ; Flag set to 1 when indoors, 0 otherwise
BNE $22E1F7 BNE $22E1F7
LDA $7F500E LDA $7F500E
CMP #$01 CMP #$01
BNE $22E1F7 BNE $22E1F7
LDA #$01 LDA #$01
STA $55 STA $55 ; Set cape flag (invisible invincible)
STZ $5D STZ $5D ; Player Handler or "State"
LDA #$08 LDA #$08
STA $5E STA $5E ; Set player speed
RTL RTL
;------- ;-------
LDA #$06 LDA #$06 ; recoil mode 2
STA $5D STA $5D ; Player Handler or "State"
RTL RTL
}
; =============================================================================
; *$3C2C3-$3C30B LOCAL
{
LDA $1B : BNE .alpha ; Set to 1 if indoors, 0 otherwise
LDX #$02
BRA .beta
.alpha
LDX $1D
LDA $047A : BEQ .beta
LDX #$00 ; Modified from vanilla `LDY.b #$00`
.beta
STX $00
LDA $C2BA, X : TAX
LDA $66 : BNE .gamma
TXA : EOR #$FF : INC : TAX
.gamma
STX $27
STZ $28
LDX $00
LDA $C2BD,X
STA $29 ; vertical resistance
STA $02C7 ; countdown timer
STZ $24 ; z coordinate for link
STZ $25 ; ??? No idea
LDA $C2C0,X
JSL $8EFCE0 ; Dungeon Code (Flippers?)
CMP #$02 : BEQ .delta
JSL $22E0E0
STZ $0360
.delta
JSL $22E1E0
RTS
}
; ============================================================================= ; =============================================================================
; 22E260 ; 22E260
LDA $7EF33C {
LDA $7EF33C ; fairy flippers save ram
AND #$00FF AND #$00FF
CMP #$0001 CMP #$0001
BEQ $22E271 BEQ .has_fairy_flippers ; $22E271
LDA $7EF357 LDA $7EF357
RTL RTL
; ------- ; -------
; 22E271 ; 22E271
.has_fairy_flippers
SEP #$30 SEP #$30
LDA #$3C LDA #$3C
STA $1613 STA $1613
@@ -192,6 +271,7 @@ LinkItem_UsingZoraMask:
REP #$30 REP #$30
LDA $7EF357 LDA $7EF357
RTL RTL
}
; ============================================================================= ; =============================================================================
; 22E2A0 ; 22E2A0
@@ -239,7 +319,7 @@ FairyFlipper_Prepare:
FairyFlippers_RestoreControlHandler: FairyFlippers_RestoreControlHandler:
{ {
LDA $5D ; Player Handler or "State" LDA $5D ; Player Handler or "State"
ASL ASL
TAX TAX
JMP $078106 ; Link_ControlHandler Jump Table Statement JMP $078106 ; Link_ControlHandler Jump Table Statement
@@ -248,43 +328,50 @@ FairyFlippers_RestoreControlHandler:
; ============================================================================= ; =============================================================================
; 22E300 ; 22E300
{
LDA #$00 LDA #$00
STA $5D STA $5D ; Player Handler or "State"
STA $7F500E STA $7F500E
STA $7F500F STA $7F500F
STA $5E STA $5E
STA $0345 STA $0345
JSL $00E3FA JSL $00E3FA
RTL RTL
}
; ============================================================================= ; =============================================================================
; 22E340 ; 22E340
LDA $1B {
LDA $1B ; 1 if indoors, 0 otherwise
BEQ $22E34E BEQ $22E34E
LDA $0114 LDA $0114 ; Value of the type of tile Link is standing on
BEQ $22E34E BEQ $22E34E
CMP #$08 CMP #$08
BEQ $22E34E BEQ $22E34E
RTS RTS
;------- ;-------
LDA #$24 LDA #$24 ; Splash sound effect
STA $012E STA $012E
RTS RTS
}
; ============================================================================= ; =============================================================================
; 22E460 ; 22E460
LDA $02E4 FairyFlippers_Untitled:
{
LDA $02E4 ; If flag nonzero, Link cannot move
AND #$00FF AND #$00FF
BNE $22E46E BNE .alpha ; $22E46E
LDA #$0009 LDA #$0009
LDX $8C LDX $8C
RTL RTL
;------- ;-------
LDA $0202 .alpha
LDA $0202 ; currently selected item
AND #$00FF AND #$00FF
CMP #$000F CMP #$000F ; what item is F?
BNE $22E481 BNE $22E481
LDA $02F0 LDA $02F0
AND #$00FF AND #$00FF
@@ -292,13 +379,17 @@ FairyFlippers_RestoreControlHandler:
LDA #$0009 LDA #$0009
LDX $8C LDX $8C
RTL RTL
}
; ============================================================================= ; =============================================================================
; 22E500 ; 22E500
{
CMP #$5A CMP #$5A
BEQ $22E507 BEQ $22E507
JMP $D00B JMP $D00B
}
; ============================================================================= ; =============================================================================
; 22E530 ; 22E530
@@ -337,6 +428,7 @@ FairyFlippers_Main:
; ============================================================================= ; =============================================================================
; 22E5F0 ; 22E5F0
{
LDA $7EF33C LDA $7EF33C
BNE $22E5F7 BNE $22E5F7
RTL RTL
@@ -346,11 +438,15 @@ FairyFlippers_Main:
RTL RTL
;------- ;-------
JMP $E108 JMP $E108
}
; ============================================================================= ; =============================================================================
; 22E600 ; 22E600
; Possibly relevant, unconfirmed ; Possibly relevant, unconfirmed
; Referenced at: 0D:E507
{
LDA $7EF34A LDA $7EF34A
AND #$00FF AND #$00FF
CMP #$0001 CMP #$0001
@@ -374,7 +470,7 @@ FairyFlippers_Main:
REP #$30 REP #$30
LDA $7EF35C,X LDA $7EF35C,X
RTL RTL
}
; ============================================================================= ; =============================================================================
; 22E670 ; 22E670
@@ -409,6 +505,7 @@ FairyFlippers_HandleMagic:
; ============================================================================= ; =============================================================================
; 22E700 ; 22E700
{
STA $F6 STA $F6
STY $FA STY $FA
REP #$30 REP #$30
@@ -425,21 +522,25 @@ FairyFlippers_HandleMagic:
STA $7EE000 STA $7EE000
SEP #$30 SEP #$30
RTL RTL
}
; ============================================================================= ; =============================================================================
; 22E760 ; 22E760
{
LDA #$0E10 LDA #$0E10
STA $7EE000 STA $7EE000
LDY #$0000 LDY #$0000
LDX $00 LDX $00
RTL RTL
}
; ============================================================================= ; =============================================================================
; 22E780 ; 22E780
; Jesucristo... ; Jesucristo...
REP #$30 {
REP #$30
LDY #$0000 LDY #$0000
LDA $7EF339 LDA $7EF339
CMP #$000A CMP #$000A
@@ -518,10 +619,12 @@ FairyFlippers_HandleMagic:
INC $0207 INC $0207
LDA $F0 LDA $F0
RTL RTL
}
; ============================================================================= ; =============================================================================
; 22E830 ; 22E830
{
ADC #$0020 ADC #$0020
STA $1CD0 STA $1CD0
LDA $10 LDA $10
@@ -537,26 +640,32 @@ FairyFlippers_HandleMagic:
CMP #$0000 CMP #$0000
BNE $22E854 BNE $22E854
RTL RTL
}
; ============================================================================= ; =============================================================================
; 22EF50 ; 22EF50
{
LDA $7EF3CC LDA $7EF3CC
CMP #$0D CMP #$0D
BEQ $22EF59 BEQ $22EF59
RTL RTL
}
; ============================================================================= ; =============================================================================
; 22EF80 ; 22EF80
{
STA $7F500E ; reset underwater variable STA $7F500E ; reset underwater variable
STZ $0372 ; link bounce flag STZ $0372 ; link bounce flag
RTL RTL
}
; ============================================================================= ; =============================================================================
; 22EFA0 ; 22EFA0
LDA $5D {
LDA $5D ; Player Handler or "State"
CMP #$05 CMP #$05
BNE $22EFAA BNE $22EFAA
STZ $0351 STZ $0351
@@ -566,5 +675,6 @@ FairyFlippers_HandleMagic:
CMP #$01 CMP #$01
BNE $22EFB4 BNE $22EFB4
LDA #$04 LDA #$04
STA $5D STA $5D ; Player Handler or "State"
RTS RTS
}

View File

@@ -185,6 +185,13 @@ Menu_ItemScreen:
LSR : BCS .move_left LSR : BCS .move_left
LSR : BCS .move_down LSR : BCS .move_down
LSR : BCS .move_up LSR : BCS .move_up
; Check if A button is pressed
; LDA $F6 : AND.b #$80 : BEQ .a_not_pressed
; JSR Menu_SubItemScreen
; .a_not_pressed
BRA .no_inputs BRA .no_inputs
.move_right .move_right
@@ -280,70 +287,70 @@ Menu_StatsScreen:
{ {
JSR Menu_CheckHScroll JSR Menu_CheckHScroll
; Increase selector time and check music RAM ; ; Increase selector time and check music RAM
INC $0207 : LDA.w $02D5 : BEQ .no_inputs ; INC $0207 : LDA.w $02D5 : BEQ .no_inputs
; Scroll through joypad 1 inputs ; ; Scroll through joypad 1 inputs
ASL : TAY : LDA.b $F4 ; ASL : TAY : LDA.b $F4
LSR : BCS .move_right ; LSR : BCS .move_right
LSR : BCS .move_left ; LSR : BCS .move_left
BRA .no_inputs ; BRA .no_inputs
.move_right ; .move_right
JSR Menu_DeleteSongCursor ; JSR Menu_DeleteSongCursor
JSR Menu_FindNextSong ; JSR Menu_FindNextSong
BRA .draw_cursor ; BRA .draw_cursor
.move_left ; .move_left
JSR Menu_DeleteSongCursor ; JSR Menu_DeleteSongCursor
JSR Menu_FindPrevSong ; JSR Menu_FindPrevSong
BRA .draw_cursor ; BRA .draw_cursor
.draw_cursor ; .draw_cursor
LDA.b #$20 : STA.w $012F ; cursor move sound effect ; LDA.b #$20 : STA.w $012F ; cursor move sound effect
.no_inputs ; .no_inputs
SEP #$30 ; SEP #$30
LDA.w $02D5 ; LDA.w $02D5
ASL : TAY ; ASL : TAY
REP #$10 ; REP #$10
LDX.w Menu_OcarinaSongPositions, Y ; LDX.w Menu_OcarinaSongPositions, Y
LDA.b #$20 : BIT.w $0207 ; LDA.b #$20 : BIT.w $0207
REP #$20 ; REP #$20
BEQ .no_delete ; BEQ .no_delete
LDA.w #$20F5 ; LDA.w #$20F5
STA.w $1108, X ; STA.w $1108, X
STA.w $1148, X ; STA.w $1148, X
STA.w $114E, X ; STA.w $114E, X
STA.w $110E, X ; STA.w $110E, X
STA.w $11C8, X ; STA.w $11C8, X
STA.w $1188, X ; STA.w $1188, X
STA.w $118E, X ; STA.w $118E, X
STA.w $11CE, X ; STA.w $11CE, X
BRA .done ; BRA .done
.no_delete ; .no_delete
LDA.w #$3060 : STA.w $1108, X ; corner ; LDA.w #$3060 : STA.w $1108, X ; corner
LDA.w #$3070 : STA.w $1148, X ; LDA.w #$3070 : STA.w $1148, X
LDA.w #$7060 : STA.w $110E, X ; corner ; LDA.w #$7060 : STA.w $110E, X ; corner
LDA.w #$7070 : STA.w $114E, X ; LDA.w #$7070 : STA.w $114E, X
LDA.w #$3070 : STA.w $1188, X ; LDA.w #$3070 : STA.w $1188, X
LDA.w #$B060 : STA.w $11C8, X ; corner ; LDA.w #$B060 : STA.w $11C8, X ; corner
LDA.w #$7070 : STA.w $118E, X ; LDA.w #$7070 : STA.w $118E, X
LDA.w #$F060 : STA.w $11CE, X ; corner ; LDA.w #$F060 : STA.w $11CE, X ; corner
.done ; .done
SEP #$20 ; SEP #$20
LDA.b #$22 : STA.w $0116 ; LDA.b #$22 : STA.w $0116
LDA.b #$01 : STA.b $17 ; LDA.b #$01 : STA.b $17
RTS RTS
} }
@@ -448,7 +455,7 @@ Menu_Exit:
menu_frame: incbin "tilemaps/menu_frame.tilemap" menu_frame: incbin "tilemaps/menu_frame.tilemap"
quest_icons: incbin "tilemaps/quest_icons.tilemap" quest_icons: incbin "tilemaps/quest_icons.tilemap"
incsrc "lw_map_names.asm" incsrc "menu_map_names.asm"
incsrc "menu_hud.asm" incsrc "menu_hud.asm"
; ============================================================================= ; =============================================================================

View File

@@ -35,6 +35,7 @@ Menu_DrawBackground:
; Credit to Kan ; Credit to Kan
DrawMenuItem: DrawMenuItem:
{
STA.b $08 STA.b $08
STY.b $00 STY.b $00
@@ -60,11 +61,14 @@ DrawMenuItem:
LDA.w $0006,Y : STA.w $114A,X LDA.w $0006,Y : STA.w $114A,X
RTS RTS
}
; ============================================================================= ; =============================================================================
; Quest Icons Tilemap Draw Routine ; Quest Icons Tilemap Draw Routine
DrawQuestIcons: DrawQuestIcons:
{
LDX.w #$10 LDX.w #$10
.loop .loop
@@ -87,10 +91,13 @@ DrawQuestIcons:
LDA.w #$20F5 : STA.w $13B4 : STA.w $13F4 : STA.w $1474 : STA.w $14B4 LDA.w #$20F5 : STA.w $13B4 : STA.w $13F4 : STA.w $1474 : STA.w $14B4
RTS RTS
}
; ============================================================================= ; =============================================================================
DrawTriforceIcon: DrawTriforceIcon:
{
LDA.l $7EF37A LDA.l $7EF37A
LDX.w #$3534 LDX.w #$3534
LDY.w #$3544 LDY.w #$3544
@@ -125,24 +132,29 @@ DrawTriforceIcon:
+ +
RTS RTS
}
;=============================================================================== ;===============================================================================
DrawPendantIcons: DrawPendantIcons:
LDA.l $7EF374 {
LSR : BCC + LDA.l $7EF374
LDX.w #$2502 : STX.w $14A4 : INX : STX.w $14A6 LSR : BCC +
LDX.w #$2512 : STX.w $14E4 : INX : STX.w $14E6 LDX.w #$2502 : STX.w $14A4 : INX : STX.w $14A6
LDX.w #$2512 : STX.w $14E4 : INX : STX.w $14E6
+ LSR : BCC + + LSR : BCC +
LDX.w #$3D00 : STX.w $14AA : INX : STX.w $14AC LDX.w #$3D00 : STX.w $14AA : INX : STX.w $14AC
LDX.w #$3D10 : STX.w $14EA : INX : STX.w $14EC LDX.w #$3D10 : STX.w $14EA : INX : STX.w $14EC
+ LSR : BCC + + LSR : BCC +
LDX.w #$2D06 : STX.w $14B0 : INX : STX.w $14B2 LDX.w #$2D06 : STX.w $14B0 : INX : STX.w $14B2
LDX.w #$2D16 : STX.w $14F0 : INX : STX.w $14F2 LDX.w #$2D16 : STX.w $14F0 : INX : STX.w $14F2
+ RTS
}
+ RTS
;=============================================================================== ;===============================================================================
@@ -156,20 +168,23 @@ DrawPendantIcons:
; E100 would be T = 16 ; E100 would be T = 16
DrawHeartPieces: DrawHeartPieces:
LDA.l $7EF36B {
AND.w #$00FF LDA.l $7EF36B
CMP.w #3 : BEQ .top_right AND.w #$00FF
CMP.w #1 : BEQ .top_left CMP.w #3 : BEQ .top_right
BCS .bottom_left CMP.w #1 : BEQ .top_left
RTS BCS .bottom_left
RTS
.top_right .top_right
LDX.w #$64AD : STX.w $14A0 LDX.w #$64AD : STX.w $14A0
.bottom_left .bottom_left
LDX.w #$24AE : STX.w $14DE LDX.w #$24AE : STX.w $14DE
.top_left .top_left
LDX.w #$24AD : STX.w $149E LDX.w #$24AD : STX.w $149E
RTS RTS
}
;=============================================================================== ;===============================================================================

View File

@@ -249,3 +249,5 @@ Menu_DeleteSongCursor:
STZ $0207 STZ $0207
RTS RTS
} }
; -----------------------------------------------------------------------------