;-----------------------------------------------------------; ; ; ; Invaded ; ; Version 1.0 ; ; End-Of-Level Boss Routines ; ; ; ;-----------------------------------------------------------; ;------------------------------------------------ ; drawGuardian - Draw end-of-level boss (if fighting one) ; ; Input: None ; Output: None ;------------------------------------------------ drawGuardian: ld a,(guardian) or a ret z ld ix,drawGuardianTable ld de,guardianBG ld hl,guardianSpr1 ld b,4 drawGuardianLoop: push bc ld a,(gX) add a,(ix) ld b,a ; B = X Coord to draw sprite ld (de),a inc de ld a,(gY) add a,(ix+1) ld c,a ; C = Y Coord to draw sprite ld (de),a inc de ; DE => Where to store background call PutSprite_MSB ld bc,16 add hl,bc ex de,hl ld bc,8 add hl,bc ex de,hl inc ix inc ix pop bc djnz drawGuardianLoop ret ;------------------------------------------------ ; eraseGuardian - Erase end-of-level boss (if fighting one) ; ; Input: None ; Output: None ;------------------------------------------------ eraseGuardian: ld a,(guardian) or a ret z ld hl,guardianBG ld b,4 eraseGuardianLoop: push bc ld b,(hl) inc hl ld c,(hl) inc hl call PutSprite ld de,8 add hl,de pop bc djnz eraseGuardianLoop ret ;------------------------------------------------ ; moveGuardian - Run AI Scripts for end-of-level boss ; ; Input: None ; Output: None ;------------------------------------------------ moveGuardian: ld a,(guardian) or a ret z ld hl,frame bit 0,(hl) ret z ld ix,gX-1 ld a,(gAICnt1) ld (aiCnt),a ld a,(gAI1) call runAIScript ld a,(aiCnt) ld (gAICnt1),a ld a,(gAICnt2) ld (aiCnt),a ld a,(gAI2) call runAIScript ld a,(aiCnt) ld (gAICnt2),a ret ;------------------------------------------------ ; guardianMakeEnemy - Make an enemy from the end-of-level boss ; ; Input: None ; Output: None ;------------------------------------------------ guardianMakeEnemy: ld a,(guardian) or a ret z ld a,(gEnemy) or a ret z ld b,a ld hl,gEnemyCnt inc (hl) ld a,(hl) and $3F ret nz ld hl,gEnemyIni+1 ld (hl),b inc hl ld a,(gX) ld (hl),a inc hl ld a,(gY) ld (hl),a ld hl,gEnemyIni jp newEnemy .end