Add GBC Link, update Masks directory

This commit is contained in:
scawful
2023-08-30 21:02:33 -04:00
parent b3ba358f64
commit fad239b5e7
11 changed files with 119 additions and 42 deletions

20
Masks/all_masks.asm Normal file
View File

@@ -0,0 +1,20 @@
; $02B2 - Mask Form
; 00 = Human
; 01 = Deku
; 02 = Zora
; 03 = Wolf
; 04 = Bunny Hood
; 05 = Minish Form
;
; $0AAB - Diving Flag
incsrc "Masks/mask_routines.asm"
incsrc "Masks/bunny_hood.asm"
print "End of Masks/bunny_hood.asm ", pc
incsrc "Masks/minish_form.asm"
incsrc "Masks/deku_mask.asm"
incsrc "Masks/zora_mask.asm"
incsrc "Masks/wolf_mask.asm"
incsrc "Masks/gbc_form.asm"

View File

@@ -50,8 +50,9 @@ LinkItem_SlingshotPrepare:
{ {
LDA #$01 : TSB $50 LDA #$01 : TSB $50
LDA $7EF340 LDA $7EF340
BNE .alpha BNE .alpha
JMP $A270 JMP .beta ; $A270
.alpha .alpha
CMP #$01 CMP #$01
BNE .void ; unused afaik (RTS?) BNE .void ; unused afaik (RTS?)
@@ -115,7 +116,7 @@ LinkItem_SlingshotPrepare:
LDA #$80 : STA $4305 ; Set DMA transfer size (high byte) LDA #$80 : STA $4305 ; Set DMA transfer size (high byte)
LDA #$01 : STA $4300 ; Set DMA mode to 1 (2 registers write once) LDA #$01 : STA $4300 ; Set DMA mode to 1 (2 registers write once)
STA $420B ; Start DMA on channel 0 STA $420B ; Start DMA on channel 0
RTL ; Return from subroutine long RTL
} }
@@ -141,4 +142,6 @@ Link_HandleDekuTransformation: ; Link_HandleBunnyTransformation
RTS RTS
} }
print "End of Masks/deku_mask.asm ", pc
pushpc pushpc

48
Masks/gbc_form.asm Normal file
View File

@@ -0,0 +1,48 @@
org $3B8000
incbin gfx/gbc_link.4bpp
UpdateGbcPalette:
{
REP #$30 ; change 16bit mode
LDX #$001E
.loop
LDA.l GameboyLinkPalette, 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
}
GameboyLinkPalette:
{
dw #$0000, #$7FFF, #$237E, #$B711, #$369E, #$14A5, #$01FF, #$1078, #$46FF
dw #$22A2, #$3B68, #$0A4A, #$12EF, #$2A5C, #$1571, #$7A18, #$7FFF
dw #$237E, #$B711, #$369E, #$14A5, #$01FF, #$1078, #$46FF, #$7E03
dw #$7691, #$2678, #$435C, #$1199, #$7A18, #$7FFF, #$237E, #$B711
dw #$369E, #$14A5, #$01FF, #$1078, #$46FF, #$147F, #$457E, #$6DF3
dw #$7EB9, #$2A5C, #$2227, #$7A18, #$7FFF, #$237E, #$B711, #$369E
dw #$14A5, #$01FF, #$1078, #$46FF, #$05FF, #$3B68, #$0A4A, #$12EF
dw #$567E, #$1872, #$7A18, #$5276, #$0352
}
LinkState_GameboyForm:
{
CLC
LDA $0FFF : BEQ .return ; not in dark world
; %PlayerTransform()
JSL UpdateGbcPalette
LDA #$3B : STA $BC ; change link's sprite
LDA #$06 : STA $02B2
BRA .return
.return
LDA $BC : CMP.b #$06 : BNE .not_gbc
LDA #$10 : STA $BC
.not_gbc
CLC
RTL
}

View File

@@ -154,7 +154,6 @@ Palette_ArmorAndGloves:
SEP #$30 SEP #$30
PLB PLB
INC $15 INC $15
PLA : PLY : PLX PLA : PLY : PLX
@@ -221,6 +220,7 @@ LinkItem_CheckForSwordSwing_Masks:
{ {
LDA $02B2 : BEQ .return LDA $02B2 : BEQ .return
CMP.b #$02 : BEQ .return ; zora mask can use sword CMP.b #$02 : BEQ .return ; zora mask can use sword
CMP.b #$06 : BEQ .return
LDA #$01 LDA #$01
RTL RTL

View File

@@ -65,5 +65,7 @@ LinkState_CheckMinishTile:
RTS RTS
} }
print "End of Masks/minish_form.asm ", pc
pushpc pushpc

View File

@@ -50,7 +50,7 @@ LinkItem_ShovelAndFlute:
LDA $0202 : CMP.b #$0D : BNE .use_wolf_mask LDA $0202 : CMP.b #$0D : BNE .use_wolf_mask
BRL LinkItem_Flute BRL LinkItem_Flute
.use_wolf_mask .use_wolf_mask
BRL LinkItem_WolfMask JMP LinkItem_WolfMask
} }
@@ -61,7 +61,7 @@ pullpc
print pc print pc
LinkItem_WolfMask: LinkItem_WolfMask:
{ {
SEP #$30 ; SEP #$30
LDA $02B2 : CMP #$03 : BNE .equip LDA $02B2 : CMP #$03 : BNE .equip
JSR LinkItem_Shovel JSR LinkItem_Shovel
@@ -83,7 +83,10 @@ LinkItem_WolfMask:
%ResetToLinkGraphics() %ResetToLinkGraphics()
.return .return
REP #$30 ; REP #$30
RTS RTS
} }
print "End of Masks/wolf_mask.asm ", pc
pushpc

View File

@@ -282,4 +282,5 @@ LinkState_ResetMaskAnimated:
RTL RTL
} }
print "End of Masks/zora_mask.asm ", pc
pushpc pushpc