From fd52a1c20b28a71b4439d44c039b94e243ff927b Mon Sep 17 00:00:00 2001 From: Karkat Date: Thu, 29 Mar 2018 23:11:55 -0400 Subject: [PATCH] prep for other stuff --- events.asm | 6 ++++ hooks.asm | 7 +++++ spriteswap.asm | 83 ++++++++++++++++++++++++++++++++++++++++++++++++++ tables.asm | 17 +++++++++-- 4 files changed, 111 insertions(+), 2 deletions(-) create mode 100644 spriteswap.asm diff --git a/events.asm b/events.asm index b827221..02218fc 100644 --- a/events.asm +++ b/events.asm @@ -103,6 +103,12 @@ OnNewFile: PLP : PLX RTL ;-------------------------------------------------------------------------------- +OnInitFileSelect: + ; LDA.b #$10 : STA $BC ; init sprite pointer - does nothing unless spriteswap.asm is included + ; JSL.l SpriteSwap_SetSprite + JSL.l EnableForceBlank +RTL +;-------------------------------------------------------------------------------- OnLinkDamaged: JSL.l FlipperKill JSL.l OHKOTimer diff --git a/hooks.asm b/hooks.asm index a468590..a5389a2 100644 --- a/hooks.asm +++ b/hooks.asm @@ -248,6 +248,13 @@ NOP #2 ;NOP #4 ;-------------------------------------------------------------------------------- +;================================================================================ +; File Select Init Event +;-------------------------------------------------------------------------------- +org $0CCC89 ; <- 0x64C89 Bank0C.asm : 1598 (JSL EnableForceBlank) +JSL.l OnInitFileSelect +;-------------------------------------------------------------------------------- + ;================================================================================ ; Hyrule Castle Rain Sequence Guards (allowing Gloves in Link's house) ;-------------------------------------------------------------------------------- diff --git a/spriteswap.asm b/spriteswap.asm new file mode 100644 index 0000000..79197ad --- /dev/null +++ b/spriteswap.asm @@ -0,0 +1,83 @@ +org $008A01 ; 0xA01 - Bank00.asm (LDA.b #$10 : STA $4304 : STA $4314 : STA $4324) +LDA $BC + +org $1BEDF9 +JSL Palette_ArmorAndGloves ;4bytes +RTL ;1byte +NOP #$01 + +org $1BEE1B +JSL Palette_ArmorAndGloves_part_two +RTL + +!SPRITE_SWAP = "$7F50CD" +;!STABLE_SCRATCH = "$7EC178" + +org $BF8000 +Palette_ArmorAndGloves: +{ + ;DEDF9 + LDA !SPRITE_SWAP : BNE .continue + LDA.b #$10 : STA $BC ; Load Original Sprite Location + REP #$21 + LDA $7EF35B + JSL $1BEDFF ; Read Original Palette Code + RTL + .part_two + SEP #$30 + LDA !SPRITE_SWAP : BNE .continue + REP #$30 + LDA $7EF354 + JSL $1BEE21 ; Read Original Palette Code + RTL + + .continue + + PHX : PHY : PHA + ; Load armor palette + PHB : PHK : PLB + REP #$20 + + ; Check what Link's armor value is. + LDA $7EF35B : AND.w #$00FF : TAX + + ; (DEC06, X) + + LDA $1BEC06, X : AND.w #$00FF : ASL A : ADC.w #$F000 : STA $00 + ;replace D308 by 7000 and search + REP #$10 + + LDA.w #$01E2 ; Target SP-7 (sprite palette 6) + LDX.w #$000E ; Palette has 15 colors + + TXY : TAX + + ;LDA !STABLE_SCRATCH : AND #$00FF : STA $02 + 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 + RTL +} + +SpriteSwap_SetSprite: +{ + ;LDA $BC : CLC : ADC #$32 : STA !STABLE_SCRATCH + JSL Palette_ArmorAndGloves + STZ $0710 ; Set Normal Sprite NMI + RTL +} \ No newline at end of file diff --git a/tables.asm b/tables.asm index 097f58a..63a9f69 100644 --- a/tables.asm +++ b/tables.asm @@ -1595,7 +1595,7 @@ db $FF, $30, $2C, $01, $00, $FF, $00, $00 db $FF, $31, $32, $00, $00, $FF, $00, $00 db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ;================================================================================ -org $30D000 ; PC 0x18500 - 0x1853F +org $30D000 ; PC 0x185000 - 0x18503F MSUTrackList: db $00,$01,$03,$03,$03,$03,$03,$03 db $01,$03,$01,$03,$03,$03,$03,$03 @@ -1606,7 +1606,20 @@ db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF ;-------------------------------------------------------------------------------- -; 0x18540 - 187EFF (unused) +; 0x185040 - 1850FF (unused) +;-------------------------------------------------------------------------------- +org $30D100 ; PC 0x185100 - 0x18513F +UnusedTable: ; please do not move this - kkat +db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF +db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF +db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF +db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF +db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF +db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF +db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF +db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF +;-------------------------------------------------------------------------------- +; 0x185140 - 187EFF (unused) ;-------------------------------------------------------------------------------- ; Out of order 0x187F00 - PC 0x187FFF (NameHashTable) ;--------------------------------------------------------------------------------