Prev: C2F6 Up: Map Next: C59E
C3AF: High-score table screen: strings, preset rows and layout tables
Each text string here is encoded as 2 position-control bytes, 1 attribute byte, then ASCII text with the final character's bit 7 set to mark the end of the string (consumed by the print routine reached via C122). The four strings, decoded in full: $C3AF pos=$02,$0A attr=$48 "BEST OFFICERS" $C3BF pos=$C6,$67 attr=$48 "ENTER YOUR INITIALS" $C3D5 pos=$07,$8E attr=$48 ". . ." (3-initial cursor placeholder) $C3DD pos=$C6,$C0 attr=$48 "RANK SCORE STAGE PLAY NAME" The last string's terminator byte falls exactly at $C3FF, where the preset-rows table below begins.
These are followed by the 10 preset high-score table rows themselves (the same 33-byte layout insert_high_score_entry writes into: 8-digit score, stage code, play/attempt count, 3-character initials -- full field breakdown at $C400 below). The preset initials include "JOB" (row 1) -- John O'Brien, this game's programmer.
At $C54B: 10 packed 2-byte values, copied by insert_high_score_entry into the row-offset table at $C401 (one per high-score row, for scroll_score_rows's scroll). At $C567: the 6-entry, 3-byte-per-stage code table read by insert_high_score_entry (" 1 ", " 2 ", " 3 ", " 4 ", " 5 ", "ALL" -- indexed by wanted_stage_number, 8007, which is 1..5 or 6 for the end screen). At $C55F: the 8-byte score-digit buffer written by check_high_score and read by insert_high_score_entry (initialised here to "00000000").
C3AF DEFB $02,$0A Position
C3B1 DEFB $48 Attribute
C3B2 DEFM "BEST OFFICER",$D3 "BEST OFFICERS"
C3BF DEFB $C6,$67 Position
C3C1 DEFB $48 Attribute
C3C2 DEFM "ENTER YOUR INITIAL",$D3 "ENTER YOUR INITIALS"
C3D5 DEFB $07,$8E Position
C3D7 DEFB $48 Attribute
C3D8 DEFM ". . ",$AE ". . ."
C3DD DEFB $C6,$C0 Position
C3DF DEFB $48 Attribute
C3E0 DEFM "RANK SCORE STAGE PLAY NAM",$C5 "RANK SCORE STAGE PLAY NAME"
Ten preset rows follow, 33 bytes each (base $C408, stride C065): score (8 ASCII digits), a 4-byte gap, stage code (3 chars), a 5-byte gap, retry digit (1 ASCII char), a 2-byte gap, 3-char name (bit-7 terminated, written by insert_high_score_entry), then a 7-byte tail. The tail is 2 zero bytes followed by the *next* row's 5-char rank suffix ("2ND " etc) -- these suffixes are static screen labels tucked into the previous row's unused stride, not part of the row that follows. Row 10 has no eleventh row to label, so its tail instead begins the packed offset table at $C54B.
C400 DEFB $00,$00,$00 Padding
C403 DEFM "1ST " Row 1's rank suffix
C408 DEFM "10000000" Row 1 score
C410 DEFB $20,$20,$20,$20 Gap
C414 DEFM "ALL" Row 1 stage code
C417 DEFB $20,$20,$20,$20,$20 Gap
C41C DEFB $32 Row 1 retry attempt '2'
C41D DEFB $20,$20 Gap
C41F DEFM "JO",$C2 "JOB" (row 1 name)
C422 DEFB $00,$00 Padding
C424 DEFM "2ND " Row 2's rank suffix
C429 DEFM " 9888700" Row 2 score
C431 DEFB $20,$20,$20,$20 Gap
C435 DEFM " 5 " Row 2 stage code
C438 DEFB $20,$20,$20,$20,$20 Gap
C43D DEFB $32 Row 2 retry attempt '2'
C43E DEFB $20,$20 Gap
C440 DEFM "BI",$CC "BIL" (row 2 name)
C443 DEFB $00,$00 Padding
C445 DEFM "3RD " Row 3's rank suffix
C44A DEFM " 8900000" Row 3 score
C452 DEFB $20,$20,$20,$20 Gap
C456 DEFM " 4 " Row 3 stage code
C459 DEFB $20,$20,$20,$20,$20 Gap
C45E DEFB $31 Row 3 retry attempt '1'
C45F DEFB $20,$20 Gap
C461 DEFM "JO",$CE "JON" (row 3 name)
C464 DEFB $00,$00 Padding
C466 DEFM "4TH " Row 4's rank suffix
C46B DEFM " 5789000" Row 4 score
C473 DEFB $20,$20,$20,$20 Gap
C477 DEFM " 4 " Row 4 stage code
C47A DEFB $20,$20,$20,$20,$20 Gap
C47F DEFB $32 Row 4 retry attempt '2'
C480 DEFB $20,$20 Gap
C482 DEFM "JA",$CD "JAM" (row 4 name)
C485 DEFB $00,$00 Padding
C487 DEFM "5TH " Row 5's rank suffix
C48C DEFM " 3500000" Row 5 score
C494 DEFB $20,$20,$20,$20 Gap
C498 DEFM " 2 " Row 5 stage code
C49B DEFB $20,$20,$20,$20,$20 Gap
C4A0 DEFB $31 Row 5 retry attempt '1'
C4A1 DEFB $20,$20 Gap
C4A3 DEFM "RO",$C2 "ROB" (row 5 name)
C4A6 DEFB $00,$00 Padding
C4A8 DEFM "6TH " Row 6's rank suffix
C4AD DEFM " 2456000" Row 6 score
C4B5 DEFB $20,$20,$20,$20 Gap
C4B9 DEFM " 2 " Row 6 stage code
C4BC DEFB $20,$20,$20,$20,$20 Gap
C4C1 DEFB $31 Row 6 retry attempt '1'
C4C2 DEFB $20,$20 Gap
C4C4 DEFM "J.",$C2 "J.B" (row 6 name)
C4C7 DEFB $00,$00 Padding
C4C9 DEFM "7TH " Row 7's rank suffix
C4CE DEFM " 956700" Row 7 score
C4D6 DEFB $20,$20,$20,$20 Gap
C4DA DEFM " 1 " Row 7 stage code
C4DD DEFB $20,$20,$20,$20,$20 Gap
C4E2 DEFB $31 Row 7 retry attempt '1'
C4E3 DEFB $20,$20 Gap
C4E5 DEFM "M.",$CC "M.L" (row 7 name)
C4E8 DEFB $00,$00 Padding
C4EA DEFM "8TH " Row 8's rank suffix
C4EF DEFM " 340500" Row 8 score
C4F7 DEFB $20,$20,$20,$20 Gap
C4FB DEFM " 1 " Row 8 stage code
C4FE DEFB $20,$20,$20,$20,$20 Gap
C503 DEFB $31 Row 8 retry attempt '1'
C504 DEFB $20,$20 Gap
C506 DEFM "ST",$C5 "STE" (row 8 name)
C509 DEFB $00,$00 Padding
C50B DEFM "9TH " Row 9's rank suffix
C510 DEFM " 235050" Row 9 score
C518 DEFB $20,$20,$20,$20 Gap
C51C DEFM " 1 " Row 9 stage code
C51F DEFB $20,$20,$20,$20,$20 Gap
C524 DEFB $31 Row 9 retry attempt '1'
C525 DEFB $20,$20 Gap
C527 DEFM "PI",$D8 "PIX" (row 9 name)
C52A DEFB $00,$00 Padding
C52C DEFM "10TH " Row 10's rank suffix
C531 DEFM " 123000" Row 10 score
C539 DEFB $20,$20,$20,$20 Gap
C53D DEFM " 1 " Row 10 stage code
C540 DEFB $20,$20,$20,$20,$20 Gap
C545 DEFB $31 Row 10 retry attempt '1'
C546 DEFB $20,$20 Gap
C548 DEFM "IE",$D3 "IES" (row 10 name)
$C54B: 10 packed 2-byte values, copied by insert_high_score_entry into the row-offset table at $C401 (screen/attribute address pairs used by the scroll code).
C54B DEFB $80,$38,$C0,$38,$00,$40,$40,$40
C553 DEFB $80,$40,$C0,$40,$00,$48,$40,$48
C55B DEFB $80,$48,$C0,$48
C55F DEFM "00000000" Score-digit entry buffer
$C567: the 6-entry stage-code table indexed by insert_high_score_entry ($C09F) to fill each row's stage-code field.
C567 DEFM " 1 "
C56A DEFM " 2 "
C56D DEFM " 3 "
C570 DEFM " 4 "
C573 DEFM " 5 "
C576 DEFM "ALL"
C579 DEFB $00,$00,$00,$00,$00,$00 Padding
C57F DEFB $00,$F0,$8E,$48,$40,$40,$40,$90
C587 DEFB $C5,$0C,$00,$0A,$59,$00,$00,$00
C58F DEFB $00,$00,$00,$00,$00,$00,$00,$00
C597 DEFB $00,$00,$00,$F0,$EE,$00,$00
Prev: C2F6 Up: Map Next: C59E