79 lines
1.4 KiB
NASM
79 lines
1.4 KiB
NASM
; Overlord Sprites and Events
|
|
|
|
SummonGuards:
|
|
{
|
|
LDA.l Sword : CMP.b #$02 : BNE +
|
|
JSR Overlord_SpawnSoldierPath
|
|
+
|
|
RTL
|
|
}
|
|
|
|
; TimerB - Manages spawn rate
|
|
Overlord_SpawnSoldierPath:
|
|
{
|
|
LDA.w OverlordTimerB, X : CMP.b #$80 : BEQ .spawn
|
|
DEC.w OverlordTimerB, X
|
|
RTS
|
|
.spawn
|
|
|
|
; JSL GetRandomInt : AND.b #$1F
|
|
; CLC : ADC.b #$60 : STA.w OverlordTimerB, X
|
|
INC.w OverlordTimerB, X
|
|
|
|
STZ.b $00
|
|
LDY.b #$0F
|
|
.next_check
|
|
LDA.w SprState, Y : BEQ .skip
|
|
LDA.w SprType, Y : CMP.b #$41 : BNE .skip
|
|
INC.b $00
|
|
.skip
|
|
DEY
|
|
BPL .next_check
|
|
|
|
LDA.b $00 : CMP.b #$05 : BCS .exit
|
|
LDY.b #$0C
|
|
LDA.b #$41 ; SPRITE 41 - Blue Soldier
|
|
JSL Sprite_SpawnDynamically_slot_limited : BMI .exit
|
|
|
|
LDA.b $05 : STA.w SprX,Y
|
|
LDA.b $06 : STA.w SprXH,Y
|
|
LDA.b $07 : STA.w SprY,Y
|
|
LDA.b $08 : STA.w SprYH,Y
|
|
|
|
LDA.w .soldier_position_x, X : STA.w SprX,Y
|
|
LDA.w .soldier_position_y, X : STA.w SprY,Y
|
|
LDA.w $0B40,X : STA.w SprFloor,Y
|
|
LDA.b #$20 : STA.w SprTimerA,Y
|
|
LDA.w $0FB5 : STA.w SprMiscC,Y
|
|
.exit
|
|
RTS
|
|
|
|
.soldier_position_x
|
|
db $30, $C0, $30, $C0, $50, $A0
|
|
|
|
.soldier_position_y
|
|
db $70, $70, $98, $98, $C0, $C0
|
|
|
|
.soldier_direction
|
|
db $00, $01, $00, $01, $03, $03
|
|
|
|
.soldier_palette
|
|
db $09, $09, $09, $09, $07, $09
|
|
}
|
|
|
|
|
|
pushpc
|
|
|
|
; Overlord04_Unused
|
|
org $09B7AE
|
|
dw Overlord_KalyxoCastleGuards
|
|
|
|
org $09F253
|
|
Overlord_KalyxoCastleGuards:
|
|
JSL SummonGuards
|
|
RTS
|
|
|
|
pullpc
|
|
|
|
print "End of overlord.asm ", pc
|