3433 lines
177 KiB
ArmAsm
3433 lines
177 KiB
ArmAsm
; ============================================================================
|
|
; $9300-$9FFF - screen address tables, fonts, terrain and unit graphics (track 28 sectors 0-12)
|
|
; ============================================================================
|
|
|
|
.setcpu "6502"
|
|
.include "c64.inc"
|
|
.include "zeropage.inc"
|
|
|
|
.org $9300
|
|
|
|
|
|
; bitmapRowLoTable - low bytes of the 25 bitmap character-row addresses $A000 + 320*row. Verified:
|
|
; entry Y is exactly ($A000 + 320*Y) & $FF for Y = 0-24, so the values cycle
|
|
; $00,$40,$80,$C0. This is the first of six parallel tables that turn a character cell
|
|
; (row 0-24, column 0-39) into two pointers without a multiply:
|
|
; bitmapRowLoTable $9300 25 bytes low byte of $A000 + 320*row (the cell's 8 bitmap bytes)
|
|
; bitmapRowHiTable $9319 25 bytes high byte of the same address
|
|
; bitmapColLoTable $9332 40 bytes low byte of column*8
|
|
; bitmapColHiTable $935A 40 bytes high byte of column*8 (0, or 1 from column 32 on)
|
|
; screenRowLoTable $9382 25 bytes low byte of $8C00 + 40*row (the cell's colour byte)
|
|
; screenRowHiTable $939B 25 bytes high byte of the same address
|
|
; calcCellPointersXY ($2AA3-$2AC2) adds row+column entries into zp_B4/B5 (bitmap) and zp_B6/B7 (screen
|
|
; RAM); colour RAM is the screen pointer with $4C added to the high byte ($8C00 + $4C00 = $D800).
|
|
; plotBitmapPixelRow ($FC80/$FC87/$FCAE/$FCB5) in the high-memory block uses the same four bitmap
|
|
; tables for single-pixel plotting. Three routines index the tables from a biased base instead of
|
|
; adding the window origin, so the disassembler labels those interior addresses as well - see the
|
|
; labels inside each table. Rows 0-2 below (read as bitmapRowLoTable,Y by $2AA3 and $FC80).
|
|
bitmapRowLoTable:
|
|
.byte $00,$40,$80 ; 9300 .@.
|
|
|
|
; Rows 3-24 again, as the base of the radar/tactical window that starts at character row 3. Read here
|
|
; by drawScreen1Cell ($5DB2) in the main program and by the $6F00 overlays at
|
|
; $7BDA/$7C38 (both variants); the matching high bytes are at $931C.
|
|
bitmapRowLoTableFrom3:
|
|
.byte $C0,$00,$40 ; 9303 ..@ rows 3-5
|
|
|
|
; Rows 6-24, the base used by the drone camera window that starts at character row 6: read at $743E
|
|
; (fixed) and $749F (indexed by X) in both $6F00 overlays; high bytes at $931F.
|
|
bitmapRowLoTableFrom6:
|
|
.byte $80,$C0,$00,$40,$80,$C0,$00,$40,$80,$C0,$00,$40,$80,$C0,$00,$40,$80,$C0,$00; 9306 ...@...@...@...@... rows 6-24
|
|
|
|
; bitmapRowHiTable - high bytes of the same 25 row addresses ($A0,$A1,$A2,$A3,$A5,...):
|
|
; $A000 + 320*row, so the high byte steps by 1 or 2 every row. Read as bitmapRowHiTable,Y
|
|
; by calcCellPointersXY ($2AAC) and plotBitmapPixelRow ($FC87). Rows 0-2 below.
|
|
bitmapRowHiTable:
|
|
.byte $A0,$A1,$A2 ; 9319 ...
|
|
|
|
; Rows 3-24 (window base row 3): read at $5DBA and at $7BE2/$7C40 in the $6F00 overlays.
|
|
bitmapRowHiTableFrom3:
|
|
.byte $A3,$A5,$A6 ; 931C ... rows 3-5
|
|
|
|
; Rows 6-24 (drone camera base row 6): read at $7446 and $74A7 in the $6F00 overlays.
|
|
bitmapRowHiTableFrom6:
|
|
.byte $A7,$A8,$AA,$AB,$AC,$AD,$AF,$B0,$B1,$B2,$B4,$B5,$B6,$B7,$B9,$BA,$BB,$BC,$BE; 931F ................... rows 6-24
|
|
|
|
; bitmapColLoTable - low bytes of column*8 for the 40 bitmap columns (0,8,...,312 mod 256). Verified:
|
|
; entry X = (X*8) & $FF. Read as bitmapColLoTable,X by calcCellPointersXY ($2AA7) and
|
|
; plotBitmapPixelRow ($FCAE). Columns 0-2 below.
|
|
bitmapColLoTable:
|
|
.byte $00,$08,$10 ; 9332 ...
|
|
|
|
; Columns 3-39, the base of the window that starts at character column 3: read at $5DB5
|
|
; (drawScreen1Cell) and at $7BDD/$7C3B in both $6F00 overlays.
|
|
bitmapColLoTableFrom3:
|
|
.byte $18,$20,$28,$30,$38,$40,$48,$50,$58,$60; 9335 . (08@HPX` columns 3-12
|
|
|
|
; Columns 13-39, the base of the drone camera window at character column 13: read at $7441 and $74A2
|
|
; in both $6F00 overlays.
|
|
bitmapColLoTableFrom13:
|
|
.byte $68,$70,$78,$80,$88,$90,$98,$A0,$A8,$B0,$B8,$C0,$C8,$D0,$D8,$E0,$E8,$F0,$F8,$00,$08,$10,$18,$20,$28,$30,$38; 933F hpx.................... (08 columns 13-39
|
|
|
|
; bitmapColHiTable - high bytes of column*8: $00 for columns 0-31, $01 for columns 32-39 (column 32 is
|
|
; the first whose byte offset crosses $0100). Read at $2AAF and $FCB5. Columns 0-2 below.
|
|
bitmapColHiTable:
|
|
.byte $00,$00,$00 ; 935A ...
|
|
|
|
; Columns 3-39: read at $5DBD and at $7BE5/$7C43 in both $6F00 overlays.
|
|
bitmapColHiTableFrom3:
|
|
.byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00; 935D .......... columns 3-12
|
|
|
|
; Columns 13-39: read at $7449 and $74AA in both $6F00 overlays.
|
|
bitmapColHiTableFrom13:
|
|
.byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$01,$01,$01,$01,$01,$01,$01; 9367 ........................... columns 13-39
|
|
|
|
; screenRowLoTable - low bytes of the 25 screen-RAM row addresses $8C00 + 40*row ($00,$28,$50,...).
|
|
; Verified against the formula for all 25 rows. The column is simply added to this value, so there is
|
|
; no column table for screen RAM. Read by fillScreenColourRect ($2A71), calcCellPointersXY ($2AB6)
|
|
; and both $6F00 overlays ($82C1). Rows 0-2 below.
|
|
screenRowLoTable:
|
|
.byte $00,$28,$50 ; 9382 .(P
|
|
|
|
; Rows 3-24 (window base row 3): read at $5DC3 and at $78E9/$7BEB in both $6F00 overlays.
|
|
screenRowLoTableFrom3:
|
|
.byte $78,$A0,$C8 ; 9385 x.. rows 3-5
|
|
|
|
; Rows 6-24 (drone camera base row 6): read at $744F in both $6F00 overlays.
|
|
screenRowLoTableFrom6:
|
|
.byte $F0,$18,$40,$68,$90,$B8,$E0,$08,$30,$58,$80,$A8,$D0,$F8,$20,$48,$70,$98,$C0; 9388 ..@h....0X.... Hp.. rows 6-24
|
|
|
|
; screenRowHiTable - high bytes of $8C00 + 40*row: $8C for rows 0-6, $8D for rows 7-12,
|
|
; $8E for rows 13-19, $8F for rows 20-24. Read at $2A6C, $2ABB and $82C6 (both overlays).
|
|
; Adding $4C to one of these bytes turns the screen-RAM pointer into a colour-RAM pointer. Rows 0-2
|
|
; below.
|
|
screenRowHiTable:
|
|
.byte $8C,$8C,$8C ; 939B ...
|
|
|
|
; Rows 3-24: read at $5DCA and at $78F2/$7BF2 in both $6F00 overlays.
|
|
screenRowHiTableFrom3:
|
|
.byte $8C,$8C,$8C ; 939E ... rows 3-5
|
|
|
|
; Rows 6-24: read at $7456 in both $6F00 overlays.
|
|
screenRowHiTableFrom6:
|
|
.byte $8C,$8D,$8D,$8D,$8D,$8D,$8D,$8E,$8E,$8E,$8E,$8E,$8E,$8E,$8F,$8F,$8F,$8F,$8F; 93A1 ................... rows 6-24
|
|
|
|
; fontColorTable - one default colour byte for each of the 114 gameFont glyphs, same index as gameFont
|
|
; ($9426). 114 bytes, 16 per line below, so the line address gives the glyph number:
|
|
; $93B4 = glyphs $00-$0F, $93C4 = $10-$1F and so on.
|
|
; Read only by plotGlyph ($2AD6), and only when useDrawColourFlag ($2A29) is zero; when the caller has
|
|
; set that flag the fixed colour in drawColourByte ($2A2A) is used for every glyph. The byte is the
|
|
; cell's screen-RAM byte. The console screens are drawn in hires bitmap mode ($D016 bit 4 clear),
|
|
; where the high nibble is the colour of the 1 bits and the low nibble the colour of the 0 bits; in
|
|
; multicolour mode the same nibbles colour the %01 and %10 pixel pairs. Almost every entry is a grey
|
|
; pair - $BC (dark grey on medium grey), $FC (light grey on medium grey), $BB, $FB, $FF - which is
|
|
; what gives the console its metal look. Notable exceptions:
|
|
; $6E for glyphs $30-$37, the compass letters, drawn blue on light blue like the drone dial's
|
|
; colour fill at $6F2D; $02 (black on red) for the button-box corners $45-$48 and $59; $15 (white on
|
|
; green) for the two halves of the tall digit 0. Glyphs $01-$05 are five identical solid blocks that
|
|
; differ only here ($1C, $FC, $CC, $BC, $0C), and the light/dark frame pieces $06-$0D and $39-$40 hold
|
|
; the same eight shapes with their highlight colours swapped, which is how one frame set draws a
|
|
; raised box and the other a sunken one (see windowFrameTileSets). No entry is zero, so with the flag
|
|
; clear a glyph always gets its own colour: the 'entry 0 means fall back to drawColourByte' path in
|
|
; plotGlyph ($2AFC) can never be taken from this table.
|
|
fontColorTable:
|
|
.byte $10,$1C,$FC,$CC,$BC,$0C,$BC,$BC,$BC,$FC,$BC,$FC,$BC,$FC,$FC,$BC; 93B4 ................
|
|
.byte $BC,$BC,$FC,$BC,$BC,$BC,$BC,$BE,$BE,$BC,$BE,$BC,$BC,$BE,$BE,$BC; 93C4 ................
|
|
.byte $BE,$BC,$BC,$BE,$BC,$BE,$BE,$BC,$BC,$BE,$BC,$BE,$BE,$BC,$BC,$BC; 93D4 ................
|
|
.byte $6E,$6E,$6E,$6E,$6E,$6E,$6E,$6E,$BC,$FC,$FC,$FC,$BC,$FC,$BC,$FC; 93E4 nnnnnnnn........
|
|
.byte $BC,$0B,$BF,$FB,$CF,$02,$02,$02,$02,$15,$15,$BC,$FC,$FC,$FC,$BC; 93F4 ................
|
|
.byte $FC,$BC,$FC,$BC,$0C,$0B,$BF,$FB,$CF,$02,$1B,$FB,$F1,$1B,$F1,$FB; 9404 ................
|
|
.byte $FB,$FB,$FB,$BB,$FB,$BB,$BB,$FB,$BB,$BB,$BB,$BB,$BB,$BB,$FF,$BB; 9414 ................
|
|
.byte $FF,$FF ; 9424 ..
|
|
|
|
; gameFont - the main program's own 8x8 tile font: 114 glyphs of 8 bytes each, addressed as
|
|
; $9426 + code*8 by plotGlyph, which builds that address at $2AE5/$2AEB and copies the eight
|
|
; bytes into one bitmap cell through zp_B2/B3. The plotter's mode opcode at $2AF3 can store, OR or
|
|
; EOR the rows, so several glyphs are designed to be drawn over each other. This is not a text font -
|
|
; readable text is drawn with the 59-glyph console sets at $98BE/$9A96. It is the tile set the bitmap
|
|
; screens are built from, and it is used through four tables: windowFrameTileSets ($9824),
|
|
; tallDigitGlyphPairTable ($9810), the four character-picture blocks at $97B6, and fontColorTable
|
|
; ($93B4) for the default colours. Map of the glyph codes:
|
|
; $00 blank cell
|
|
; $01-$05 solid cell (all $FF); five copies that differ only in fontColorTable
|
|
; $06-$13 thin frame pieces: corner dots, edge lines, both diagonals
|
|
; $14-$2F arc segments of the drone dial rings (used only by the $97B6/$97D1 pictures)
|
|
; $30-$37 the compass letters N, S, W and E, each split over two cells
|
|
; $38 small hollow diamond - the inner corner mark of drawWindowInnerCorners
|
|
; $39-$44 the same frame pieces again in the opposite shade, plus two solid triangles
|
|
; $45-$48 the four corners of the 2x2 button box
|
|
; $49-$56 fourteen half-glyphs that make the ten tall digits (see $9810)
|
|
; $57-$59 the word FUEL as a 24-pixel strip (drone fuel gauge caption, drawn at $6F6F-$6F7F)
|
|
; $5A-$5E flat multicolour fills and dithers
|
|
; $5F-$71 the heavy raised-bevel frame set
|
|
; Glyphs $00-$05 below: the blank and the five solid cells. $01 is also drawCharBlock's initial
|
|
; blockFillChar ($2A2C).
|
|
gameFont:
|
|
.byte $00 ; 9426 ........
|
|
.byte $00 ; 9427 ........
|
|
.byte $00 ; 9428 ........
|
|
.byte $00 ; 9429 ........
|
|
.byte $00 ; 942A ........
|
|
.byte $00 ; 942B ........
|
|
.byte $00 ; 942C ........
|
|
.byte $00 ; 942D ........
|
|
|
|
.byte $FF ; 942E ########
|
|
.byte $FF ; 942F ########
|
|
.byte $FF ; 9430 ########
|
|
.byte $FF ; 9431 ########
|
|
.byte $FF ; 9432 ########
|
|
.byte $FF ; 9433 ########
|
|
.byte $FF ; 9434 ########
|
|
.byte $FF ; 9435 ########
|
|
|
|
.byte $FF ; 9436 ########
|
|
.byte $FF ; 9437 ########
|
|
.byte $FF ; 9438 ########
|
|
.byte $FF ; 9439 ########
|
|
.byte $FF ; 943A ########
|
|
.byte $FF ; 943B ########
|
|
.byte $FF ; 943C ########
|
|
.byte $FF ; 943D ########
|
|
|
|
.byte $FF ; 943E ########
|
|
.byte $FF ; 943F ########
|
|
.byte $FF ; 9440 ########
|
|
.byte $FF ; 9441 ########
|
|
.byte $FF ; 9442 ########
|
|
.byte $FF ; 9443 ########
|
|
.byte $FF ; 9444 ########
|
|
.byte $FF ; 9445 ########
|
|
|
|
.byte $FF ; 9446 ########
|
|
.byte $FF ; 9447 ########
|
|
.byte $FF ; 9448 ########
|
|
.byte $FF ; 9449 ########
|
|
.byte $FF ; 944A ########
|
|
.byte $FF ; 944B ########
|
|
.byte $FF ; 944C ########
|
|
.byte $FF ; 944D ########
|
|
|
|
.byte $FF ; 944E ########
|
|
.byte $FF ; 944F ########
|
|
.byte $FF ; 9450 ########
|
|
.byte $FF ; 9451 ########
|
|
.byte $FF ; 9452 ########
|
|
.byte $FF ; 9453 ########
|
|
.byte $FF ; 9454 ########
|
|
.byte $FF ; 9455 ########
|
|
|
|
|
|
; Glyphs $06-$13 - thin frame pieces, two pixels thick, drawn on the inner edge of a cell:
|
|
; $06 bottom-right corner dot, $07 bottom-left, $08 top-right, $09 top-left, $0A line along the
|
|
; bottom, $0B line along the top, $0C line down the right, $0D line down the left, $0E/$0F the '/'
|
|
; diagonal, $10/$11 the '\' diagonal, $12 single-pixel left column, $13 single-pixel right column.
|
|
; ($0E and $0F are identical, so are $10 and $11; only their colour entries differ.) Used by window
|
|
; frame sets 0 ($9824) and 2 ($9836).
|
|
gameFontFramePieces:
|
|
.byte $00 ; 9456 ........
|
|
.byte $00 ; 9457 ........
|
|
.byte $00 ; 9458 ........
|
|
.byte $00 ; 9459 ........
|
|
.byte $00 ; 945A ........
|
|
.byte $00 ; 945B ........
|
|
.byte $00 ; 945C ........
|
|
.byte $03 ; 945D ......##
|
|
|
|
.byte $00 ; 945E ........
|
|
.byte $00 ; 945F ........
|
|
.byte $00 ; 9460 ........
|
|
.byte $00 ; 9461 ........
|
|
.byte $00 ; 9462 ........
|
|
.byte $00 ; 9463 ........
|
|
.byte $00 ; 9464 ........
|
|
.byte $C0 ; 9465 ##......
|
|
|
|
.byte $03 ; 9466 ......##
|
|
.byte $00 ; 9467 ........
|
|
.byte $00 ; 9468 ........
|
|
.byte $00 ; 9469 ........
|
|
.byte $00 ; 946A ........
|
|
.byte $00 ; 946B ........
|
|
.byte $00 ; 946C ........
|
|
.byte $00 ; 946D ........
|
|
|
|
.byte $C0 ; 946E ##......
|
|
.byte $00 ; 946F ........
|
|
.byte $00 ; 9470 ........
|
|
.byte $00 ; 9471 ........
|
|
.byte $00 ; 9472 ........
|
|
.byte $00 ; 9473 ........
|
|
.byte $00 ; 9474 ........
|
|
.byte $00 ; 9475 ........
|
|
|
|
.byte $00 ; 9476 ........
|
|
.byte $00 ; 9477 ........
|
|
.byte $00 ; 9478 ........
|
|
.byte $00 ; 9479 ........
|
|
.byte $00 ; 947A ........
|
|
.byte $00 ; 947B ........
|
|
.byte $00 ; 947C ........
|
|
.byte $FF ; 947D ########
|
|
|
|
.byte $FF ; 947E ########
|
|
.byte $00 ; 947F ........
|
|
.byte $00 ; 9480 ........
|
|
.byte $00 ; 9481 ........
|
|
.byte $00 ; 9482 ........
|
|
.byte $00 ; 9483 ........
|
|
.byte $00 ; 9484 ........
|
|
.byte $00 ; 9485 ........
|
|
|
|
.byte $03 ; 9486 ......##
|
|
.byte $03 ; 9487 ......##
|
|
.byte $03 ; 9488 ......##
|
|
.byte $03 ; 9489 ......##
|
|
.byte $03 ; 948A ......##
|
|
.byte $03 ; 948B ......##
|
|
.byte $03 ; 948C ......##
|
|
.byte $03 ; 948D ......##
|
|
|
|
.byte $C0 ; 948E ##......
|
|
.byte $C0 ; 948F ##......
|
|
.byte $C0 ; 9490 ##......
|
|
.byte $C0 ; 9491 ##......
|
|
.byte $C0 ; 9492 ##......
|
|
.byte $C0 ; 9493 ##......
|
|
.byte $C0 ; 9494 ##......
|
|
.byte $C0 ; 9495 ##......
|
|
|
|
.byte $01 ; 9496 .......#
|
|
.byte $02 ; 9497 ......#.
|
|
.byte $04 ; 9498 .....#..
|
|
.byte $08 ; 9499 ....#...
|
|
.byte $10 ; 949A ...#....
|
|
.byte $20 ; 949B ..#.....
|
|
.byte $40 ; 949C .#......
|
|
.byte $80 ; 949D #.......
|
|
|
|
.byte $01 ; 949E .......#
|
|
.byte $02 ; 949F ......#.
|
|
.byte $04 ; 94A0 .....#..
|
|
.byte $08 ; 94A1 ....#...
|
|
.byte $10 ; 94A2 ...#....
|
|
.byte $20 ; 94A3 ..#.....
|
|
.byte $40 ; 94A4 .#......
|
|
.byte $80 ; 94A5 #.......
|
|
|
|
.byte $80 ; 94A6 #.......
|
|
.byte $40 ; 94A7 .#......
|
|
.byte $20 ; 94A8 ..#.....
|
|
.byte $10 ; 94A9 ...#....
|
|
.byte $08 ; 94AA ....#...
|
|
.byte $04 ; 94AB .....#..
|
|
.byte $02 ; 94AC ......#.
|
|
.byte $01 ; 94AD .......#
|
|
|
|
.byte $80 ; 94AE #.......
|
|
.byte $40 ; 94AF .#......
|
|
.byte $20 ; 94B0 ..#.....
|
|
.byte $10 ; 94B1 ...#....
|
|
.byte $08 ; 94B2 ....#...
|
|
.byte $04 ; 94B3 .....#..
|
|
.byte $02 ; 94B4 ......#.
|
|
.byte $01 ; 94B5 .......#
|
|
|
|
.byte $80 ; 94B6 #.......
|
|
.byte $80 ; 94B7 #.......
|
|
.byte $80 ; 94B8 #.......
|
|
.byte $80 ; 94B9 #.......
|
|
.byte $80 ; 94BA #.......
|
|
.byte $80 ; 94BB #.......
|
|
.byte $80 ; 94BC #.......
|
|
.byte $80 ; 94BD #.......
|
|
|
|
.byte $01 ; 94BE .......#
|
|
.byte $01 ; 94BF .......#
|
|
.byte $01 ; 94C0 .......#
|
|
.byte $01 ; 94C1 .......#
|
|
.byte $01 ; 94C2 .......#
|
|
.byte $01 ; 94C3 .......#
|
|
.byte $01 ; 94C4 .......#
|
|
.byte $01 ; 94C5 .......#
|
|
|
|
|
|
; Glyphs $14-$2F - 28 chunky arc segments. Each is a slice of a circle edge, meaningless on its own;
|
|
; the two character-picture blocks at $97B6 and $97D1 assemble them into the inner octagon and the
|
|
; outer ring of the DRONE screen's compass dial (and, redrawn in one colour, into the body of the fuel
|
|
; gauge). No window frame set or other glyph table in this file selects any of them.
|
|
gameFontDialArcs:
|
|
.byte $00 ; 94C6 ........
|
|
.byte $00 ; 94C7 ........
|
|
.byte $00 ; 94C8 ........
|
|
.byte $01 ; 94C9 .......#
|
|
.byte $07 ; 94CA .....###
|
|
.byte $0F ; 94CB ....####
|
|
.byte $1F ; 94CC ...#####
|
|
.byte $7F ; 94CD .#######
|
|
|
|
.byte $00 ; 94CE ........
|
|
.byte $0F ; 94CF ....####
|
|
.byte $7F ; 94D0 .#######
|
|
.byte $FF ; 94D1 ########
|
|
.byte $FF ; 94D2 ########
|
|
.byte $FF ; 94D3 ########
|
|
.byte $FF ; 94D4 ########
|
|
.byte $FF ; 94D5 ########
|
|
|
|
.byte $00 ; 94D6 ........
|
|
.byte $01 ; 94D7 .......#
|
|
.byte $03 ; 94D8 ......##
|
|
.byte $03 ; 94D9 ......##
|
|
.byte $07 ; 94DA .....###
|
|
.byte $0F ; 94DB ....####
|
|
.byte $0F ; 94DC ....####
|
|
.byte $1F ; 94DD ...#####
|
|
|
|
.byte $FF ; 94DE ########
|
|
.byte $FF ; 94DF ########
|
|
.byte $FF ; 94E0 ########
|
|
.byte $FF ; 94E1 ########
|
|
.byte $FE ; 94E2 #######.
|
|
.byte $FC ; 94E3 ######..
|
|
.byte $F8 ; 94E4 #####...
|
|
.byte $F0 ; 94E5 ####....
|
|
|
|
.byte $FC ; 94E6 ######..
|
|
.byte $F0 ; 94E7 ####....
|
|
.byte $C0 ; 94E8 ##......
|
|
.byte $00 ; 94E9 ........
|
|
.byte $00 ; 94EA ........
|
|
.byte $00 ; 94EB ........
|
|
.byte $00 ; 94EC ........
|
|
.byte $00 ; 94ED ........
|
|
|
|
.byte $1F ; 94EE ...#####
|
|
.byte $3F ; 94EF ..######
|
|
.byte $3F ; 94F0 ..######
|
|
.byte $7F ; 94F1 .#######
|
|
.byte $7F ; 94F2 .#######
|
|
.byte $7F ; 94F3 .#######
|
|
.byte $7F ; 94F4 .#######
|
|
.byte $FF ; 94F5 ########
|
|
|
|
.byte $E0 ; 94F6 ###.....
|
|
.byte $E0 ; 94F7 ###.....
|
|
.byte $C0 ; 94F8 ##......
|
|
.byte $C0 ; 94F9 ##......
|
|
.byte $80 ; 94FA #.......
|
|
.byte $80 ; 94FB #.......
|
|
.byte $80 ; 94FC #.......
|
|
.byte $00 ; 94FD ........
|
|
|
|
.byte $80 ; 94FE #.......
|
|
.byte $F8 ; 94FF #####...
|
|
.byte $FE ; 9500 #######.
|
|
.byte $FF ; 9501 ########
|
|
.byte $FF ; 9502 ########
|
|
.byte $FF ; 9503 ########
|
|
.byte $FF ; 9504 ########
|
|
.byte $FF ; 9505 ########
|
|
|
|
.byte $00 ; 9506 ........
|
|
.byte $00 ; 9507 ........
|
|
.byte $00 ; 9508 ........
|
|
.byte $80 ; 9509 #.......
|
|
.byte $E0 ; 950A ###.....
|
|
.byte $F0 ; 950B ####....
|
|
.byte $FC ; 950C ######..
|
|
.byte $FE ; 950D #######.
|
|
|
|
.byte $7F ; 950E .#######
|
|
.byte $0F ; 950F ....####
|
|
.byte $03 ; 9510 ......##
|
|
.byte $00 ; 9511 ........
|
|
.byte $00 ; 9512 ........
|
|
.byte $00 ; 9513 ........
|
|
.byte $00 ; 9514 ........
|
|
.byte $00 ; 9515 ........
|
|
|
|
.byte $FF ; 9516 ########
|
|
.byte $FF ; 9517 ########
|
|
.byte $FF ; 9518 ########
|
|
.byte $FF ; 9519 ########
|
|
.byte $7F ; 951A .#######
|
|
.byte $3F ; 951B ..######
|
|
.byte $1F ; 951C ...#####
|
|
.byte $0F ; 951D ....####
|
|
|
|
.byte $00 ; 951E ........
|
|
.byte $80 ; 951F #.......
|
|
.byte $80 ; 9520 #.......
|
|
.byte $C0 ; 9521 ##......
|
|
.byte $E0 ; 9522 ###.....
|
|
.byte $F0 ; 9523 ####....
|
|
.byte $F0 ; 9524 ####....
|
|
.byte $F8 ; 9525 #####...
|
|
|
|
.byte $07 ; 9526 .....###
|
|
.byte $07 ; 9527 .....###
|
|
.byte $03 ; 9528 ......##
|
|
.byte $03 ; 9529 ......##
|
|
.byte $01 ; 952A .......#
|
|
.byte $01 ; 952B .......#
|
|
.byte $00 ; 952C ........
|
|
.byte $00 ; 952D ........
|
|
|
|
.byte $F8 ; 952E #####...
|
|
.byte $FC ; 952F ######..
|
|
.byte $FC ; 9530 ######..
|
|
.byte $FC ; 9531 ######..
|
|
.byte $FE ; 9532 #######.
|
|
.byte $FE ; 9533 #######.
|
|
.byte $FE ; 9534 #######.
|
|
.byte $FE ; 9535 #######.
|
|
|
|
.byte $7F ; 9536 .#######
|
|
.byte $7F ; 9537 .#######
|
|
.byte $7F ; 9538 .#######
|
|
.byte $7F ; 9539 .#######
|
|
.byte $3F ; 953A ..######
|
|
.byte $3F ; 953B ..######
|
|
.byte $3F ; 953C ..######
|
|
.byte $1F ; 953D ...#####
|
|
|
|
.byte $00 ; 953E ........
|
|
.byte $00 ; 953F ........
|
|
.byte $80 ; 9540 #.......
|
|
.byte $80 ; 9541 #.......
|
|
.byte $C0 ; 9542 ##......
|
|
.byte $C0 ; 9543 ##......
|
|
.byte $E0 ; 9544 ###.....
|
|
.byte $E0 ; 9545 ###.....
|
|
|
|
.byte $1F ; 9546 ...#####
|
|
.byte $0F ; 9547 ....####
|
|
.byte $0F ; 9548 ....####
|
|
.byte $07 ; 9549 .....###
|
|
.byte $03 ; 954A ......##
|
|
.byte $01 ; 954B .......#
|
|
.byte $01 ; 954C .......#
|
|
.byte $00 ; 954D ........
|
|
|
|
.byte $F0 ; 954E ####....
|
|
.byte $F8 ; 954F #####...
|
|
.byte $FC ; 9550 ######..
|
|
.byte $FE ; 9551 #######.
|
|
.byte $FF ; 9552 ########
|
|
.byte $FF ; 9553 ########
|
|
.byte $FF ; 9554 ########
|
|
.byte $FF ; 9555 ########
|
|
|
|
.byte $00 ; 9556 ........
|
|
.byte $00 ; 9557 ........
|
|
.byte $00 ; 9558 ........
|
|
.byte $00 ; 9559 ........
|
|
.byte $00 ; 955A ........
|
|
.byte $C0 ; 955B ##......
|
|
.byte $F0 ; 955C ####....
|
|
.byte $FE ; 955D #######.
|
|
|
|
.byte $7F ; 955E .#######
|
|
.byte $3F ; 955F ..######
|
|
.byte $0F ; 9560 ....####
|
|
.byte $07 ; 9561 .....###
|
|
.byte $01 ; 9562 .......#
|
|
.byte $00 ; 9563 ........
|
|
.byte $00 ; 9564 ........
|
|
.byte $00 ; 9565 ........
|
|
|
|
.byte $FF ; 9566 ########
|
|
.byte $FF ; 9567 ########
|
|
.byte $FF ; 9568 ########
|
|
.byte $FF ; 9569 ########
|
|
.byte $FF ; 956A ########
|
|
.byte $7F ; 956B .#######
|
|
.byte $1F ; 956C ...#####
|
|
.byte $01 ; 956D .......#
|
|
|
|
.byte $00 ; 956E ........
|
|
.byte $01 ; 956F .......#
|
|
.byte $01 ; 9570 .......#
|
|
.byte $01 ; 9571 .......#
|
|
.byte $03 ; 9572 ......##
|
|
.byte $03 ; 9573 ......##
|
|
.byte $07 ; 9574 .....###
|
|
.byte $07 ; 9575 .....###
|
|
|
|
.byte $FF ; 9576 ########
|
|
.byte $FE ; 9577 #######.
|
|
.byte $FE ; 9578 #######.
|
|
.byte $FE ; 9579 #######.
|
|
.byte $FE ; 957A #######.
|
|
.byte $FC ; 957B ######..
|
|
.byte $FC ; 957C ######..
|
|
.byte $F8 ; 957D #####...
|
|
|
|
.byte $00 ; 957E ........
|
|
.byte $00 ; 957F ........
|
|
.byte $00 ; 9580 ........
|
|
.byte $00 ; 9581 ........
|
|
.byte $00 ; 9582 ........
|
|
.byte $03 ; 9583 ......##
|
|
.byte $0F ; 9584 ....####
|
|
.byte $3F ; 9585 ..######
|
|
|
|
.byte $0F ; 9586 ....####
|
|
.byte $1F ; 9587 ...#####
|
|
.byte $3F ; 9588 ..######
|
|
.byte $7F ; 9589 .#######
|
|
.byte $FF ; 958A ########
|
|
.byte $FF ; 958B ########
|
|
.byte $FF ; 958C ########
|
|
.byte $FF ; 958D ########
|
|
|
|
.byte $F8 ; 958E #####...
|
|
.byte $F0 ; 958F ####....
|
|
.byte $F0 ; 9590 ####....
|
|
.byte $E0 ; 9591 ###.....
|
|
.byte $C0 ; 9592 ##......
|
|
.byte $C0 ; 9593 ##......
|
|
.byte $80 ; 9594 #.......
|
|
.byte $00 ; 9595 ........
|
|
|
|
.byte $FF ; 9596 ########
|
|
.byte $FF ; 9597 ########
|
|
.byte $FF ; 9598 ########
|
|
.byte $FF ; 9599 ########
|
|
.byte $FF ; 959A ########
|
|
.byte $FE ; 959B #######.
|
|
.byte $F0 ; 959C ####....
|
|
.byte $00 ; 959D ........
|
|
|
|
.byte $FE ; 959E #######.
|
|
.byte $F8 ; 959F #####...
|
|
.byte $F0 ; 95A0 ####....
|
|
.byte $E0 ; 95A1 ###.....
|
|
.byte $80 ; 95A2 #.......
|
|
.byte $00 ; 95A3 ........
|
|
.byte $00 ; 95A4 ........
|
|
.byte $00 ; 95A5 ........
|
|
|
|
|
|
; Glyphs $30-$37 - the four compass letters of the drone dial, each split across two cells so a letter
|
|
; can straddle a cell boundary. Their fontColorTable entries are all $6E (blue on light blue), the
|
|
; dial's colour.
|
|
; $30 over $31 = 'N' (the letter spans pixel rows 2-9 of the two stacked cells).
|
|
gameFontCompassN:
|
|
.byte $00 ; 95A6 ........
|
|
.byte $00 ; 95A7 ........
|
|
.byte $C3 ; 95A8 ##....##
|
|
.byte $E3 ; 95A9 ###...##
|
|
.byte $F3 ; 95AA ####..##
|
|
.byte $FB ; 95AB #####.##
|
|
.byte $DF ; 95AC ##.#####
|
|
.byte $CF ; 95AD ##..####
|
|
|
|
.byte $C7 ; 95AE ##...###
|
|
.byte $C3 ; 95AF ##....##
|
|
.byte $00 ; 95B0 ........
|
|
.byte $00 ; 95B1 ........
|
|
.byte $00 ; 95B2 ........
|
|
.byte $00 ; 95B3 ........
|
|
.byte $00 ; 95B4 ........
|
|
.byte $00 ; 95B5 ........
|
|
|
|
|
|
; $32 over $33 = 'S' (pixel rows 6-13 of the two stacked cells).
|
|
gameFontCompassS:
|
|
.byte $00 ; 95B6 ........
|
|
.byte $00 ; 95B7 ........
|
|
.byte $00 ; 95B8 ........
|
|
.byte $00 ; 95B9 ........
|
|
.byte $00 ; 95BA ........
|
|
.byte $00 ; 95BB ........
|
|
.byte $7E ; 95BC .######.
|
|
.byte $C3 ; 95BD ##....##
|
|
|
|
.byte $C0 ; 95BE ##......
|
|
.byte $7E ; 95BF .######.
|
|
.byte $03 ; 95C0 ......##
|
|
.byte $03 ; 95C1 ......##
|
|
.byte $C3 ; 95C2 ##....##
|
|
.byte $7E ; 95C3 .######.
|
|
.byte $00 ; 95C4 ........
|
|
.byte $00 ; 95C5 ........
|
|
|
|
|
|
; $34 beside $35 = 'W' (pixel columns 2-9 of the two cells side by side).
|
|
gameFontCompassW:
|
|
.byte $30 ; 95C6 ..##....
|
|
.byte $30 ; 95C7 ..##....
|
|
.byte $30 ; 95C8 ..##....
|
|
.byte $30 ; 95C9 ..##....
|
|
.byte $36 ; 95CA ..##.##.
|
|
.byte $3F ; 95CB ..######
|
|
.byte $39 ; 95CC ..###..#
|
|
.byte $30 ; 95CD ..##....
|
|
|
|
.byte $C0 ; 95CE ##......
|
|
.byte $C0 ; 95CF ##......
|
|
.byte $C0 ; 95D0 ##......
|
|
.byte $C0 ; 95D1 ##......
|
|
.byte $C0 ; 95D2 ##......
|
|
.byte $C0 ; 95D3 ##......
|
|
.byte $C0 ; 95D4 ##......
|
|
.byte $C0 ; 95D5 ##......
|
|
|
|
|
|
; $36 beside $37 = 'E' (pixel columns 6-13 of the two cells side by side).
|
|
gameFontCompassE:
|
|
.byte $03 ; 95D6 ......##
|
|
.byte $03 ; 95D7 ......##
|
|
.byte $03 ; 95D8 ......##
|
|
.byte $03 ; 95D9 ......##
|
|
.byte $03 ; 95DA ......##
|
|
.byte $03 ; 95DB ......##
|
|
.byte $03 ; 95DC ......##
|
|
.byte $03 ; 95DD ......##
|
|
|
|
.byte $F8 ; 95DE #####...
|
|
.byte $00 ; 95DF ........
|
|
.byte $00 ; 95E0 ........
|
|
.byte $E0 ; 95E1 ###.....
|
|
.byte $00 ; 95E2 ........
|
|
.byte $00 ; 95E3 ........
|
|
.byte $00 ; 95E4 ........
|
|
.byte $F8 ; 95E5 #####...
|
|
|
|
|
|
; Glyph $38 - the small hollow diamond drawWindowInnerCorners ($2B93-$2BB3) stamps just inside the
|
|
; four corners of a panel, giving the frame its four studs; the overlay screens call it at $7092,
|
|
; $7B0A and elsewhere. It is also the corner mark of the outer dial picture at $97D1.
|
|
gameFontCornerMark:
|
|
.byte $00 ; 95E6 ........
|
|
.byte $00 ; 95E7 ........
|
|
.byte $18 ; 95E8 ...##...
|
|
.byte $24 ; 95E9 ..#..#..
|
|
.byte $24 ; 95EA ..#..#..
|
|
.byte $18 ; 95EB ...##...
|
|
.byte $00 ; 95EC ........
|
|
.byte $00 ; 95ED ........
|
|
|
|
|
|
; Glyphs $39-$44 - a second copy of the thin frame pieces plus two solid triangles:
|
|
; $39-$40 are byte-for-byte the same shapes as $06-$0D, but their fontColorTable entries have
|
|
; the light and dark greys swapped, so frame set 1 ($982D) draws the same box as set 0 ($9824) lit
|
|
; from the other side (raised instead of sunken). $41 and $44 are the '\' diagonal, $42 a solid
|
|
; upper-left triangle and $43 a solid lower-right triangle: the chamfered corners of the solid panel
|
|
; in frame set 3 ($983F).
|
|
gameFontFramePiecesAlt:
|
|
.byte $00 ; 95EE ........
|
|
.byte $00 ; 95EF ........
|
|
.byte $00 ; 95F0 ........
|
|
.byte $00 ; 95F1 ........
|
|
.byte $00 ; 95F2 ........
|
|
.byte $00 ; 95F3 ........
|
|
.byte $00 ; 95F4 ........
|
|
.byte $03 ; 95F5 ......##
|
|
|
|
.byte $00 ; 95F6 ........
|
|
.byte $00 ; 95F7 ........
|
|
.byte $00 ; 95F8 ........
|
|
.byte $00 ; 95F9 ........
|
|
.byte $00 ; 95FA ........
|
|
.byte $00 ; 95FB ........
|
|
.byte $00 ; 95FC ........
|
|
.byte $C0 ; 95FD ##......
|
|
|
|
.byte $03 ; 95FE ......##
|
|
.byte $00 ; 95FF ........
|
|
.byte $00 ; 9600 ........
|
|
.byte $00 ; 9601 ........
|
|
.byte $00 ; 9602 ........
|
|
.byte $00 ; 9603 ........
|
|
.byte $00 ; 9604 ........
|
|
.byte $00 ; 9605 ........
|
|
|
|
.byte $C0 ; 9606 ##......
|
|
.byte $00 ; 9607 ........
|
|
.byte $00 ; 9608 ........
|
|
.byte $00 ; 9609 ........
|
|
.byte $00 ; 960A ........
|
|
.byte $00 ; 960B ........
|
|
.byte $00 ; 960C ........
|
|
.byte $00 ; 960D ........
|
|
|
|
.byte $00 ; 960E ........
|
|
.byte $00 ; 960F ........
|
|
.byte $00 ; 9610 ........
|
|
.byte $00 ; 9611 ........
|
|
.byte $00 ; 9612 ........
|
|
.byte $00 ; 9613 ........
|
|
.byte $00 ; 9614 ........
|
|
.byte $FF ; 9615 ########
|
|
|
|
.byte $FF ; 9616 ########
|
|
.byte $00 ; 9617 ........
|
|
.byte $00 ; 9618 ........
|
|
.byte $00 ; 9619 ........
|
|
.byte $00 ; 961A ........
|
|
.byte $00 ; 961B ........
|
|
.byte $00 ; 961C ........
|
|
.byte $00 ; 961D ........
|
|
|
|
.byte $03 ; 961E ......##
|
|
.byte $03 ; 961F ......##
|
|
.byte $03 ; 9620 ......##
|
|
.byte $03 ; 9621 ......##
|
|
.byte $03 ; 9622 ......##
|
|
.byte $03 ; 9623 ......##
|
|
.byte $03 ; 9624 ......##
|
|
.byte $03 ; 9625 ......##
|
|
|
|
.byte $C0 ; 9626 ##......
|
|
.byte $C0 ; 9627 ##......
|
|
.byte $C0 ; 9628 ##......
|
|
.byte $C0 ; 9629 ##......
|
|
.byte $C0 ; 962A ##......
|
|
.byte $C0 ; 962B ##......
|
|
.byte $C0 ; 962C ##......
|
|
.byte $C0 ; 962D ##......
|
|
|
|
.byte $80 ; 962E #.......
|
|
.byte $40 ; 962F .#......
|
|
.byte $20 ; 9630 ..#.....
|
|
.byte $10 ; 9631 ...#....
|
|
.byte $08 ; 9632 ....#...
|
|
.byte $04 ; 9633 .....#..
|
|
.byte $02 ; 9634 ......#.
|
|
.byte $01 ; 9635 .......#
|
|
|
|
.byte $FF ; 9636 ########
|
|
.byte $FE ; 9637 #######.
|
|
.byte $FC ; 9638 ######..
|
|
.byte $F8 ; 9639 #####...
|
|
.byte $F0 ; 963A ####....
|
|
.byte $E0 ; 963B ###.....
|
|
.byte $C0 ; 963C ##......
|
|
.byte $80 ; 963D #.......
|
|
|
|
.byte $01 ; 963E .......#
|
|
.byte $03 ; 963F ......##
|
|
.byte $07 ; 9640 .....###
|
|
.byte $0F ; 9641 ....####
|
|
.byte $1F ; 9642 ...#####
|
|
.byte $3F ; 9643 ..######
|
|
.byte $7F ; 9644 .#######
|
|
.byte $FF ; 9645 ########
|
|
|
|
.byte $80 ; 9646 #.......
|
|
.byte $40 ; 9647 .#......
|
|
.byte $20 ; 9648 ..#.....
|
|
.byte $10 ; 9649 ...#....
|
|
.byte $08 ; 964A ....#...
|
|
.byte $04 ; 964B .....#..
|
|
.byte $02 ; 964C ......#.
|
|
.byte $01 ; 964D .......#
|
|
|
|
|
|
; Glyphs $45-$48 - the four corners of a 2x2 hollow box, two pixels thick: $45 top-left,
|
|
; $46 top-right, $47 bottom-left, $48 bottom-right. The character block at $9804 stamps all
|
|
; four as the console tab boxes ($16A9), the FIRE button ($7B1B) and the drone screen's LAUNCH and
|
|
; STRIKE buttons ($70A3, $70D6).
|
|
gameFontBoxCorners:
|
|
.byte $FF ; 964E ########
|
|
.byte $FF ; 964F ########
|
|
.byte $C0 ; 9650 ##......
|
|
.byte $C0 ; 9651 ##......
|
|
.byte $C0 ; 9652 ##......
|
|
.byte $C0 ; 9653 ##......
|
|
.byte $C0 ; 9654 ##......
|
|
.byte $C0 ; 9655 ##......
|
|
|
|
.byte $FF ; 9656 ########
|
|
.byte $FF ; 9657 ########
|
|
.byte $03 ; 9658 ......##
|
|
.byte $03 ; 9659 ......##
|
|
.byte $03 ; 965A ......##
|
|
.byte $03 ; 965B ......##
|
|
.byte $03 ; 965C ......##
|
|
.byte $03 ; 965D ......##
|
|
|
|
.byte $C0 ; 965E ##......
|
|
.byte $C0 ; 965F ##......
|
|
.byte $C0 ; 9660 ##......
|
|
.byte $C0 ; 9661 ##......
|
|
.byte $C0 ; 9662 ##......
|
|
.byte $C0 ; 9663 ##......
|
|
.byte $FF ; 9664 ########
|
|
.byte $FF ; 9665 ########
|
|
|
|
.byte $03 ; 9666 ......##
|
|
.byte $03 ; 9667 ......##
|
|
.byte $03 ; 9668 ......##
|
|
.byte $03 ; 9669 ......##
|
|
.byte $03 ; 966A ......##
|
|
.byte $03 ; 966B ......##
|
|
.byte $FF ; 966C ########
|
|
.byte $FF ; 966D ########
|
|
|
|
|
|
; Glyphs $49-$56 - fourteen half-glyphs that build the ten 8x16 tall digits. Shapes are shared
|
|
; between digits (for example $4D is the top of both 2 and 3, $52 the top of both 5 and 6), which is
|
|
; why fourteen glyphs are enough for twenty halves; tallDigitGlyphPairTable ($9810) says which pair
|
|
; makes which digit.
|
|
gameFontTallDigitHalves:
|
|
.byte $00 ; 966E ........
|
|
.byte $00 ; 966F ........
|
|
.byte $3C ; 9670 ..####..
|
|
.byte $5A ; 9671 .#.##.#.
|
|
.byte $66 ; 9672 .##..##.
|
|
.byte $66 ; 9673 .##..##.
|
|
.byte $66 ; 9674 .##..##.
|
|
.byte $42 ; 9675 .#....#.
|
|
|
|
.byte $42 ; 9676 .#....#.
|
|
.byte $66 ; 9677 .##..##.
|
|
.byte $66 ; 9678 .##..##.
|
|
.byte $66 ; 9679 .##..##.
|
|
.byte $5A ; 967A .#.##.#.
|
|
.byte $3C ; 967B ..####..
|
|
.byte $00 ; 967C ........
|
|
.byte $00 ; 967D ........
|
|
|
|
.byte $00 ; 967E ........
|
|
.byte $00 ; 967F ........
|
|
.byte $18 ; 9680 ...##...
|
|
.byte $18 ; 9681 ...##...
|
|
.byte $18 ; 9682 ...##...
|
|
.byte $18 ; 9683 ...##...
|
|
.byte $18 ; 9684 ...##...
|
|
.byte $00 ; 9685 ........
|
|
|
|
.byte $00 ; 9686 ........
|
|
.byte $18 ; 9687 ...##...
|
|
.byte $18 ; 9688 ...##...
|
|
.byte $18 ; 9689 ...##...
|
|
.byte $18 ; 968A ...##...
|
|
.byte $18 ; 968B ...##...
|
|
.byte $00 ; 968C ........
|
|
.byte $00 ; 968D ........
|
|
|
|
.byte $00 ; 968E ........
|
|
.byte $00 ; 968F ........
|
|
.byte $7C ; 9690 .#####..
|
|
.byte $3A ; 9691 ..###.#.
|
|
.byte $06 ; 9692 .....##.
|
|
.byte $06 ; 9693 .....##.
|
|
.byte $06 ; 9694 .....##.
|
|
.byte $3C ; 9695 ..####..
|
|
|
|
.byte $3C ; 9696 ..####..
|
|
.byte $60 ; 9697 .##.....
|
|
.byte $60 ; 9698 .##.....
|
|
.byte $60 ; 9699 .##.....
|
|
.byte $5C ; 969A .#.###..
|
|
.byte $3E ; 969B ..#####.
|
|
.byte $00 ; 969C ........
|
|
.byte $00 ; 969D ........
|
|
|
|
.byte $3C ; 969E ..####..
|
|
.byte $06 ; 969F .....##.
|
|
.byte $06 ; 96A0 .....##.
|
|
.byte $06 ; 96A1 .....##.
|
|
.byte $3A ; 96A2 ..###.#.
|
|
.byte $7C ; 96A3 .#####..
|
|
.byte $00 ; 96A4 ........
|
|
.byte $00 ; 96A5 ........
|
|
|
|
.byte $00 ; 96A6 ........
|
|
.byte $00 ; 96A7 ........
|
|
.byte $42 ; 96A8 .#....#.
|
|
.byte $66 ; 96A9 .##..##.
|
|
.byte $66 ; 96AA .##..##.
|
|
.byte $66 ; 96AB .##..##.
|
|
.byte $66 ; 96AC .##..##.
|
|
.byte $3C ; 96AD ..####..
|
|
|
|
.byte $3C ; 96AE ..####..
|
|
.byte $06 ; 96AF .....##.
|
|
.byte $06 ; 96B0 .....##.
|
|
.byte $06 ; 96B1 .....##.
|
|
.byte $06 ; 96B2 .....##.
|
|
.byte $06 ; 96B3 .....##.
|
|
.byte $00 ; 96B4 ........
|
|
.byte $00 ; 96B5 ........
|
|
|
|
.byte $00 ; 96B6 ........
|
|
.byte $00 ; 96B7 ........
|
|
.byte $3C ; 96B8 ..####..
|
|
.byte $58 ; 96B9 .#.##...
|
|
.byte $60 ; 96BA .##.....
|
|
.byte $60 ; 96BB .##.....
|
|
.byte $60 ; 96BC .##.....
|
|
.byte $3C ; 96BD ..####..
|
|
|
|
.byte $3C ; 96BE ..####..
|
|
.byte $66 ; 96BF .##..##.
|
|
.byte $66 ; 96C0 .##..##.
|
|
.byte $66 ; 96C1 .##..##.
|
|
.byte $5A ; 96C2 .#.##.#.
|
|
.byte $3C ; 96C3 ..####..
|
|
.byte $00 ; 96C4 ........
|
|
.byte $00 ; 96C5 ........
|
|
|
|
.byte $00 ; 96C6 ........
|
|
.byte $00 ; 96C7 ........
|
|
.byte $7C ; 96C8 .#####..
|
|
.byte $1A ; 96C9 ...##.#.
|
|
.byte $06 ; 96CA .....##.
|
|
.byte $06 ; 96CB .....##.
|
|
.byte $06 ; 96CC .....##.
|
|
.byte $00 ; 96CD ........
|
|
|
|
.byte $00 ; 96CE ........
|
|
.byte $06 ; 96CF .....##.
|
|
.byte $06 ; 96D0 .....##.
|
|
.byte $06 ; 96D1 .....##.
|
|
.byte $06 ; 96D2 .....##.
|
|
.byte $02 ; 96D3 ......#.
|
|
.byte $00 ; 96D4 ........
|
|
.byte $00 ; 96D5 ........
|
|
|
|
.byte $00 ; 96D6 ........
|
|
.byte $00 ; 96D7 ........
|
|
.byte $3C ; 96D8 ..####..
|
|
.byte $5A ; 96D9 .#.##.#.
|
|
.byte $66 ; 96DA .##..##.
|
|
.byte $66 ; 96DB .##..##.
|
|
.byte $66 ; 96DC .##..##.
|
|
.byte $3C ; 96DD ..####..
|
|
|
|
|
|
; Glyphs $57-$59 - three cells that together spell FUEL in a small 6x6 typeface (24 pixels wide).
|
|
; drawDroneFuelPanel plots them one after another at row 17, columns 4-6 of the DRONE screen
|
|
; ($6F6D-$6F7F), under the tall fuel digits. They are not reachable through any glyph table.
|
|
gameFontFuelCaption:
|
|
.byte $00 ; 96DE ........
|
|
.byte $00 ; 96DF ........
|
|
.byte $79 ; 96E0 .####..#
|
|
.byte $41 ; 96E1 .#.....#
|
|
.byte $71 ; 96E2 .###...#
|
|
.byte $41 ; 96E3 .#.....#
|
|
.byte $41 ; 96E4 .#.....#
|
|
.byte $41 ; 96E5 .#.....#
|
|
|
|
.byte $00 ; 96E6 ........
|
|
.byte $00 ; 96E7 ........
|
|
.byte $27 ; 96E8 ..#..###
|
|
.byte $24 ; 96E9 ..#..#..
|
|
.byte $27 ; 96EA ..#..###
|
|
.byte $24 ; 96EB ..#..#..
|
|
.byte $24 ; 96EC ..#..#..
|
|
.byte $E7 ; 96ED ###..###
|
|
|
|
.byte $00 ; 96EE ........
|
|
.byte $00 ; 96EF ........
|
|
.byte $90 ; 96F0 #..#....
|
|
.byte $10 ; 96F1 ...#....
|
|
.byte $10 ; 96F2 ...#....
|
|
.byte $10 ; 96F3 ...#....
|
|
.byte $10 ; 96F4 ...#....
|
|
.byte $9E ; 96F5 #..####.
|
|
|
|
|
|
; Glyphs $5A-$5E - flat multicolour fills, meant for the multicolour map screens where each byte is
|
|
; four 2-bit pixels: $5D is all %10 pixels ($AA) and $5E all %01 pixels ($55), i.e. solid cells in the
|
|
; two screen-RAM nibble colours; $5A, $5B and $5C are the same fields with a few %11 pixels forming a
|
|
; faint diagonal. Frame set 6 ($985A), the overview panel's border, is built from them.
|
|
gameFontFillPatterns:
|
|
.byte $AA ; 96F6 #.#.#.#.
|
|
.byte $AA ; 96F7 #.#.#.#.
|
|
.byte $BA ; 96F8 #.###.#.
|
|
.byte $BA ; 96F9 #.###.#.
|
|
.byte $AE ; 96FA #.#.###.
|
|
.byte $AE ; 96FB #.#.###.
|
|
.byte $AA ; 96FC #.#.#.#.
|
|
.byte $AA ; 96FD #.#.#.#.
|
|
|
|
.byte $AB ; 96FE #.#.#.##
|
|
.byte $AB ; 96FF #.#.#.##
|
|
.byte $AD ; 9700 #.#.##.#
|
|
.byte $AD ; 9701 #.#.##.#
|
|
.byte $B5 ; 9702 #.##.#.#
|
|
.byte $B5 ; 9703 #.##.#.#
|
|
.byte $D5 ; 9704 ##.#.#.#
|
|
.byte $D5 ; 9705 ##.#.#.#
|
|
|
|
.byte $55 ; 9706 .#.#.#.#
|
|
.byte $55 ; 9707 .#.#.#.#
|
|
.byte $75 ; 9708 .###.#.#
|
|
.byte $75 ; 9709 .###.#.#
|
|
.byte $5D ; 970A .#.###.#
|
|
.byte $5D ; 970B .#.###.#
|
|
.byte $55 ; 970C .#.#.#.#
|
|
.byte $55 ; 970D .#.#.#.#
|
|
|
|
.byte $AA ; 970E #.#.#.#.
|
|
.byte $AA ; 970F #.#.#.#.
|
|
.byte $AA ; 9710 #.#.#.#.
|
|
.byte $AA ; 9711 #.#.#.#.
|
|
.byte $AA ; 9712 #.#.#.#.
|
|
.byte $AA ; 9713 #.#.#.#.
|
|
.byte $AA ; 9714 #.#.#.#.
|
|
.byte $AA ; 9715 #.#.#.#.
|
|
|
|
.byte $55 ; 9716 .#.#.#.#
|
|
.byte $55 ; 9717 .#.#.#.#
|
|
.byte $55 ; 9718 .#.#.#.#
|
|
.byte $55 ; 9719 .#.#.#.#
|
|
.byte $55 ; 971A .#.#.#.#
|
|
.byte $55 ; 971B .#.#.#.#
|
|
.byte $55 ; 971C .#.#.#.#
|
|
.byte $55 ; 971D .#.#.#.#
|
|
|
|
|
|
; Glyphs $5F-$71 - the heavy raised-bevel frame set: solid ($FF) interiors with one or two rows or
|
|
; columns of $55/$AA dither along an edge, so a border drawn from them looks bevelled. Frame sets 7, 8
|
|
; and 9 ($9863, $986C, $9875) - the battlefield view, the console panel and the in-battle message
|
|
; frame - are made of these.
|
|
gameFontBevelPieces:
|
|
.byte $FF ; 971E ########
|
|
.byte $55 ; 971F .#.#.#.#
|
|
.byte $7F ; 9720 .#######
|
|
.byte $7F ; 9721 .#######
|
|
.byte $7F ; 9722 .#######
|
|
.byte $7F ; 9723 .#######
|
|
.byte $7E ; 9724 .######.
|
|
.byte $7E ; 9725 .######.
|
|
|
|
.byte $FF ; 9726 ########
|
|
.byte $55 ; 9727 .#.#.#.#
|
|
.byte $FF ; 9728 ########
|
|
.byte $FF ; 9729 ########
|
|
.byte $FF ; 972A ########
|
|
.byte $FF ; 972B ########
|
|
.byte $AA ; 972C #.#.#.#.
|
|
.byte $AA ; 972D #.#.#.#.
|
|
|
|
.byte $FF ; 972E ########
|
|
.byte $55 ; 972F .#.#.#.#
|
|
.byte $FE ; 9730 #######.
|
|
.byte $FE ; 9731 #######.
|
|
.byte $FE ; 9732 #######.
|
|
.byte $FE ; 9733 #######.
|
|
.byte $BE ; 9734 #.#####.
|
|
.byte $BE ; 9735 #.#####.
|
|
|
|
.byte $7E ; 9736 .######.
|
|
.byte $7E ; 9737 .######.
|
|
.byte $7E ; 9738 .######.
|
|
.byte $7E ; 9739 .######.
|
|
.byte $7E ; 973A .######.
|
|
.byte $7E ; 973B .######.
|
|
.byte $7E ; 973C .######.
|
|
.byte $7E ; 973D .######.
|
|
|
|
.byte $7E ; 973E .######.
|
|
.byte $7E ; 973F .######.
|
|
.byte $7E ; 9740 .######.
|
|
.byte $7E ; 9741 .######.
|
|
.byte $7E ; 9742 .######.
|
|
.byte $7E ; 9743 .######.
|
|
.byte $7E ; 9744 .######.
|
|
.byte $7E ; 9745 .######.
|
|
|
|
.byte $7E ; 9746 .######.
|
|
.byte $7E ; 9747 .######.
|
|
.byte $7F ; 9748 .#######
|
|
.byte $7F ; 9749 .#######
|
|
.byte $7F ; 974A .#######
|
|
.byte $7F ; 974B .#######
|
|
.byte $AA ; 974C #.#.#.#.
|
|
.byte $FF ; 974D ########
|
|
|
|
.byte $55 ; 974E .#.#.#.#
|
|
.byte $55 ; 974F .#.#.#.#
|
|
.byte $FF ; 9750 ########
|
|
.byte $FF ; 9751 ########
|
|
.byte $FF ; 9752 ########
|
|
.byte $FF ; 9753 ########
|
|
.byte $AA ; 9754 #.#.#.#.
|
|
.byte $FF ; 9755 ########
|
|
|
|
.byte $7E ; 9756 .######.
|
|
.byte $7E ; 9757 .######.
|
|
.byte $FE ; 9758 #######.
|
|
.byte $FE ; 9759 #######.
|
|
.byte $FE ; 975A #######.
|
|
.byte $FE ; 975B #######.
|
|
.byte $AA ; 975C #.#.#.#.
|
|
.byte $FF ; 975D ########
|
|
|
|
.byte $7E ; 975E .######.
|
|
.byte $7E ; 975F .######.
|
|
.byte $7F ; 9760 .#######
|
|
.byte $7F ; 9761 .#######
|
|
.byte $7F ; 9762 .#######
|
|
.byte $7F ; 9763 .#######
|
|
.byte $7E ; 9764 .######.
|
|
.byte $7E ; 9765 .######.
|
|
|
|
.byte $AA ; 9766 #.#.#.#.
|
|
.byte $AA ; 9767 #.#.#.#.
|
|
.byte $FF ; 9768 ########
|
|
.byte $FF ; 9769 ########
|
|
.byte $FF ; 976A ########
|
|
.byte $FF ; 976B ########
|
|
.byte $AA ; 976C #.#.#.#.
|
|
.byte $AA ; 976D #.#.#.#.
|
|
|
|
.byte $7E ; 976E .######.
|
|
.byte $7E ; 976F .######.
|
|
.byte $FE ; 9770 #######.
|
|
.byte $FE ; 9771 #######.
|
|
.byte $FE ; 9772 #######.
|
|
.byte $FE ; 9773 #######.
|
|
.byte $7E ; 9774 .######.
|
|
.byte $7E ; 9775 .######.
|
|
|
|
.byte $FF ; 9776 ########
|
|
.byte $FF ; 9777 ########
|
|
.byte $FF ; 9778 ########
|
|
.byte $FF ; 9779 ########
|
|
.byte $FF ; 977A ########
|
|
.byte $FF ; 977B ########
|
|
.byte $FE ; 977C #######.
|
|
.byte $FE ; 977D #######.
|
|
|
|
.byte $FF ; 977E ########
|
|
.byte $FF ; 977F ########
|
|
.byte $FF ; 9780 ########
|
|
.byte $FF ; 9781 ########
|
|
.byte $FF ; 9782 ########
|
|
.byte $FF ; 9783 ########
|
|
.byte $AA ; 9784 #.#.#.#.
|
|
.byte $AA ; 9785 #.#.#.#.
|
|
|
|
.byte $FF ; 9786 ########
|
|
.byte $FF ; 9787 ########
|
|
.byte $FF ; 9788 ########
|
|
.byte $FF ; 9789 ########
|
|
.byte $FF ; 978A ########
|
|
.byte $FF ; 978B ########
|
|
.byte $BF ; 978C #.######
|
|
.byte $BF ; 978D #.######
|
|
|
|
.byte $FE ; 978E #######.
|
|
.byte $FE ; 978F #######.
|
|
.byte $FE ; 9790 #######.
|
|
.byte $FE ; 9791 #######.
|
|
.byte $FE ; 9792 #######.
|
|
.byte $FE ; 9793 #######.
|
|
.byte $FE ; 9794 #######.
|
|
.byte $FE ; 9795 #######.
|
|
|
|
.byte $7F ; 9796 .#######
|
|
.byte $7F ; 9797 .#######
|
|
.byte $7F ; 9798 .#######
|
|
.byte $7F ; 9799 .#######
|
|
.byte $7F ; 979A .#######
|
|
.byte $7F ; 979B .#######
|
|
.byte $7F ; 979C .#######
|
|
.byte $7F ; 979D .#######
|
|
|
|
.byte $FE ; 979E #######.
|
|
.byte $FE ; 979F #######.
|
|
.byte $FF ; 97A0 ########
|
|
.byte $FF ; 97A1 ########
|
|
.byte $FF ; 97A2 ########
|
|
.byte $FF ; 97A3 ########
|
|
.byte $FF ; 97A4 ########
|
|
.byte $FF ; 97A5 ########
|
|
|
|
.byte $55 ; 97A6 .#.#.#.#
|
|
.byte $55 ; 97A7 .#.#.#.#
|
|
.byte $FF ; 97A8 ########
|
|
.byte $FF ; 97A9 ########
|
|
.byte $FF ; 97AA ########
|
|
.byte $FF ; 97AB ########
|
|
.byte $FF ; 97AC ########
|
|
.byte $FF ; 97AD ########
|
|
|
|
.byte $7F ; 97AE .#######
|
|
.byte $7F ; 97AF .#######
|
|
.byte $FF ; 97B0 ########
|
|
.byte $FF ; 97B1 ########
|
|
.byte $FF ; 97B2 ########
|
|
.byte $FF ; 97B3 ########
|
|
.byte $FF ; 97B4 ########
|
|
.byte $FF ; 97B5 ########
|
|
|
|
|
|
; Four character-picture blocks in drawCharBlock ($2B18) format, back to back: byte 0 = width in
|
|
; cells, byte 1 = height, then width*height gameFont codes stored row by row. drawCharBlock stamps
|
|
; them at windowOriginRow/windowOriginCol ($2A2D/$2A2E). The survey called this range unreferenced
|
|
; dead data. It is not: every one of the four blocks is drawn, but always from a split immediate pair
|
|
; (LDA #lo / LDY #hi), which the cross-referencer cannot see - that is why XREF.txt lists no label
|
|
; anywhere in $97B6-$980F. compassRoseBlock ($97B6, 5x5 cells = 40x40 pixels) is the inner face of the
|
|
; DRONE screen's heading dial: an octagonal ring with the compass letters N, S, W and E ($30-$37) at
|
|
; the four cardinal points. drawDroneHeadingPanel loads it at $6F20/$6F22 and stamps it at row 5,
|
|
; column 3 (inside the 7x7 ring below), then paints the 3x3 middle with colour $6E. Header: width 5,
|
|
; height 5.
|
|
compassRoseBlock:
|
|
.byte $05,$05 ; 97B6 .. 5 wide, 5 high
|
|
|
|
; The 25 glyph codes of the compass rose, one picture row per line: the ring is built from the arc
|
|
; glyphs $14-$2F, and cells (0,2)/(1,2) hold N, (3,2)/(4,2) hold S, (2,0)/(2,1) hold W and (2,3)/(2,4)
|
|
; hold E.
|
|
.byte $17,$18,$30,$1D,$1E ; 97B8 ..0.. row 0 - upper-left arc, upper N, upper-right arc
|
|
.byte $1A,$00,$31,$00,$20 ; 97BD ..1.
|
|
.byte $34,$35,$00,$36,$37 ; 97C2 45.67
|
|
.byte $23,$00,$32,$00,$29 ; 97C7 #.2.)
|
|
.byte $25,$26,$33,$2B,$2C ; 97CC %&3+,
|
|
|
|
; dialFaceBlock - 7x7 cells (56x56 pixels): a big rounded ring with a small diamond ($38) at each of
|
|
; the four corners. Drawn twice on the DRONE screen: as the outer face of the heading dial at row 4,
|
|
; column 2 ($6F0F/$6F11), and again at row 13, column 2 as the body of the fuel gauge ($6F4F/$6F51),
|
|
; that time with useDrawColourFlag set so the whole picture comes out in $BC. Header: width 7, height
|
|
; 7.
|
|
dialFaceBlock:
|
|
.byte $07,$07 ; 97D1 .. 7 wide, 7 high
|
|
|
|
; The 49 glyph codes of the dial face, one picture row of 7 per line. Code $00 is the hollow middle,
|
|
; $04 the solid flat of the ring at the four cardinal points, $38 the corner diamonds and
|
|
; $14-$2F the arc segments.
|
|
; The last row runs past $9800, where the title-picture colour RAM that shares these addresses begins,
|
|
; so the listing breaks the row there; the four codes at $9800 belong to this block.
|
|
.byte $38,$14,$15,$04,$1B,$1C,$38; 97D3 8.....8 row 0 - corner diamond, arc, arc, ring top, arc, arc, corner diamond
|
|
.byte $16,$17,$18,$00,$1D,$1E,$1F; 97DA .......
|
|
.byte $19,$1A,$00,$00,$00,$20,$21; 97E1 ..... !
|
|
.byte $04,$00,$00,$00,$00,$00,$04; 97E8 .......
|
|
.byte $22,$23,$00,$00,$00,$29,$2A; 97EF "#...)*
|
|
.byte $24,$25,$26,$00,$2B,$2C,$2D; 97F6 $%&.+,-
|
|
.byte $38,$27,$28 ; 97FD 8'(
|
|
|
|
; The last four glyph codes of dialFaceBlock's bottom row ($04 $2E $2F $38): the row is split here
|
|
; only because $9800 is also the start of the boot loader's title-picture colour RAM.
|
|
D_9800:
|
|
.byte $04 ; 9800 end of the 7x7 dial picture
|
|
.byte $2E,$2F,$38 ; 9801 ./8
|
|
|
|
; buttonBoxBlock - a 2x2 character block (header 2,2 then glyphs $45,$46,$47,$48) that draws a 16x16
|
|
; pixel hollow box. It is the game's push-button: the three console tab boxes STATS / REPAIR / MISC
|
|
; ($16A5/$16A7 in the main program), the FIRE button of the comcen screen ($7B17), and the LAUNCH and
|
|
; STRIKE buttons of the DRONE screen ($709F, $70D2). The caller paints the four colour cells
|
|
; afterwards with fillScreenColourRect.
|
|
buttonBoxBlock:
|
|
.byte $02,$02,$45,$46,$47,$48 ; 9804 ..EFGH 2x2: box corners $45-$48
|
|
|
|
; solidPlugBlock - a 2x2 character block of four solid cells (glyph $05). The only user is the
|
|
; closing-iris animation on the comcen screen ($726A/$726C): once the shrinking frame is down to two
|
|
; cells this block plugs the 2x2 hole left in the middle.
|
|
solidPlugBlock:
|
|
.byte $02,$02,$05,$05,$05,$05 ; 980A ...... 2x2: four solid cells
|
|
|
|
; tallDigitGlyphPairTable - ten 2-byte entries, indexed as $9810 + symbol*2 by drawTallGlyph ($2BBA
|
|
; reads the first byte, $2BC5 the second). The first code is drawn at scratch18/scratch19 and the
|
|
; second one row lower, so each entry makes one 8x16 pixel digit out of two gameFont half-glyphs from
|
|
; the $49-$56 group. Rendering all ten confirms they are the digits 0-9 in a calculator typeface, in
|
|
; order; one pair per line below:
|
|
; 0 = $49,$4A 1 = $4B,$4C 2 = $4D,$4E 3 = $4D,$4F 4 = $50,$51
|
|
; 5 = $52,$4F 6 = $52,$53 7 = $54,$55 8 = $56,$53 9 = $56,$51
|
|
; Used for the big numbers on the overlay screens: the drone fuel gauge ($6FD9, $6FE1, $6FE9), the
|
|
; drone count ($7055) and the comcen screen's two-digit readout ($7AD8, $7AE0).
|
|
tallDigitGlyphPairTable:
|
|
.byte $49,$4A ; 9810 IJ digit 0
|
|
.byte $4B,$4C ; 9812 KL
|
|
.byte $4D,$4E ; 9814 MN
|
|
.byte $4D,$4F ; 9816 MO
|
|
.byte $50,$51 ; 9818 PQ
|
|
.byte $52,$4F ; 981A RO
|
|
.byte $52,$53 ; 981C RS
|
|
.byte $54,$55 ; 981E TU
|
|
.byte $56,$53 ; 9820 VS
|
|
.byte $56,$51 ; 9822 VQ
|
|
|
|
; windowFrameTileSets - ten 9-byte tile sets, one set per line below. Each set is nine gameFont codes
|
|
; in row-major order: top-left, top, top-right, left, centre, right, bottom-left, bottom,
|
|
; bottom-right. drawFrameBox ($2CA1) draws the four corners and then runs the edges between them, so
|
|
; entry 4, the centre, is never read. A set is chosen through windowFramePtrTable ($2C49) in the main
|
|
; program: drawWindowFrame ($2C7F) doubles the window number 0-26 and fetches the address from there,
|
|
; so the only references to this table are those 27 pointers, which is why XREF.txt shows no reader.
|
|
; All ten sets are in use. Sets 0 and 1 hold identical shapes ($06-$0D and $39-$40 are the same eight
|
|
; glyphs twice); only their fontColorTable entries differ, which turns one box into a raised panel and
|
|
; the other into a sunken one. Set 0 - thin box with the dark grey highlight on the top and left, so
|
|
; it reads as sunken. Windows $04, $08, $0B and $12.
|
|
windowFrameTileSets:
|
|
.byte $06,$0A,$07,$0C ; 9824 .... set 0: TL,T,TR,L,C,R,BL,B,BR
|
|
|
|
; Set 0 continued - the row is split here only because the title-picture colour RAM that shares these
|
|
; addresses is annotated one 40-byte screen row at a time (see the note at the end of this file). The
|
|
; same split happens inside sets 4, 6 and 9 and inside both console fonts.
|
|
.byte $00,$0D,$08,$0B,$09 ; 9828 ..... set 0, tiles 4-8
|
|
|
|
; Set 1 - the same box as set 0 with the light grey highlight on the top and left: a raised panel.
|
|
; Windows $07, $09, $0A, $11, $13 and $1A.
|
|
windowFrameTileSetRaised:
|
|
.byte $39,$3D,$3A,$3F,$00,$40,$3B,$3E,$3C; 982D 9=:?.@;>< set 1: thin box, raised
|
|
|
|
; Set 2 - single-pixel lines with diagonal corners, i.e. an octagonal box. Windows $05, $0D, $0E,
|
|
; $0F and $18 (the drone screen's compass and fuel panels are two of them).
|
|
windowFrameTileSetOctagon:
|
|
.byte $0E,$0B,$10,$12,$00,$13,$11,$0A,$0F; 9836 ......... set 2: octagon
|
|
|
|
; Set 3 - a solid panel: solid cells all round with the two triangle glyphs $42/$43 and the diagonals
|
|
; $41/$44 chamfering the corners. Windows $06, $10 and $19.
|
|
windowFrameTileSetPanel:
|
|
.byte $41,$04,$42,$04,$03,$02,$43,$02,$44; 983F A.B...C.D set 3: solid panel, chamfered corners
|
|
|
|
; Set 4 - nine copies of the solid glyph $03. Windows $0C, $16 and $17, and the shrinking rings of
|
|
; the comcen iris animation, which passes this address straight to drawFrameBox ($7246).
|
|
windowFrameTileSetSolid:
|
|
.byte $03,$03,$03,$03,$03,$03,$03,$03; 9848 ........ set 4: all solid
|
|
|
|
; Set 4, last tile (split by the title-picture row boundary at $9850).
|
|
.byte $03 ; 9850 . set 4, tile 8
|
|
|
|
; Set 5 - nine blank cells, i.e. drawing this frame erases one. Windows $14 and $15.
|
|
windowFrameTileSetBlank:
|
|
.byte $00,$00,$00,$00,$00,$00,$00,$00,$00; 9851 ......... set 5: all blank (erase)
|
|
|
|
; Set 6 - built from the flat multicolour fills $5A-$5E; it borders window $00, the overview panel,
|
|
; which is the only part of the screen drawn in multicolour mode. The set runs $985A-$9862 and is
|
|
; printed in two pieces because the asciiToGlyphTable alias label falls inside it.
|
|
windowFrameTileSetDither:
|
|
.byte $5A,$5D,$5B,$5D ; 985A Z][] set 6: multicolour dither, tiles 0-3
|
|
|
|
; $985E is asciiToGlyphTable ($987E) minus $20, the base the chat-line editor uses so it can index
|
|
; the table with a raw character code instead of code-$20: $C80A does LDA $985E,X and refuses the key
|
|
; when the entry is $3B, the 'no glyph' value. The five bytes stored here are really the last five
|
|
; tiles of frame set 6.
|
|
asciiToGlyphTableBiased:
|
|
.byte $03,$5E,$5B,$5E,$5C ; 985E .^[^\ set 6, tiles 4-8; also the biased base of asciiToGlyphTable
|
|
|
|
; Set 7 - heavy raised bevel with a dithered outer edge ($5F-$66). Window $01, the battlefield view.
|
|
windowFrameTileSetBevelA:
|
|
.byte $5F,$60,$61,$62,$03,$63,$64,$65,$66; 9863 _`ab.cdef set 7: bevel, battlefield view
|
|
|
|
; Set 8 - the same bevel with different corner shading ($67-$69 then $62-$66 again). Window $02, the
|
|
; console panel.
|
|
windowFrameTileSetBevelB:
|
|
.byte $67,$68,$69,$62,$03,$63,$64,$65,$66; 986C ghib.cdef set 8: bevel, console panel
|
|
|
|
; Set 9 - the heavy solid bevel ($6A-$71). Window $03, the message frame used during a battle.
|
|
windowFrameTileSetBevelC:
|
|
.byte $6A,$6B,$6C ; 9875 jkl set 9: solid bevel, message frame
|
|
|
|
; Set 9 continued (split by the title-picture row boundary at $9878).
|
|
.byte $6D,$03,$6E,$6F,$70,$71 ; 9878 m.nopq set 9, tiles 3-8
|
|
|
|
; asciiToGlyphTable - 64 entries mapping character codes $20-$5F to a glyph number of the console font
|
|
; at $98BE/$9A96 (0-58); 16 entries per line below, so the line address gives the character range.
|
|
; printChar reads it as asciiToGlyphTable,Y with Y = character - $20 ($C02A), in the text engine and
|
|
; in the boot loader's copy of the same routine; the chat-line editor reads the same bytes through the
|
|
; biased base $985E. Layout: space -> 0, '0'-'9' -> $01-$0A, 'A'-'Z' -> $0B-$24, the punctuation the
|
|
; font has
|
|
; -> $25-$3A ('.' $25, '!' $26, ',' $27, '('/'[' $28, ')'/']' $29, '-' $2A, '%' $2B, apostrophe
|
|
; $2C, '?' $2D, ':' $2E, '*' $2F, '+' $30, '/' $31, '=' $32, '"' $33, '#' $34, '$' $35, '@' $36,
|
|
; ';' $37, '&' $38, '<' $39, '>' $3A). Backslash, caret and underscore map to $3B, which is one past
|
|
; the last glyph and means 'this character cannot be drawn': only the line editor tests for it,
|
|
; printChar would happily plot the eight bytes that follow the font.
|
|
asciiToGlyphTable:
|
|
.byte $00,$26,$33,$34,$35,$2B,$38,$2C,$28,$29,$2F,$30,$27,$2A,$25,$31,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$2E,$37,$39,$32,$3A,$2D,$36,$0B; 987E .&345+8,()/0'*%1...........792:-6. characters $20-$41: space, punctuation, digits, ':' to '@' and 'A'
|
|
|
|
; The rest of asciiToGlyphTable; the split is a title-picture row boundary, not a structure boundary.
|
|
.byte $0C,$0D,$0E,$0F,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$1A,$1B,$1C,$1D,$1E,$1F,$20,$21,$22,$23,$24,$28,$3B,$29,$3B,$3B; 98A0 .................... !"#$(;);; characters $42-$5F: 'B' to 'Z', then '[', '\', ']', '^', '_'
|
|
|
|
; consoleFontMulticolour - the text font of the $C000 text engine: 59 glyphs of 8x8 pixels, 8 bytes
|
|
; each, addressed as $98BE + glyph*8 by plotGlyphCell ($C201/$C207). It is the multicolour half of a
|
|
; pair: every pixel is stored as the bit pair %11 (byte values $00,$03,$0C,$0F,$30,$33,
|
|
; $3C,$3F), so it is drawn at half horizontal resolution but takes its colour from colour RAM.
|
|
; The identical shapes in single-bit form are $1D8 bytes further on at $9A96, and plotGlyphCell picks
|
|
; between them on bit 4 of the $D016 shadow $9001 ($C20B): multicolour here, hires there. Glyph order
|
|
; (the same for both fonts, and what asciiToGlyphTable maps into):
|
|
; $00 blank, $01-$0A digits 0-9, $0B-$24 letters A-Z, $25-$3A punctuation and arrows.
|
|
; Both fonts are stored as positives on disk and inverted in place at boot: invertTextFonts
|
|
; ($031B-$0338) EORs every byte of $98BE-$9C6D with $FF, so the bit art below is the shape as it
|
|
; ships, and at run time the glyph is drawn as a hole in a solid cell. Glyph $00, the blank cell,
|
|
; below.
|
|
consoleFontMulticolour:
|
|
.byte $00 ; 98BE ........
|
|
.byte $00 ; 98BF ........
|
|
.byte $00 ; 98C0 ........
|
|
.byte $00 ; 98C1 ........
|
|
.byte $00 ; 98C2 ........
|
|
.byte $00 ; 98C3 ........
|
|
.byte $00 ; 98C4 ........
|
|
.byte $00 ; 98C5 ........
|
|
|
|
|
|
; Glyphs $01-$0A of the multicolour set: the digits 0 to 9, in order.
|
|
consoleFontMulticolourDigits:
|
|
.byte $00 ; 98C6 ........
|
|
.byte $0C ; 98C7 ....##..
|
|
|
|
|
|
; Continuation of consoleFontMulticolour. The break, and every 40 bytes from here on, is a row
|
|
; boundary of the title picture that shares these addresses, not a font boundary.
|
|
.byte $33 ; 98C8 ..##..##
|
|
.byte $33 ; 98C9 ..##..##
|
|
.byte $33 ; 98CA ..##..##
|
|
.byte $33 ; 98CB ..##..##
|
|
.byte $0C ; 98CC ....##..
|
|
.byte $00 ; 98CD ........
|
|
|
|
.byte $00 ; 98CE ........
|
|
.byte $0C ; 98CF ....##..
|
|
.byte $0C ; 98D0 ....##..
|
|
.byte $0C ; 98D1 ....##..
|
|
.byte $0C ; 98D2 ....##..
|
|
.byte $0C ; 98D3 ....##..
|
|
.byte $0C ; 98D4 ....##..
|
|
.byte $00 ; 98D5 ........
|
|
|
|
.byte $00 ; 98D6 ........
|
|
.byte $3F ; 98D7 ..######
|
|
.byte $03 ; 98D8 ......##
|
|
.byte $0F ; 98D9 ....####
|
|
.byte $30 ; 98DA ..##....
|
|
.byte $30 ; 98DB ..##....
|
|
.byte $3F ; 98DC ..######
|
|
.byte $00 ; 98DD ........
|
|
|
|
.byte $00 ; 98DE ........
|
|
.byte $3F ; 98DF ..######
|
|
.byte $03 ; 98E0 ......##
|
|
.byte $0C ; 98E1 ....##..
|
|
.byte $03 ; 98E2 ......##
|
|
.byte $03 ; 98E3 ......##
|
|
.byte $3F ; 98E4 ..######
|
|
.byte $00 ; 98E5 ........
|
|
|
|
.byte $00 ; 98E6 ........
|
|
.byte $03 ; 98E7 ......##
|
|
.byte $33 ; 98E8 ..##..##
|
|
.byte $33 ; 98E9 ..##..##
|
|
.byte $3F ; 98EA ..######
|
|
.byte $03 ; 98EB ......##
|
|
.byte $03 ; 98EC ......##
|
|
.byte $00 ; 98ED ........
|
|
|
|
.byte $00 ; 98EE ........
|
|
.byte $3F ; 98EF ..######
|
|
|
|
.byte $30 ; 98F0 ..##....
|
|
.byte $3F ; 98F1 ..######
|
|
.byte $03 ; 98F2 ......##
|
|
.byte $03 ; 98F3 ......##
|
|
.byte $3F ; 98F4 ..######
|
|
.byte $00 ; 98F5 ........
|
|
|
|
.byte $00 ; 98F6 ........
|
|
.byte $30 ; 98F7 ..##....
|
|
.byte $30 ; 98F8 ..##....
|
|
.byte $3F ; 98F9 ..######
|
|
.byte $33 ; 98FA ..##..##
|
|
.byte $33 ; 98FB ..##..##
|
|
.byte $3F ; 98FC ..######
|
|
.byte $00 ; 98FD ........
|
|
|
|
.byte $00 ; 98FE ........
|
|
.byte $3F ; 98FF ..######
|
|
.byte $03 ; 9900 ......##
|
|
.byte $03 ; 9901 ......##
|
|
.byte $0C ; 9902 ....##..
|
|
.byte $0C ; 9903 ....##..
|
|
.byte $0C ; 9904 ....##..
|
|
.byte $00 ; 9905 ........
|
|
|
|
.byte $00 ; 9906 ........
|
|
.byte $3F ; 9907 ..######
|
|
.byte $33 ; 9908 ..##..##
|
|
.byte $0C ; 9909 ....##..
|
|
.byte $33 ; 990A ..##..##
|
|
.byte $33 ; 990B ..##..##
|
|
.byte $3F ; 990C ..######
|
|
.byte $00 ; 990D ........
|
|
|
|
.byte $00 ; 990E ........
|
|
.byte $3F ; 990F ..######
|
|
.byte $33 ; 9910 ..##..##
|
|
.byte $33 ; 9911 ..##..##
|
|
.byte $3F ; 9912 ..######
|
|
.byte $03 ; 9913 ......##
|
|
.byte $03 ; 9914 ......##
|
|
.byte $00 ; 9915 ........
|
|
|
|
|
|
; Glyphs $0B-$24 of the multicolour set: the letters A to Z, in order.
|
|
consoleFontMulticolourLetters:
|
|
.byte $00 ; 9916 ........
|
|
.byte $0C ; 9917 ....##..
|
|
|
|
.byte $3F ; 9918 ..######
|
|
.byte $33 ; 9919 ..##..##
|
|
.byte $33 ; 991A ..##..##
|
|
.byte $3F ; 991B ..######
|
|
.byte $33 ; 991C ..##..##
|
|
.byte $00 ; 991D ........
|
|
|
|
.byte $00 ; 991E ........
|
|
.byte $3C ; 991F ..####..
|
|
.byte $33 ; 9920 ..##..##
|
|
.byte $3C ; 9921 ..####..
|
|
.byte $33 ; 9922 ..##..##
|
|
.byte $33 ; 9923 ..##..##
|
|
.byte $3C ; 9924 ..####..
|
|
.byte $00 ; 9925 ........
|
|
|
|
.byte $00 ; 9926 ........
|
|
.byte $0F ; 9927 ....####
|
|
.byte $30 ; 9928 ..##....
|
|
.byte $30 ; 9929 ..##....
|
|
.byte $30 ; 992A ..##....
|
|
.byte $30 ; 992B ..##....
|
|
.byte $0F ; 992C ....####
|
|
.byte $00 ; 992D ........
|
|
|
|
.byte $00 ; 992E ........
|
|
.byte $3C ; 992F ..####..
|
|
.byte $33 ; 9930 ..##..##
|
|
.byte $33 ; 9931 ..##..##
|
|
.byte $33 ; 9932 ..##..##
|
|
.byte $33 ; 9933 ..##..##
|
|
.byte $3C ; 9934 ..####..
|
|
.byte $00 ; 9935 ........
|
|
|
|
.byte $00 ; 9936 ........
|
|
.byte $3F ; 9937 ..######
|
|
.byte $30 ; 9938 ..##....
|
|
.byte $3C ; 9939 ..####..
|
|
.byte $30 ; 993A ..##....
|
|
.byte $30 ; 993B ..##....
|
|
.byte $3F ; 993C ..######
|
|
.byte $00 ; 993D ........
|
|
|
|
.byte $00 ; 993E ........
|
|
.byte $3F ; 993F ..######
|
|
|
|
.byte $30 ; 9940 ..##....
|
|
.byte $3C ; 9941 ..####..
|
|
.byte $30 ; 9942 ..##....
|
|
.byte $30 ; 9943 ..##....
|
|
.byte $30 ; 9944 ..##....
|
|
.byte $00 ; 9945 ........
|
|
|
|
.byte $00 ; 9946 ........
|
|
.byte $0F ; 9947 ....####
|
|
.byte $30 ; 9948 ..##....
|
|
.byte $30 ; 9949 ..##....
|
|
.byte $33 ; 994A ..##..##
|
|
.byte $33 ; 994B ..##..##
|
|
.byte $0F ; 994C ....####
|
|
.byte $00 ; 994D ........
|
|
|
|
.byte $00 ; 994E ........
|
|
.byte $33 ; 994F ..##..##
|
|
.byte $33 ; 9950 ..##..##
|
|
.byte $3F ; 9951 ..######
|
|
.byte $33 ; 9952 ..##..##
|
|
.byte $33 ; 9953 ..##..##
|
|
.byte $33 ; 9954 ..##..##
|
|
.byte $00 ; 9955 ........
|
|
|
|
.byte $00 ; 9956 ........
|
|
.byte $0C ; 9957 ....##..
|
|
.byte $0C ; 9958 ....##..
|
|
.byte $0C ; 9959 ....##..
|
|
.byte $0C ; 995A ....##..
|
|
.byte $0C ; 995B ....##..
|
|
.byte $0C ; 995C ....##..
|
|
.byte $00 ; 995D ........
|
|
|
|
.byte $00 ; 995E ........
|
|
.byte $03 ; 995F ......##
|
|
.byte $03 ; 9960 ......##
|
|
.byte $03 ; 9961 ......##
|
|
.byte $33 ; 9962 ..##..##
|
|
.byte $33 ; 9963 ..##..##
|
|
.byte $0C ; 9964 ....##..
|
|
.byte $00 ; 9965 ........
|
|
|
|
.byte $00 ; 9966 ........
|
|
.byte $33 ; 9967 ..##..##
|
|
|
|
.byte $33 ; 9968 ..##..##
|
|
.byte $3C ; 9969 ..####..
|
|
.byte $33 ; 996A ..##..##
|
|
.byte $33 ; 996B ..##..##
|
|
.byte $33 ; 996C ..##..##
|
|
.byte $00 ; 996D ........
|
|
|
|
.byte $00 ; 996E ........
|
|
.byte $30 ; 996F ..##....
|
|
.byte $30 ; 9970 ..##....
|
|
.byte $30 ; 9971 ..##....
|
|
.byte $30 ; 9972 ..##....
|
|
.byte $30 ; 9973 ..##....
|
|
.byte $3F ; 9974 ..######
|
|
.byte $00 ; 9975 ........
|
|
|
|
.byte $00 ; 9976 ........
|
|
.byte $33 ; 9977 ..##..##
|
|
.byte $3F ; 9978 ..######
|
|
.byte $3F ; 9979 ..######
|
|
.byte $33 ; 997A ..##..##
|
|
.byte $33 ; 997B ..##..##
|
|
.byte $33 ; 997C ..##..##
|
|
.byte $00 ; 997D ........
|
|
|
|
.byte $00 ; 997E ........
|
|
.byte $33 ; 997F ..##..##
|
|
.byte $3F ; 9980 ..######
|
|
.byte $3F ; 9981 ..######
|
|
.byte $3F ; 9982 ..######
|
|
.byte $3F ; 9983 ..######
|
|
.byte $33 ; 9984 ..##..##
|
|
.byte $00 ; 9985 ........
|
|
|
|
.byte $00 ; 9986 ........
|
|
.byte $0C ; 9987 ....##..
|
|
.byte $33 ; 9988 ..##..##
|
|
.byte $33 ; 9989 ..##..##
|
|
.byte $33 ; 998A ..##..##
|
|
.byte $33 ; 998B ..##..##
|
|
.byte $0C ; 998C ....##..
|
|
.byte $00 ; 998D ........
|
|
|
|
.byte $00 ; 998E ........
|
|
.byte $3C ; 998F ..####..
|
|
|
|
.byte $33 ; 9990 ..##..##
|
|
.byte $33 ; 9991 ..##..##
|
|
.byte $3C ; 9992 ..####..
|
|
.byte $30 ; 9993 ..##....
|
|
.byte $30 ; 9994 ..##....
|
|
.byte $00 ; 9995 ........
|
|
|
|
.byte $00 ; 9996 ........
|
|
.byte $0C ; 9997 ....##..
|
|
.byte $33 ; 9998 ..##..##
|
|
.byte $33 ; 9999 ..##..##
|
|
.byte $33 ; 999A ..##..##
|
|
.byte $3C ; 999B ..####..
|
|
.byte $0F ; 999C ....####
|
|
.byte $00 ; 999D ........
|
|
|
|
.byte $00 ; 999E ........
|
|
.byte $3C ; 999F ..####..
|
|
.byte $33 ; 99A0 ..##..##
|
|
.byte $33 ; 99A1 ..##..##
|
|
.byte $3C ; 99A2 ..####..
|
|
.byte $33 ; 99A3 ..##..##
|
|
.byte $33 ; 99A4 ..##..##
|
|
.byte $00 ; 99A5 ........
|
|
|
|
.byte $00 ; 99A6 ........
|
|
.byte $0F ; 99A7 ....####
|
|
.byte $30 ; 99A8 ..##....
|
|
.byte $0C ; 99A9 ....##..
|
|
.byte $03 ; 99AA ......##
|
|
.byte $03 ; 99AB ......##
|
|
.byte $3C ; 99AC ..####..
|
|
.byte $00 ; 99AD ........
|
|
|
|
.byte $00 ; 99AE ........
|
|
.byte $3F ; 99AF ..######
|
|
.byte $0C ; 99B0 ....##..
|
|
.byte $0C ; 99B1 ....##..
|
|
.byte $0C ; 99B2 ....##..
|
|
.byte $0C ; 99B3 ....##..
|
|
.byte $0C ; 99B4 ....##..
|
|
.byte $00 ; 99B5 ........
|
|
|
|
.byte $00 ; 99B6 ........
|
|
.byte $33 ; 99B7 ..##..##
|
|
|
|
.byte $33 ; 99B8 ..##..##
|
|
.byte $33 ; 99B9 ..##..##
|
|
.byte $33 ; 99BA ..##..##
|
|
.byte $33 ; 99BB ..##..##
|
|
.byte $3F ; 99BC ..######
|
|
.byte $00 ; 99BD ........
|
|
|
|
.byte $00 ; 99BE ........
|
|
.byte $33 ; 99BF ..##..##
|
|
.byte $33 ; 99C0 ..##..##
|
|
.byte $33 ; 99C1 ..##..##
|
|
.byte $33 ; 99C2 ..##..##
|
|
.byte $3F ; 99C3 ..######
|
|
.byte $0C ; 99C4 ....##..
|
|
.byte $00 ; 99C5 ........
|
|
|
|
.byte $00 ; 99C6 ........
|
|
.byte $33 ; 99C7 ..##..##
|
|
.byte $33 ; 99C8 ..##..##
|
|
.byte $33 ; 99C9 ..##..##
|
|
.byte $3F ; 99CA ..######
|
|
.byte $3F ; 99CB ..######
|
|
.byte $33 ; 99CC ..##..##
|
|
.byte $00 ; 99CD ........
|
|
|
|
.byte $00 ; 99CE ........
|
|
.byte $33 ; 99CF ..##..##
|
|
.byte $33 ; 99D0 ..##..##
|
|
.byte $0C ; 99D1 ....##..
|
|
.byte $0C ; 99D2 ....##..
|
|
.byte $33 ; 99D3 ..##..##
|
|
.byte $33 ; 99D4 ..##..##
|
|
.byte $00 ; 99D5 ........
|
|
|
|
.byte $00 ; 99D6 ........
|
|
.byte $33 ; 99D7 ..##..##
|
|
.byte $33 ; 99D8 ..##..##
|
|
.byte $33 ; 99D9 ..##..##
|
|
.byte $0C ; 99DA ....##..
|
|
.byte $0C ; 99DB ....##..
|
|
.byte $0C ; 99DC ....##..
|
|
.byte $00 ; 99DD ........
|
|
|
|
.byte $00 ; 99DE ........
|
|
.byte $3F ; 99DF ..######
|
|
|
|
.byte $03 ; 99E0 ......##
|
|
.byte $0C ; 99E1 ....##..
|
|
.byte $0C ; 99E2 ....##..
|
|
.byte $30 ; 99E3 ..##....
|
|
.byte $3F ; 99E4 ..######
|
|
.byte $00 ; 99E5 ........
|
|
|
|
|
|
; Glyphs $25-$3A of the multicolour set: . ! , ( ) - % ' ? : * + / = " # $ @ ; & < >, in the order
|
|
; asciiToGlyphTable maps them. The last few are the arrow and cursor shapes the message system uses.
|
|
consoleFontMulticolourSymbols:
|
|
.byte $00 ; 99E6 ........
|
|
.byte $00 ; 99E7 ........
|
|
.byte $00 ; 99E8 ........
|
|
.byte $00 ; 99E9 ........
|
|
.byte $00 ; 99EA ........
|
|
.byte $0C ; 99EB ....##..
|
|
.byte $0C ; 99EC ....##..
|
|
.byte $00 ; 99ED ........
|
|
|
|
.byte $00 ; 99EE ........
|
|
.byte $0C ; 99EF ....##..
|
|
.byte $0C ; 99F0 ....##..
|
|
.byte $0C ; 99F1 ....##..
|
|
.byte $0C ; 99F2 ....##..
|
|
.byte $00 ; 99F3 ........
|
|
.byte $0C ; 99F4 ....##..
|
|
.byte $00 ; 99F5 ........
|
|
|
|
.byte $00 ; 99F6 ........
|
|
.byte $00 ; 99F7 ........
|
|
.byte $00 ; 99F8 ........
|
|
.byte $00 ; 99F9 ........
|
|
.byte $00 ; 99FA ........
|
|
.byte $0C ; 99FB ....##..
|
|
.byte $0C ; 99FC ....##..
|
|
.byte $30 ; 99FD ..##....
|
|
|
|
.byte $00 ; 99FE ........
|
|
.byte $0C ; 99FF ....##..
|
|
.byte $30 ; 9A00 ..##....
|
|
.byte $30 ; 9A01 ..##....
|
|
.byte $30 ; 9A02 ..##....
|
|
.byte $30 ; 9A03 ..##....
|
|
.byte $0C ; 9A04 ....##..
|
|
.byte $00 ; 9A05 ........
|
|
|
|
.byte $00 ; 9A06 ........
|
|
.byte $30 ; 9A07 ..##....
|
|
|
|
.byte $0C ; 9A08 ....##..
|
|
.byte $0C ; 9A09 ....##..
|
|
.byte $0C ; 9A0A ....##..
|
|
.byte $0C ; 9A0B ....##..
|
|
.byte $30 ; 9A0C ..##....
|
|
.byte $00 ; 9A0D ........
|
|
|
|
.byte $00 ; 9A0E ........
|
|
.byte $00 ; 9A0F ........
|
|
.byte $00 ; 9A10 ........
|
|
.byte $3C ; 9A11 ..####..
|
|
.byte $00 ; 9A12 ........
|
|
.byte $00 ; 9A13 ........
|
|
.byte $00 ; 9A14 ........
|
|
.byte $00 ; 9A15 ........
|
|
|
|
.byte $00 ; 9A16 ........
|
|
.byte $33 ; 9A17 ..##..##
|
|
.byte $03 ; 9A18 ......##
|
|
.byte $0C ; 9A19 ....##..
|
|
.byte $0C ; 9A1A ....##..
|
|
.byte $30 ; 9A1B ..##....
|
|
.byte $33 ; 9A1C ..##..##
|
|
.byte $00 ; 9A1D ........
|
|
|
|
.byte $0C ; 9A1E ....##..
|
|
.byte $0C ; 9A1F ....##..
|
|
.byte $0C ; 9A20 ....##..
|
|
.byte $00 ; 9A21 ........
|
|
.byte $00 ; 9A22 ........
|
|
.byte $00 ; 9A23 ........
|
|
.byte $00 ; 9A24 ........
|
|
.byte $00 ; 9A25 ........
|
|
|
|
.byte $00 ; 9A26 ........
|
|
.byte $0C ; 9A27 ....##..
|
|
.byte $33 ; 9A28 ..##..##
|
|
.byte $03 ; 9A29 ......##
|
|
.byte $0C ; 9A2A ....##..
|
|
.byte $00 ; 9A2B ........
|
|
.byte $0C ; 9A2C ....##..
|
|
.byte $00 ; 9A2D ........
|
|
|
|
.byte $00 ; 9A2E ........
|
|
.byte $0C ; 9A2F ....##..
|
|
|
|
.byte $0C ; 9A30 ....##..
|
|
.byte $00 ; 9A31 ........
|
|
.byte $00 ; 9A32 ........
|
|
.byte $0C ; 9A33 ....##..
|
|
.byte $0C ; 9A34 ....##..
|
|
.byte $00 ; 9A35 ........
|
|
|
|
.byte $00 ; 9A36 ........
|
|
.byte $33 ; 9A37 ..##..##
|
|
.byte $0C ; 9A38 ....##..
|
|
.byte $3F ; 9A39 ..######
|
|
.byte $0C ; 9A3A ....##..
|
|
.byte $33 ; 9A3B ..##..##
|
|
.byte $00 ; 9A3C ........
|
|
.byte $00 ; 9A3D ........
|
|
|
|
.byte $00 ; 9A3E ........
|
|
.byte $00 ; 9A3F ........
|
|
.byte $0C ; 9A40 ....##..
|
|
.byte $0C ; 9A41 ....##..
|
|
.byte $3F ; 9A42 ..######
|
|
.byte $0C ; 9A43 ....##..
|
|
.byte $0C ; 9A44 ....##..
|
|
.byte $00 ; 9A45 ........
|
|
|
|
.byte $00 ; 9A46 ........
|
|
.byte $03 ; 9A47 ......##
|
|
.byte $03 ; 9A48 ......##
|
|
.byte $0C ; 9A49 ....##..
|
|
.byte $0C ; 9A4A ....##..
|
|
.byte $30 ; 9A4B ..##....
|
|
.byte $30 ; 9A4C ..##....
|
|
.byte $00 ; 9A4D ........
|
|
|
|
.byte $00 ; 9A4E ........
|
|
.byte $00 ; 9A4F ........
|
|
.byte $00 ; 9A50 ........
|
|
.byte $3C ; 9A51 ..####..
|
|
.byte $00 ; 9A52 ........
|
|
.byte $3C ; 9A53 ..####..
|
|
.byte $00 ; 9A54 ........
|
|
.byte $00 ; 9A55 ........
|
|
|
|
.byte $00 ; 9A56 ........
|
|
.byte $33 ; 9A57 ..##..##
|
|
|
|
.byte $33 ; 9A58 ..##..##
|
|
.byte $33 ; 9A59 ..##..##
|
|
.byte $00 ; 9A5A ........
|
|
.byte $00 ; 9A5B ........
|
|
.byte $00 ; 9A5C ........
|
|
.byte $00 ; 9A5D ........
|
|
|
|
.byte $00 ; 9A5E ........
|
|
.byte $00 ; 9A5F ........
|
|
.byte $0C ; 9A60 ....##..
|
|
.byte $3F ; 9A61 ..######
|
|
.byte $0C ; 9A62 ....##..
|
|
.byte $3F ; 9A63 ..######
|
|
.byte $0C ; 9A64 ....##..
|
|
.byte $00 ; 9A65 ........
|
|
|
|
.byte $0C ; 9A66 ....##..
|
|
.byte $0F ; 9A67 ....####
|
|
.byte $30 ; 9A68 ..##....
|
|
.byte $0C ; 9A69 ....##..
|
|
.byte $03 ; 9A6A ......##
|
|
.byte $3C ; 9A6B ..####..
|
|
.byte $0C ; 9A6C ....##..
|
|
.byte $00 ; 9A6D ........
|
|
|
|
.byte $00 ; 9A6E ........
|
|
.byte $0C ; 9A6F ....##..
|
|
.byte $33 ; 9A70 ..##..##
|
|
.byte $33 ; 9A71 ..##..##
|
|
.byte $3F ; 9A72 ..######
|
|
.byte $3F ; 9A73 ..######
|
|
.byte $30 ; 9A74 ..##....
|
|
.byte $0C ; 9A75 ....##..
|
|
|
|
.byte $00 ; 9A76 ........
|
|
.byte $0C ; 9A77 ....##..
|
|
.byte $0C ; 9A78 ....##..
|
|
.byte $00 ; 9A79 ........
|
|
.byte $00 ; 9A7A ........
|
|
.byte $0C ; 9A7B ....##..
|
|
.byte $0C ; 9A7C ....##..
|
|
.byte $30 ; 9A7D ..##....
|
|
|
|
.byte $00 ; 9A7E ........
|
|
.byte $0C ; 9A7F ....##..
|
|
|
|
|
|
; Last fragment of consoleFontMulticolour; the set ends at $9A95.
|
|
.byte $0C ; 9A80 ....##..
|
|
.byte $3C ; 9A81 ..####..
|
|
.byte $3F ; 9A82 ..######
|
|
.byte $3C ; 9A83 ..####..
|
|
.byte $0C ; 9A84 ....##..
|
|
.byte $00 ; 9A85 ........
|
|
|
|
.byte $00 ; 9A86 ........
|
|
.byte $03 ; 9A87 ......##
|
|
.byte $0F ; 9A88 ....####
|
|
.byte $3C ; 9A89 ..####..
|
|
.byte $30 ; 9A8A ..##....
|
|
.byte $3C ; 9A8B ..####..
|
|
.byte $0F ; 9A8C ....####
|
|
.byte $03 ; 9A8D ......##
|
|
|
|
.byte $00 ; 9A8E ........
|
|
.byte $30 ; 9A8F ..##....
|
|
.byte $3C ; 9A90 ..####..
|
|
.byte $0F ; 9A91 ....####
|
|
.byte $03 ; 9A92 ......##
|
|
.byte $0F ; 9A93 ....####
|
|
.byte $3C ; 9A94 ..####..
|
|
.byte $30 ; 9A95 ..##....
|
|
|
|
|
|
; consoleFontHires - the same 59 glyphs as $98BE in single-bit (hires) form, exactly $01D8 bytes
|
|
; later; plotGlyphCell adds that offset at $C215/$C21B when the display is not in multicolour mode.
|
|
; Same glyph order, same inversion at boot ($98BE-$9C6D). This is the font almost all the game's
|
|
; readable text is drawn in. Glyph $00, the blank cell, below.
|
|
consoleFontHires:
|
|
.byte $00 ; 9A96 ........
|
|
.byte $00 ; 9A97 ........
|
|
.byte $00 ; 9A98 ........
|
|
.byte $00 ; 9A99 ........
|
|
.byte $00 ; 9A9A ........
|
|
.byte $00 ; 9A9B ........
|
|
.byte $00 ; 9A9C ........
|
|
.byte $00 ; 9A9D ........
|
|
|
|
|
|
; Glyphs $01-$0A of the hires set: the digits 0 to 9.
|
|
consoleFontHiresDigits:
|
|
.byte $00 ; 9A9E ........
|
|
.byte $38 ; 9A9F ..###...
|
|
.byte $44 ; 9AA0 .#...#..
|
|
.byte $44 ; 9AA1 .#...#..
|
|
.byte $44 ; 9AA2 .#...#..
|
|
.byte $44 ; 9AA3 .#...#..
|
|
.byte $38 ; 9AA4 ..###...
|
|
.byte $00 ; 9AA5 ........
|
|
|
|
.byte $00 ; 9AA6 ........
|
|
.byte $10 ; 9AA7 ...#....
|
|
|
|
|
|
; Continuation of consoleFontHires; the breaks every 40 bytes are title-picture row boundaries.
|
|
.byte $10 ; 9AA8 ...#....
|
|
.byte $10 ; 9AA9 ...#....
|
|
.byte $10 ; 9AAA ...#....
|
|
.byte $10 ; 9AAB ...#....
|
|
.byte $10 ; 9AAC ...#....
|
|
.byte $00 ; 9AAD ........
|
|
|
|
.byte $00 ; 9AAE ........
|
|
.byte $78 ; 9AAF .####...
|
|
.byte $04 ; 9AB0 .....#..
|
|
.byte $18 ; 9AB1 ...##...
|
|
.byte $60 ; 9AB2 .##.....
|
|
.byte $40 ; 9AB3 .#......
|
|
.byte $7C ; 9AB4 .#####..
|
|
.byte $00 ; 9AB5 ........
|
|
|
|
.byte $00 ; 9AB6 ........
|
|
.byte $7C ; 9AB7 .#####..
|
|
.byte $04 ; 9AB8 .....#..
|
|
.byte $18 ; 9AB9 ...##...
|
|
.byte $04 ; 9ABA .....#..
|
|
.byte $04 ; 9ABB .....#..
|
|
.byte $7C ; 9ABC .#####..
|
|
.byte $00 ; 9ABD ........
|
|
|
|
.byte $00 ; 9ABE ........
|
|
.byte $04 ; 9ABF .....#..
|
|
.byte $44 ; 9AC0 .#...#..
|
|
.byte $44 ; 9AC1 .#...#..
|
|
.byte $7C ; 9AC2 .#####..
|
|
.byte $04 ; 9AC3 .....#..
|
|
.byte $04 ; 9AC4 .....#..
|
|
.byte $00 ; 9AC5 ........
|
|
|
|
.byte $00 ; 9AC6 ........
|
|
.byte $7C ; 9AC7 .#####..
|
|
.byte $40 ; 9AC8 .#......
|
|
.byte $78 ; 9AC9 .####...
|
|
.byte $04 ; 9ACA .....#..
|
|
.byte $04 ; 9ACB .....#..
|
|
.byte $7C ; 9ACC .#####..
|
|
.byte $00 ; 9ACD ........
|
|
|
|
.byte $00 ; 9ACE ........
|
|
.byte $40 ; 9ACF .#......
|
|
|
|
.byte $40 ; 9AD0 .#......
|
|
.byte $7C ; 9AD1 .#####..
|
|
.byte $44 ; 9AD2 .#...#..
|
|
.byte $44 ; 9AD3 .#...#..
|
|
.byte $7C ; 9AD4 .#####..
|
|
.byte $00 ; 9AD5 ........
|
|
|
|
.byte $00 ; 9AD6 ........
|
|
.byte $7C ; 9AD7 .#####..
|
|
.byte $04 ; 9AD8 .....#..
|
|
.byte $04 ; 9AD9 .....#..
|
|
.byte $08 ; 9ADA ....#...
|
|
.byte $10 ; 9ADB ...#....
|
|
.byte $10 ; 9ADC ...#....
|
|
.byte $00 ; 9ADD ........
|
|
|
|
.byte $00 ; 9ADE ........
|
|
.byte $7C ; 9ADF .#####..
|
|
.byte $44 ; 9AE0 .#...#..
|
|
.byte $38 ; 9AE1 ..###...
|
|
.byte $44 ; 9AE2 .#...#..
|
|
.byte $44 ; 9AE3 .#...#..
|
|
.byte $7C ; 9AE4 .#####..
|
|
.byte $00 ; 9AE5 ........
|
|
|
|
.byte $00 ; 9AE6 ........
|
|
.byte $7C ; 9AE7 .#####..
|
|
.byte $44 ; 9AE8 .#...#..
|
|
.byte $44 ; 9AE9 .#...#..
|
|
.byte $7C ; 9AEA .#####..
|
|
.byte $04 ; 9AEB .....#..
|
|
.byte $04 ; 9AEC .....#..
|
|
.byte $00 ; 9AED ........
|
|
|
|
|
|
; Glyphs $0B-$24 of the hires set: the letters A to Z.
|
|
consoleFontHiresLetters:
|
|
.byte $00 ; 9AEE ........
|
|
.byte $38 ; 9AEF ..###...
|
|
.byte $6C ; 9AF0 .##.##..
|
|
.byte $44 ; 9AF1 .#...#..
|
|
.byte $44 ; 9AF2 .#...#..
|
|
.byte $7C ; 9AF3 .#####..
|
|
.byte $44 ; 9AF4 .#...#..
|
|
.byte $00 ; 9AF5 ........
|
|
|
|
.byte $00 ; 9AF6 ........
|
|
.byte $78 ; 9AF7 .####...
|
|
|
|
.byte $44 ; 9AF8 .#...#..
|
|
.byte $78 ; 9AF9 .####...
|
|
.byte $44 ; 9AFA .#...#..
|
|
.byte $44 ; 9AFB .#...#..
|
|
.byte $78 ; 9AFC .####...
|
|
.byte $00 ; 9AFD ........
|
|
|
|
.byte $00 ; 9AFE ........
|
|
.byte $3C ; 9AFF ..####..
|
|
.byte $40 ; 9B00 .#......
|
|
.byte $40 ; 9B01 .#......
|
|
.byte $40 ; 9B02 .#......
|
|
.byte $40 ; 9B03 .#......
|
|
.byte $3C ; 9B04 ..####..
|
|
.byte $00 ; 9B05 ........
|
|
|
|
.byte $00 ; 9B06 ........
|
|
.byte $78 ; 9B07 .####...
|
|
.byte $44 ; 9B08 .#...#..
|
|
.byte $44 ; 9B09 .#...#..
|
|
.byte $44 ; 9B0A .#...#..
|
|
.byte $44 ; 9B0B .#...#..
|
|
.byte $78 ; 9B0C .####...
|
|
.byte $00 ; 9B0D ........
|
|
|
|
.byte $00 ; 9B0E ........
|
|
.byte $7C ; 9B0F .#####..
|
|
.byte $40 ; 9B10 .#......
|
|
.byte $78 ; 9B11 .####...
|
|
.byte $40 ; 9B12 .#......
|
|
.byte $40 ; 9B13 .#......
|
|
.byte $7C ; 9B14 .#####..
|
|
.byte $00 ; 9B15 ........
|
|
|
|
.byte $00 ; 9B16 ........
|
|
.byte $7C ; 9B17 .#####..
|
|
.byte $40 ; 9B18 .#......
|
|
.byte $78 ; 9B19 .####...
|
|
.byte $40 ; 9B1A .#......
|
|
.byte $40 ; 9B1B .#......
|
|
.byte $40 ; 9B1C .#......
|
|
.byte $00 ; 9B1D ........
|
|
|
|
.byte $00 ; 9B1E ........
|
|
.byte $3C ; 9B1F ..####..
|
|
|
|
.byte $40 ; 9B20 .#......
|
|
.byte $40 ; 9B21 .#......
|
|
.byte $44 ; 9B22 .#...#..
|
|
.byte $44 ; 9B23 .#...#..
|
|
.byte $3C ; 9B24 ..####..
|
|
.byte $00 ; 9B25 ........
|
|
|
|
.byte $00 ; 9B26 ........
|
|
.byte $44 ; 9B27 .#...#..
|
|
.byte $44 ; 9B28 .#...#..
|
|
.byte $7C ; 9B29 .#####..
|
|
.byte $44 ; 9B2A .#...#..
|
|
.byte $44 ; 9B2B .#...#..
|
|
.byte $44 ; 9B2C .#...#..
|
|
.byte $00 ; 9B2D ........
|
|
|
|
.byte $00 ; 9B2E ........
|
|
.byte $10 ; 9B2F ...#....
|
|
.byte $10 ; 9B30 ...#....
|
|
.byte $10 ; 9B31 ...#....
|
|
.byte $10 ; 9B32 ...#....
|
|
.byte $10 ; 9B33 ...#....
|
|
.byte $10 ; 9B34 ...#....
|
|
.byte $00 ; 9B35 ........
|
|
|
|
.byte $00 ; 9B36 ........
|
|
.byte $04 ; 9B37 .....#..
|
|
.byte $04 ; 9B38 .....#..
|
|
.byte $04 ; 9B39 .....#..
|
|
.byte $44 ; 9B3A .#...#..
|
|
.byte $44 ; 9B3B .#...#..
|
|
.byte $38 ; 9B3C ..###...
|
|
.byte $00 ; 9B3D ........
|
|
|
|
.byte $00 ; 9B3E ........
|
|
.byte $44 ; 9B3F .#...#..
|
|
.byte $48 ; 9B40 .#..#...
|
|
.byte $78 ; 9B41 .####...
|
|
.byte $48 ; 9B42 .#..#...
|
|
.byte $44 ; 9B43 .#...#..
|
|
.byte $44 ; 9B44 .#...#..
|
|
.byte $00 ; 9B45 ........
|
|
|
|
.byte $00 ; 9B46 ........
|
|
.byte $40 ; 9B47 .#......
|
|
|
|
.byte $40 ; 9B48 .#......
|
|
.byte $40 ; 9B49 .#......
|
|
.byte $40 ; 9B4A .#......
|
|
.byte $40 ; 9B4B .#......
|
|
.byte $7C ; 9B4C .#####..
|
|
.byte $00 ; 9B4D ........
|
|
|
|
.byte $00 ; 9B4E ........
|
|
.byte $44 ; 9B4F .#...#..
|
|
.byte $7C ; 9B50 .#####..
|
|
.byte $54 ; 9B51 .#.#.#..
|
|
.byte $44 ; 9B52 .#...#..
|
|
.byte $44 ; 9B53 .#...#..
|
|
.byte $44 ; 9B54 .#...#..
|
|
.byte $00 ; 9B55 ........
|
|
|
|
.byte $00 ; 9B56 ........
|
|
.byte $44 ; 9B57 .#...#..
|
|
.byte $64 ; 9B58 .##..#..
|
|
.byte $74 ; 9B59 .###.#..
|
|
.byte $5C ; 9B5A .#.###..
|
|
.byte $4C ; 9B5B .#..##..
|
|
.byte $44 ; 9B5C .#...#..
|
|
.byte $00 ; 9B5D ........
|
|
|
|
.byte $00 ; 9B5E ........
|
|
.byte $38 ; 9B5F ..###...
|
|
.byte $44 ; 9B60 .#...#..
|
|
.byte $44 ; 9B61 .#...#..
|
|
.byte $44 ; 9B62 .#...#..
|
|
.byte $44 ; 9B63 .#...#..
|
|
.byte $38 ; 9B64 ..###...
|
|
.byte $00 ; 9B65 ........
|
|
|
|
.byte $00 ; 9B66 ........
|
|
.byte $78 ; 9B67 .####...
|
|
.byte $44 ; 9B68 .#...#..
|
|
.byte $44 ; 9B69 .#...#..
|
|
.byte $78 ; 9B6A .####...
|
|
.byte $40 ; 9B6B .#......
|
|
.byte $40 ; 9B6C .#......
|
|
.byte $00 ; 9B6D ........
|
|
|
|
.byte $00 ; 9B6E ........
|
|
.byte $38 ; 9B6F ..###...
|
|
|
|
.byte $44 ; 9B70 .#...#..
|
|
.byte $44 ; 9B71 .#...#..
|
|
.byte $44 ; 9B72 .#...#..
|
|
.byte $48 ; 9B73 .#..#...
|
|
.byte $3C ; 9B74 ..####..
|
|
.byte $00 ; 9B75 ........
|
|
|
|
.byte $00 ; 9B76 ........
|
|
.byte $78 ; 9B77 .####...
|
|
.byte $44 ; 9B78 .#...#..
|
|
.byte $44 ; 9B79 .#...#..
|
|
.byte $78 ; 9B7A .####...
|
|
.byte $44 ; 9B7B .#...#..
|
|
.byte $44 ; 9B7C .#...#..
|
|
.byte $00 ; 9B7D ........
|
|
|
|
.byte $00 ; 9B7E ........
|
|
.byte $3C ; 9B7F ..####..
|
|
.byte $40 ; 9B80 .#......
|
|
.byte $38 ; 9B81 ..###...
|
|
.byte $04 ; 9B82 .....#..
|
|
.byte $04 ; 9B83 .....#..
|
|
.byte $78 ; 9B84 .####...
|
|
.byte $00 ; 9B85 ........
|
|
|
|
.byte $00 ; 9B86 ........
|
|
.byte $7C ; 9B87 .#####..
|
|
.byte $10 ; 9B88 ...#....
|
|
.byte $10 ; 9B89 ...#....
|
|
.byte $10 ; 9B8A ...#....
|
|
.byte $10 ; 9B8B ...#....
|
|
.byte $10 ; 9B8C ...#....
|
|
.byte $00 ; 9B8D ........
|
|
|
|
.byte $00 ; 9B8E ........
|
|
.byte $44 ; 9B8F .#...#..
|
|
.byte $44 ; 9B90 .#...#..
|
|
.byte $44 ; 9B91 .#...#..
|
|
.byte $44 ; 9B92 .#...#..
|
|
.byte $44 ; 9B93 .#...#..
|
|
.byte $7C ; 9B94 .#####..
|
|
.byte $00 ; 9B95 ........
|
|
|
|
.byte $00 ; 9B96 ........
|
|
.byte $44 ; 9B97 .#...#..
|
|
|
|
.byte $44 ; 9B98 .#...#..
|
|
.byte $44 ; 9B99 .#...#..
|
|
.byte $44 ; 9B9A .#...#..
|
|
.byte $38 ; 9B9B ..###...
|
|
.byte $10 ; 9B9C ...#....
|
|
.byte $00 ; 9B9D ........
|
|
|
|
.byte $00 ; 9B9E ........
|
|
.byte $44 ; 9B9F .#...#..
|
|
.byte $44 ; 9BA0 .#...#..
|
|
.byte $44 ; 9BA1 .#...#..
|
|
.byte $54 ; 9BA2 .#.#.#..
|
|
.byte $7C ; 9BA3 .#####..
|
|
.byte $44 ; 9BA4 .#...#..
|
|
.byte $00 ; 9BA5 ........
|
|
|
|
.byte $00 ; 9BA6 ........
|
|
.byte $44 ; 9BA7 .#...#..
|
|
.byte $6C ; 9BA8 .##.##..
|
|
.byte $10 ; 9BA9 ...#....
|
|
.byte $10 ; 9BAA ...#....
|
|
.byte $6C ; 9BAB .##.##..
|
|
.byte $44 ; 9BAC .#...#..
|
|
.byte $00 ; 9BAD ........
|
|
|
|
.byte $00 ; 9BAE ........
|
|
.byte $44 ; 9BAF .#...#..
|
|
.byte $44 ; 9BB0 .#...#..
|
|
.byte $44 ; 9BB1 .#...#..
|
|
.byte $38 ; 9BB2 ..###...
|
|
.byte $10 ; 9BB3 ...#....
|
|
.byte $10 ; 9BB4 ...#....
|
|
.byte $00 ; 9BB5 ........
|
|
|
|
.byte $00 ; 9BB6 ........
|
|
.byte $7C ; 9BB7 .#####..
|
|
.byte $08 ; 9BB8 ....#...
|
|
.byte $10 ; 9BB9 ...#....
|
|
.byte $20 ; 9BBA ..#.....
|
|
.byte $40 ; 9BBB .#......
|
|
.byte $7C ; 9BBC .#####..
|
|
.byte $00 ; 9BBD ........
|
|
|
|
|
|
; Glyphs $25-$3A of the hires set: the same punctuation and arrows as $99E6. The last byte of this
|
|
; block, $9C6D, is where invertTextFonts stops.
|
|
consoleFontHiresSymbols:
|
|
.byte $00 ; 9BBE ........
|
|
.byte $00 ; 9BBF ........
|
|
|
|
.byte $00 ; 9BC0 ........
|
|
.byte $00 ; 9BC1 ........
|
|
.byte $00 ; 9BC2 ........
|
|
.byte $18 ; 9BC3 ...##...
|
|
.byte $18 ; 9BC4 ...##...
|
|
.byte $00 ; 9BC5 ........
|
|
|
|
.byte $00 ; 9BC6 ........
|
|
.byte $18 ; 9BC7 ...##...
|
|
.byte $18 ; 9BC8 ...##...
|
|
.byte $18 ; 9BC9 ...##...
|
|
.byte $18 ; 9BCA ...##...
|
|
.byte $00 ; 9BCB ........
|
|
.byte $18 ; 9BCC ...##...
|
|
.byte $00 ; 9BCD ........
|
|
|
|
.byte $00 ; 9BCE ........
|
|
.byte $00 ; 9BCF ........
|
|
.byte $00 ; 9BD0 ........
|
|
.byte $00 ; 9BD1 ........
|
|
.byte $00 ; 9BD2 ........
|
|
.byte $18 ; 9BD3 ...##...
|
|
.byte $10 ; 9BD4 ...#....
|
|
.byte $20 ; 9BD5 ..#.....
|
|
|
|
.byte $00 ; 9BD6 ........
|
|
.byte $30 ; 9BD7 ..##....
|
|
.byte $60 ; 9BD8 .##.....
|
|
.byte $40 ; 9BD9 .#......
|
|
.byte $40 ; 9BDA .#......
|
|
.byte $60 ; 9BDB .##.....
|
|
.byte $30 ; 9BDC ..##....
|
|
.byte $00 ; 9BDD ........
|
|
|
|
.byte $00 ; 9BDE ........
|
|
.byte $30 ; 9BDF ..##....
|
|
.byte $18 ; 9BE0 ...##...
|
|
.byte $08 ; 9BE1 ....#...
|
|
.byte $08 ; 9BE2 ....#...
|
|
.byte $18 ; 9BE3 ...##...
|
|
.byte $30 ; 9BE4 ..##....
|
|
.byte $00 ; 9BE5 ........
|
|
|
|
.byte $00 ; 9BE6 ........
|
|
.byte $00 ; 9BE7 ........
|
|
|
|
.byte $00 ; 9BE8 ........
|
|
.byte $3C ; 9BE9 ..####..
|
|
.byte $00 ; 9BEA ........
|
|
.byte $00 ; 9BEB ........
|
|
.byte $00 ; 9BEC ........
|
|
.byte $00 ; 9BED ........
|
|
|
|
.byte $00 ; 9BEE ........
|
|
.byte $00 ; 9BEF ........
|
|
.byte $64 ; 9BF0 .##..#..
|
|
.byte $08 ; 9BF1 ....#...
|
|
.byte $10 ; 9BF2 ...#....
|
|
.byte $20 ; 9BF3 ..#.....
|
|
.byte $4C ; 9BF4 .#..##..
|
|
.byte $00 ; 9BF5 ........
|
|
|
|
.byte $18 ; 9BF6 ...##...
|
|
.byte $18 ; 9BF7 ...##...
|
|
.byte $18 ; 9BF8 ...##...
|
|
.byte $00 ; 9BF9 ........
|
|
.byte $00 ; 9BFA ........
|
|
.byte $00 ; 9BFB ........
|
|
.byte $00 ; 9BFC ........
|
|
.byte $00 ; 9BFD ........
|
|
|
|
.byte $00 ; 9BFE ........
|
|
.byte $38 ; 9BFF ..###...
|
|
|
|
D_9C00:
|
|
.byte $44 ; 9C00 .#...#..
|
|
.byte $08 ; 9C01 ....#...
|
|
.byte $10 ; 9C02 ...#....
|
|
.byte $00 ; 9C03 ........
|
|
.byte $18 ; 9C04 ...##...
|
|
.byte $00 ; 9C05 ........
|
|
|
|
.byte $00 ; 9C06 ........
|
|
.byte $18 ; 9C07 ...##...
|
|
.byte $18 ; 9C08 ...##...
|
|
.byte $00 ; 9C09 ........
|
|
.byte $00 ; 9C0A ........
|
|
.byte $18 ; 9C0B ...##...
|
|
.byte $18 ; 9C0C ...##...
|
|
.byte $00 ; 9C0D ........
|
|
|
|
.byte $00 ; 9C0E ........
|
|
.byte $28 ; 9C0F ..#.#...
|
|
.byte $10 ; 9C10 ...#....
|
|
.byte $7C ; 9C11 .#####..
|
|
.byte $10 ; 9C12 ...#....
|
|
.byte $28 ; 9C13 ..#.#...
|
|
.byte $00 ; 9C14 ........
|
|
.byte $00 ; 9C15 ........
|
|
|
|
.byte $00 ; 9C16 ........
|
|
.byte $00 ; 9C17 ........
|
|
.byte $08 ; 9C18 ....#...
|
|
.byte $08 ; 9C19 ....#...
|
|
.byte $3E ; 9C1A ..#####.
|
|
.byte $08 ; 9C1B ....#...
|
|
.byte $08 ; 9C1C ....#...
|
|
.byte $00 ; 9C1D ........
|
|
|
|
.byte $00 ; 9C1E ........
|
|
.byte $00 ; 9C1F ........
|
|
.byte $02 ; 9C20 ......#.
|
|
.byte $04 ; 9C21 .....#..
|
|
.byte $08 ; 9C22 ....#...
|
|
.byte $10 ; 9C23 ...#....
|
|
.byte $20 ; 9C24 ..#.....
|
|
.byte $00 ; 9C25 ........
|
|
|
|
.byte $00 ; 9C26 ........
|
|
.byte $00 ; 9C27 ........
|
|
.byte $00 ; 9C28 ........
|
|
.byte $3C ; 9C29 ..####..
|
|
.byte $00 ; 9C2A ........
|
|
.byte $3C ; 9C2B ..####..
|
|
.byte $00 ; 9C2C ........
|
|
.byte $00 ; 9C2D ........
|
|
|
|
.byte $24 ; 9C2E ..#..#..
|
|
.byte $24 ; 9C2F ..#..#..
|
|
.byte $24 ; 9C30 ..#..#..
|
|
.byte $00 ; 9C31 ........
|
|
.byte $00 ; 9C32 ........
|
|
.byte $00 ; 9C33 ........
|
|
.byte $00 ; 9C34 ........
|
|
.byte $00 ; 9C35 ........
|
|
|
|
.byte $00 ; 9C36 ........
|
|
.byte $00 ; 9C37 ........
|
|
.byte $14 ; 9C38 ...#.#..
|
|
.byte $3E ; 9C39 ..#####.
|
|
.byte $14 ; 9C3A ...#.#..
|
|
.byte $3E ; 9C3B ..#####.
|
|
.byte $14 ; 9C3C ...#.#..
|
|
.byte $00 ; 9C3D ........
|
|
|
|
.byte $10 ; 9C3E ...#....
|
|
.byte $3C ; 9C3F ..####..
|
|
.byte $40 ; 9C40 .#......
|
|
.byte $38 ; 9C41 ..###...
|
|
.byte $04 ; 9C42 .....#..
|
|
.byte $78 ; 9C43 .####...
|
|
.byte $10 ; 9C44 ...#....
|
|
.byte $00 ; 9C45 ........
|
|
|
|
.byte $00 ; 9C46 ........
|
|
.byte $3C ; 9C47 ..####..
|
|
.byte $42 ; 9C48 .#....#.
|
|
.byte $4A ; 9C49 .#..#.#.
|
|
.byte $5A ; 9C4A .#.##.#.
|
|
.byte $5E ; 9C4B .#.####.
|
|
.byte $40 ; 9C4C .#......
|
|
.byte $3C ; 9C4D ..####..
|
|
|
|
.byte $00 ; 9C4E ........
|
|
.byte $18 ; 9C4F ...##...
|
|
|
|
|
|
; Last fragment of consoleFontHires: the set ends at $9C6D, the last byte invertTextFonts flips.
|
|
.byte $18 ; 9C50 ...##...
|
|
.byte $00 ; 9C51 ........
|
|
.byte $00 ; 9C52 ........
|
|
.byte $18 ; 9C53 ...##...
|
|
.byte $18 ; 9C54 ...##...
|
|
.byte $30 ; 9C55 ..##....
|
|
|
|
.byte $00 ; 9C56 ........
|
|
.byte $08 ; 9C57 ....#...
|
|
.byte $08 ; 9C58 ....#...
|
|
.byte $78 ; 9C59 .####...
|
|
.byte $5E ; 9C5A .#.####.
|
|
.byte $78 ; 9C5B .####...
|
|
.byte $08 ; 9C5C ....#...
|
|
.byte $00 ; 9C5D ........
|
|
|
|
.byte $00 ; 9C5E ........
|
|
.byte $0C ; 9C5F ....##..
|
|
.byte $18 ; 9C60 ...##...
|
|
.byte $30 ; 9C61 ..##....
|
|
.byte $60 ; 9C62 .##.....
|
|
.byte $30 ; 9C63 ..##....
|
|
.byte $18 ; 9C64 ...##...
|
|
.byte $0C ; 9C65 ....##..
|
|
|
|
.byte $00 ; 9C66 ........
|
|
.byte $30 ; 9C67 ..##....
|
|
.byte $18 ; 9C68 ...##...
|
|
.byte $0C ; 9C69 ....##..
|
|
.byte $06 ; 9C6A .....##.
|
|
.byte $0C ; 9C6B ....##..
|
|
.byte $18 ; 9C6C ...##...
|
|
.byte $30 ; 9C6D ..##....
|
|
|
|
|
|
; terrainTileShapes - 44 one-bit 8x8 terrain tiles of 8 bytes each, addressed as $9C6E + index*8 by
|
|
; setTerrainTilePtr ($2DD0/$2DD6), which leaves the address in zp_B2/B3. The 20 unit symbols at $9DCE
|
|
; continue the same table as indices $2C-$3F. The index is derived from the map cell byte: cell - $40,
|
|
; or cell - $20 when the cell is below
|
|
; $40 ($27B2), so the two contour rings $21-$34 and $41-$54 deliberately draw the same art.
|
|
; Three renderers read the shapes: the main map view doubles each nibble through
|
|
; nybbleToMulticolourTable to draw a cell 16x16 in the tactical window ($27B8), drawRadarGlyph ($73A4)
|
|
; plots them 8x8 on the radar and drone screens, and drawScreen1Cell ($5DF5) uses the same pair of
|
|
; overlay routines for single-cell updates. Index map: $00 open ground, $01-$14 contour lines, $15-$1C
|
|
; river, $1D-$20 forest, $21-$24 hill,
|
|
; $25-$26 summit, $27 recycler, $28-$2B end zone.
|
|
; Tile $00 below: open ground, an empty cell (map codes $20 and $40).
|
|
terrainTileShapes:
|
|
.byte $00 ; 9C6E ........
|
|
.byte $00 ; 9C6F ........
|
|
.byte $00 ; 9C70 ........
|
|
.byte $00 ; 9C71 ........
|
|
.byte $00 ; 9C72 ........
|
|
.byte $00 ; 9C73 ........
|
|
.byte $00 ; 9C74 ........
|
|
.byte $00 ; 9C75 ........
|
|
|
|
|
|
; Tiles $01-$14 - the twenty contour/ridge line fragments, drawn for map codes $21-$34 (the lower
|
|
; contour ring) and $41-$54 (the upper one). Each is a short line or line junction crossing the cell
|
|
; in a different direction; the map generator picks the fragment that joins its neighbours.
|
|
terrainTileContourShapes:
|
|
.byte $00 ; 9C76 ........
|
|
.byte $02 ; 9C77 ......#.
|
|
.byte $02 ; 9C78 ......#.
|
|
.byte $20 ; 9C79 ..#.....
|
|
.byte $13 ; 9C7A ...#..##
|
|
.byte $06 ; 9C7B .....##.
|
|
.byte $6C ; 9C7C .##.##..
|
|
.byte $08 ; 9C7D ....#...
|
|
|
|
.byte $00 ; 9C7E ........
|
|
.byte $40 ; 9C7F .#......
|
|
.byte $10 ; 9C80 ...#....
|
|
.byte $10 ; 9C81 ...#....
|
|
.byte $C0 ; 9C82 ##......
|
|
.byte $62 ; 9C83 .##...#.
|
|
.byte $34 ; 9C84 ..##.#..
|
|
.byte $10 ; 9C85 ...#....
|
|
|
|
.byte $08 ; 9C86 ....#...
|
|
.byte $6C ; 9C87 .##.##..
|
|
.byte $06 ; 9C88 .....##.
|
|
.byte $33 ; 9C89 ..##..##
|
|
.byte $00 ; 9C8A ........
|
|
.byte $02 ; 9C8B ......#.
|
|
.byte $02 ; 9C8C ......#.
|
|
.byte $00 ; 9C8D ........
|
|
|
|
.byte $10 ; 9C8E ...#....
|
|
.byte $36 ; 9C8F ..##.##.
|
|
.byte $60 ; 9C90 .##.....
|
|
.byte $C8 ; 9C91 ##..#...
|
|
.byte $04 ; 9C92 .....#..
|
|
.byte $20 ; 9C93 ..#.....
|
|
.byte $20 ; 9C94 ..#.....
|
|
.byte $00 ; 9C95 ........
|
|
|
|
.byte $00 ; 9C96 ........
|
|
.byte $00 ; 9C97 ........
|
|
.byte $00 ; 9C98 ........
|
|
.byte $03 ; 9C99 ......##
|
|
.byte $06 ; 9C9A .....##.
|
|
.byte $0C ; 9C9B ....##..
|
|
.byte $1A ; 9C9C ...##.#.
|
|
.byte $10 ; 9C9D ...#....
|
|
|
|
.byte $00 ; 9C9E ........
|
|
.byte $00 ; 9C9F ........
|
|
.byte $00 ; 9CA0 ........
|
|
.byte $C0 ; 9CA1 ##......
|
|
.byte $60 ; 9CA2 .##.....
|
|
.byte $30 ; 9CA3 ..##....
|
|
.byte $58 ; 9CA4 .#.##...
|
|
.byte $08 ; 9CA5 ....#...
|
|
|
|
.byte $10 ; 9CA6 ...#....
|
|
.byte $1A ; 9CA7 ...##.#.
|
|
.byte $0C ; 9CA8 ....##..
|
|
.byte $06 ; 9CA9 .....##.
|
|
.byte $03 ; 9CAA ......##
|
|
.byte $00 ; 9CAB ........
|
|
.byte $00 ; 9CAC ........
|
|
.byte $00 ; 9CAD ........
|
|
|
|
.byte $08 ; 9CAE ....#...
|
|
.byte $58 ; 9CAF .#.##...
|
|
.byte $30 ; 9CB0 ..##....
|
|
.byte $60 ; 9CB1 .##.....
|
|
.byte $C0 ; 9CB2 ##......
|
|
.byte $00 ; 9CB3 ........
|
|
.byte $00 ; 9CB4 ........
|
|
.byte $00 ; 9CB5 ........
|
|
|
|
.byte $08 ; 9CB6 ....#...
|
|
.byte $08 ; 9CB7 ....#...
|
|
.byte $48 ; 9CB8 .#..#...
|
|
.byte $08 ; 9CB9 ....#...
|
|
.byte $08 ; 9CBA ....#...
|
|
.byte $08 ; 9CBB ....#...
|
|
.byte $48 ; 9CBC .#..#...
|
|
.byte $08 ; 9CBD ....#...
|
|
|
|
.byte $08 ; 9CBE ....#...
|
|
.byte $48 ; 9CBF .#..#...
|
|
.byte $0C ; 9CC0 ....##..
|
|
.byte $64 ; 9CC1 .##..#..
|
|
.byte $04 ; 9CC2 .....#..
|
|
.byte $0C ; 9CC3 ....##..
|
|
.byte $48 ; 9CC4 .#..#...
|
|
.byte $08 ; 9CC5 ....#...
|
|
|
|
.byte $10 ; 9CC6 ...#....
|
|
.byte $12 ; 9CC7 ...#..#.
|
|
.byte $10 ; 9CC8 ...#....
|
|
.byte $12 ; 9CC9 ...#..#.
|
|
.byte $10 ; 9CCA ...#....
|
|
.byte $10 ; 9CCB ...#....
|
|
.byte $12 ; 9CCC ...#..#.
|
|
.byte $10 ; 9CCD ...#....
|
|
|
|
.byte $10 ; 9CCE ...#....
|
|
.byte $12 ; 9CCF ...#..#.
|
|
.byte $30 ; 9CD0 ..##....
|
|
.byte $22 ; 9CD1 ..#...#.
|
|
.byte $24 ; 9CD2 ..#..#..
|
|
.byte $30 ; 9CD3 ..##....
|
|
.byte $12 ; 9CD4 ...#..#.
|
|
.byte $10 ; 9CD5 ...#....
|
|
|
|
.byte $00 ; 9CD6 ........
|
|
.byte $88 ; 9CD7 #...#...
|
|
.byte $48 ; 9CD8 .#..#...
|
|
.byte $00 ; 9CD9 ........
|
|
.byte $FF ; 9CDA ########
|
|
.byte $00 ; 9CDB ........
|
|
.byte $00 ; 9CDC ........
|
|
.byte $00 ; 9CDD ........
|
|
|
|
.byte $00 ; 9CDE ........
|
|
.byte $90 ; 9CDF #..#....
|
|
.byte $54 ; 9CE0 .#.#.#..
|
|
.byte $00 ; 9CE1 ........
|
|
.byte $CF ; 9CE2 ##..####
|
|
.byte $78 ; 9CE3 .####...
|
|
.byte $00 ; 9CE4 ........
|
|
.byte $00 ; 9CE5 ........
|
|
|
|
.byte $00 ; 9CE6 ........
|
|
.byte $84 ; 9CE7 #....#..
|
|
.byte $40 ; 9CE8 .#......
|
|
.byte $07 ; 9CE9 .....###
|
|
.byte $ED ; 9CEA ###.##.#
|
|
.byte $38 ; 9CEB ..###...
|
|
.byte $00 ; 9CEC ........
|
|
.byte $00 ; 9CED ........
|
|
|
|
.byte $00 ; 9CEE ........
|
|
.byte $80 ; 9CEF #.......
|
|
.byte $52 ; 9CF0 .#.#..#.
|
|
.byte $10 ; 9CF1 ...#....
|
|
.byte $C1 ; 9CF2 ##.....#
|
|
.byte $7B ; 9CF3 .####.##
|
|
.byte $0E ; 9CF4 ....###.
|
|
.byte $00 ; 9CF5 ........
|
|
|
|
.byte $00 ; 9CF6 ........
|
|
.byte $00 ; 9CF7 ........
|
|
.byte $00 ; 9CF8 ........
|
|
.byte $F7 ; 9CF9 ####.###
|
|
.byte $1C ; 9CFA ...###..
|
|
.byte $02 ; 9CFB ......#.
|
|
.byte $44 ; 9CFC .#...#..
|
|
.byte $00 ; 9CFD ........
|
|
|
|
.byte $00 ; 9CFE ........
|
|
.byte $00 ; 9CFF ........
|
|
.byte $70 ; 9D00 .###....
|
|
.byte $D3 ; 9D01 ##.#..##
|
|
.byte $1E ; 9D02 ...####.
|
|
.byte $40 ; 9D03 .#......
|
|
.byte $48 ; 9D04 .#..#...
|
|
.byte $00 ; 9D05 ........
|
|
|
|
.byte $00 ; 9D06 ........
|
|
.byte $00 ; 9D07 ........
|
|
.byte $3C ; 9D08 ..####..
|
|
.byte $E7 ; 9D09 ###..###
|
|
.byte $10 ; 9D0A ...#....
|
|
.byte $92 ; 9D0B #..#..#.
|
|
.byte $00 ; 9D0C ........
|
|
.byte $00 ; 9D0D ........
|
|
|
|
.byte $00 ; 9D0E ........
|
|
.byte $00 ; 9D0F ........
|
|
.byte $00 ; 9D10 ........
|
|
.byte $FF ; 9D11 ########
|
|
.byte $00 ; 9D12 ........
|
|
.byte $94 ; 9D13 #..#.#..
|
|
.byte $10 ; 9D14 ...#....
|
|
.byte $00 ; 9D15 ........
|
|
|
|
|
|
; Tiles $15-$1C - river, map codes $55-$5C. $15-$18 are the four quarters of a rounded bend and
|
|
; $19-$1C the straight and junction pieces, so a river drawn from them flows cell to cell.
|
|
terrainTileRiverShapes:
|
|
.byte $00 ; 9D16 ........
|
|
.byte $00 ; 9D17 ........
|
|
.byte $03 ; 9D18 ......##
|
|
.byte $0F ; 9D19 ....####
|
|
.byte $1F ; 9D1A ...#####
|
|
.byte $1F ; 9D1B ...#####
|
|
.byte $3E ; 9D1C ..#####.
|
|
.byte $3C ; 9D1D ..####..
|
|
|
|
.byte $00 ; 9D1E ........
|
|
.byte $00 ; 9D1F ........
|
|
.byte $C0 ; 9D20 ##......
|
|
.byte $F0 ; 9D21 ####....
|
|
.byte $F8 ; 9D22 #####...
|
|
.byte $F8 ; 9D23 #####...
|
|
.byte $7C ; 9D24 .#####..
|
|
.byte $3C ; 9D25 ..####..
|
|
|
|
.byte $3C ; 9D26 ..####..
|
|
.byte $3E ; 9D27 ..#####.
|
|
.byte $1F ; 9D28 ...#####
|
|
.byte $1F ; 9D29 ...#####
|
|
.byte $0F ; 9D2A ....####
|
|
.byte $03 ; 9D2B ......##
|
|
.byte $00 ; 9D2C ........
|
|
.byte $00 ; 9D2D ........
|
|
|
|
.byte $3C ; 9D2E ..####..
|
|
.byte $7C ; 9D2F .#####..
|
|
.byte $F8 ; 9D30 #####...
|
|
.byte $F8 ; 9D31 #####...
|
|
.byte $F0 ; 9D32 ####....
|
|
.byte $C0 ; 9D33 ##......
|
|
.byte $00 ; 9D34 ........
|
|
.byte $00 ; 9D35 ........
|
|
|
|
.byte $00 ; 9D36 ........
|
|
.byte $00 ; 9D37 ........
|
|
.byte $FF ; 9D38 ########
|
|
.byte $FF ; 9D39 ########
|
|
.byte $FF ; 9D3A ########
|
|
.byte $FF ; 9D3B ########
|
|
.byte $00 ; 9D3C ........
|
|
.byte $00 ; 9D3D ........
|
|
|
|
.byte $00 ; 9D3E ........
|
|
.byte $00 ; 9D3F ........
|
|
.byte $F3 ; 9D40 ####..##
|
|
.byte $FF ; 9D41 ########
|
|
.byte $FF ; 9D42 ########
|
|
.byte $FF ; 9D43 ########
|
|
.byte $1E ; 9D44 ...####.
|
|
.byte $00 ; 9D45 ........
|
|
|
|
.byte $00 ; 9D46 ........
|
|
.byte $0E ; 9D47 ....###.
|
|
.byte $9F ; 9D48 #..#####
|
|
.byte $FF ; 9D49 ########
|
|
.byte $FF ; 9D4A ########
|
|
.byte $FB ; 9D4B #####.##
|
|
.byte $F0 ; 9D4C ####....
|
|
.byte $00 ; 9D4D ........
|
|
|
|
.byte $00 ; 9D4E ........
|
|
.byte $3C ; 9D4F ..####..
|
|
.byte $FF ; 9D50 ########
|
|
.byte $FF ; 9D51 ########
|
|
.byte $FF ; 9D52 ########
|
|
.byte $E7 ; 9D53 ###..###
|
|
.byte $00 ; 9D54 ........
|
|
.byte $00 ; 9D55 ........
|
|
|
|
|
|
; Tiles $1D-$20 - forest, map codes $5D-$60: four dense noise patterns.
|
|
terrainTileForestShapes:
|
|
.byte $4C ; 9D56 .#..##..
|
|
.byte $D5 ; 9D57 ##.#.#.#
|
|
.byte $2C ; 9D58 ..#.##..
|
|
.byte $0B ; 9D59 ....#.##
|
|
.byte $B4 ; 9D5A #.##.#..
|
|
.byte $50 ; 9D5B .#.#....
|
|
.byte $E6 ; 9D5C ###..##.
|
|
.byte $28 ; 9D5D ..#.#...
|
|
|
|
.byte $14 ; 9D5E ...#.#..
|
|
.byte $2E ; 9D5F ..#.###.
|
|
.byte $68 ; 9D60 .##.#...
|
|
.byte $15 ; 9D61 ...#.#.#
|
|
.byte $44 ; 9D62 .#...#..
|
|
.byte $99 ; 9D63 #..##..#
|
|
.byte $42 ; 9D64 .#....#.
|
|
.byte $4D ; 9D65 .#..##.#
|
|
|
|
.byte $01 ; 9D66 .......#
|
|
.byte $8A ; 9D67 #...#.#.
|
|
.byte $59 ; 9D68 .#.##..#
|
|
.byte $36 ; 9D69 ..##.##.
|
|
.byte $28 ; 9D6A ..#.#...
|
|
.byte $4B ; 9D6B .#..#.##
|
|
.byte $B6 ; 9D6C #.##.##.
|
|
.byte $99 ; 9D6D #..##..#
|
|
|
|
.byte $A1 ; 9D6E #.#....#
|
|
.byte $52 ; 9D6F .#.#..#.
|
|
.byte $4A ; 9D70 .#..#.#.
|
|
.byte $29 ; 9D71 ..#.#..#
|
|
.byte $56 ; 9D72 .#.#.##.
|
|
.byte $34 ; 9D73 ..##.#..
|
|
.byte $8D ; 9D74 #...##.#
|
|
.byte $21 ; 9D75 ..#....#
|
|
|
|
|
|
; Tiles $21-$24 - hillside, map codes $61-$64: four sparse dot patterns.
|
|
terrainTileHillShapes:
|
|
.byte $02 ; 9D76 ......#.
|
|
.byte $00 ; 9D77 ........
|
|
.byte $20 ; 9D78 ..#.....
|
|
.byte $00 ; 9D79 ........
|
|
.byte $04 ; 9D7A .....#..
|
|
.byte $00 ; 9D7B ........
|
|
.byte $10 ; 9D7C ...#....
|
|
.byte $00 ; 9D7D ........
|
|
|
|
.byte $00 ; 9D7E ........
|
|
.byte $00 ; 9D7F ........
|
|
.byte $22 ; 9D80 ..#...#.
|
|
.byte $00 ; 9D81 ........
|
|
.byte $10 ; 9D82 ...#....
|
|
.byte $04 ; 9D83 .....#..
|
|
.byte $00 ; 9D84 ........
|
|
.byte $10 ; 9D85 ...#....
|
|
|
|
.byte $00 ; 9D86 ........
|
|
.byte $04 ; 9D87 .....#..
|
|
.byte $20 ; 9D88 ..#.....
|
|
.byte $00 ; 9D89 ........
|
|
.byte $08 ; 9D8A ....#...
|
|
.byte $20 ; 9D8B ..#.....
|
|
.byte $00 ; 9D8C ........
|
|
.byte $01 ; 9D8D .......#
|
|
|
|
.byte $00 ; 9D8E ........
|
|
.byte $00 ; 9D8F ........
|
|
.byte $20 ; 9D90 ..#.....
|
|
.byte $04 ; 9D91 .....#..
|
|
.byte $10 ; 9D92 ...#....
|
|
.byte $00 ; 9D93 ........
|
|
.byte $02 ; 9D94 ......#.
|
|
.byte $00 ; 9D95 ........
|
|
|
|
|
|
; Tiles $25-$26 - summit, map codes $65-$66: two very sparse dot patterns.
|
|
terrainTileSummitShapes:
|
|
.byte $00 ; 9D96 ........
|
|
.byte $00 ; 9D97 ........
|
|
.byte $20 ; 9D98 ..#.....
|
|
.byte $00 ; 9D99 ........
|
|
.byte $04 ; 9D9A .....#..
|
|
.byte $00 ; 9D9B ........
|
|
.byte $10 ; 9D9C ...#....
|
|
.byte $00 ; 9D9D ........
|
|
|
|
.byte $00 ; 9D9E ........
|
|
.byte $00 ; 9D9F ........
|
|
.byte $02 ; 9DA0 ......#.
|
|
.byte $00 ; 9DA1 ........
|
|
.byte $00 ; 9DA2 ........
|
|
.byte $00 ; 9DA3 ........
|
|
.byte $00 ; 9DA4 ........
|
|
.byte $10 ; 9DA5 ...#....
|
|
|
|
|
|
; Tile $27 - the recycler, map code $67: a boxed cross.
|
|
terrainTileRecyclerShape:
|
|
.byte $FE ; 9DA6 #######.
|
|
.byte $82 ; 9DA7 #.....#.
|
|
.byte $92 ; 9DA8 #..#..#.
|
|
.byte $BA ; 9DA9 #.###.#.
|
|
.byte $92 ; 9DAA #..#..#.
|
|
.byte $82 ; 9DAB #.....#.
|
|
.byte $FE ; 9DAC #######.
|
|
.byte $00 ; 9DAD ........
|
|
|
|
|
|
; Tiles $28-$2B - the four checkerboard blocks used for the end-zone cells, map codes $68-$6B.
|
|
; getRadarCellGlyph also uses them as the hatch for everything outside the 40x40 map, picking one with
|
|
; (row + column) AND 3 so the border looks woven.
|
|
terrainTileEndZoneShapes:
|
|
.byte $FF ; 9DAE ########
|
|
.byte $9F ; 9DAF #..#####
|
|
.byte $99 ; 9DB0 #..##..#
|
|
.byte $F9 ; 9DB1 #####..#
|
|
.byte $FF ; 9DB2 ########
|
|
.byte $CF ; 9DB3 ##..####
|
|
.byte $CF ; 9DB4 ##..####
|
|
.byte $FF ; 9DB5 ########
|
|
|
|
.byte $FF ; 9DB6 ########
|
|
.byte $F9 ; 9DB7 #####..#
|
|
.byte $99 ; 9DB8 #..##..#
|
|
.byte $9F ; 9DB9 #..#####
|
|
.byte $FF ; 9DBA ########
|
|
.byte $F3 ; 9DBB ####..##
|
|
.byte $F3 ; 9DBC ####..##
|
|
.byte $FF ; 9DBD ########
|
|
|
|
.byte $FF ; 9DBE ########
|
|
.byte $F3 ; 9DBF ####..##
|
|
.byte $F3 ; 9DC0 ####..##
|
|
.byte $FF ; 9DC1 ########
|
|
.byte $9F ; 9DC2 #..#####
|
|
.byte $99 ; 9DC3 #..##..#
|
|
.byte $F9 ; 9DC4 #####..#
|
|
.byte $FF ; 9DC5 ########
|
|
|
|
.byte $FF ; 9DC6 ########
|
|
.byte $CF ; 9DC7 ##..####
|
|
.byte $CF ; 9DC8 ##..####
|
|
.byte $FF ; 9DC9 ########
|
|
.byte $F9 ; 9DCA #####..#
|
|
.byte $99 ; 9DCB #..##..#
|
|
.byte $9F ; 9DCC #..#####
|
|
.byte $FF ; 9DCD ########
|
|
|
|
|
|
; unitSymbolShapes - the 20 small unit symbols, indices $2C-$3F of the same 8-bytes-per-shape table
|
|
; that starts at $9C6E, so setTerrainTilePtr fetches them exactly like a terrain tile. Five unit types
|
|
; times four facings, in unit-type order: the glyph number is unitGlyphBaseTable[type] ($0799 = $2C
|
|
; GRUNT, $30 RIDER, $34 BOOMER, $38 SPY, $3C COMCEN) plus the facing in bits 0-1 of the unit's flags
|
|
; byte. getRadarCellGlyph does that at $7512, and again at $7538 for the random 'ghost' blip of an
|
|
; unspotted enemy (with bit 7 set, which tells drawRadarGlyph to speckle it). These 8x8 symbols are
|
|
; the radar and overview views only; the tactical window draws units from the 16x16 multicolour shapes
|
|
; at $6C5D in the main program.
|
|
; $2C-$2F below: GRUNT facing 0, 1, 2, 3.
|
|
unitSymbolShapes:
|
|
.byte $00 ; 9DCE ........
|
|
.byte $10 ; 9DCF ...#....
|
|
.byte $10 ; 9DD0 ...#....
|
|
.byte $28 ; 9DD1 ..#.#...
|
|
.byte $7C ; 9DD2 .#####..
|
|
.byte $38 ; 9DD3 ..###...
|
|
.byte $00 ; 9DD4 ........
|
|
.byte $00 ; 9DD5 ........
|
|
|
|
.byte $00 ; 9DD6 ........
|
|
.byte $38 ; 9DD7 ..###...
|
|
.byte $7C ; 9DD8 .#####..
|
|
.byte $28 ; 9DD9 ..#.#...
|
|
.byte $10 ; 9DDA ...#....
|
|
.byte $10 ; 9DDB ...#....
|
|
.byte $00 ; 9DDC ........
|
|
.byte $00 ; 9DDD ........
|
|
|
|
.byte $00 ; 9DDE ........
|
|
.byte $20 ; 9DDF ..#.....
|
|
.byte $70 ; 9DE0 .###....
|
|
.byte $6C ; 9DE1 .##.##..
|
|
.byte $70 ; 9DE2 .###....
|
|
.byte $20 ; 9DE3 ..#.....
|
|
.byte $00 ; 9DE4 ........
|
|
.byte $00 ; 9DE5 ........
|
|
|
|
.byte $00 ; 9DE6 ........
|
|
.byte $08 ; 9DE7 ....#...
|
|
.byte $1C ; 9DE8 ...###..
|
|
.byte $6C ; 9DE9 .##.##..
|
|
.byte $1C ; 9DEA ...###..
|
|
.byte $08 ; 9DEB ....#...
|
|
.byte $00 ; 9DEC ........
|
|
.byte $00 ; 9DED ........
|
|
|
|
|
|
; Glyphs $30-$33 - RIDER, the four facings.
|
|
unitSymbolShapesRider:
|
|
.byte $00 ; 9DEE ........
|
|
.byte $10 ; 9DEF ...#....
|
|
.byte $54 ; 9DF0 .#.#.#..
|
|
.byte $38 ; 9DF1 ..###...
|
|
.byte $38 ; 9DF2 ..###...
|
|
.byte $C6 ; 9DF3 ##...##.
|
|
.byte $82 ; 9DF4 #.....#.
|
|
.byte $00 ; 9DF5 ........
|
|
|
|
.byte $41 ; 9DF6 .#.....#
|
|
.byte $63 ; 9DF7 .##...##
|
|
.byte $1C ; 9DF8 ...###..
|
|
.byte $1C ; 9DF9 ...###..
|
|
.byte $2A ; 9DFA ..#.#.#.
|
|
.byte $08 ; 9DFB ....#...
|
|
.byte $00 ; 9DFC ........
|
|
.byte $00 ; 9DFD ........
|
|
|
|
.byte $60 ; 9DFE .##.....
|
|
.byte $24 ; 9DFF ..#..#..
|
|
.byte $18 ; 9E00 ...##...
|
|
.byte $1E ; 9E01 ...####.
|
|
.byte $18 ; 9E02 ...##...
|
|
.byte $24 ; 9E03 ..#..#..
|
|
.byte $60 ; 9E04 .##.....
|
|
.byte $00 ; 9E05 ........
|
|
|
|
.byte $06 ; 9E06 .....##.
|
|
.byte $24 ; 9E07 ..#..#..
|
|
.byte $18 ; 9E08 ...##...
|
|
.byte $78 ; 9E09 .####...
|
|
.byte $18 ; 9E0A ...##...
|
|
.byte $24 ; 9E0B ..#..#..
|
|
.byte $06 ; 9E0C .....##.
|
|
.byte $00 ; 9E0D ........
|
|
|
|
|
|
; Glyphs $34-$37 - BOOMER, the four facings.
|
|
unitSymbolShapesBoomer:
|
|
.byte $38 ; 9E0E ..###...
|
|
.byte $10 ; 9E0F ...#....
|
|
.byte $10 ; 9E10 ...#....
|
|
.byte $10 ; 9E11 ...#....
|
|
.byte $7C ; 9E12 .#####..
|
|
.byte $7C ; 9E13 .#####..
|
|
.byte $00 ; 9E14 ........
|
|
.byte $00 ; 9E15 ........
|
|
|
|
.byte $00 ; 9E16 ........
|
|
.byte $7C ; 9E17 .#####..
|
|
.byte $7C ; 9E18 .#####..
|
|
.byte $10 ; 9E19 ...#....
|
|
.byte $10 ; 9E1A ...#....
|
|
.byte $10 ; 9E1B ...#....
|
|
.byte $38 ; 9E1C ..###...
|
|
.byte $00 ; 9E1D ........
|
|
|
|
.byte $00 ; 9E1E ........
|
|
.byte $60 ; 9E1F .##.....
|
|
.byte $62 ; 9E20 .##...#.
|
|
.byte $7E ; 9E21 .######.
|
|
.byte $62 ; 9E22 .##...#.
|
|
.byte $60 ; 9E23 .##.....
|
|
.byte $00 ; 9E24 ........
|
|
.byte $00 ; 9E25 ........
|
|
|
|
.byte $00 ; 9E26 ........
|
|
.byte $0C ; 9E27 ....##..
|
|
.byte $8C ; 9E28 #...##..
|
|
.byte $FC ; 9E29 ######..
|
|
.byte $8C ; 9E2A #...##..
|
|
.byte $0C ; 9E2B ....##..
|
|
.byte $00 ; 9E2C ........
|
|
.byte $00 ; 9E2D ........
|
|
|
|
|
|
; Glyphs $38-$3B - SPY, the four facings.
|
|
unitSymbolShapesSpy:
|
|
.byte $00 ; 9E2E ........
|
|
.byte $44 ; 9E2F .#...#..
|
|
.byte $44 ; 9E30 .#...#..
|
|
.byte $38 ; 9E31 ..###...
|
|
.byte $10 ; 9E32 ...#....
|
|
.byte $10 ; 9E33 ...#....
|
|
.byte $00 ; 9E34 ........
|
|
.byte $00 ; 9E35 ........
|
|
|
|
.byte $00 ; 9E36 ........
|
|
.byte $10 ; 9E37 ...#....
|
|
.byte $10 ; 9E38 ...#....
|
|
.byte $38 ; 9E39 ..###...
|
|
.byte $44 ; 9E3A .#...#..
|
|
.byte $44 ; 9E3B .#...#..
|
|
.byte $00 ; 9E3C ........
|
|
.byte $00 ; 9E3D ........
|
|
|
|
.byte $00 ; 9E3E ........
|
|
.byte $0C ; 9E3F ....##..
|
|
.byte $10 ; 9E40 ...#....
|
|
.byte $70 ; 9E41 .###....
|
|
.byte $10 ; 9E42 ...#....
|
|
.byte $0C ; 9E43 ....##..
|
|
.byte $00 ; 9E44 ........
|
|
.byte $00 ; 9E45 ........
|
|
|
|
.byte $00 ; 9E46 ........
|
|
.byte $60 ; 9E47 .##.....
|
|
.byte $10 ; 9E48 ...#....
|
|
.byte $1C ; 9E49 ...###..
|
|
.byte $10 ; 9E4A ...#....
|
|
.byte $60 ; 9E4B .##.....
|
|
.byte $00 ; 9E4C ........
|
|
.byte $00 ; 9E4D ........
|
|
|
|
|
|
; Glyphs $3C-$3F - COMCEN, the four facings; the last shape of the table, which ends at $9E6E.
|
|
unitSymbolShapesComcen:
|
|
.byte $18 ; 9E4E ...##...
|
|
.byte $3C ; 9E4F ..####..
|
|
.byte $42 ; 9E50 .#....#.
|
|
.byte $7E ; 9E51 .######.
|
|
.byte $7E ; 9E52 .######.
|
|
.byte $7E ; 9E53 .######.
|
|
.byte $7E ; 9E54 .######.
|
|
.byte $00 ; 9E55 ........
|
|
|
|
.byte $7E ; 9E56 .######.
|
|
.byte $7E ; 9E57 .######.
|
|
.byte $7E ; 9E58 .######.
|
|
.byte $7E ; 9E59 .######.
|
|
.byte $42 ; 9E5A .#....#.
|
|
.byte $3C ; 9E5B ..####..
|
|
.byte $18 ; 9E5C ...##...
|
|
.byte $00 ; 9E5D ........
|
|
|
|
.byte $00 ; 9E5E ........
|
|
.byte $7C ; 9E5F .#####..
|
|
.byte $76 ; 9E60 .###.##.
|
|
.byte $77 ; 9E61 .###.###
|
|
.byte $77 ; 9E62 .###.###
|
|
.byte $76 ; 9E63 .###.##.
|
|
.byte $7C ; 9E64 .#####..
|
|
.byte $00 ; 9E65 ........
|
|
|
|
.byte $00 ; 9E66 ........
|
|
.byte $3E ; 9E67 ..#####.
|
|
.byte $6E ; 9E68 .##.###.
|
|
.byte $EE ; 9E69 ###.###.
|
|
.byte $EE ; 9E6A ###.###.
|
|
.byte $6E ; 9E6B .##.###.
|
|
.byte $3E ; 9E6C ..#####.
|
|
.byte $00 ; 9E6D ........
|
|
|
|
|
|
; cursorSquareShape - 18 bytes = six 24-pixel sprite rows drawing a 6x6 hollow square in the leftmost
|
|
; byte of each row. setCursorShapeSquare ($2FCF) passes this address to installCursorShape, which
|
|
; blanks sprite 0 and copies these 18 bytes to $8A00, colours the sprite black and enables it. Sprite
|
|
; 0 is the map cursor and is Y-expanded, so six rows cover a whole map cell. Called whenever a unit
|
|
; is picked up or ordered ($2015, $4C53, $5E40, $5E87, $61F5,
|
|
; $6393).
|
|
; The survey listed $9E6E-$9E91 as unused spare shapes; the two 18-byte shapes here are both in use,
|
|
; reached by immediate address pairs that the cross-referencer cannot follow.
|
|
cursorSquareShape:
|
|
.byte $FC,$00,$00 ; 9E6E ######..................
|
|
.byte $84,$00,$00 ; 9E71 #....#..................
|
|
.byte $84,$00,$00 ; 9E74 #....#..................
|
|
.byte $84,$00,$00 ; 9E77 #....#..................
|
|
.byte $84,$00,$00 ; 9E7A #....#..................
|
|
.byte $FC,$00,$00 ; 9E7D ######..................
|
|
|
|
|
|
; cursorCrossShape - the same 18-byte format, a 6x6 plus sign. setCursorShapeCross ($2FF3) feeds it
|
|
; to the same installCursorShape tail; it replaces the square whenever the cursor is aiming a ranged
|
|
; attack (the cursor selector at $2195, on cursorTargetMode zp_BB).
|
|
cursorCrossShape:
|
|
.byte $30,$00,$00 ; 9E80 ..##....................
|
|
.byte $30,$00,$00 ; 9E83 ..##....................
|
|
.byte $FC,$00,$00 ; 9E86 ######..................
|
|
.byte $FC,$00,$00 ; 9E89 ######..................
|
|
.byte $30,$00,$00 ; 9E8C ..##....................
|
|
.byte $30,$00,$00 ; 9E8F ..##....................
|
|
|
|
|
|
; cursorBlockShape - 18 bytes, a small solid 4x4 block. setCursorShapeBlock ($300C) copies these 18
|
|
; bytes into the shape of the sprite named by activeSpriteIndex ($8A00 + n*64) and colours it medium
|
|
; grey; it is the plain battlefield cursor ($21A8) and sprite 1's marker ($2550).
|
|
cursorBlockShape:
|
|
.byte $00,$00,$00 ; 9E92 ........................
|
|
.byte $78,$00,$00 ; 9E95 .####...................
|
|
.byte $78,$00,$00 ; 9E98 .####...................
|
|
.byte $78,$00,$00 ; 9E9B .####...................
|
|
.byte $78,$00,$00 ; 9E9E .####...................
|
|
.byte $00,$00,$00 ; 9EA1 ........................
|
|
|
|
|
|
; cursorBoxSprite - a complete 24x21 sprite (21 rows of 3 bytes): an 11x9 hollow rectangle in the
|
|
; middle of the sprite. showCursorBoxSprite ($3306) copies it into sprite 2 by counting X from
|
|
; $3E down to 0 ($330A); it is the normal battlefield centre cursor.
|
|
; This shape and the crosshair that follows are stored back to back and are addressed as one 63-byte
|
|
; pair from $9EA4.
|
|
cursorBoxSprite:
|
|
.byte $00,$00,$00 ; 9EA4 ........................
|
|
.byte $00,$00,$00 ; 9EA7 ........................
|
|
.byte $00,$00,$00 ; 9EAA ........................
|
|
.byte $00,$00,$00 ; 9EAD ........................
|
|
.byte $00,$00,$00 ; 9EB0 ........................
|
|
.byte $00,$00,$00 ; 9EB3 ........................
|
|
.byte $03,$FF,$80 ; 9EB6 ......###########.......
|
|
.byte $03,$01,$80 ; 9EB9 ......##.......##.......
|
|
.byte $03,$01,$80 ; 9EBC ......##.......##.......
|
|
.byte $03,$01,$80 ; 9EBF ......##.......##.......
|
|
.byte $03,$01,$80 ; 9EC2 ......##.......##.......
|
|
.byte $03,$01,$80 ; 9EC5 ......##.......##.......
|
|
.byte $03,$01,$80 ; 9EC8 ......##.......##.......
|
|
.byte $03,$01,$80 ; 9ECB ......##.......##.......
|
|
.byte $03,$FF,$80 ; 9ECE ......###########.......
|
|
.byte $00,$00,$00 ; 9ED1 ........................
|
|
.byte $00,$00,$00 ; 9ED4 ........................
|
|
.byte $00,$00,$00 ; 9ED7 ........................
|
|
.byte $00,$00,$00 ; 9EDA ........................
|
|
.byte $00,$00,$00 ; 9EDD ........................
|
|
.byte $00,$00,$00 ; 9EE0 ........................
|
|
|
|
|
|
; crosshairSprite - the second 63-byte shape of the pair: a diamond with a vertical stem above and
|
|
; below and a horizontal tick each side. showCrosshairSprite ($3302) selects it by loading X with
|
|
; $7D, i.e. $9EA4 + $3F, and copying 63 bytes down into sprite 2; it marks the target of a shot.
|
|
crosshairSprite:
|
|
.byte $00,$00,$00 ; 9EE3 ........................
|
|
.byte $00,$00,$00 ; 9EE6 ........................
|
|
.byte $00,$00,$00 ; 9EE9 ........................
|
|
.byte $00,$00,$00 ; 9EEC ........................
|
|
.byte $00,$10,$00 ; 9EEF ...........#............
|
|
.byte $00,$10,$00 ; 9EF2 ...........#............
|
|
.byte $00,$38,$00 ; 9EF5 ..........###...........
|
|
.byte $00,$44,$00 ; 9EF8 .........#...#..........
|
|
.byte $00,$82,$00 ; 9EFB ........#.....#.........
|
|
.byte $01,$01,$00 ; 9EFE .......#.......#........
|
|
.byte $07,$01,$C0 ; 9F01 .....###.......###......
|
|
.byte $01,$01,$00 ; 9F04 .......#.......#........
|
|
.byte $00,$82,$00 ; 9F07 ........#.....#.........
|
|
.byte $00,$44,$00 ; 9F0A .........#...#..........
|
|
.byte $00,$38,$00 ; 9F0D ..........###...........
|
|
.byte $00,$10,$00 ; 9F10 ...........#............
|
|
.byte $00,$10,$00 ; 9F13 ...........#............
|
|
.byte $00,$00,$00 ; 9F16 ........................
|
|
.byte $00,$00,$00 ; 9F19 ........................
|
|
.byte $00,$00,$00 ; 9F1C ........................
|
|
.byte $00,$00,$00 ; 9F1F ........................
|
|
|
|
|
|
; comcenCrossMarkerShape - 21 bytes = seven sprite rows drawing a plus. showComcenCrossMarker ($338A,
|
|
; LDY #$14) copies them into rows 7-13 of sprite 2 at $8A95 and colours the sprite light red; overlay
|
|
; B calls it at $75B6 to mark the comcen on the strategic grid. Only seven rows are written, so the
|
|
; rest of the sprite keeps whatever was there.
|
|
comcenCrossMarkerShape:
|
|
.byte $00,$0C,$00 ; 9F22 ............##..........
|
|
.byte $00,$0C,$00 ; 9F25 ............##..........
|
|
.byte $00,$0C,$00 ; 9F28 ............##..........
|
|
.byte $00,$7F,$80 ; 9F2B .........########.......
|
|
.byte $00,$0C,$00 ; 9F2E ............##..........
|
|
.byte $00,$0C,$00 ; 9F31 ............##..........
|
|
.byte $00,$0C,$00 ; 9F34 ............##..........
|
|
|
|
|
|
; The circle generator's four pointer tables and its step count, 10 entries each, indexed by radius-1
|
|
; (radii 1 to 10). drawCircleInSprite ($3239) copies them into zero page: dx pointer
|
|
; -> zp_AD/AE ($323D/$3242), dy pointer -> zp_AF/B0 ($3247/$324C), step count -> circleStepsLeft
|
|
; ($3251). It then walks one octant and mirrors every point eight ways about the sprite centre
|
|
; (12,10) in computeCircleOctantPoints ($3266), plotting with the mode in spritePlotMode. Used for
|
|
; unit range rings and the blob markers on the drone and missile screens ($3471, $3D13, $3D43,
|
|
; $7190-$71DA).
|
|
; circleDxPtrLoTable - low bytes of the ten dx lists: $9F69, $9F6F, $9F73, $9F79, $9F7F, $9F8B,
|
|
; $9F97, $9FA1, $9FAF, $9FBF. This is one half of a split pointer table - the high bytes are in
|
|
; circleDxPtrHiTable at $9F41 - so it is left as bytes rather than typed as addresses.
|
|
circleDxPtrLoTable:
|
|
.byte $69,$6F,$73,$79,$7F,$8B,$97,$A1,$AF,$BF; 9F37 iosy...... radii 1-10
|
|
|
|
; circleDxPtrHiTable - the high bytes of the same ten dx pointers, all $9F (every list lives in this
|
|
; page). The low bytes are at $9F37; read at $3242.
|
|
circleDxPtrHiTable:
|
|
.byte $9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F; 9F41 .......... radii 1-10, all $9F
|
|
|
|
; circleDyPtrLoTable - low bytes of the ten dy lists: $9F6C, $9F71, $9F76, $9F7C, $9F85, $9F91,
|
|
; $9F9C, $9FA8, $9FB7, $9FC8. High bytes in circleDyPtrHiTable at $9F55; read at $3247.
|
|
circleDyPtrLoTable:
|
|
.byte $6C,$71,$76,$7C,$85,$91,$9C,$A8,$B7,$C8; 9F4B lqv|...... radii 1-10
|
|
|
|
; circleDyPtrHiTable - high bytes of the ten dy pointers, all $9F; read at $324C.
|
|
circleDyPtrHiTable:
|
|
.byte $9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F; 9F55 .......... radii 1-10, all $9F
|
|
|
|
; circleStepCountTable - the index of the last point of each radius' octant, so the number of points
|
|
; is this value plus one: 3, 2, 3, 3, 6, 6, 5, 7, 8, 9 for radii 1 to 10. drawCircleInSprite loads it
|
|
; into circleStepsLeft ($91F2) at $3251 and counts down to zero, so radius 1 plots a filled 3x3 dot
|
|
; and radius 10 a ring that fills all 21 rows of the sprite.
|
|
circleStepCountTable:
|
|
.byte $02,$01,$02,$02,$05,$05,$04,$06,$07,$08; 9F5F .......... radii 1-10
|
|
|
|
; The twenty point lists themselves, laid out radius by radius with each radius' dx list immediately
|
|
; followed by its dy list, filling $9F69-$9FD0 exactly. Point k of a radius is (dx[k], dy[k])
|
|
; measured from the sprite centre (12,10); the plotter mirrors it into all eight octants, so a list of
|
|
; n points draws up to 8n pixels. Each radius prints as two lines below, the dx list then the dy
|
|
; list. Radius 1: dx 00,01,01 / dy 00,00,01 - three points that mirror into a filled 3x3 dot
|
|
circleDeltasRadius1:
|
|
.byte $00,$01,$01 ; 9F69 ... dx list, then dy list
|
|
.byte $00,$00,$01 ; 9F6C ...
|
|
|
|
; Radius 2: dx 02,02 / dy 00,01
|
|
circleDeltasRadius2:
|
|
.byte $02,$02 ; 9F6F .. dx list, then dy list
|
|
.byte $00,$01 ; 9F71 ..
|
|
|
|
; Radius 3: dx 03,03,02 / dy 00,01,02
|
|
circleDeltasRadius3:
|
|
.byte $03,$03,$02 ; 9F73 ... dx list, then dy list
|
|
.byte $00,$01,$02 ; 9F76 ...
|
|
|
|
; Radius 4: dx 04,04,03 / dy 00,01,02
|
|
circleDeltasRadius4:
|
|
.byte $04,$04,$03 ; 9F79 ... dx list, then dy list
|
|
.byte $00,$01,$02 ; 9F7C ...
|
|
|
|
; Radius 5: dx 05,05,05,04,04,03 / dy 00,01,02,02,03,03
|
|
circleDeltasRadius5:
|
|
.byte $05,$05,$05,$04,$04,$03 ; 9F7F ...... dx list, then dy list
|
|
.byte $00,$01,$02,$02,$03,$03 ; 9F85 ......
|
|
|
|
; Radius 6: dx 06,06,06,05,05,04 / dy 00,01,02,05,03,04 - the fourth point is wrong, see below Point 3
|
|
; is (5,5), which is 7.07 from the centre while every other point of this list is within a pixel of 6;
|
|
; rendering the ring shows it as four stray dots just outside the circle. It looks like a typo for
|
|
; (5,3) in the original data (probably - nothing in the code corrects it, so the radius-6 ring really
|
|
; does draw them).
|
|
circleDeltasRadius6:
|
|
.byte $06,$06,$06,$05,$05,$04 ; 9F8B ...... dx list, then dy list
|
|
.byte $00,$01,$02,$05,$03,$04 ; 9F91 ......
|
|
|
|
; Radius 7: dx 07,07,07,06,05 / dy 00,01,02,03,04
|
|
circleDeltasRadius7:
|
|
.byte $07,$07,$07,$06,$05 ; 9F97 ..... dx list, then dy list
|
|
.byte $00,$01,$02,$03,$04 ; 9F9C .....
|
|
|
|
; Radius 8: dx 08,08,08,07,06,06,05 / dy 00,01,02,03,04,05,05
|
|
circleDeltasRadius8:
|
|
.byte $08,$08,$08,$07,$06,$06,$05; 9FA1 ....... dx list, then dy list
|
|
.byte $00,$01,$02,$03,$04,$05,$05; 9FA8 .......
|
|
|
|
; Radius 9: dx 09,09,09,08,08,07,07,06 / dy 00,01,02,03,04,04,05,06
|
|
circleDeltasRadius9:
|
|
.byte $09,$09,$09,$08,$08,$07,$07,$06; 9FAF ........ dx list, then dy list
|
|
.byte $00,$01,$02,$03,$04,$04,$05,$06; 9FB7 ........
|
|
|
|
; Radius 10: dx 0A,0A,0A,09,09,08,07,07,08 / dy 00,01,02,03,04,05,06,07,06
|
|
circleDeltasRadius10:
|
|
.byte $0A,$0A,$0A,$09,$09,$08,$07,$07,$08; 9FBF ......... dx list, then dy list
|
|
.byte $00,$01,$02,$03,$04,$05,$06,$07,$06; 9FC8 .........
|
|
|
|
; graphicsBlockTail - the 47 bytes from the end of the circle lists to the end of track 28 sector 12,
|
|
; which is where the block stops being data the game uses. Nothing reads them: no label in
|
|
; $9F69-$9FFF is referenced from any file, and no code anywhere loads $9F as a pointer high byte
|
|
; except for the circle tables above. The bytes are 21 x $00, 18 x $FF and a handful of strays ($3F
|
|
; four times, $33, $C0, $F3, $30) in an alternating $FF,$00 pattern - a fragment of some bitmap, left
|
|
; in the mastering machine's memory when the sector was written. The tail of the $8800 message block
|
|
; ($897F-$89FF) is filled with the same kind of alternating pattern, but the bytes are not identical,
|
|
; and this exact sequence appears nowhere else on the disk. The listing splits the run at $9FE8 only
|
|
; because the boot loader's title-screen RAM, which occupies the same addresses before the game loads,
|
|
; is labelled there.
|
|
graphicsBlockTail:
|
|
.byte $FF,$00,$FF,$00,$3F,$00,$3F,$00,$FF,$00,$FF,$00,$FF,$00,$33,$FF,$00,$FF,$00,$FF,$00,$FF,$C0; 9FD1 ....?.?.......3........ filler to the end of the sector
|
|
|
|
; The last 24 bytes of the same filler run (see graphicsBlockTail above); $A000 is the end of the
|
|
; track 28 data block and the start of the bitmap.
|
|
.byte $FF,$00,$FF,$00,$FF,$00,$FF,$00; 9FE8 ........
|
|
.byte $00,$F3,$00,$3F,$00,$3F,$30,$FF; 9FF0 ...?.?0.
|
|
.byte $00,$FF,$00,$FF,$00,$FF,$00,$FF; 9FF8 ........
|