Routines |
Prev: ECAF | Up: Map | Next: ED12 |
First draw a yellow "GAME OVER":
|
|||||
Controller_GameOver | ECBF | LD C,$36 | C=INK: YELLOW, PAPER: YELLOW . | ||
ECC1 | XOR A | Set *GameOver_X_Offset to 00. | |||
ECC2 | LD ($EDEF),A | ||||
ECC5 | LD A,$01 | Set *GameOver_Y_Offset to 01. | |||
ECC7 | LD ($EDF0),A | ||||
ECCA | CALL Draw_GameOver | Call Draw_GameOver. | |||
Then, a little offset to the first one, draw a cyan "GAME OVER".
|
|||||
ECCD | LD C,$6D | C=INK: CYAN, PAPER: CYAN (BRIGHT) . | |||
ECCF | XOR A | Set *GameOver_Y_Offset to 00. | |||
ECD0 | LD ($EDF0),A | ||||
ECD3 | CALL Draw_GameOver | Call Draw_GameOver. | |||
Now flash the "GAME OVER" cycling down and back up through the following colours:
|
|||||
ECD6 | LD B,$0A | Set a counter in B of 0A to count the number of down/ up cycles here. | |||
GameOver_Flash_Loop | ECD8 | LD A,$01 | Set *GameOver_X_Offset to 01. | ||
ECDA | LD ($EDEF),A | ||||
ECDD | PUSH BC | Stash the colour loop counter on the stack. | |||
First cycle down, starting at: INK:
WHITE,
PAPER:
WHITE
(BRIGHT)
(7F).
|
|||||
ECDE | LD C,$7F | Set the starting colour value in C to INK: WHITE, PAPER: WHITE (BRIGHT) . | |||
CycleDown_Loop | ECE0 | CALL Draw_GameOver | Call Draw_GameOver. | ||
ECE3 | LD A,C | Jump to CycleUp_Loop if the current colour is: INK: BLUE, PAPER: BLUE (BRIGHT) (49). | |||
ECE4 | CP $49 | ||||
ECE6 | JR Z,CycleUp_Loop | ||||
ECE8 | SUB $09 | Subtract 09 from the current colour value and store the result back in C. | |||
ECEA | LD C,A | ||||
ECEB | CALL GameOver_FlashOffset | Call GameOver_FlashOffset. | |||
ECEE | JR CycleDown_Loop | Jump to CycleDown_Loop. | |||
Next cycle back up again; on first entry, starting at INK:
BLUE,
PAPER:
BLUE
(BRIGHT)
(49).
|
|||||
CycleUp_Loop | ECF0 | LD A,C | Jump to GameOver_Cycle_Next if the current colour is: INK: YELLOW, PAPER: YELLOW (BRIGHT) (76). | ||
ECF1 | CP $76 | ||||
ECF3 | JR Z,GameOver_Cycle_Next | ||||
ECF5 | ADD A,$09 | Add 09 to the current colour value and store the result back in C. | |||
ECF7 | LD C,A | ||||
ECF8 | CALL Draw_GameOver | Call Draw_GameOver. | |||
ECFB | CALL GameOver_FlashOffset | Call GameOver_FlashOffset. | |||
ECFE | JR CycleUp_Loop | Jump to CycleUp_Loop. | |||
Handle the flash loop.
|
|||||
GameOver_Cycle_Next | ED00 | POP BC | Restore the cycle counter from the stack. | ||
ED01 | DJNZ GameOver_Flash_Loop | Decrease the cycle counter by one and loop back to GameOver_Flash_Loop until the cycle has repeated 0A times. | |||
ED03 | LD B,$02 | B=02. | |||
Controller_GameOver_0 | ED05 | PUSH BC | Stash BC on the stack. | ||
ED06 | LD HL,$ED12 | HL=ED12. | |||
ED09 | LD B,$28 | B=28. | |||
ED0B | CALL $EF6A | Call EF6A. | |||
ED0E | POP BC | Restore BC from the stack. | |||
ED0F | DJNZ Controller_GameOver_0 | Decrease counter by one and loop back to Controller_GameOver_0 until counter is zero. | |||
ED11 | RET | Return. |
Prev: ECAF | Up: Map | Next: ED12 |