![]() |
Routines |
| Prev: 60348 | Up: Map | Next: 60580 |
|
Used by the routines at Check_Any_Key_During_Display and Attract_Mode_Loop.
Initialises the high score entry screen: clears the display, prints the option header from Messaging_SelectOptions, and renders the current score entries with their cursor markers. Runs a 75-frame input loop allowing keyboard and joystick adjustment of the three score entry fields via Adjust_Score_Field_Cursor and Adjust_Name_Entry_Cursor. After name entry, redraws the final score table and cycles the display for 50 frames before jumping to the attract mode at Attract_Mode_Loop.
|
||||
| Display_High_Score_Entry_Screen | 60360 | XOR A | Clear the display with attribute BLACK via Initialise_Display_And_Border. | |
| 60361 | CALL Initialise_Display_And_Border | |||
| 60364 | CALL Draw_Colour_Border | Initialise the scrolling display via Draw_Colour_Border. | ||
| 60367 | CALL Cycle_Border_Colour | Advance the colour cycle via Cycle_Border_Colour. | ||
| 60370 | LD HL,61030 | Call PrintMessaging using Messaging_SelectOptions. | ||
| 60373 | CALL PrintMessaging | |||
| 60376 | LD A,6 | Write 6 to *50432. | ||
| 60378 | LD (50432),A | |||
| 60381 | LD A,70 | Write 70 to *50433. | ||
| 60383 | LD (50433),A | |||
| 60386 | LD A,4 | Write 4 to *50434. | ||
| 60388 | LD (50434),A | |||
| 60391 | LD A,(50429) | Load the first score entry cursor from 50429. | ||
| 60394 | LD B,25 | Set the column position to 25. | ||
| 60396 | CALL Render_Score_Character | Render the first score entry character via Render_Score_Character. | ||
| 60399 | LD A,(50430) | Load the second score entry cursor from 50430. | ||
| 60402 | CALL Highlight_Score_Entry_Cell | Highlight the second score entry character via Highlight_Score_Entry_Cell. | ||
| 60405 | LD A,(50431) | Load the third score entry cursor from 50431. | ||
| 60408 | LD B,73 | Set the column position to 73. | ||
| 60410 | CALL Render_Score_Character | Render the third score entry character via Render_Score_Character. | ||
| 60413 | XOR A | Clear A. | ||
| 60414 | LD B,153 | Set the column position to 153. | ||
| 60416 | CALL Render_Score_Character | Clear the bottom score entry position via Render_Score_Character. | ||
| 60419 | EXX | Switch to the alternate registers. | ||
| 60420 | LD B,75 | Set the name entry frame counter to 75 in B'. | ||
|
Per-frame name entry loop: services controls and handles character selection for all three score entry fields each frame.
|
||||
| High_Score_Entry_Loop | 60422 | EXX | Switch back to the main registers for this frame. | |
| 60423 | LD C,100 | Set the frame delay count to 100. | ||
| 60425 | CALL Display_Loop_Delay | Run the per-frame timing delay via Display_Loop_Delay. | ||
| 60428 | CALL CheckBreakKey | Check for the BREAK key combination via CheckBreakKey. | ||
| 60431 | CALL Check_S_Key_During_Display | Check for the S key via Check_S_Key_During_Display. | ||
| 60434 | CALL Save_Or_Load_High_Scores | Check for tape save/load keys (J/L) via Save_Or_Load_High_Scores. | ||
| 60437 | CALL Scan_And_Cycle_Screen_Attributes | Read the joystick input via Scan_And_Cycle_Screen_Attributes. | ||
| 60440 | LD DE,50432 | Point DE to the score entry columns at 50432. | ||
| 60443 | LD IX,50435 | Point IX to the score entry parameters at 50435. | ||
| 60447 | CALL Scan_Score_Display_Attributes | Update the score display via Scan_Score_Display_Attributes. | ||
| 60450 | CALL Cycle_Border_Colour | Advance the colour cycle via Cycle_Border_Colour. | ||
| 60453 | CALL 654 | Call KEY_SCAN. | ||
| 60456 | JR NZ,High_Score_Entry_Loop_End | Skip character field handling if no player input is registered. | ||
| 60458 | INC E | Advance the character selection index. | ||
| 60459 | JR Z,High_Score_Entry_Loop_End | Skip to High_Score_Entry_Loop_End if the selection index has overflowed. | ||
| 60461 | DEC E | Step the selection index back by one. | ||
| 60462 | LD B,2 | Set the field count to 2. | ||
| 60464 | LD A,(50432) | Load the first cursor column from 50432 into C. | ||
| 60467 | LD C,A | |||
| 60468 | LD A,(50429) | Load the first cursor position from 50429 into D. | ||
| 60471 | LD D,A | |||
| 60472 | LD IX,60968 | Point IX to the first character table at 60968. | ||
| 60476 | CALL Adjust_Score_Field_Cursor | Adjust the first score entry field via Adjust_Score_Field_Cursor. | ||
| 60479 | LD A,D | Write the updated first cursor position back to 50429. | ||
| 60480 | LD (50429),A | |||
| 60483 | JR Z,High_Score_Entry_Loop_End | Skip to High_Score_Entry_Loop_End if only the first field was updated. | ||
| 60485 | LD B,9 | Set the field count to 9. | ||
| 60487 | LD A,(50433) | Load the second cursor column from 50433 into C. | ||
| 60490 | LD C,A | |||
| 60491 | LD A,(50430) | Load the second cursor position from 50430 into D. | ||
| 60494 | LD D,A | |||
| 60495 | LD IX,60974 | Point IX to the second character table at 60974. | ||
| 60499 | CALL Adjust_Name_Entry_Cursor | Adjust the second score entry field via Adjust_Name_Entry_Cursor. | ||
| 60502 | LD A,D | Write the updated second cursor position back to 50430. | ||
| 60503 | LD (50430),A | |||
| 60506 | JR Z,High_Score_Entry_Loop_End | Skip to High_Score_Entry_Loop_End if only the second field was updated. | ||
| 60508 | LD B,6 | Set the field count to 6. | ||
| 60510 | LD A,(50434) | Load the third cursor column from 50434 into C. | ||
| 60513 | LD C,A | |||
| 60514 | LD A,(50431) | Load the third cursor position from 50431 into D. | ||
| 60517 | LD D,A | |||
| 60518 | LD IX,61001 | Point IX to the third character table at Score_Entry_Field_Three_Table. | ||
| 60522 | CALL Adjust_Score_Field_Cursor | Adjust the third score entry field via Adjust_Score_Field_Cursor. | ||
| 60525 | LD A,D | Write the updated third cursor position back to 50431. | ||
| 60526 | LD (50431),A | |||
| High_Score_Entry_Loop_End | 60529 | EXX | Switch to the alternate registers. | |
| 60530 | DJNZ High_Score_Entry_Loop | Decrement the frame counter and loop back to High_Score_Entry_Loop. | ||
| 60532 | EXX | Switch back to the main registers. | ||
|
This entry point is used by the routine at Save_Or_Load_High_Scores.
Name entry complete: clear the display and redraw the final score table before the display cycling phase.
|
||||
| High_Score_Display | 60533 | XOR A | Clear the display with attribute BLACK via Initialise_Display_And_Border. | |
| 60534 | CALL Initialise_Display_And_Border | |||
| 60537 | CALL Draw_Colour_Border | Initialise the scrolling display via Draw_Colour_Border. | ||
| 60540 | CALL Cycle_Border_Colour | Advance the colour cycle via Cycle_Border_Colour. | ||
| 60543 | CALL Display_High_Score_Screen | Render the high score table via Display_High_Score_Screen. | ||
| 60546 | EXX | Switch to the alternate registers. | ||
| 60547 | LD B,50 | Set the display frame counter to 50 in B'. | ||
|
Per-frame display cycling loop: services controls and colour attributes for 50 frames before returning to the attract mode.
|
||||
| High_Score_Display_Loop | 60549 | EXX | Switch back to the main registers for this frame. | |
| 60550 | LD C,100 | Set the frame delay count to 100. | ||
| 60552 | CALL Display_Loop_Delay | Run the per-frame timing delay via Display_Loop_Delay. | ||
| 60555 | CALL CheckBreakKey | Check for the BREAK key combination via CheckBreakKey. | ||
| 60558 | CALL Check_S_Key_During_Display | Check for the S key via Check_S_Key_During_Display. | ||
| 60561 | CALL Save_Or_Load_High_Scores | Check for tape save/load keys (J/L) via Save_Or_Load_High_Scores. | ||
| 60564 | CALL Check_Any_Key_During_Display | Restart the high score display if any key is held via Check_Any_Key_During_Display. | ||
| 60567 | CALL Scan_And_Cycle_Screen_Attributes | Read the joystick input via Scan_And_Cycle_Screen_Attributes. | ||
| 60570 | CALL Cycle_Border_Colour | Advance the colour cycle via Cycle_Border_Colour. | ||
| 60573 | EXX | Switch to the alternate registers. | ||
| 60574 | DJNZ High_Score_Display_Loop | Decrement the frame counter and loop back to High_Score_Display_Loop. | ||
| 60576 | EXX | Switch back to the main registers. | ||
| 60577 | JP Attract_Mode_Loop | Jump to the attract mode loop at Attract_Mode_Loop. | ||
| Prev: 60348 | Up: Map | Next: 60580 |