Add GBC Link, update Masks directory
This commit is contained in:
20
Masks/all_masks.asm
Normal file
20
Masks/all_masks.asm
Normal 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"
|
||||
@@ -1,6 +1,6 @@
|
||||
; =============================================================================
|
||||
; Deku Mask
|
||||
; =============================================================================
|
||||
; Deku Mask
|
||||
; =============================================================================
|
||||
|
||||
org $358000
|
||||
incbin gfx/deku_link.bin
|
||||
@@ -10,7 +10,7 @@ incbin gfx/deku_link.bin
|
||||
org $07A64B ; formerly Quake
|
||||
LinkItem_DekuMask:
|
||||
{
|
||||
; Check for R button held
|
||||
; Check for R button held
|
||||
%CheckNewR_ButtonPress() : BEQ .return
|
||||
|
||||
LDA $6C : BNE .return ; in a doorway
|
||||
@@ -19,19 +19,19 @@ LinkItem_DekuMask:
|
||||
%PlayerTransform()
|
||||
|
||||
LDA $02B2 : CMP #$01 : BEQ .unequip ; is the deku mask on?
|
||||
JSL Palette_ArmorAndGloves ; set the palette
|
||||
JSL Palette_ArmorAndGloves ; set the palette
|
||||
|
||||
LDA.l $7EF35A : STA $0AAF ; Store the current shield
|
||||
LDA.b #$00 : STA $7EF35A ; Clear the shield
|
||||
|
||||
LDA #$35 : STA $BC ; put the mask on
|
||||
LDA #$01 : STA $02B2 ; set the deku mask flag
|
||||
|
||||
|
||||
BRA .return
|
||||
|
||||
.unequip
|
||||
STZ $5D
|
||||
; Restore the shield
|
||||
; Restore the shield
|
||||
LDA $0AAF : STA.l $7EF35A
|
||||
|
||||
%ResetToLinkGraphics()
|
||||
@@ -50,9 +50,10 @@ LinkItem_SlingshotPrepare:
|
||||
{
|
||||
LDA #$01 : TSB $50
|
||||
LDA $7EF340
|
||||
|
||||
BNE .alpha
|
||||
JMP $A270
|
||||
.alpha
|
||||
JMP .beta ; $A270
|
||||
.alpha
|
||||
CMP #$01
|
||||
BNE .void ; unused afaik (RTS?)
|
||||
JMP .beta
|
||||
@@ -71,7 +72,7 @@ LinkItem_SlingshotPrepare:
|
||||
LDA $7F502E
|
||||
CMP #$01
|
||||
BNE .gamma
|
||||
RTL
|
||||
RTL
|
||||
|
||||
; $A309
|
||||
.gamma
|
||||
@@ -115,7 +116,7 @@ LinkItem_SlingshotPrepare:
|
||||
LDA #$80 : STA $4305 ; Set DMA transfer size (high byte)
|
||||
LDA #$01 : STA $4300 ; Set DMA mode to 1 (2 registers write once)
|
||||
STA $420B ; Start DMA on channel 0
|
||||
RTL ; Return from subroutine long
|
||||
RTL
|
||||
|
||||
}
|
||||
|
||||
@@ -128,17 +129,19 @@ org $07811A
|
||||
pullpc ; Bank 07 Free Space from minish_form
|
||||
Link_HandleDekuTransformation: ; Link_HandleBunnyTransformation
|
||||
{
|
||||
; Check if using Quake Medallion
|
||||
; Check if using Quake Medallion
|
||||
LDA $5D : CMP.b #$0A : BEQ .continue
|
||||
JSR $82DA
|
||||
|
||||
.continue
|
||||
.continue
|
||||
STZ $03F5
|
||||
STZ $03F6
|
||||
|
||||
|
||||
; Link can move.
|
||||
CLC
|
||||
|
||||
|
||||
RTS
|
||||
}
|
||||
pushpc
|
||||
|
||||
print "End of Masks/deku_mask.asm ", pc
|
||||
pushpc
|
||||
|
||||
48
Masks/gbc_form.asm
Normal file
48
Masks/gbc_form.asm
Normal 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
|
||||
}
|
||||
@@ -49,7 +49,7 @@ org $008A01
|
||||
|
||||
org $1BEDF9
|
||||
JSL Palette_ArmorAndGloves ; 4bytes
|
||||
RTL ; 1byte
|
||||
RTL ; 1byte
|
||||
NOP #$01
|
||||
|
||||
org $1BEE1B
|
||||
@@ -67,10 +67,10 @@ StartupMasks:
|
||||
; bring the screen into force blank after NMI
|
||||
LDA.b #$80 : STA $13
|
||||
|
||||
; set links sprite bank
|
||||
; set links sprite bank
|
||||
LDA #$10 : STA $BC
|
||||
|
||||
RTL
|
||||
RTL
|
||||
}
|
||||
|
||||
; =============================================================================
|
||||
@@ -87,7 +87,7 @@ Palette_ArmorAndGloves:
|
||||
.deku_mask
|
||||
; Load Deku Mask Location
|
||||
LDA.b #$35 : STA $BC : JMP .original_palette
|
||||
|
||||
|
||||
.zora_mask
|
||||
; Load Zora Mask Location
|
||||
LDA.b #$36 : STA $BC : JMP .original_palette
|
||||
@@ -113,7 +113,7 @@ Palette_ArmorAndGloves:
|
||||
|
||||
.original_palette
|
||||
REP #$21
|
||||
LDA $7EF35B ; Link's armor value
|
||||
LDA $7EF35B ; Link's armor value
|
||||
JSL $1BEDFF ; Read Original Palette Code
|
||||
RTL
|
||||
.part_two
|
||||
@@ -128,33 +128,32 @@ Palette_ArmorAndGloves:
|
||||
PHB : PHK : PLB
|
||||
|
||||
REP #$20
|
||||
|
||||
|
||||
; Check what Link's armor value is.
|
||||
LDA $7EF35B : AND.w #$00FF : TAX
|
||||
|
||||
|
||||
LDA $1BEC06, X : AND.w #$00FF : ASL A : ADC.w #$F000 : STA $00
|
||||
REP #$10
|
||||
|
||||
|
||||
LDA.w #$01E2 ; Target SP-7 (sprite palette 6)
|
||||
LDX.w #$000E ; Palette has 15 colors
|
||||
|
||||
|
||||
TXY : TAX
|
||||
|
||||
|
||||
LDA.b $BC : AND #$00FF : STA $02
|
||||
|
||||
.loop
|
||||
|
||||
LDA [$00] : STA $7EC300, X : STA $7EC500, X
|
||||
|
||||
|
||||
INC $00 : INC $00
|
||||
|
||||
|
||||
INX #2
|
||||
|
||||
|
||||
DEY : BPL .loop
|
||||
|
||||
SEP #$30
|
||||
|
||||
|
||||
|
||||
PLB
|
||||
INC $15
|
||||
PLA : PLY : PLX
|
||||
@@ -162,20 +161,20 @@ Palette_ArmorAndGloves:
|
||||
}
|
||||
|
||||
; =============================================================================
|
||||
; Overworld Palette Persist
|
||||
; Overworld Palette Persist
|
||||
; =============================================================================
|
||||
|
||||
Overworld_CgramAuxToMain_Override:
|
||||
{
|
||||
; Copies the auxiliary CGRAM buffer to the main one
|
||||
; Copies the auxiliary CGRAM buffer to the main one
|
||||
; Causes NMI to reupload the palette.
|
||||
|
||||
|
||||
REP #$20
|
||||
|
||||
|
||||
LDX.b #$00
|
||||
|
||||
.loop
|
||||
|
||||
|
||||
LDA $7EC300, X : STA $7EC500, X
|
||||
LDA $7EC340, X : STA $7EC540, X
|
||||
LDA $7EC380, X : STA $7EC580, X
|
||||
@@ -188,12 +187,12 @@ Overworld_CgramAuxToMain_Override:
|
||||
.has_mask_palette
|
||||
|
||||
INX #2 : CPX.b #$40 : BNE .loop
|
||||
|
||||
|
||||
SEP #$20
|
||||
|
||||
|
||||
; tell NMI to upload new CGRAM data
|
||||
INC $15
|
||||
|
||||
|
||||
RTL
|
||||
}
|
||||
pushpc
|
||||
@@ -221,6 +220,7 @@ LinkItem_CheckForSwordSwing_Masks:
|
||||
{
|
||||
LDA $02B2 : BEQ .return
|
||||
CMP.b #$02 : BEQ .return ; zora mask can use sword
|
||||
CMP.b #$06 : BEQ .return
|
||||
|
||||
LDA #$01
|
||||
RTL
|
||||
|
||||
@@ -65,5 +65,7 @@ LinkState_CheckMinishTile:
|
||||
|
||||
RTS
|
||||
}
|
||||
|
||||
print "End of Masks/minish_form.asm ", pc
|
||||
pushpc
|
||||
|
||||
|
||||
@@ -50,7 +50,7 @@ LinkItem_ShovelAndFlute:
|
||||
LDA $0202 : CMP.b #$0D : BNE .use_wolf_mask
|
||||
BRL LinkItem_Flute
|
||||
.use_wolf_mask
|
||||
BRL LinkItem_WolfMask
|
||||
JMP LinkItem_WolfMask
|
||||
|
||||
}
|
||||
|
||||
@@ -61,7 +61,7 @@ pullpc
|
||||
print pc
|
||||
LinkItem_WolfMask:
|
||||
{
|
||||
SEP #$30
|
||||
; SEP #$30
|
||||
LDA $02B2 : CMP #$03 : BNE .equip
|
||||
JSR LinkItem_Shovel
|
||||
|
||||
@@ -83,7 +83,10 @@ LinkItem_WolfMask:
|
||||
%ResetToLinkGraphics()
|
||||
|
||||
.return
|
||||
REP #$30
|
||||
; REP #$30
|
||||
|
||||
RTS
|
||||
}
|
||||
}
|
||||
|
||||
print "End of Masks/wolf_mask.asm ", pc
|
||||
pushpc
|
||||
@@ -282,4 +282,5 @@ LinkState_ResetMaskAnimated:
|
||||
RTL
|
||||
}
|
||||
|
||||
print "End of Masks/zora_mask.asm ", pc
|
||||
pushpc
|
||||
|
||||
Reference in New Issue
Block a user