|  | Routines | 
| Prev: D352 | Up: Map | Next: D4D6 | 
| 
Used by the routine at Game_Loop.
 | |||||
| 
The game always starts with the cursor inside the home box.
 
This is position 02/ 02:    
 | |||||
| StartGame | D469 | LD A,$02 | Write 02 to: | ||
| D46B | LD ($D830),A | ||||
| D46E | LD ($D831),A | ||||
| D471 | LD ($D82E),A | ||||
| D474 | LD ($D82F),A | ||||
| 
Tile 09 is the home box:     
 
Set the players starting tile.
 | |||||
| D477 | LD A,$09 | Write 09 to *PlayerCursor_TileID. | |||
| D479 | LD ($D834),A | ||||
| 
Spend a life to play the game.
 | |||||
| D47C | LD HL,$D827 | HL=Lives. | |||
| D47F | DEC (HL) | Decrease *HL by one. | |||
| D480 | JP Z,GameOver | Jump to GameOver if the player is out of lives. | |||
| D483 | LD HL,$D83A | Write 00 to *Time. | |||
| D486 | LD (HL),$00 | ||||
| D488 | CALL Draw_TimeBar | Call Draw_TimeBar. | |||
| 
The life icons are static, drawn from Data_PlayareaSurround, in order to display the correct number of lives - we paint them to be the same PAPER/ INK colour as their background.
 | |||||
| D48B | LD HL,($D872) | HL=*LifeIcons_ScreenPosition. | |||
| 
First; hide the top part of the icon.
 | |||||
| D48E | LD (HL),$2D | Write INK: CYAN, PAPER: CYAN to *HL. | |||
| D490 | INC HL | Increment HL by one. | |||
| D491 | LD (HL),$2D | Write INK: CYAN, PAPER: CYAN to *HL. | |||
| D493 | INC HL | Increment HL by one. | |||
| D494 | LD ($D872),HL | Update the icon position marker at *LifeIcons_ScreenPosition. | |||
| 
Move down one line, and left two character blocks.
 | |||||
| D497 | LD DE,$001E | HL+=001E. | |||
| D49A | ADD HL,DE | ||||
| 
Lastly; colour the bottom part of the icon.
 | |||||
| D49B | LD (HL),$2D | Write INK: CYAN, PAPER: CYAN to *HL. | |||
| D49D | INC HL | Increment HL by one. | |||
| D49E | LD (HL),$2D | Write INK: CYAN, PAPER: CYAN to *HL. | |||
| D4A0 | LD HL,$D83A | HL=Time. | |||
| D4A3 | SET 0,(HL) | Set bit 0 of *HL. | |||
| 
This entry point is used by the routine at D352.
 | |||||
| StartGame_0 | D4A5 | LD A,($D83A) | A=*Time. | ||
| D4A8 | AND %11110001 | Keep only bits 0, 4-7. | |||
| D4AA | LD ($D83A),A | Write A to *Time. | |||
| D4AD | LD A,($D830) | Write *StorageCursor_Y_Position to *DestinationCursor_Y_Position. | |||
| D4B0 | LD ($D82C),A | ||||
| D4B3 | LD A,($D831) | Write *StorageCursor_X_Position to *DestinationCursor_X_Position. | |||
| D4B6 | LD ($D82D),A | ||||
| D4B9 | LD A,($D824) | Write *Timer_Crack_13 to *D832. | |||
| D4BC | LD ($D832),A | ||||
| D4BF | LD A,($D835) | Jump to StartGame_1 if *PlayerCursor_Flag is not equal to 00. | |||
| D4C2 | CP $00 | ||||
| D4C4 | JR NZ,StartGame_1 | ||||
| D4C6 | LD A,($D834) | Jump to StartGame_1 if *PlayerCursor_TileID is equal to 09. | |||
| D4C9 | CP $09 | ||||
| D4CB | JR Z,StartGame_1 | ||||
| D4CD | CALL Display_PlayerCursor | Call Display_PlayerCursor. | |||
| StartGame_1 | D4D0 | CALL Handler_IsLevelComplete | Call Handler_IsLevelComplete. | ||
| D4D3 | JP $D352 | Jump to D352. | |||
| Prev: D352 | Up: Map | Next: D4D6 |