![]() |
Routines |
| Prev: 757E | Up: Map | Next: 763B |
Used by the routine at GameInitialisation.
|
|||||
| PrintGameDisplay | 75AA | CALL ClearScreen | Call ClearScreen. | ||
| 75AD | LD A,$05 | Write 05 to *Lives. | |||
| 75AF | LD ($7839),A | ||||
|
Set the attributes for the "ground".
|
|||||
| 75B2 | LD H,$5A | H=5A. | |||
| 75B4 | LD B,$40 | B=40 (counter; two full rows). | |||
| GameDisplay_GreenBarLoop | 75B6 | LD (HL),$04 | Write 04 (INK: GREEN, PAPER: BLACK ) to *HL. | ||
| 75B8 | INC L | Increment L by one. | |||
| 75B9 | DJNZ GameDisplay_GreenBarLoop | Decrease counter by one and loop back to GameDisplay_GreenBarLoop until counter is zero. | |||
|
Draw the "ground".
|
|||||
| 75BB | LD C,$04 | C=04 (counter; how many times to write the byte). | |||
| 75BD | LD HL,$5000 | HL=5000 (screen buffer location). | |||
| DrawGround_Loop | 75C0 | LD B,$40 | B=40 (counter; two full rows). | ||
| DrawGround_WriteLoop | 75C2 | LD (HL),$55 | Write 55 to *HL. | ||
| 75C4 | INC L | Increment L by one. | |||
| 75C5 | DJNZ DrawGround_WriteLoop | Decrease counter by one and loop back to DrawGround_WriteLoop until counter is zero. | |||
| 75C7 | INC H | Increment H by two. | |||
| 75C8 | INC H | ||||
| 75C9 | LD L,$00 | L=00. | |||
| 75CB | DEC C | Decrease C by one. | |||
| 75CC | JR NZ,DrawGround_Loop | Jump to DrawGround_Loop until C is zero. | |||
| 75CE | LD C,$03 | C=03. | |||
| 75D0 | LD HL,$5A41 | HL=5A41 (attribute buffer location). | |||
| PrintGameDisplay_0 | 75D3 | LD B,$04 | B=04. | ||
| PrintGameDisplay_1 | 75D5 | LD (HL),$07 | Write 07 (INK: WHITE, PAPER: BLACK ) to *HL. | ||
| 75D7 | INC L | Increment L by one. | |||
| 75D8 | DJNZ PrintGameDisplay_1 | Decrease counter by one and loop back to PrintGameDisplay_1 until counter is zero. | |||
| 75DA | LD A,L | A=L. | |||
| 75DB | ADD A,$1C | A+=1C. | |||
| 75DD | LD L,A | L=A. | |||
| 75DE | DEC C | Decrease C by one. | |||
| 75DF | JR NZ,PrintGameDisplay_0 | Jump to PrintGameDisplay_0 until C is zero. | |||
| 75E1 | LD L,$C0 | L=C0. | |||
| 75E3 | LD B,$20 | B=20. | |||
| PrintGameDisplay_2 | 75E5 | LD (HL),$07 | Write 07 (INK: WHITE, PAPER: BLACK ) to *HL. | ||
| 75E7 | INC L | Increment L by one. | |||
| 75E8 | DJNZ PrintGameDisplay_2 | Decrease counter by one and loop back to PrintGameDisplay_2 until counter is zero. | |||
|
Handles printing "MPH, FUEL, RPM" (bike stats) to the display.
|
|||||
| 75EA | LD C,$03 | C=03 (counter; three strings). | |||
| 75EC | LD HL,$C3E0 | HL=Messaging_MPH. | |||
| 75EF | EXX | Switch to the shadow registers. | |||
| 75F0 | LD DE,$5041 | DE'=5041 (screen buffer location). | |||
| 75F3 | EXX | Switch back to the normal registers. | |||
| GameDisplay_StatsLoop | 75F4 | LD B,$04 | B=04 (counter; number of characters in each string). | ||
| 75F6 | CALL Print_Loop | Call Print_Loop. | |||
|
At the end of each string there are two more bytes which build the up/ down arrow shown above "TARGET". This is hidden by the attributes until it's shown in-game by setting the appropriate attribute values.
|
|||||
| 75F9 | LD A,(HL) | A=*HL. | |||
| 75FA | EXX | Switch to the shadow registers. | |||
| 75FB | LD L,A | L'=A. | |||
| 75FC | LD A,E | E'+=0E. | |||
| 75FD | ADD A,$0E | ||||
| 75FF | LD E,A | ||||
| 7600 | CALL PrintGraphic | Call PrintGraphic. | |||
| 7603 | INC L | Increment L by one. | |||
| 7604 | EXX | Switch back to the normal registers. | |||
| 7605 | CALL PrintGraphic | Call PrintGraphic. | |||
| 7608 | INC L | Increment L by one. | |||
| 7609 | EXX | Switch to the shadow registers. | |||
| 760A | LD A,E | E'+=0C. | |||
| 760B | ADD A,$0C | ||||
| 760D | LD E,A | ||||
| 760E | EXX | Switch back to the normal registers. | |||
| 760F | DEC C | Decrease C by one. | |||
| 7610 | JR NZ,GameDisplay_StatsLoop | Jump to GameDisplay_StatsLoop until C is zero. | |||
|
Set the screen buffer position.
|
|||||
| 7612 | EXX | Switch to the shadow registers. | |||
| 7613 | LD E,$C0 | E'=C0. | |||
| 7615 | EXX | Switch back to the normal registers. | |||
| 7616 | LD B,$06 | B=06 (counter; number of characters in the "SCORE-" string). | |||
| 7618 | CALL Print_Loop | Call Print_Loop. | |||
|
Set the screen buffer position.
|
|||||
| 761B | EXX | Switch to the shadow registers. | |||
| 761C | LD E,$D4 | E'=D4. | |||
| 761E | EXX | Switch back to the normal registers. | |||
| 761F | LD B,$07 | B=07 (counter; number of characters in the "TARGET-" string). | |||
| 7621 | CALL Print_Loop | Call Print_Loop. | |||
| 7624 | LD HL,$0000 | Write 0000 to *Score. | |||
| 7627 | LD ($7844),HL | ||||
| 762A | CALL ForceScoreUpdate | Call ForceScoreUpdate. | |||
| 762D | LD HL,($7848) | HL=*7848. | |||
| 7630 | EXX | Switch to the shadow registers. | |||
| 7631 | LD DE,$51DB | DE'=51DB (screen buffer location). | |||
| 7634 | EXX | Switch back to the normal registers. | |||
| 7635 | CALL ConvertScoreToDigits | Call ConvertScoreToDigits. | |||
| 7638 | JP InitialiseNewGame | Jump to InitialiseNewGame. | |||
| Prev: 757E | Up: Map | Next: 763B |