update magic bubble damage class
This commit is contained in:
@@ -566,32 +566,23 @@ Ancilla_CheckBasicSpriteCollision:
|
|||||||
ORA.w $0EF0,Y
|
ORA.w $0EF0,Y
|
||||||
BNE .skip
|
BNE .skip
|
||||||
|
|
||||||
LDA.w $0DD0,Y
|
LDA.w $0DD0,Y : CMP.b #$09 : BCC .skip
|
||||||
CMP.b #$09
|
|
||||||
BCC .skip
|
|
||||||
|
|
||||||
LDA.w $0CAA,Y
|
LDA.w $0CAA,Y : AND.b #$02 : BNE .sprite_ignores_priority
|
||||||
AND.b #$02
|
|
||||||
BNE .sprite_ignores_priority
|
|
||||||
|
|
||||||
LDA.w $0280,X
|
LDA.w $0280,X : BNE .skip
|
||||||
BNE .skip
|
|
||||||
|
|
||||||
.sprite_ignores_priority
|
.sprite_ignores_priority
|
||||||
LDA.w $0C7C,X
|
LDA.w $0C7C,X : CMP.w $0F20,Y : BNE .skip
|
||||||
CMP.w $0F20,Y
|
|
||||||
BNE .skip
|
|
||||||
|
|
||||||
LDA.w $0C4A,X
|
; ANCILLA 2C
|
||||||
CMP.b #$2C ; ANCILLA 2C
|
LDA.w $0C4A,X : CMP.b #$2C : BNE .not_somaria_block
|
||||||
BNE .not_somaria_block
|
|
||||||
|
|
||||||
LDA.w $0E20,Y
|
; SPRITE 1E
|
||||||
CMP.b #$1E ; SPRITE 1E
|
LDA.w $0E20,Y : CMP.b #$1E : BEQ .skip
|
||||||
BEQ .skip
|
|
||||||
|
|
||||||
CMP.b #$90 ; SPRITE 90
|
; SPRITE 90
|
||||||
BEQ .skip
|
CMP.b #$90 : BEQ .skip
|
||||||
|
|
||||||
.not_somaria_block
|
.not_somaria_block
|
||||||
JSR Ancilla_CheckBasicSpriteCollision_Single
|
JSR Ancilla_CheckBasicSpriteCollision_Single
|
||||||
@@ -623,53 +614,34 @@ Ancilla_CheckBasicSpriteCollision_Single:
|
|||||||
JSL CheckIfHitBoxesOverlap
|
JSL CheckIfHitBoxesOverlap
|
||||||
BCC .fail
|
BCC .fail
|
||||||
|
|
||||||
LDA.w $0E20,Y
|
; SPRITE 92
|
||||||
CMP.b #$92 ; SPRITE 92
|
LDA.w $0E20,Y : CMP.b #$92 : BNE .not_king_helma
|
||||||
BNE .not_king_helma
|
|
||||||
|
|
||||||
LDA.w $0DB0,Y
|
LDA.w $0DB0,Y : CMP.b #$03 : BCC .success
|
||||||
CMP.b #$03
|
|
||||||
BCC .success
|
|
||||||
|
|
||||||
.not_king_helma
|
.not_king_helma
|
||||||
LDA.w $0E20,Y
|
; SPRITE 80
|
||||||
CMP.b #$80 ; SPRITE 80
|
LDA.w $0E20,Y : CMP.b #$80 : BNE .dont_reverse_fire_snake
|
||||||
BNE .dont_reverse_fire_snake
|
|
||||||
|
|
||||||
LDA.w $0F10,Y
|
LDA.w $0F10,Y : BNE .dont_reverse_fire_snake
|
||||||
BNE .dont_reverse_fire_snake
|
|
||||||
|
|
||||||
LDA.b #$18
|
LDA.b #$18 : STA.w $0F10,Y
|
||||||
STA.w $0F10,Y
|
|
||||||
|
|
||||||
LDA.w $0DE0,Y
|
LDA.w $0DE0,Y : EOR.b #$01 : STA.w $0DE0,Y
|
||||||
EOR.b #$01
|
|
||||||
STA.w $0DE0,Y
|
|
||||||
|
|
||||||
.dont_reverse_fire_snake
|
.dont_reverse_fire_snake
|
||||||
LDA.w $0BA0,Y
|
LDA.w $0BA0,Y : BNE .fail
|
||||||
BNE .fail
|
|
||||||
|
|
||||||
LDA.w $0C04,X
|
LDA.w $0C04,X : SEC : SBC.b #$08 : STA.b $04
|
||||||
SEC
|
|
||||||
SBC.b #$08
|
|
||||||
STA.b $04
|
|
||||||
|
|
||||||
LDA.w $0C18,X
|
LDA.w $0C18,X : SBC.b #$00 : STA.b $05
|
||||||
SBC.b #$00
|
|
||||||
STA.b $05
|
|
||||||
|
|
||||||
LDA.w $0BFA,X
|
LDA.w $0BFA,X : SEC : SBC.b #$08
|
||||||
SEC
|
|
||||||
SBC.b #$08
|
|
||||||
PHP
|
PHP
|
||||||
|
|
||||||
SEC
|
SEC : SBC.w $029E,X : STA.b $06
|
||||||
SBC.w $029E,X
|
|
||||||
STA.b $06
|
|
||||||
|
|
||||||
LDA.w $0C0E,X
|
LDA.w $0C0E,X : SBC.b #$00
|
||||||
SBC.b #$00
|
|
||||||
|
|
||||||
PLP
|
PLP
|
||||||
SBC.b #$00
|
SBC.b #$00
|
||||||
@@ -686,13 +658,8 @@ Ancilla_CheckBasicSpriteCollision_Single:
|
|||||||
PLX
|
PLX
|
||||||
PLY
|
PLY
|
||||||
|
|
||||||
LDA.b $00
|
LDA.b $00 : EOR.b #$FF : STA.w $0F30,Y
|
||||||
EOR.b #$FF
|
LDA.b $01 : EOR.b #$FF : STA.w $0F40,Y
|
||||||
STA.w $0F30,Y
|
|
||||||
|
|
||||||
LDA.b $01
|
|
||||||
EOR.b #$FF
|
|
||||||
STA.w $0F40,Y
|
|
||||||
|
|
||||||
PHX
|
PHX
|
||||||
|
|
||||||
@@ -719,36 +686,20 @@ Ancilla_CheckBasicSpriteCollision_Single:
|
|||||||
|
|
||||||
Ancilla_SetupBasicHitBox:
|
Ancilla_SetupBasicHitBox:
|
||||||
{
|
{
|
||||||
LDA.w $0C04,X
|
LDA.w $0C04,X : SEC : SBC.b #$08 : STA.b $00
|
||||||
SEC
|
LDA.w $0C18,X : SBC.b #$00 : STA.b $08
|
||||||
SBC.b #$08
|
LDA.w $0BFA,X : SEC : SBC.b #$08
|
||||||
STA.b $00
|
|
||||||
|
|
||||||
LDA.w $0C18,X
|
|
||||||
SBC.b #$00
|
|
||||||
STA.b $08
|
|
||||||
|
|
||||||
LDA.w $0BFA,X
|
|
||||||
SEC
|
|
||||||
SBC.b #$08
|
|
||||||
PHP
|
PHP
|
||||||
|
|
||||||
SEC
|
SEC : SBC.w $029E,X : STA.b $01
|
||||||
SBC.w $029E,X
|
|
||||||
STA.b $01
|
|
||||||
|
|
||||||
LDA.w $0C0E,X
|
LDA.w $0C0E,X : SBC.b #$00
|
||||||
SBC.b #$00
|
|
||||||
|
|
||||||
PLP
|
PLP
|
||||||
SBC.b #$00
|
SBC.b #$00 : STA.b $09
|
||||||
STA.b $09
|
|
||||||
|
|
||||||
LDA.b #$0F
|
LDA.b #$0F : STA.b $02
|
||||||
STA.b $02
|
LDA.b #$0F : STA.b $03
|
||||||
|
|
||||||
LDA.b #$0F
|
|
||||||
STA.b $03
|
|
||||||
|
|
||||||
RTS
|
RTS
|
||||||
}
|
}
|
||||||
@@ -776,9 +727,7 @@ Ancilla_Move_Y:
|
|||||||
ASL A
|
ASL A
|
||||||
ASL A
|
ASL A
|
||||||
|
|
||||||
CLC
|
CLC : ADC.w $0C36,X : STA.w $0C36,X
|
||||||
ADC.w $0C36,X
|
|
||||||
STA.w $0C36,X
|
|
||||||
|
|
||||||
LDY.b #$00
|
LDY.b #$00
|
||||||
|
|
||||||
@@ -797,12 +746,10 @@ Ancilla_Move_Y:
|
|||||||
DEY
|
DEY
|
||||||
|
|
||||||
.other_way
|
.other_way
|
||||||
ADC.w $0BFA,X
|
ADC.w $0BFA,X : STA.w $0BFA,X
|
||||||
STA.w $0BFA,X
|
|
||||||
|
|
||||||
TYA
|
TYA
|
||||||
ADC.w $0C0E,X
|
ADC.w $0C0E,X : STA.w $0C0E,X
|
||||||
STA.w $0C0E,X
|
|
||||||
|
|
||||||
RTS
|
RTS
|
||||||
}
|
}
|
||||||
@@ -818,9 +765,7 @@ Ancilla_Move_Z:
|
|||||||
ASL A
|
ASL A
|
||||||
ASL A
|
ASL A
|
||||||
|
|
||||||
CLC
|
CLC : ADC.w $02A8,X : STA.w $02A8,X
|
||||||
ADC.w $02A8,X
|
|
||||||
STA.w $02A8,X
|
|
||||||
|
|
||||||
LDY.b #$00
|
LDY.b #$00
|
||||||
|
|
||||||
@@ -839,34 +784,12 @@ Ancilla_Move_Z:
|
|||||||
DEY
|
DEY
|
||||||
|
|
||||||
.other_way
|
.other_way
|
||||||
ADC.w $029E,X
|
ADC.w $029E,X : STA.w $029E,X
|
||||||
STA.w $029E,X
|
|
||||||
|
|
||||||
RTS
|
RTS
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
MagicBubbleGfx:
|
|
||||||
incbin "gfx/magic_bubble.bin"
|
|
||||||
|
|
||||||
MagicBubbleSwapDynamicGfx:
|
|
||||||
{
|
|
||||||
PHX
|
|
||||||
PHP
|
|
||||||
|
|
||||||
REP #$30
|
|
||||||
|
|
||||||
LDX #$01BE
|
|
||||||
--
|
|
||||||
LDA.l MagicBubbleGfx, X : STA.l $7EA480, X
|
|
||||||
DEX : DEX
|
|
||||||
BPL --
|
|
||||||
|
|
||||||
PLP
|
|
||||||
PLX
|
|
||||||
RTL
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Ancilla_Killa:
|
Ancilla_Killa:
|
||||||
PLA
|
PLA
|
||||||
@@ -880,24 +803,15 @@ Ancilla_BoundsCheck:
|
|||||||
{
|
{
|
||||||
LDY.w $0C7C,X
|
LDY.w $0C7C,X
|
||||||
|
|
||||||
LDA.w .data,Y
|
LDA.w .data,Y : STA.b $04
|
||||||
STA.b $04
|
|
||||||
|
|
||||||
LDY.w $0C86,X
|
LDY.w $0C86,X
|
||||||
|
|
||||||
LDA.w $0C04,X
|
LDA.w $0C04,X : SEC : SBC.b $E2 : CMP.b #$F4 : BCS Ancilla_Killa
|
||||||
SEC
|
|
||||||
SBC.b $E2
|
|
||||||
CMP.b #$F4
|
|
||||||
BCS Ancilla_Killa
|
|
||||||
|
|
||||||
STA.b $00
|
STA.b $00
|
||||||
|
|
||||||
LDA.w $0BFA,X
|
LDA.w $0BFA,X : SEC : SBC.b $E8 : CMP.b #$F0 : BCS Ancilla_Killa
|
||||||
SEC
|
|
||||||
SBC.b $E8
|
|
||||||
CMP.b #$F0
|
|
||||||
BCS Ancilla_Killa
|
|
||||||
|
|
||||||
STA.b $01
|
STA.b $01
|
||||||
|
|
||||||
@@ -940,7 +854,7 @@ AncillaAdd_MagicBubbleShot:
|
|||||||
LDA.b #$03 : STA.w AnciTimerA,Y
|
LDA.b #$03 : STA.w AnciTimerA,Y
|
||||||
LDA.b #$00 : STA.w AnciMiscB,Y : STA.w $0C5E,Y
|
LDA.b #$00 : STA.w AnciMiscB,Y : STA.w $0C5E,Y
|
||||||
STA.w $0280,Y : STA.w $028A,Y
|
STA.w $0280,Y : STA.w $028A,Y
|
||||||
LDA.b $2F : LSR A : STA.w $0C72,Y
|
LDA.b $2F : LSR A : STA.w AnciMiscD,Y
|
||||||
|
|
||||||
TAX
|
TAX
|
||||||
|
|
||||||
@@ -960,18 +874,12 @@ AncillaAdd_MagicBubbleShot:
|
|||||||
|
|
||||||
LDA.w $0023 : ADC.w .init_check_offset_x_high,X : STA.w $0C18,Y
|
LDA.w $0023 : ADC.w .init_check_offset_x_high,X : STA.w $0C18,Y
|
||||||
|
|
||||||
LDA.w $0020
|
LDA.w $0020 : CLC : ADC.w .init_check_offset_y_low,X : STA.w $0BFA,Y
|
||||||
CLC
|
|
||||||
ADC.w .init_check_offset_y_low,X
|
|
||||||
STA.w $0BFA,Y
|
|
||||||
|
|
||||||
LDA.w $0021
|
LDA.w $0021 : ADC.w .init_check_offset_y_high,X : STA.w $0C0E,Y
|
||||||
ADC.w .init_check_offset_y_high,X
|
|
||||||
STA.w $0C0E,Y
|
|
||||||
|
|
||||||
|
; ANCILLA 01
|
||||||
LDA.w AnciType,Y : CMP.b #$01 ; ANCILLA 01
|
LDA.w AnciType,Y : CMP.b #$01 : BEQ .is_somaria_bullet
|
||||||
BEQ .is_somaria_bullet
|
|
||||||
|
|
||||||
LDA.w .flame_speed_x,X : STA.w AnciYSpeed,Y
|
LDA.w .flame_speed_x,X : STA.w AnciYSpeed,Y
|
||||||
|
|
||||||
@@ -995,8 +903,7 @@ AncillaAdd_MagicBubbleShot:
|
|||||||
ADC.b $0F
|
ADC.b $0F
|
||||||
TAX
|
TAX
|
||||||
|
|
||||||
LDA.w SomariaBulletSpeedX,X
|
LDA.w SomariaBulletSpeedX,X : STA.w AnciYSpeed,Y
|
||||||
STA.w AnciYSpeed,Y
|
|
||||||
|
|
||||||
LDA.w SomariaBulletSpeedY,X
|
LDA.w SomariaBulletSpeedY,X
|
||||||
|
|
||||||
@@ -1027,17 +934,12 @@ AncillaAdd_MagicBubbleShot:
|
|||||||
|
|
||||||
|
|
||||||
.not_bullet
|
.not_bullet
|
||||||
LDA.b #$01
|
LDA.b #$01 : STA.w AnciMiscB,Y
|
||||||
STA.w AnciMiscB,Y
|
LDA.b #$1F : STA.w AnciTimerA,Y
|
||||||
|
LDA.b #$08 : STA.w AnciOAMNbr,Y
|
||||||
|
|
||||||
LDA.b #$1F
|
; SFX2.2A
|
||||||
STA.w AnciTimerA,Y
|
LDA.b #$2A : JSR Ancilla_SFX2_Pan
|
||||||
|
|
||||||
LDA.b #$08
|
|
||||||
STA.w AnciOAMNbr,Y
|
|
||||||
|
|
||||||
LDA.b #$2A ; SFX2.2A
|
|
||||||
JSR Ancilla_SFX2_Pan
|
|
||||||
|
|
||||||
.exit_b
|
.exit_b
|
||||||
PLX
|
PLX
|
||||||
@@ -1076,14 +978,12 @@ Ancilla0E_MagicBubbleLong:
|
|||||||
|
|
||||||
Ancilla_MagicBubbleShot:
|
Ancilla_MagicBubbleShot:
|
||||||
{
|
{
|
||||||
LDA.w $0C54,X
|
LDA.w AnciMiscB,X : BEQ MagicBubbleShot_Moving
|
||||||
BEQ MagicBubbleShot_Moving
|
|
||||||
|
|
||||||
JMP.w MagicBubbleShot_Halted
|
JMP.w MagicBubbleShot_Halted
|
||||||
|
|
||||||
#MagicBubbleShot_Moving:
|
#MagicBubbleShot_Moving:
|
||||||
LDA.b $11
|
LDA.b $11 : BNE .draw
|
||||||
BNE .draw
|
|
||||||
|
|
||||||
STZ.w $0385,X
|
STZ.w $0385,X
|
||||||
|
|
||||||
@@ -1095,7 +995,7 @@ Ancilla_MagicBubbleShot:
|
|||||||
|
|
||||||
; -------------------------------------------------------
|
; -------------------------------------------------------
|
||||||
|
|
||||||
LDA.w $0C72,X : ORA.b #$08 : STA.w $0C72,X
|
LDA.w AnciMiscD,X : ORA.b #$08 : STA.w AnciMiscD,X
|
||||||
|
|
||||||
JSL Ancilla_CheckTileCollision_long
|
JSL Ancilla_CheckTileCollision_long
|
||||||
PHP
|
PHP
|
||||||
@@ -1105,7 +1005,7 @@ Ancilla_MagicBubbleShot:
|
|||||||
PLP
|
PLP
|
||||||
BCS .collision
|
BCS .collision
|
||||||
|
|
||||||
LDA.w $0C72,X : ORA.b #$0C : STA.w $0C72,X
|
LDA.w AnciMiscD,X : ORA.b #$0C : STA.w AnciMiscD,X
|
||||||
LDA.w $028A,X : STA.b $74
|
LDA.w $028A,X : STA.b $74
|
||||||
|
|
||||||
JSL Ancilla_CheckTileCollision_long
|
JSL Ancilla_CheckTileCollision_long
|
||||||
@@ -1117,9 +1017,9 @@ Ancilla_MagicBubbleShot:
|
|||||||
BCC .no_collision
|
BCC .no_collision
|
||||||
|
|
||||||
.collision
|
.collision
|
||||||
INC.w $0C54,X
|
INC.w AnciMiscB,X
|
||||||
|
|
||||||
LDA.b #$1F : STA.w $0C68,X
|
LDA.b #$1F : STA.w AnciTimerA,X
|
||||||
LDA.b #$08 : STA.w $0C90,X
|
LDA.b #$08 : STA.w $0C90,X
|
||||||
|
|
||||||
LDA.b #$2A ; SFX2.2A
|
LDA.b #$2A ; SFX2.2A
|
||||||
@@ -1130,7 +1030,7 @@ Ancilla_MagicBubbleShot:
|
|||||||
.no_collision
|
.no_collision
|
||||||
INC.w $0C5E,X
|
INC.w $0C5E,X
|
||||||
|
|
||||||
LDA.w $0C72,X : AND.b #$F3 : STA.w $0C72,X
|
LDA.w AnciMiscD,X : AND.b #$F3 : STA.w AnciMiscD,X
|
||||||
LDA.w $0385,X : STA.w $0333
|
LDA.w $0385,X : STA.w $0333
|
||||||
AND.b #$F0 : CMP.b #$C0 : BEQ .torch
|
AND.b #$F0 : CMP.b #$C0 : BEQ .torch
|
||||||
LDA.w $03E4,X : STA.w $0333
|
LDA.w $03E4,X : STA.w $0333
|
||||||
@@ -1266,7 +1166,7 @@ MagicBubbleShot_Halted:
|
|||||||
JSR Ancilla_BoundsCheck
|
JSR Ancilla_BoundsCheck
|
||||||
|
|
||||||
LDY.b #$00
|
LDY.b #$00
|
||||||
LDA.w $0C68,X
|
LDA.w AnciTimerA, X
|
||||||
BEQ MagicBubbleShot_Dissipate
|
BEQ MagicBubbleShot_Dissipate
|
||||||
|
|
||||||
LSR A
|
LSR A
|
||||||
@@ -1331,12 +1231,38 @@ MagicBubbleShot_Halted:
|
|||||||
db $A2, $A0, $8E
|
db $A2, $A0, $8E
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MagicBubbleGfx:
|
||||||
|
incbin "gfx/magic_bubble.bin"
|
||||||
|
|
||||||
|
MagicBubbleSwapDynamicGfx:
|
||||||
|
{
|
||||||
|
PHX
|
||||||
|
PHP
|
||||||
|
|
||||||
|
REP #$30
|
||||||
|
|
||||||
|
LDX #$01BE
|
||||||
|
--
|
||||||
|
LDA.l MagicBubbleGfx, X : STA.l $7EA480, X
|
||||||
|
DEX : DEX
|
||||||
|
BPL --
|
||||||
|
|
||||||
|
PLP
|
||||||
|
PLX
|
||||||
|
RTL
|
||||||
|
}
|
||||||
|
|
||||||
pushpc
|
pushpc
|
||||||
|
|
||||||
|
; Magic Bubble Ancilla damage class
|
||||||
|
org $06EC8C
|
||||||
|
db $01
|
||||||
|
|
||||||
|
; =========================================================
|
||||||
|
|
||||||
LinkOAM_SetEquipmentVRAMOffsets = $0DABE6
|
LinkOAM_SetEquipmentVRAMOffsets = $0DABE6
|
||||||
LinkOAM_DrawShadow = $0DA857
|
LinkOAM_DrawShadow = $0DA857
|
||||||
|
|
||||||
|
|
||||||
org $0DA780
|
org $0DA780
|
||||||
LinkOAM_DrawShield:
|
LinkOAM_DrawShield:
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user