276 lines
5.1 KiB
NASM
276 lines
5.1 KiB
NASM
; =============================================================================
|
|
; Wolf Mask
|
|
|
|
; =============================================================================
|
|
|
|
org $098F5B
|
|
AddShovelDirt:
|
|
|
|
org $098C73
|
|
AddRecoveredFlute:
|
|
|
|
org $098024
|
|
AddHitStars:
|
|
|
|
org $1DFD5C
|
|
DiggingGameGuy_AttemptPrizeSpawn:
|
|
|
|
|
|
; =============================================================================
|
|
|
|
org $07D077
|
|
Link_ShovelTileDetect:
|
|
|
|
org $07F8D1
|
|
Link_ShovelTileDetect_Long:
|
|
{
|
|
PHB : PHK : PLB
|
|
JSR Link_ShovelTileDetect
|
|
PLB
|
|
RTL
|
|
}
|
|
|
|
org $07802F
|
|
Player_DoSfx3:
|
|
|
|
org $07A772
|
|
Player_DoSfx3_Long:
|
|
{
|
|
PHB : PHK : PLB
|
|
JSR Player_DoSfx3
|
|
PLB
|
|
RTL
|
|
}
|
|
|
|
print "Next address for jump in bank07: ", pc
|
|
|
|
; =============================================================================
|
|
|
|
org $07A3DB
|
|
LinkItem_Flute:
|
|
|
|
; =============================================================================
|
|
|
|
org $07A313
|
|
LinkItem_ShovelAndFlute:
|
|
{
|
|
; Play flute or use the Wolf Mask
|
|
LDA $0202 : CMP.b #$0D : BNE LinkItem_WolfMask
|
|
BRL LinkItem_Flute
|
|
}
|
|
|
|
; =============================================================================
|
|
|
|
; TODO: Make sure there's no inaccessible code issues past here
|
|
; LinkItem_Shovel
|
|
org $07A32C
|
|
LinkItem_WolfMask:
|
|
{
|
|
JSL LinkItem_UsingWolfMask
|
|
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 #$03 : BEQ .unequip ; is the wolf mask already on?
|
|
JSL UpdateWolfPalette
|
|
LDA #$38 : STA $BC ; change link's sprite
|
|
LDA #$03 : STA $02B2
|
|
BRA .return
|
|
|
|
.unequip
|
|
JSL Palette_ArmorAndGloves
|
|
LDA #$10 : STA $BC : STZ $02B2 ; take the mask off
|
|
|
|
.return
|
|
CLC
|
|
RTS
|
|
}
|
|
|
|
; =============================================================================
|
|
|
|
org $388000
|
|
incbin gfx/wolf_link.4bpp
|
|
|
|
; =============================================================================
|
|
|
|
UpdateWolfPalette:
|
|
{
|
|
REP #$30 ; change 16bit mode
|
|
LDX #$001E
|
|
|
|
.loop
|
|
LDA.l WolfPalette, X : STA $7EC6E0, X
|
|
DEX : DEX : BPL .loop
|
|
|
|
SEP #$30 ; go back to 8 bit mode
|
|
INC $15 ; update the palette
|
|
RTL ; or RTS depending on where you need it
|
|
}
|
|
|
|
; =============================================================================
|
|
|
|
WolfPalette:
|
|
dw #$7BDE, #$7FFF, #$2F7D, #$19B5, #$3A9C, #$14A5, #$1A3D, #$14B6
|
|
dw #$4650, #$362A, #$3F4E, #$162B, #$318A, #$39CC, #$1CE7, #$76D1
|
|
dw #$6565, #$7271, #$14B5, #$459B, #$3D95, #$22D0, #$567C, #$1890
|
|
dw #$7616, #$0000
|
|
|
|
; =============================================================================
|
|
|
|
LinkItem_Return:
|
|
{
|
|
RTL
|
|
}
|
|
|
|
print pc
|
|
LinkItem_UsingWolfMask:
|
|
{
|
|
; Shovel item code
|
|
|
|
BIT $3A : BVS .in_use
|
|
LDA $6C : BNE LinkItem_Return ; .BRANCH_$3A312 ; (RTS, BASICALLY)
|
|
|
|
LDA $F2 ; load unfiltered joypad 1 register (AXLR|????)
|
|
CMP #$10 ; R button pressed?
|
|
BEQ $03 ; if yes, branch behind the jump that leads to the end and load items instead
|
|
JMP LinkItem_Return
|
|
; JSR Link_CheckNewY_ButtonPress : BCC LinkItem_Return ;.BRANCH_$3A312
|
|
|
|
LDA $A320 : STA $3D
|
|
|
|
STZ $030D
|
|
STZ $0300
|
|
|
|
LDA.b #$01 : STA $037A
|
|
LDA.b #$01 : TSB $50
|
|
STZ $2E
|
|
|
|
.in_use
|
|
|
|
JSR HaltLinkWhenUsingItems ; $AE65 ; $3AE65 IN ROM
|
|
|
|
LDA $67 : AND.b #$F0 : STA $67
|
|
|
|
DEC $3D : BMI .continue
|
|
|
|
RTL
|
|
|
|
.continue
|
|
|
|
LDX $030D : INX : STX $030D
|
|
|
|
LDA $A320, X : STA $3D
|
|
|
|
LDA $A326, X : STA $0300 : CMP.b #$01 : BNE .BRANCH_GAMMA
|
|
|
|
LDY.b #$02
|
|
|
|
PHX
|
|
|
|
; JSR $D077 ; $3D077 IN ROM
|
|
JSL Link_ShovelTileDetect_Long
|
|
|
|
PLX
|
|
|
|
LDA $04B2 : BEQ .not_flute_spot
|
|
|
|
LDA.b #$1B : JSL Player_DoSfx3_Long
|
|
|
|
PHX
|
|
|
|
; Add recovered flute (from digging). Interesting...
|
|
LDY.b #$00
|
|
LDA.b #$36
|
|
|
|
JSL AddRecoveredFlute
|
|
|
|
PLX
|
|
|
|
.not_flute_spot
|
|
|
|
LDA $0357 : ORA $035B : AND.b #$01 : BNE .dont_clink
|
|
|
|
PHX
|
|
|
|
LDY.b #$00
|
|
LDA.b #$16
|
|
|
|
JSL AddHitStars
|
|
|
|
PLX
|
|
|
|
LDA.b #$05 : JSL Player_DoSfx2
|
|
|
|
BRA .finish_up
|
|
|
|
.dont_clink
|
|
|
|
PHX
|
|
|
|
; Add shovel dirt? what? I thought these were aftermath tiles
|
|
LDY.b #$00
|
|
LDA.b #$17
|
|
|
|
JSL AddShovelDirt
|
|
|
|
LDA $03FC : BEQ .digging_game_inactive
|
|
|
|
JSL DiggingGameGuy_AttemptPrizeSpawn
|
|
|
|
.digging_game_inactive
|
|
|
|
PLX
|
|
|
|
LDA.b #$12 : JSL Player_DoSfx2
|
|
|
|
.finish_up
|
|
|
|
CPX.b #$03 : BNE .return
|
|
|
|
STZ $030D
|
|
STZ $0300
|
|
|
|
LDA $3A : AND.b #$80 : STA $3A
|
|
|
|
STZ $037A
|
|
|
|
LDA $50 : AND.b #$FE : STA $50
|
|
|
|
.return
|
|
|
|
RTL
|
|
}
|
|
|
|
; ==============================================================================
|
|
|
|
; *$3AE65-$3AE87 LOCAL
|
|
HaltLinkWhenUsingItems:
|
|
{
|
|
LDA $AD : CMP.b #$02 : BNE .BRANCH_ALPHA
|
|
|
|
LDA $0322 : AND.b #$03 : CMP.b #$03 : BNE .BRANCH_ALPHA
|
|
|
|
STZ $30
|
|
STZ $31
|
|
STZ $67
|
|
STZ $2A
|
|
STZ $2B
|
|
STZ $6B
|
|
|
|
.BRANCH_ALPHA:
|
|
|
|
; Cane of Somaria transit lines?
|
|
LDA $02F5 : BEQ .BRANCH_BETA
|
|
|
|
STZ $67
|
|
|
|
.BRANCH_BETA:
|
|
|
|
RTS
|
|
} |