![]() |
Routines |
| Prev: 60770 | Up: Map | Next: 60882 |
|
Used by the routine at Controller_GameOver.
|
||||||||
| Draw_GameOver | 60783 | LD IX,60913 | Set the data pointer in IX to the start of the data in GameOver_Data. | |||||
| 60787 | LD DE,32 | Set DE with 0032 (the number of character blocks in one line). | ||||||
|
Set the base drawing pointer in the attribute buffer from the data.
|
||||||||
| Draw_GameOver_Loop | 60790 | LD L,(IX+0) | Load the low byte of the attribute buffer address into L. | |||||
| 60793 | INC IX | Load the high byte of the attribute buffer address into H. | ||||||
| 60795 | LD H,(IX+0) | |||||||
|
Skip moving "up" if the offset is OFF.
|
||||||||
| 60798 | LD A,(60912) | Jump to WriteAttributeToScreen if *GameOver_Y_Offset is equal to 0. | ||||||
| 60801 | CP 0 | |||||||
| 60803 | JR Z,WriteAttributeToScreen | |||||||
|
Else, move up one row.
|
||||||||
| 60805 | SBC HL,DE | Subtract 0032 from the drawing pointer. | ||||||
| WriteAttributeToScreen | 60807 | LD (HL),C | Write the attribute value to *HL. | |||||
| 60808 | INC IX | Move the data pointer to the next item of data. | ||||||
| Movement_Loop | 60810 | LD B,(IX+0) | Load the repeat count into B. | |||||
| 60813 | INC IX | |||||||
| 60815 | LD A,(IX+0) | Load the direction code into A. | ||||||
| 60818 | INC IX | Move the data pointer to the next item of data. | ||||||
| 60820 | CP 1 | Jump to GameOver_Move_Right if the direction code is "right". | ||||||
| 60822 | JR Z,GameOver_Move_Right | |||||||
| 60824 | CP 2 | Jump to GameOver_Move_Left if the direction code is "left". | ||||||
| 60826 | JR Z,GameOver_Move_Left | |||||||
| 60828 | CP 4 | Jump to GameOver_Move_Down if the direction code is "down". | ||||||
| 60830 | JR Z,GameOver_Move_Down | |||||||
| 60832 | CP 8 | Jump to GameOver_Move_Up if the direction code is "up". | ||||||
| 60834 | JR Z,GameOver_Move_Up | |||||||
| 60836 | CP 0 | Return if the terminator has been reached. | ||||||
| 60838 | RET Z | |||||||
|
Else, this is a new starting point, so rewind the pointer and jump back to the start of the loop.
|
||||||||
| 60839 | DEC IX | Decrease the data pointer by two. | ||||||
| 60841 | DEC IX | |||||||
| 60843 | JR Draw_GameOver_Loop | Jump to Draw_GameOver_Loop. | ||||||
|
Handle moving right:
|
||||||||
| GameOver_Move_Right | 60845 | INC HL | Increment the drawing pointer by one (move right). | |||||
| 60846 | LD (HL),C | Write the attribute value to *HL. | ||||||
| 60847 | CALL Sound_GameOver | Call Sound_GameOver. | ||||||
| 60850 | DJNZ GameOver_Move_Right | Decrease the repeat counter by one and loop back to GameOver_Move_Right until the repeat counter is zero. | ||||||
| 60852 | JR Movement_Loop | Jump to Movement_Loop. | ||||||
|
Handle moving left:
|
||||||||
| GameOver_Move_Left | 60854 | DEC HL | Decrease the drawing pointer by one (move left). | |||||
| 60855 | LD (HL),C | Write the attribute value to *HL. | ||||||
| 60856 | CALL Sound_GameOver | Call Sound_GameOver. | ||||||
| 60859 | DJNZ GameOver_Move_Left | Decrease the repeat counter by one and loop back to GameOver_Move_Left until the repeat counter is zero. | ||||||
| 60861 | JR Movement_Loop | Jump to Movement_Loop. | ||||||
|
Handle moving down:
|
||||||||
| GameOver_Move_Down | 60863 | ADD HL,DE | Add 0032 to the drawing pointer (move down). | |||||
| 60864 | LD (HL),C | Write the attribute value to *HL. | ||||||
| 60865 | CALL Sound_GameOver | Call Sound_GameOver. | ||||||
| 60868 | DJNZ GameOver_Move_Down | Decrease the repeat counter by one and loop back to GameOver_Move_Down until the repeat counter is zero. | ||||||
| 60870 | JR Movement_Loop | Jump to Movement_Loop. | ||||||
|
Handle moving up:
|
||||||||
| GameOver_Move_Up | 60872 | SBC HL,DE | Subtract 0032 from the drawing pointer (move up). | |||||
| 60874 | LD (HL),C | Write the attribute value to *HL. | ||||||
| 60875 | CALL Sound_GameOver | Call Sound_GameOver. | ||||||
| 60878 | DJNZ GameOver_Move_Up | Decrease the repeat counter by one and loop back to GameOver_Move_Up until the repeat counter is zero. | ||||||
| 60880 | JR Movement_Loop | Jump to Movement_Loop. | ||||||
| Prev: 60770 | Up: Map | Next: 60882 |