Add Sprite_CountActiveById, limit keese in twinrova fight
This commit is contained in:
@@ -317,7 +317,23 @@ Sprite_CheckForPresence:
|
|||||||
.done
|
.done
|
||||||
PLX
|
PLX
|
||||||
RTL
|
RTL
|
||||||
|
}
|
||||||
|
|
||||||
|
; $00 - ID of the sprite to check
|
||||||
|
; $02 - Number of sprites found
|
||||||
|
Sprite_CountActiveById:
|
||||||
|
{
|
||||||
|
STZ $02
|
||||||
|
LDX.b #$10
|
||||||
|
.x_loop
|
||||||
|
DEX
|
||||||
|
LDA $0E20, X : CMP.b $00 : BEQ .increment
|
||||||
|
BRA .continue
|
||||||
|
.increment
|
||||||
|
INC $02
|
||||||
|
.continue
|
||||||
|
CPX.b #$00 : BNE .x_loop
|
||||||
|
RTL
|
||||||
}
|
}
|
||||||
|
|
||||||
; =========================================================
|
; =========================================================
|
||||||
|
|||||||
@@ -159,7 +159,7 @@ Sprite_Twinrova_Main:
|
|||||||
PLX
|
PLX
|
||||||
|
|
||||||
LDA.w SprAction, X
|
LDA.w SprAction, X
|
||||||
JSL UseImplicitRegIndexedLocalJumpTable
|
JSL JumpTableLocal
|
||||||
|
|
||||||
dw Twinrova_Init ; 0x00
|
dw Twinrova_Init ; 0x00
|
||||||
dw Twinrova_MoveState ; 0x01
|
dw Twinrova_MoveState ; 0x01
|
||||||
@@ -200,6 +200,9 @@ Sprite_Twinrova_Main:
|
|||||||
.phase_1
|
.phase_1
|
||||||
|
|
||||||
|
|
||||||
|
LDA.b #$11 : STA.b $00
|
||||||
|
JSL Sprite_CountActiveById
|
||||||
|
LDA.b $02 : CMP.b #$03 : BCS +
|
||||||
%ProbCheck($3F, +)
|
%ProbCheck($3F, +)
|
||||||
%ProbCheck($0F, ++)
|
%ProbCheck($0F, ++)
|
||||||
JSL Sprite_SpawnFireKeese
|
JSL Sprite_SpawnFireKeese
|
||||||
@@ -540,8 +543,8 @@ TargetPositions:
|
|||||||
|
|
||||||
Twinrova_RestoreFloorTile:
|
Twinrova_RestoreFloorTile:
|
||||||
{
|
{
|
||||||
LDA.w SprY, X : AND #$F8 : STA.b $00 : LDA.w SprYH, X : STA.b $01
|
LDA.w SprY, X : STA.b $00 : LDA.w SprYH, X : STA.b $01
|
||||||
LDA.w SprX, X : AND #$F8 : STA.b $02 : LDA.w SprXH, X : STA.b $03
|
LDA.w SprX, X : STA.b $02 : LDA.w SprXH, X : STA.b $03
|
||||||
|
|
||||||
LDA.b #$00
|
LDA.b #$00
|
||||||
JSL Sprite_GetTileAttr
|
JSL Sprite_GetTileAttr
|
||||||
@@ -552,7 +555,6 @@ Twinrova_RestoreFloorTile:
|
|||||||
LDA.w SprYH, Y : ADC.b #$00 : STA.l $7FF85A, X
|
LDA.w SprYH, Y : ADC.b #$00 : STA.l $7FF85A, X
|
||||||
JSR RestoreFloorTile
|
JSR RestoreFloorTile
|
||||||
+
|
+
|
||||||
|
|
||||||
RTS
|
RTS
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -586,71 +588,44 @@ AddPitHazard:
|
|||||||
|
|
||||||
Ganon_SpawnFallingTilesOverlord:
|
Ganon_SpawnFallingTilesOverlord:
|
||||||
{
|
{
|
||||||
#_1D90D0: LDY.b #$07
|
LDY.b #$07
|
||||||
|
|
||||||
.next_slot
|
.next_slot
|
||||||
#_1D90D2: LDA.w $0B00,Y
|
LDA.w $0B00, Y : BEQ .free_slot
|
||||||
#_1D90D5: BEQ .free_slot
|
DEY : BPL .next_slot
|
||||||
|
RTS
|
||||||
#_1D90D7: DEY
|
|
||||||
#_1D90D8: BPL .next_slot
|
|
||||||
|
|
||||||
#_1D90DA: RTS
|
|
||||||
|
|
||||||
;----------------------------------------------------------
|
|
||||||
|
|
||||||
.free_slot
|
.free_slot
|
||||||
#_1D90DB: LDA.w SprMiscF,X
|
|
||||||
#_1D90DE: CMP.b #$04
|
|
||||||
#_1D90E0: BCS .dont_spawn
|
|
||||||
|
|
||||||
#_1D90E2: INC.w SprMiscF,X
|
|
||||||
|
|
||||||
#_1D90E5: PHX
|
|
||||||
|
|
||||||
#_1D90E6: TAX
|
|
||||||
|
|
||||||
#_1D90E7: LDA.w .overlord_type,X
|
|
||||||
#_1D90EA: STA.w $0B00,Y
|
|
||||||
|
|
||||||
#_1D90ED: LDA.w .position_x,X
|
|
||||||
#_1D90F0: STA.w $0B08,Y
|
|
||||||
|
|
||||||
#_1D90F3: LDA.b $23
|
|
||||||
#_1D90F5: STA.w $0B10,Y
|
|
||||||
|
|
||||||
#_1D90F8: LDA.w .position_y,X
|
|
||||||
#_1D90FB: STA.w $0B18,Y
|
|
||||||
|
|
||||||
#_1D90FE: LDA.b $21
|
|
||||||
#_1D9100: STA.w $0B20,Y
|
|
||||||
|
|
||||||
#_1D9103: LDA.b #$00
|
|
||||||
#_1D9105: STA.w $0B28,Y
|
|
||||||
#_1D9108: STA.w $0B30,Y
|
|
||||||
|
|
||||||
#_1D910B: PLX
|
|
||||||
|
|
||||||
|
LDA.w SprMiscF, X : CMP.b #$04 : BCS .dont_spawn
|
||||||
|
INC.w SprMiscF, X
|
||||||
|
PHX
|
||||||
|
TAX
|
||||||
|
LDA.w .overlord_type, X : STA.w $0B00, Y
|
||||||
|
LDA.w .position_x, X : STA.w $0B08, Y
|
||||||
|
LDA.b $23 : STA.w $0B10, Y
|
||||||
|
LDA.w .position_y, X : STA.w $0B18, Y
|
||||||
|
LDA.b $21 : STA.w $0B20, Y
|
||||||
|
LDA.b #$00 : STA.w $0B28, Y : STA.w $0B30, Y
|
||||||
|
PLX
|
||||||
.dont_spawn
|
.dont_spawn
|
||||||
#_1D910C: RTS
|
RTS
|
||||||
|
|
||||||
.overlord_type
|
.overlord_type
|
||||||
#_1D90C4: db $0C ; OVERLORD 0C
|
db $0C ; OVERLORD 0C
|
||||||
#_1D90C5: db $0D ; OVERLORD 0D
|
db $0D ; OVERLORD 0D
|
||||||
#_1D90C6: db $0E ; OVERLORD 0E
|
db $0E ; OVERLORD 0E
|
||||||
#_1D90C7: db $0F ; OVERLORD 0F
|
db $0F ; OVERLORD 0F
|
||||||
|
|
||||||
.position_x
|
.position_x
|
||||||
#_1D90C8: db $18
|
db $18
|
||||||
#_1D90C9: db $D8
|
db $D8
|
||||||
#_1D90CA: db $D8
|
db $D8
|
||||||
#_1D90CB: db $18
|
db $18
|
||||||
|
|
||||||
.position_y
|
.position_y
|
||||||
#_1D90CC: db $20
|
db $20
|
||||||
#_1D90CD: db $20
|
db $20
|
||||||
#_1D90CE: db $D0
|
db $D0
|
||||||
#_1D90CF: db $D0
|
db $D0
|
||||||
}
|
}
|
||||||
|
|
||||||
; =========================================================
|
; =========================================================
|
||||||
@@ -842,7 +817,6 @@ ReleaseFireballs:
|
|||||||
.exit_a
|
.exit_a
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
|
|
||||||
.offset_x_low
|
.offset_x_low
|
||||||
db 12, -12, 0, 0
|
db 12, -12, 0, 0
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user