Merge pull request #124 from cassidoxa/electroflashing

Rewrite electro palette flashing
This commit is contained in:
KatDevsGames
2021-06-14 19:25:22 -05:00
committed by GitHub
4 changed files with 96 additions and 60 deletions

View File

@@ -24,8 +24,7 @@ RTL
;================================================================================ ;================================================================================
ConditionalWhitenBg: ConditionalWhitenBg:
LDX.b #$00 LDX.b #$00
LDA.l DisableFlashing LDA.l DisableFlashing : REP #$20 : BNE +
REP #$20 : BNE +
LDA $00,X LDA $00,X
JSR WhitenLoopReal JSR WhitenLoopReal
RTL RTL
@@ -55,10 +54,10 @@ WhitenLoopReal:
LDA $7EC3F4 : JSL Filter_Majorly_Whiten_Color : STA $7EC5F4 LDA $7EC3F4 : JSL Filter_Majorly_Whiten_Color : STA $7EC5F4
LDA $10 : CMP.w #$07 : BNE + LDA $10 : CMP.w #$07 : BNE +
LDA $048E LDA $048E
CMP.w #$3C : BEQ ++ ; hookshot cave CMP.w #$3C : BEQ ++
CMP.w #$9D : BEQ ++ ; gt right CMP.w #$9D : BEQ ++
CMP.w #$9C : BEQ ++ ; gt big room CMP.w #$9C : BEQ ++
CMP.w #$A5 : BEQ ++ ; wizzrobes 1 CMP.w #$A5 : BEQ ++
+ +
LDA $7EC3F6 : JSL Filter_Majorly_Whiten_Color : STA $7EC5F6 LDA $7EC3F6 : JSL Filter_Majorly_Whiten_Color : STA $7EC5F6
LDA $7EC3F8 : JSL Filter_Majorly_Whiten_Color : STA $7EC5F8 LDA $7EC3F8 : JSL Filter_Majorly_Whiten_Color : STA $7EC5F8
@@ -68,7 +67,6 @@ WhitenLoopReal:
LDA $7EC3F8 : JSL Filter_Majorly_Whiten_Color : STA $7EC5F8 LDA $7EC3F8 : JSL Filter_Majorly_Whiten_Color : STA $7EC5F8
BRA +++ BRA +++
+++ +++
LDA $7EC3FA : JSL Filter_Majorly_Whiten_Color : STA $7EC5FA LDA $7EC3FA : JSL Filter_Majorly_Whiten_Color : STA $7EC5FA
LDA $7EC3FC : JSL Filter_Majorly_Whiten_Color : STA $7EC5FC LDA $7EC3FC : JSL Filter_Majorly_Whiten_Color : STA $7EC5FC
LDA $7EC3FE : JSL Filter_Majorly_Whiten_Color : STA $7EC5FE LDA $7EC3FE : JSL Filter_Majorly_Whiten_Color : STA $7EC5FE
@@ -97,7 +95,6 @@ WhitenLoopDummy:
INX #2 : CPX.b #$10 : BEQ + INX #2 : CPX.b #$10 : BEQ +
JMP - JMP -
+ +
LDA $7EC3F0 : JSL Filter_Majorly_Whiten_Color : LDA $7EC5F0 LDA $7EC3F0 : JSL Filter_Majorly_Whiten_Color : LDA $7EC5F0
LDA $7EC3F2 : JSL Filter_Majorly_Whiten_Color : LDA $7EC5F2 LDA $7EC3F2 : JSL Filter_Majorly_Whiten_Color : LDA $7EC5F2
LDA $7EC3F4 : JSL Filter_Majorly_Whiten_Color : LDA $7EC5F4 LDA $7EC3F4 : JSL Filter_Majorly_Whiten_Color : LDA $7EC5F4
@@ -165,7 +162,7 @@ RestoreBgEther:
INX #2 : CPX.b #$10 : BNE - INX #2 : CPX.b #$10 : BNE -
BRA ++ BRA ++
++ ++
JML $02FF51 JML $02FF51 ; Bank0E.asm : 3936 vanilla restore routine after loop which RTLs
;================================================================================ ;================================================================================
DDMConditionalLightning: DDMConditionalLightning:
LDA.l DisableFlashing LDA.l DisableFlashing
@@ -173,7 +170,7 @@ DDMConditionalLightning:
BNE + BNE +
LDA.w $0000 LDA.w $0000
LDX.b #$02 LDX.b #$02
JML $07FA7F JML $07FA7F ; Bank0E.asm : 4738 vanilla loop equivalent to below beginning at LDY #$00
+ +
LDA.b $00 : LDX.b #$02 : LDY #$00 LDA.b $00 : LDX.b #$02 : LDY #$00
- -
@@ -184,14 +181,11 @@ DDMConditionalLightning:
LDA $F523, Y : LDA $7EC5F0, X LDA $F523, Y : LDA $7EC5F0, X
INY #2 INY #2
INX #2 : CPX.b #$10 : BNE - INX #2 : CPX.b #$10 : BNE -
JML $07FAAC ; Bank0E.asm : 4754 both branches converge here
JML $07FAAC
;================================================================================ ;================================================================================
ConditionalGTFlash: ConditionalGTFlash:
LDA.l DisableFlashing LDA.l DisableFlashing : REP #$20 : BNE +
REP #$20 LDA $0000
BNE +
LDA $0000
- -
LDA $F9C1, Y : STA $7EC5D0, X LDA $F9C1, Y : STA $7EC5D0, X
INY #2 INY #2
@@ -203,27 +197,24 @@ ConditionalGTFlash:
LDA $F9C1, Y : LDA $7EC5D0, X LDA $F9C1, Y : LDA $7EC5D0, X
INY #2 INY #2
INX #2 : CPX.b #$10 : BNE - INX #2 : CPX.b #$10 : BNE -
RTL RTL
;================================================================================ ;================================================================================
ConditionalRedFlash: ConditionalRedFlash:
LDA.l DisableFlashing LDA.l DisableFlashing : REP #$20 : BNE +
REP #$20 : BNE +
LDA $00,X LDA $00,X
LDA.w #$1D59 : STA $7EC5DA LDA.w #$1D59 : STA $7EC5DA
LDA.w #$25FF : STA $7EC5DC LDA.w #$25FF : STA $7EC5DC
LDA.w #$001A LDA.w #$001A
RTL RTL
+ +
LDA $00 LDA $00
LDA.w #$1D59 : LDA $7EC5DA LDA.w #$1D59 : LDA $7EC5DA
LDA.w #$25FF : LDA $7EC5DC LDA.w #$25FF : LDA $7EC5DC
LDA.w #$0000 LDA.w #$0000
RTL RTL
;================================================================================ ;================================================================================
ConditionalPedAncilla: ConditionalPedAncilla:
LDA.l DisableFlashing LDA.l DisableFlashing : REP #$20 : BNE +
REP #$20 : BNE +
LDA $00,X LDA $00,X
LDA $00 : STA $04 LDA $00 : STA $04
LDA $02 : STA $06 LDA $02 : STA $06
@@ -232,32 +223,72 @@ ConditionalPedAncilla:
LDA $00 LDA $00
LDA $00 : LDA $04 LDA $00 : LDA $04
LDA $02 : LDA $06 LDA $02 : LDA $06
RTL
;================================================================================
LoadElectroPalette:
REP #$20
LDA.w #$0202 : STA $0C
LDA.w #$0404 : STA $0E
LDA.w #$001B : STA $02
SEP #$10
LDX $0C : LDA $1BEBB4, X : AND.w #$00FF : ADC #$D630
REP #$10 : LDX.w #$01B2 : LDY.w #$0002
JSR ConditionalLoadGearPalette
SEP #$10
LDX $0D
LDA $1BEBC1, X : AND.w #$00FF : ADC #$D648
REP #$10 : LDX.w #$01B8 : LDY.w #$0003
JSR ConditionalLoadGearPalette
SEP #$10
LDX $0E
LDA $1BEC06, X : AND.w #$00FF : ASL A : ADC #$D308
REP #$10 : LDX.w #$01E2 : LDY.w #$000E
JSR ConditionalLoadGearPalette
SEP #$30
INC $15
RTL RTL
;================================================================================ ;================================================================================
ConditionalChangeGearPalette: ConditionalLoadGearPalette:
PHY STA $00
STA $00
SEP #$20
LDA.l DisableFlashing : REP #$20 : BNE +
LDA $00,X
-
LDA [$00] : STA $7EC300, X : STA $7EC500, X
INC $00 : INC $00
INX #2
DEY : BPL -
BRA ++
+
LDA $00
-
LDA [$00] : LDA $7EC300, X : LDA $7EC500, X
INC $00 : INC $00
INX #2
DEY : BPL -
BRA ++
++
PLY ; use what was in Y register to determine which p flags to set
CPY #$000E : BNE +
SEP #$20 SEP #$20
+ LDA.l DisableFlashing : REP #$20 : BNE +
SEP #$10 LDA $00,X
-
LDA [$00]
STA $7EC500, X
INC $00 : INC $00
INX #2
DEY
BPL -
RTS
+
LDA $00
-
LDA [$00]
LDA $7EC500, X
INC $00 : INC $00
INX #2
DEY
BPL -
RTS
;================================================================================
RestoreElectroPalette:
REP #$30
LDX.w #$01B2 : LDY.w #$0002
JSR FillPaletteBufferFromAux
LDX.w #$01B8 : LDY.w #$0003
JSR FillPaletteBufferFromAux
LDX.w #$01E2 : LDY.w #$000E
JSR FillPaletteBufferFromAux
SEP #$30
INC $15
RTL RTL
;================================================================================
FillPaletteBufferFromAux:
-
LDA $7EC300, X
STA $7EC500, X
INX #2
DEY
BPL -
RTS

View File

@@ -16,7 +16,7 @@ OnPrepFileSelect:
OnDrawHud: OnDrawHud:
JSL.l DrawChallengeTimer ; this has to come before NewDrawHud because the timer overwrites the compass counter JSL.l DrawChallengeTimer ; this has to come before NewDrawHud because the timer overwrites the compass counter
JSL.l NewDrawHud JSL.l NewDrawHud
JSL.l SwapSpriteIfNecissary JSL.l SwapSpriteIfNecessary
JSL.l CuccoStorm JSL.l CuccoStorm
JSL.l PollService JSL.l PollService
JML.l ReturnFromOnDrawHud JML.l ReturnFromOnDrawHud

View File

@@ -737,9 +737,6 @@ dw $0000, $0002, $0004, $0032, $0004, $0006, $0030
;JSL FlipGreenPendant ;JSL FlipGreenPendant
;NOP #6 ;NOP #6
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
org $08AAF9 ; -< 42AF9 - ancilla_ether_spell.asm : 46 (JSL Palette_Restore_BG_From_Flash)
JSL.l RestoreBgEther
;--------------------------------------------------------------------------------
org $02A3F4 ; <- 123F4 - Bank02.asm : 6222 (LDA.b #$72 : BRA .setBrightness) org $02A3F4 ; <- 123F4 - Bank02.asm : 6222 (LDA.b #$72 : BRA .setBrightness)
BRA + : NOP #2 : + BRA + : NOP #2 : +
org $02A3FD ; <- 123FD - Bank02.asm : 6233 (LDA.b #$32 : STA $9a) org $02A3FD ; <- 123FD - Bank02.asm : 6233 (LDA.b #$32 : STA $9a)
@@ -748,6 +745,15 @@ JSL.l ConditionalLightning
org $1DE9CD ; <- EE9CD - Bank1D.asm : 568 (JSL Filter_Majorly_Whiten_Bg) org $1DE9CD ; <- EE9CD - Bank1D.asm : 568 (JSL Filter_Majorly_Whiten_Bg)
JSL.l ConditionalWhitenBg JSL.l ConditionalWhitenBg
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
org $08AAE9 ; <- 042AE9 - ancilla_ether_spell.asm : 34 (JSL Palette_ElectroThemedGear)
JSL.l LoadElectroPalette
;--------------------------------------------------------------------------------
org $08AAF5 ; <- 042AF5 - ancilla_ether_spell.asm : 45 (JSL LoadActualGearPalettes)
JSL.l RestoreElectroPalette
;--------------------------------------------------------------------------------
org $08AAF9 ; -< 42AF9 - ancilla_ether_spell.asm : 46 (JSL Palette_Restore_BG_From_Flash)
JSL.l RestoreBgEther
;--------------------------------------------------------------------------------
org $08AAED ; <- 42AED - ancilla_ether_spell.asm : 35 (JSL Filter_Majorly_Whiten_Bg) org $08AAED ; <- 42AED - ancilla_ether_spell.asm : 35 (JSL Filter_Majorly_Whiten_Bg)
JSL.l ConditionalWhitenBg JSL.l ConditionalWhitenBg
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
@@ -766,14 +772,13 @@ JSL.l ConditionalRedFlash : BRA + : NOP #13 : +
org $08C2A1 ; <- 442A3 - ancilla_sword_ceremony.asm : 54 (REP #$20) org $08C2A1 ; <- 442A3 - ancilla_sword_ceremony.asm : 54 (REP #$20)
JSL.l ConditionalPedAncilla : BRA + : NOP #4 : + JSL.l ConditionalPedAncilla : BRA + : NOP #4 : +
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
org $02FDB1 ; <- 17DB1 - Bank0E.asm : 3760 (JSL LoadGearPalette) org $079976 ; <- 039976 - Bank07.asm : 4009 (JSL Palette_ElectroThemedGear)
JSL.l ConditionalChangeGearPalette : NOP JSL.l LoadElectroPalette
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
org $02FDCB ; <- 17DCB - Bank0E.asm : 3775 (JSL LoadGearPalette) org $07997C ; <- 03997C - Bank07.asm : 4015 (JSL LoadActualGearPalettes)
JSL.l ConditionalChangeGearPalette : NOP JSL.l RestoreElectroPalette
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
org $02FDE6 ; <- 17DE6 - Bank0E.asm : 3789 (JSL LoadGearPalette)
JSL.l ConditionalChangeGearPalette : NOP
;================================================================================ ;================================================================================
; Ice Floor Toggle ; Ice Floor Toggle
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------

View File

@@ -15,7 +15,7 @@ RTL
!BANK_BASE = "#$29" !BANK_BASE = "#$29"
org $BF8000 org $BF8000
SwapSpriteIfNecissary: SwapSpriteIfNecessary:
PHP PHP
SEP #$20 ; set 8-bit accumulator SEP #$20 ; set 8-bit accumulator
LDA !SPRITE_SWAP : BEQ + : !ADD !BANK_BASE : CMP $BC : BEQ + LDA !SPRITE_SWAP : BEQ + : !ADD !BANK_BASE : CMP $BC : BEQ +
@@ -83,4 +83,4 @@ SpriteSwap_Palette_ArmorAndGloves:
INC $15 INC $15
PLA : PLY : PLX PLA : PLY : PLX
RTL RTL
} }