; ============================================================================ ; LOAD ($A000-$BF3F) - title picture multicolour bitmap (8000 bytes, VIC bank 2, $D011=$3B, $D016=$D8) ; ============================================================================ ; Displayed by the boot loader while the game loads. $BF40-$BFFF is padding. .setcpu "6502" .include "c64.inc" .include "kernal.inc" .include "zeropage.inc" .org $A000 ; titleBitmap - the 8000-byte multicolour bitmap of the title picture, $A000-$BF3F. It is bytes ; $0800-$27FF of the 11264-byte directory file 'load' (tracks 19-21, not encrypted), which the ; stage-1 stub at $02B8 KERNAL-LOADs to $9800-$C3FF - into the RAM under the ROMs - so the picture ; arrives already at the address the VIC reads it from: no code ever copies it. Layout is the VIC's ; own: 25 character rows of 40 cells, 8 consecutive bytes per cell (one byte per pixel row of that ; cell), so cell (row,col) is at $A000 + 320*row + 8*col and every line below is one 8x8 cell. Each ; byte holds four 2-bit pixels (leftmost in bits 7-6): %00 = background $D021 (black, set at $C14E), ; %01 = the high nibble of titleScreenRam[cell], %10 = its low nibble, %11 = the low nibble of ; titleColorRam[cell]. bootShowTitlePicture ($C23F) copies those two 1000-byte tables from ; $9800 -> COLOR_RAM and $9C00 -> $8C00, selects VIC bank 2 (CIA2_PRA = $05) and sets VIC_CTRL2 = $D8 ; (multicolour), VIC_MEM_PTR = $38 (video matrix $8C00, bitmap $A000) and VIC_CTRL1 = $3B (bitmap on). ; The CPU still has BASIC ROM banked in over $A000-$BFFF at that moment - only the VIC, which always ; sees RAM, can read these bytes; the game switches to $01 = $35 later. The picture: Dan Bunten's name ; over the 'MODEM WARS' logo, a striding walker tank firing (a second walker behind it on the left, ; its shot crossing the logo), an explosion and smoke on the right, and the copyright line along the ; bottom. docs/titleScreen.png is these bytes decoded. No CPU code in the shipped game reads or ; writes the picture: it is shown while the disk loads and then thrown away. From $0800 on this is ; simply the game's own display bitmap - initBitmapScreen ($2D41) clears $A000-$BF3F (and stops there, ; because $BFB0-$BFFF holds the map row tables). The three labels inside the picture (titleBitmapAAEA, ; titleBitmapBAA2, titleBitmapBAA3) are not data: they are the operands of dead or patched ; instructions in the boot loader - see each one. Row 0 (pixel rows 0-7): sky (light blue) across ; columns 0-31, the yellow caption "DAN BUNTEN'S" starting on pixel row 5 in columns 13-25, and the ; grey-black smoke column in columns 26-39. titleBitmap: .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; A000 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; A008 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; A010 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; A018 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; A020 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; A028 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; A030 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; A038 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; A040 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; A048 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; A050 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; A058 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; A060 ........ .byte $FF,$FF,$FF,$FF,$FF,$FD,$FD,$FD; A068 ........ .byte $FF,$FF,$FF,$FF,$FF,$4F,$11,$11; A070 .....O.. .byte $FF,$FF,$FF,$FF,$FF,$4D,$11,$11; A078 .....M.. .byte $FF,$FF,$FF,$FF,$FF,$4F,$13,$13; A080 .....O.. .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; A088 ........ .byte $FF,$FF,$FF,$FF,$FF,$53,$44,$50; A090 .....SDP .byte $FF,$FF,$FF,$FF,$FF,$44,$44,$44; A098 .....DDD .byte $FF,$FF,$FF,$FF,$FF,$53,$44,$44; A0A0 .....SDD .byte $FF,$FF,$FF,$FF,$FF,$54,$10,$D3; A0A8 .....T.. .byte $FF,$FF,$FF,$FF,$FF,$54,$40,$54; A0B0 .....T@T .byte $FF,$FF,$FF,$FF,$FF,$53,$44,$44; A0B8 .....SDD .byte $FF,$FF,$FF,$FF,$FF,$4D,$44,$05; A0C0 .....MD. .byte $F1,$F1,$FC,$FC,$FC,$8F,$0F,$8F; A0C8 ........ .byte $29,$25,$C5,$C0,$C0,$30,$30,$30; A0D0 )%...000 .byte $FF,$FF,$FF,$0F,$0E,$7F,$73,$40; A0D8 ......s@ .byte $FC,$FF,$FF,$FF,$F7,$5D,$F7,$D7; A0E0 .....].. .byte $C0,$3C,$43,$CC,$FF,$FC,$7F,$D7; A0E8 ..C..P .byte $BF,$7F,$55,$9F,$67,$97,$2B,$2B; ACF0 ..U.g.++ .byte $AA,$AA,$FF,$FD,$F5,$F5,$F5,$F5; ACF8 ........ .byte $FF,$FF,$D5,$4F,$4F,$4A,$4A,$4A; AD00 ...OOJJJ .byte $FF,$FF,$AA,$FF,$FF,$55,$55,$55; AD08 .....UUU .byte $55,$55,$00,$AA,$55,$FF,$FF,$FF; AD10 UU..U... .byte $FF,$FF,$00,$40,$54,$F5,$A7,$A7; AD18 ...@T... .byte $FF,$FF,$00,$00,$3F,$40,$56,$56; AD20 ....?@VV .byte $50,$50,$0B,$52,$09,$A5,$FF,$FF; AD28 PP.R.... .byte $0A,$02,$40,$F4,$5F,$55,$FF,$FF; AD30 ..@._U.. .byte $FF,$FF,$3F,$03,$80,$58,$56,$56; AD38 ..?..XVV .byte $77,$7F,$FF,$DF,$37,$0F,$03,$80; AD40 w...7... .byte $4F,$4F,$4F,$4F,$4F,$4C,$4F,$4F; AD48 OOOOOLOO .byte $3F,$FF,$C3,$C3,$FF,$FF,$FF,$0F; AD50 ?....... .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; AD58 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; AD60 ........ .byte $3F,$3F,$33,$FF,$33,$3F,$F3,$FF; AD68 ??3.3?.. .byte $F3,$C0,$20,$13,$15,$20,$C8,$20; AD70 .. .. . .byte $C0,$C4,$05,$C0,$CA,$3C,$30,$83; AD78 .....<0. .byte $7C,$6C,$2C,$4F,$5B,$57,$07,$07; AD80 |l,O[W.. .byte $00,$00,$0F,$0C,$A3,$03,$43,$4C; AD88 ......CL .byte $0F,$30,$F1,$F1,$FC,$C0,$04,$05; AD90 .0...... .byte $0C,$10,$1C,$00,$03,$1C,$90,$80; AD98 ........ .byte $0F,$F0,$40,$40,$00,$03,$43,$82; ADA0 ..@@..C. .byte $FC,$01,$00,$00,$3F,$F0,$00,$FF; ADA8 ....?... .byte $00,$04,$28,$80,$13,$13,$3F,$3F; ADB0 ..(...?? .byte $30,$8C,$80,$DC,$10,$04,$70,$40; ADB8 0.....p@ ; Row 11 (pixel rows 88-95): hull; explosion in columns 30-39. .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; ADC0 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; ADC8 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; ADD0 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; ADD8 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; ADE0 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; ADE8 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; ADF0 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; ADF8 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; AE00 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; AE08 ........ .byte $A7,$9D,$75,$77,$DF,$DF,$7C,$F0; AE10 ..uw..|. .byte $55,$5F,$FF,$FF,$F0,$F0,$0A,$AA; AE18 U_...... .byte $FF,$FF,$FF,$FF,$00,$00,$55,$55; AE20 ......UU .byte $70,$5C,$5C,$5C,$1F,$1F,$FF,$F0; AE28 p\\\.... .byte $0B,$0B,$13,$13,$04,$04,$FF,$E5; AE30 ........ .byte $F5,$F5,$F5,$BD,$AD,$AD,$AA,$00; AE38 ........ .byte $C5,$C5,$C5,$C0,$C3,$C7,$B8,$28; AE40 .......( .byte $FF,$FF,$FF,$03,$54,$54,$55,$00; AE48 ....TTU. .byte $FF,$FF,$FF,$FF,$03,$03,$54,$15; AE50 ......T. .byte $A6,$F6,$F7,$F7,$F7,$F7,$37,$47; AE58 ......7G .byte $F5,$B7,$A7,$E6,$F6,$F7,$F7,$F7; AE60 ........ .byte $FF,$A5,$F9,$FE,$7F,$5F,$D5,$F5; AE68 ....._.. .byte $55,$FF,$FF,$BF,$6F,$6F,$5A,$D5; AE70 U...ooZ. .byte $57,$FF,$FD,$FF,$D5,$D5,$FD,$B5; AE78 W....... .byte $F0,$5C,$54,$F7,$F9,$F9,$FA,$FA; AE80 .\T..... .byte $4F,$43,$4F,$0F,$43,$83,$80,$E0; AE88 OCO.C... .byte $3F,$FF,$FF,$FF,$FF,$FF,$FF,$FF; AE90 ?....... .byte $FF,$FF,$FF,$FF,$FF,$FC,$FC,$F3; AE98 ........ .byte $FC,$FF,$3F,$F3,$C0,$FC,$F3,$FF; AEA0 ..?..... .byte $33,$C3,$03,$3F,$FC,$0F,$F0,$C0; AEA8 3..?.... .byte $CA,$CF,$C0,$C4,$F2,$F0,$F1,$F1; AEB0 ........ .byte $C0,$0D,$05,$23,$AF,$16,$03,$2C; AEB8 ...#..., .byte $12,$10,$16,$3F,$3C,$00,$20,$30; AEC0 ...?<. 0 .byte $CA,$F0,$70,$31,$3C,$1C,$0C,$0F; AEC8 ..p1<... .byte $50,$02,$49,$54,$03,$CC,$FE,$2C; AED0 P.IT..., .byte $23,$04,$08,$FA,$03,$37,$35,$40; AED8 #....75@ .byte $43,$70,$C0,$30,$40,$0B,$49,$70; AEE0 Cp.0@.Ip .byte $00,$00,$32,$3C,$34,$35,$0F,$3F; AEE8 ..2<45.? .byte $01,$27,$FE,$56,$55,$FF,$BE,$FA; AEF0 .'.VU... .byte $C2,$C4,$0C,$C0,$00,$50,$80,$20; AEF8 .....P. ; Row 12 (pixel rows 96-103): the underside of the hull; explosion in columns 31-39. .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; AF00 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; AF08 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; AF10 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; AF18 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; AF20 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; AF28 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; AF30 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$F5; AF38 ........ .byte $FF,$FF,$4F,$0F,$FF,$68,$40,$96; AF40 ..O..h@. .byte $FF,$FD,$E4,$E0,$C0,$FF,$65,$09; AF48 ......e. .byte $4F,$3F,$7F,$7F,$7C,$7C,$1C,$07; AF50 O?..||.. .byte $FC,$C0,$15,$15,$03,$43,$7F,$F0; AF58 .....C.. .byte $00,$6A,$FF,$FF,$C1,$C1,$55,$00; AF60 .j....U. .byte $00,$AA,$FF,$FF,$F1,$F1,$55,$00; AF68 ......U. .byte $00,$55,$7F,$7F,$70,$70,$AA,$00; AF70 .U..pp.. .byte $00,$FF,$BF,$BF,$B0,$B0,$55,$00; AF78 ......U. .byte $01,$AA,$FF,$FF,$70,$70,$55,$00; AF80 ....ppU. .byte $55,$AA,$FF,$FF,$7C,$7C,$55,$00; AF88 U...||U. .byte $41,$F4,$FF,$FF,$FF,$57,$55,$05; AF90 A....WU. .byte $F0,$3F,$4F,$43,$50,$55,$F5,$FF; AF98 .?OCPU.. .byte $1D,$CD,$F1,$FC,$3F,$0F,$43,$54; AFA0 ....?.CT .byte $FF,$FF,$FF,$FF,$3F,$43,$54,$55; AFA8 ....?CTU .byte $5F,$D7,$F5,$FD,$FF,$FF,$FF,$3F; AFB0 _......? .byte $EF,$FB,$FC,$7C,$5A,$E3,$D5,$FF; AFB8 ...|Z... .byte $AD,$AD,$FF,$FF,$F0,$85,$00,$10; AFC0 ........ .byte $60,$78,$D8,$DA,$1E,$17,$CF,$4F; AFC8 `x.....O .byte $3F,$3F,$0F,$0C,$03,$40,$83,$43; AFD0 ??...@.C .byte $FF,$3F,$3F,$F0,$00,$C3,$0F,$FC; AFD8 .??..... .byte $0F,$FF,$FF,$03,$FC,$30,$C0,$01; AFE0 .....0.. .byte $0C,$FF,$FC,$FF,$00,$00,$55,$55; AFE8 ......UU .byte $0C,$FC,$00,$FF,$00,$00,$55,$55; AFF0 ......UU .byte $5A,$44,$4A,$00,$01,$3D,$FC,$FF; AFF8 ZDJ..=.. .byte $30,$C3,$35,$7D,$37,$13,$2B,$AE; B000 0.5}7.+. .byte $0E,$0E,$02,$C3,$C7,$8D,$C1,$4C; B008 .......L .byte $12,$1D,$F2,$DE,$C8,$FD,$7C,$74; B010 ......|t .byte $0C,$48,$1D,$03,$38,$F2,$53,$DD; B018 .H..8.S. .byte $F0,$04,$FC,$80,$C1,$7C,$66,$58; B020 .....|fX .byte $FF,$C2,$70,$40,$42,$CD,$1B,$21; B028 ..p@B..! .byte $13,$31,$31,$8A,$00,$DC,$20,$0C; B030 .11... . .byte $C0,$F0,$F0,$10,$94,$F0,$C0,$00; B038 ........ ; Row 13 (pixel rows 104-111): sky in columns 0-6, the hull ending in columns 7-26, sky again in ; columns 27-31, explosion in columns 32-39. .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B040 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B048 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B050 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B058 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B060 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B068 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FD; B070 ........ .byte $9E,$9E,$BF,$4B,$53,$30,$78,$4F; B078 ...KS0xO .byte $FF,$F5,$DD,$FF,$DF,$FD,$F5,$37; B080 .......7 .byte $73,$FC,$5F,$7F,$F5,$5D,$FD,$DF; B088 s._..].. .byte $C1,$71,$1C,$CC,$47,$5F,$75,$DF; B090 .q..G_u. .byte $FF,$FF,$7F,$1F,$1F,$87,$81,$A0; B098 ........ .byte $FD,$FF,$00,$FF,$FF,$FF,$F0,$B0; B0A0 ........ .byte $7F,$5F,$00,$D7,$F5,$FD,$00,$00; B0A8 ._...... .byte $F5,$FD,$00,$FF,$FF,$7F,$00,$00; B0B0 ........ .byte $FF,$7F,$00,$5F,$D7,$F5,$00,$00; B0B8 ..._.... .byte $FF,$FF,$00,$FF,$FF,$FF,$00,$00; B0C0 ........ .byte $5F,$D7,$00,$F5,$FD,$FF,$00,$00; B0C8 _....... .byte $FF,$FF,$03,$FF,$7F,$5F,$00,$00; B0D0 ....._.. .byte $FF,$FF,$FF,$FF,$FF,$FF,$00,$00; B0D8 ........ .byte $D5,$F5,$FD,$FF,$FF,$FF,$00,$00; B0E0 ........ .byte $3F,$3F,$4F,$53,$D4,$FD,$01,$00; B0E8 ??OS.... .byte $C5,$C5,$F1,$FC,$FF,$FF,$3F,$7F; B0F0 ......?. .byte $D5,$D5,$D5,$FF,$3F,$3F,$2A,$2A; B0F8 ....??** .byte $C3,$C3,$C5,$C6,$C6,$C0,$30,$30; B100 ......00 .byte $27,$27,$27,$27,$27,$27,$0F,$0F; B108 ''''''.. .byte $F0,$F0,$F0,$F0,$F0,$72,$72,$72; B110 .....rrr .byte $44,$50,$00,$03,$FF,$FF,$FF,$FF; B118 DP...... .byte $0F,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B120 ........ .byte $D3,$D3,$C3,$FD,$F4,$D0,$D0,$D8; B128 ........ .byte $FF,$FF,$FF,$3F,$3F,$3D,$FD,$E0; B130 ...??=.. .byte $FD,$FD,$F8,$F4,$F0,$42,$06,$0A; B138 .....B.. .byte $0F,$7E,$7B,$E3,$33,$C5,$D0,$F5; B140 .~{.3... .byte $84,$F0,$E9,$DC,$3A,$DB,$46,$57; B148 ....:.FW .byte $FF,$DC,$3C,$0F,$07,$17,$F3,$8E; B150 ..<..... .byte $FE,$1F,$DF,$BC,$DC,$BC,$F6,$FC; B158 ........ .byte $08,$F1,$B0,$FD,$E7,$CF,$F0,$D7; B160 ........ .byte $0C,$10,$18,$B3,$F8,$C1,$C1,$7C; B168 .......| .byte $08,$F0,$CD,$B8,$E0,$03,$44,$05; B170 ......D. .byte $00,$00,$00,$00,$3C,$30,$00,$00; B178 ....<0.. ; Row 14 (pixel rows 112-119): the hull's belly and the tops of the legs (columns 7-25); the ; background walker's gun appears at columns 5-6; explosion in columns 29-39. .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B180 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B188 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B190 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B198 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B1A0 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FD,$F4; B1A8 ........ .byte $FD,$FD,$FD,$FD,$FD,$FA,$A5,$55; B1B0 .......U .byte $F3,$FC,$55,$FD,$FB,$56,$E5,$BA; B1B8 ..U..V.. .byte $0F,$FE,$E3,$3F,$FF,$67,$FB,$5D; B1C0 ...?.g.] .byte $5D,$5D,$75,$F5,$EF,$6B,$AF,$EF; B1C8 ]]u..k.. .byte $BF,$FD,$AF,$BD,$FF,$59,$55,$55; B1D0 .....YUU .byte $54,$5B,$5F,$D7,$57,$FF,$FF,$FF; B1D8 T[_.W... .byte $7F,$1F,$07,$C1,$F2,$FC,$FC,$FF; B1E0 ........ .byte $FF,$F0,$CF,$C8,$73,$72,$5C,$14; B1E8 ....sr\. .byte $FC,$01,$FF,$00,$FD,$FD,$00,$7F; B1F0 ........ .byte $3F,$35,$3F,$0E,$F3,$F3,$0C,$BF; B1F8 ?5?..... .byte $FF,$AA,$FF,$55,$D5,$D5,$35,$CF; B200 ...U..5. .byte $55,$AA,$55,$FF,$FF,$FF,$FF,$55; B208 U.U....U .byte $55,$A5,$55,$FF,$FF,$FF,$FF,$55; B210 U.U....U .byte $05,$C4,$F1,$FC,$7F,$5F,$57,$FF; B218 ....._W. .byte $F0,$00,$FF,$00,$3F,$4F,$50,$57; B220 ....?OPW .byte $FF,$FF,$0F,$03,$50,$54,$00,$55; B228 ....PT.U .byte $C0,$FC,$FC,$FF,$FF,$00,$0F,$0F; B230 ........ .byte $3F,$00,$0F,$CF,$F0,$00,$FF,$FF; B238 ?....... .byte $00,$05,$F0,$F3,$03,$03,$03,$C3; B240 ........ .byte $8B,$3E,$3D,$F5,$36,$F6,$F5,$D5; B248 .>=.6... .byte $52,$52,$52,$D2,$F2,$F2,$F2,$FC; B250 RRR..... .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B258 ........ .byte $FF,$FF,$F4,$D0,$D1,$C1,$FC,$FF; B260 ........ .byte $C2,$C8,$FB,$F1,$60,$15,$04,$C0; B268 ....`... .byte $43,$3C,$F3,$85,$00,$08,$10,$12; B270 C<...... .byte $54,$C7,$44,$77,$00,$1C,$BB,$2F; B278 T.Dw.../ .byte $13,$1B,$C4,$25,$08,$0F,$F0,$C5; B280 ...%.... .byte $EB,$D7,$7C,$40,$DC,$F0,$03,$0F; B288 ..|@.... .byte $DF,$D3,$A3,$0F,$FF,$CC,$F0,$CC; B290 ........ .byte $FF,$F3,$FF,$FF,$FF,$B7,$3F,$DF; B298 ......?. .byte $70,$BC,$CF,$FF,$FC,$FF,$FF,$37; B2A0 p......7 .byte $51,$3F,$C0,$D7,$DF,$50,$72,$CF; B2A8 Q?...Pr. .byte $50,$3C,$3F,$00,$93,$23,$02,$00; B2B0 P./. .byte $DC,$DD,$FF,$F7,$FF,$FD,$3F,$FF; B390 ......?. .byte $FF,$3F,$3F,$4F,$8F,$93,$63,$64; B398 .??O..cd .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B3A0 ........ .byte $F0,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B3A8 ........ .byte $4F,$8C,$B0,$32,$72,$4C,$70,$70; B3B0 O..2rLpp .byte $70,$4C,$40,$03,$33,$C0,$02,$09; B3B8 pL@.3... .byte $54,$70,$03,$4E,$2E,$17,$83,$0F; B3C0 Tp.N.... .byte $2F,$BD,$F4,$D2,$4E,$3F,$31,$FF; B3C8 /...N?1. .byte $0F,$3C,$FC,$F3,$70,$3D,$93,$E3; B3D0 .<..p=.. .byte $DF,$BF,$33,$3C,$FF,$37,$3F,$37; B3D8 ..3<.7?7 .byte $BD,$FF,$CC,$FF,$F0,$3C,$FF,$C3; B3E0 .....<.. .byte $30,$13,$44,$3F,$00,$34,$4C,$80; B3E8 0.D?.4L. .byte $25,$C4,$CF,$0F,$0C,$14,$C4,$F0; B3F0 %....... .byte $A5,$AF,$15,$3F,$25,$2D,$CF,$EF; B3F8 ...?%-.. ; Row 16 (pixel rows 128-135): the background walker (columns 4-16), sky between the big walker's legs ; (columns 17-25), explosion in columns 31-39. .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B400 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B408 ........ .byte $FC,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B410 ........ .byte $44,$14,$05,$C1,$F0,$FC,$FF,$FF; B418 D....... .byte $CA,$31,$41,$DC,$F3,$0C,$03,$A0; B420 .1A..... .byte $CD,$07,$3C,$3D,$01,$80,$20,$C8; B428 ..<=.. . .byte $9F,$77,$7F,$1B,$8F,$73,$3F,$0F; B430 .w...s?. .byte $D5,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B438 ........ .byte $7F,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B440 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B448 ........ .byte $FF,$FC,$FF,$FF,$FF,$FF,$FD,$FC; B450 ........ .byte $FF,$00,$FF,$FF,$CC,$FC,$33,$F0; B458 ......3. .byte $30,$00,$0C,$CF,$CF,$0F,$30,$FC; B460 0.....0. .byte $F0,$03,$F3,$F0,$C0,$01,$05,$C5; B468 ........ .byte $3C,$0F,$0F,$03,$03,$00,$54,$55; B470 <.....TU .byte $00,$00,$80,$E5,$F5,$F9,$F5,$3D; B478 .......= .byte $12,$04,$04,$FE,$FE,$FF,$FF,$FF; B480 ........ .byte $FF,$FF,$FF,$3F,$3F,$4F,$4F,$93; B488 ...??OO. .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B490 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B498 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B4A0 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B4A8 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B4B0 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B4B8 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B4C0 ........ .byte $C6,$F2,$F1,$FC,$FC,$FF,$FF,$FF; B4C8 ........ .byte $E5,$F5,$F9,$FD,$BE,$3F,$2F,$4F; B4D0 .....?/O .byte $FC,$DD,$FF,$F7,$FD,$FD,$3F,$FF; B4D8 ......?. .byte $FF,$3F,$3F,$8F,$4F,$63,$53,$98; B4E0 .??.OcS. .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B4E8 ........ .byte $C3,$C3,$FF,$FE,$F5,$D0,$D0,$C5; B4F0 ........ .byte $A5,$94,$53,$4F,$3C,$F0,$C0,$02; B4F8 ..SO<... .byte $24,$53,$FF,$35,$37,$57,$74,$7F; B500 $S.57Wt. .byte $6F,$70,$B8,$CA,$35,$DD,$CF,$03; B508 op..5... .byte $FF,$0D,$4C,$00,$F3,$04,$16,$14; B510 ..L..... .byte $3C,$CF,$CF,$7F,$FF,$0C,$A5,$FC; B518 <....... .byte $FC,$FC,$7C,$D0,$80,$E3,$07,$F4; B520 ..|..... .byte $C0,$F3,$FE,$33,$33,$3C,$FC,$50; B528 ...33<.P .byte $C0,$C2,$48,$08,$40,$C0,$F0,$4C; B530 ..H.@..L .byte $0F,$0F,$0F,$3F,$0F,$03,$04,$05; B538 ...?.... ; Row 17 (pixel rows 136-143): both walkers' legs over sky; explosion and its falling debris in ; columns 33-39. .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B540 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B548 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B550 ........ .byte $FF,$FF,$FF,$F9,$F5,$F0,$D0,$D4; B558 ........ .byte $90,$77,$7F,$FC,$FC,$F1,$F1,$F1; B560 .w...... .byte $31,$0C,$37,$95,$DF,$7F,$F0,$AA; B568 1.7..... .byte $00,$F5,$37,$CF,$7F,$43,$A2,$80; B570 ..7..C.. .byte $00,$7F,$4F,$4A,$4F,$4F,$45,$00; B578 ..OJOOE. .byte $00,$FF,$5A,$AD,$F9,$FD,$3D,$11; B580 ..Z...=. .byte $00,$F0,$71,$0F,$BF,$BD,$9F,$B7; B588 ..q..... .byte $53,$07,$03,$83,$F3,$AB,$FD,$7D; B590 S......} .byte $CC,$C0,$03,$07,$1C,$1C,$10,$15; B598 ........ .byte $44,$40,$00,$44,$04,$00,$FF,$FF; B5A0 D@.D.... .byte $53,$43,$43,$0F,$FF,$FF,$FF,$FF; B5A8 SCC..... .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B5B0 ........ .byte $24,$C5,$C9,$F1,$F1,$F6,$FA,$F8; B5B8 $....... .byte $FF,$FF,$7F,$7F,$7F,$5E,$9D,$85; B5C0 .....^.. .byte $73,$5C,$BC,$00,$00,$95,$CD,$CD; B5C8 s\...... .byte $FF,$FF,$FF,$FF,$FF,$3F,$3F,$3F; B5D0 .....??? .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B5D8 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B5E0 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B5E8 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B5F0 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B5F8 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B600 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B608 ........ .byte $C6,$F2,$F1,$FC,$FC,$FF,$FF,$FF; B610 ........ .byte $E5,$F5,$F9,$FD,$BE,$3F,$1F,$5F; B618 .....?._ .byte $FC,$DD,$F7,$F5,$FD,$F5,$94,$BC; B620 ........ .byte $FF,$3F,$3F,$4F,$4F,$13,$43,$48; B628 .??OO.CH .byte $C0,$F0,$FF,$FF,$FF,$FF,$FF,$FF; B630 ........ .byte $0F,$3F,$FD,$FD,$FD,$4E,$4C,$0C; B638 .?...NL. .byte $5C,$CC,$74,$DE,$7E,$F7,$48,$FB; B640 \.t.~.H. .byte $01,$3C,$F4,$33,$30,$F1,$23,$CA; B648 .<.30.#. .byte $5F,$FF,$DD,$44,$02,$08,$38,$62; B650 _..D..8b .byte $D4,$E3,$03,$AC,$D7,$40,$1C,$14; B658 .....@.. .byte $07,$2D,$24,$04,$0C,$00,$C0,$C0; B660 .-$..... .byte $C0,$00,$00,$00,$12,$11,$3F,$C0; B668 ......?. .byte $E0,$0D,$00,$F9,$CC,$04,$00,$F0; B670 ........ .byte $0F,$07,$07,$0F,$0B,$03,$03,$03; B678 ........ ; Row 18 (pixel rows 144-151): legs over sky; the brown ridge of the horizon comes in at columns 33-39 ; on pixel row 149. .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B680 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B688 ........ .byte $FF,$FF,$FF,$FC,$FC,$FF,$FC,$FF; B690 ........ .byte $FF,$FF,$3F,$3F,$7C,$44,$00,$00; B698 ..??|D.. .byte $53,$53,$D2,$FC,$7C,$FC,$FF,$FF; B6A0 SS..|... .byte $CE,$04,$3F,$FF,$3F,$0F,$C4,$C1; B6A8 ..?.?... .byte $55,$73,$FF,$FF,$FF,$FF,$FD,$3C; B6B0 Us.....< .byte $55,$11,$FF,$FF,$FF,$FF,$55,$FF; B6B8 U.....U. .byte $4F,$54,$FD,$FF,$FF,$FF,$F2,$FE; B6C0 OT...... .byte $D5,$C5,$31,$4C,$DF,$F7,$3F,$8F; B6C8 ..1L..?. .byte $67,$68,$50,$5D,$6F,$ED,$F0,$FC; B6D0 ghP]o... .byte $4F,$4F,$23,$A3,$93,$93,$13,$63; B6D8 OO#....c .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B6E0 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B6E8 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B6F0 ........ .byte $F4,$F4,$F4,$F2,$FA,$F9,$F9,$E5; B6F8 ........ .byte $42,$42,$42,$FF,$6C,$6C,$5F,$7F; B700 BBB.ll_. .byte $8B,$87,$97,$43,$5F,$00,$0C,$F4; B708 ...C_... .byte $3F,$3F,$3F,$3F,$3F,$3F,$3F,$FF; B710 ???????. .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B718 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B720 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B728 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B730 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B738 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B740 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B748 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; B750 ........ .byte $C0,$C0,$C0,$E0,$E4,$C0,$E5,$D5; B758 ........ .byte $14,$3C,$3C,$3C,$3F,$33,$FC,$9F; B760 .<<. .byte $A7,$5F,$5F,$3F,$7F,$3F,$FF,$FF; B970 .__?.?.. .byte $FE,$FD,$FD,$FD,$FD,$FD,$F5,$F5; B978 ........ .byte $FF,$FF,$FF,$7F,$7F,$7F,$FF,$FF; B980 ........ .byte $73,$73,$71,$71,$C2,$C0,$CA,$CA; B988 ssqq.... .byte $AA,$95,$55,$00,$FF,$00,$FF,$FF; B990 ..U..... .byte $A9,$55,$55,$00,$FF,$00,$FF,$FF; B998 .UU..... .byte $55,$55,$55,$00,$FF,$00,$FF,$FF; B9A0 UUU..... .byte $55,$55,$55,$00,$FF,$00,$FF,$FF; B9A8 UUU..... .byte $55,$55,$55,$00,$FF,$00,$FF,$FF; B9B0 UUU..... .byte $55,$55,$55,$00,$FF,$00,$FF,$FF; B9B8 UUU..... .byte $55,$55,$55,$00,$FF,$00,$FF,$FF; B9C0 UUU..... .byte $FF,$FF,$FF,$00,$55,$02,$56,$5A; B9C8 ....U.VZ .byte $A5,$9F,$7F,$7F,$FF,$FF,$FF,$FF; B9D0 ........ .byte $AA,$F9,$F9,$F5,$F5,$F5,$E5,$E5; B9D8 ........ .byte $FF,$FF,$FF,$FD,$FD,$FD,$FD,$FD; B9E0 ........ .byte $85,$85,$85,$00,$0F,$00,$3F,$3F; B9E8 ......?? .byte $55,$55,$55,$00,$FF,$00,$FF,$FF; B9F0 UUU..... .byte $50,$55,$58,$00,$F0,$00,$FF,$FF; B9F8 PUX..... .byte $F8,$F8,$F0,$00,$63,$0C,$40,$50; BA00 ....c.@P .byte $A4,$40,$14,$40,$80,$0F,$00,$FF; BA08 .@.@.... .byte $0A,$29,$A9,$07,$5F,$5F,$3F,$7F; BA10 .)..__?. .byte $AF,$FF,$FD,$FD,$FE,$FE,$F5,$F5; BA18 ........ .byte $BF,$DF,$7F,$FF,$FC,$FC,$FC,$FC; BA20 ........ .byte $84,$84,$80,$04,$0F,$00,$FF,$FF; BA28 ........ .byte $64,$40,$50,$00,$FF,$00,$F8,$F0; BA30 d@P..... .byte $55,$55,$55,$00,$FF,$00,$FF,$FF; BA38 UUU..... ; Row 21 (pixel rows 168-175): green ground with the white and grey legs and feet. The two labels in ; this row (titleBitmapBAA2/BAA3) belong to dead code - see them. .byte $00,$FF,$FF,$FF,$FF,$FF,$FF,$00; BA40 ........ .byte $00,$FF,$FF,$FF,$FF,$FF,$FF,$00; BA48 ........ .byte $00,$FF,$FF,$FF,$FF,$FF,$FF,$00; BA50 ........ .byte $3F,$33,$73,$43,$4C,$5F,$53,$00; BA58 ?3sCL_S. .byte $00,$3F,$3F,$3F,$3F,$3F,$4F,$40; BA60 .?????O@ .byte $00,$FF,$FF,$FF,$FF,$FF,$FF,$00; BA68 ........ .byte $03,$57,$53,$5F,$5F,$7F,$7F,$2A; BA70 .WS__..* .byte $7F,$6F,$7C,$7C,$FC,$FC,$B8,$48; BA78 .o||...H .byte $00,$3F,$3F,$3F,$FF,$FF,$FF,$00; BA80 .???.... .byte $00,$FF,$FF,$FF,$FF,$FF,$FF,$00; BA88 ........ .byte $00,$FF,$FF,$FF,$FF,$FF,$FF,$00; BA90 ........ .byte $02,$5B,$5A,$5F,$6F,$7F,$BE,$FF; BA98 .[Z_o... .byte $7C,$FC ; BAA0 |. titleBitmapBAA2: .byte $74 ; BAA2 t row 21, column 12, pixel row 2 - four pixels of a grey leg standing on the green ground. In the build the boot loader was cut down from, $BA00 held a sector buffer and this was BAM offset $A2, the first character of the disk id; the truncated leftoverCheckDiskId still reads it at $C3EC, but that routine is unreachable, so this is picture data and nothing else titleBitmapBAA3: .byte $F4,$F0,$F0,$F2,$F0 ; BAA3 ..... the same for BAM offset $A3, the second id character, read by the dead code at $C3E3; then four more pixel bytes to the end of column 12 .byte $03,$5B,$5B,$6F,$6F,$BF,$FF,$FF; BAA8 .[[oo... .byte $FF,$FF,$FF,$FF,$55,$FF,$FF,$FF; BAB0 ....U... .byte $F5,$F5,$F5,$F7,$AF,$FF,$FA,$FA; BAB8 ........ .byte $FF,$FF,$FF,$5F,$47,$11,$01,$32; BAC0 ..._G..2 .byte $40,$4F,$4F,$4F,$4F,$0F,$0F,$00; BAC8 @OOOO... .byte $00,$FF,$FF,$FF,$FF,$FF,$FF,$00; BAD0 ........ .byte $00,$FF,$FF,$FF,$FF,$FF,$FF,$00; BAD8 ........ .byte $00,$FF,$FF,$FF,$FF,$FF,$FF,$00; BAE0 ........ .byte $00,$FF,$FF,$FF,$FF,$FF,$FF,$00; BAE8 ........ .byte $00,$FF,$FF,$FF,$FF,$FF,$FF,$00; BAF0 ........ .byte $00,$FF,$FF,$FF,$FF,$FF,$FF,$00; BAF8 ........ .byte $00,$FF,$FF,$FF,$FF,$FF,$FF,$01; BB00 ........ .byte $07,$AF,$9F,$9F,$BF,$55,$7F,$FF; BB08 .....U.. .byte $FF,$FF,$FF,$FF,$FF,$55,$FE,$FE; BB10 .....U.. .byte $7F,$7F,$7F,$7F,$BF,$B5,$54,$54; BB18 ......TT .byte $FD,$FD,$FD,$FD,$FD,$BD,$34,$34; BB20 ......44 .byte $3F,$00,$3F,$3F,$3F,$3F,$3F,$00; BB28 ?.?????. .byte $FF,$00,$FF,$FF,$FF,$FF,$FF,$00; BB30 ........ .byte $FF,$00,$FF,$FF,$FF,$FF,$FF,$00; BB38 ........ .byte $FD,$01,$FC,$FF,$FF,$FF,$FF,$02; BB40 ........ .byte $CA,$03,$0F,$AD,$B5,$FF,$D5,$57; BB48 .......W .byte $97,$FD,$FF,$FF,$FF,$FF,$5F,$F5; BB50 ......_. .byte $F5,$77,$DF,$F4,$10,$20,$E2,$87; BB58 .w... .. .byte $F4,$F4,$F4,$3C,$FC,$C0,$C0,$C0; BB60 ...<.... .byte $FF,$00,$FF,$FF,$FF,$FF,$FF,$00; BB68 ........ .byte $FF,$01,$FD,$FC,$FF,$FF,$FF,$02; BB70 ........ .byte $FF,$00,$3F,$3F,$FF,$FF,$FF,$00; BB78 ..??.... ; Row 22 (pixel rows 176-183): green ground, feet and their shadows. .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; BB80 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; BB88 ........ .byte $FF,$FF,$FC,$FC,$FF,$FF,$FF,$FF; BB90 ........ .byte $C4,$16,$52,$0C,$FF,$FF,$FF,$FF; BB98 ..R..... .byte $8F,$13,$44,$00,$FF,$FF,$FF,$FF; BBA0 ..D..... .byte $FF,$FF,$FF,$FE,$F5,$F5,$C2,$D4; BBA8 ........ .byte $FF,$FF,$14,$A9,$2D,$3D,$15,$3D; BBB0 ....-=.= .byte $8C,$C0,$C0,$05,$F1,$FC,$FC,$EC; BBB8 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$C0; BBC0 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$00; BBC8 ........ .byte $FF,$FE,$FD,$FE,$F5,$F5,$D4,$E8; BBD0 ........ .byte $7F,$FF,$F5,$42,$A9,$3D,$3D,$15; BBD8 ...B.==. .byte $12,$12,$23,$20,$1F,$9F,$95,$7F; BBE0 ..# .... .byte $FF,$FF,$FF,$8A,$FF,$FF,$55,$FF; BBE8 ......U. .byte $FF,$FF,$FF,$28,$FF,$FF,$55,$FF; BBF0 ...(..U. .byte $85,$8D,$0D,$07,$A1,$A1,$F0,$FC; BBF8 ........ .byte $03,$03,$33,$CF,$F0,$F0,$01,$01; BC00 ..3..... .byte $3F,$3F,$3F,$3F,$3F,$3F,$FF,$FF; BC08 ??????.. .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; BC10 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; BC18 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; BC20 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; BC28 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; BC30 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; BC38 ........ .byte $FD,$F6,$F6,$F9,$D5,$D5,$C4,$AA; BC40 ........ .byte $FF,$FF,$FF,$FF,$55,$55,$10,$FF; BC48 ....UU.. .byte $FE,$FF,$FC,$B8,$58,$58,$50,$FF; BC50 ....XXP. .byte $F3,$F0,$E1,$D1,$D0,$D3,$18,$CA; BC58 ........ .byte $1C,$1C,$1C,$30,$30,$32,$32,$72; BC60 ...0022r .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; BC68 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; BC70 ........ .byte $FF,$FF,$FF,$FF,$FD,$FD,$FC,$FF; BC78 ........ .byte $A5,$A4,$9F,$5F,$FF,$5F,$05,$00; BC80 ..._._.. .byte $98,$EB,$70,$50,$BF,$01,$01,$3D; BC88 ..pP...= .byte $3F,$7F,$5F,$65,$FA,$FF,$FE,$FE; BC90 ?._e.... .byte $C1,$F0,$FC,$3F,$C3,$FC,$E7,$D7; BC98 ...?.... .byte $0F,$0F,$3F,$4F,$4F,$23,$53,$43; BCA0 ..?OO#SC .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; BCA8 ........ .byte $FD,$FC,$FF,$FF,$FF,$FF,$FF,$FF; BCB0 ........ .byte $3F,$3F,$FF,$FF,$FF,$FF,$FF,$FF; BCB8 ??...... ; Row 23 (pixel rows 184-191): ground on pixel rows 184-186, then the yellow copyright line ; 'COPYRIGHT(C) 1988-OZARK SOFTSCAPE' from pixel row 187, columns 5-36. .byte $FF,$FF,$FF,$FF,$00,$FF,$FF,$FF; BCC0 ........ .byte $FF,$FF,$FF,$FF,$00,$FF,$FF,$FF; BCC8 ........ .byte $FF,$FF,$FF,$FF,$00,$FF,$FF,$FF; BCD0 ........ .byte $FF,$FF,$FF,$FF,$00,$FF,$FF,$FF; BCD8 ........ .byte $FF,$F3,$F0,$F0,$00,$FF,$FF,$FF; BCE0 ........ .byte $FC,$FC,$00,$04,$11,$10,$10,$10; BCE8 ........ .byte $16,$16,$00,$0C,$33,$33,$33,$33; BCF0 ....3333 .byte $96,$56,$00,$3C,$33,$33,$33,$3C; BCF8 .V.<333< .byte $00,$00,$00,$33,$33,$33,$33,$0C; BD00 ...3333. .byte $00,$02,$01,$3C,$33,$33,$33,$3C; BD08 ...<333< .byte $54,$54,$00,$3F,$0C,$0C,$0C,$0C; BD10 TT.?.... .byte $94,$96,$41,$0C,$33,$30,$33,$33; BD18 ..A.3033 .byte $95,$55,$00,$33,$33,$33,$3F,$33; BD20 .U.333?3 .byte $02,$16,$00,$3F,$0C,$0C,$4C,$4C; BD28 ...?..LL .byte $FF,$FF,$FC,$01,$04,$84,$C4,$C4; BD30 ........ .byte $FF,$FF,$C3,$01,$10,$44,$40,$40; BD38 .....D@@ .byte $F4,$FD,$FD,$3F,$80,$8F,$85,$85; BD40 ...?.... .byte $FF,$3F,$03,$84,$94,$84,$84,$84; BD48 .?...... .byte $FF,$FF,$C3,$04,$11,$11,$05,$01; BD50 ........ .byte $FF,$FF,$C3,$04,$11,$04,$11,$11; BD58 ........ .byte $FF,$FF,$C3,$04,$11,$04,$11,$11; BD60 ........ .byte $FF,$FF,$FF,$FC,$3C,$00,$3C,$3C; BD68 ....<.<< .byte $FF,$FF,$03,$10,$44,$44,$44,$44; BD70 ....DDDD .byte $FF,$FE,$00,$54,$04,$04,$10,$40; BD78 ...T...@ .byte $55,$AA,$01,$30,$CC,$CC,$CC,$FC; BD80 U..0.... .byte $AA,$55,$01,$F0,$CC,$CC,$CC,$F0; BD88 .U...... .byte $A8,$54,$00,$CC,$CC,$CC,$CC,$F0; BD90 .T...... .byte $C0,$F0,$FF,$FF,$FF,$55,$00,$FF; BD98 .....U.. .byte $12,$12,$40,$0F,$30,$3F,$03,$03; BDA0 ..@.0?.. .byte $FF,$FF,$C3,$04,$11,$11,$11,$11; BDA8 ........ .byte $FF,$FF,$00,$15,$10,$10,$14,$10; BDB0 ........ .byte $FF,$FF,$00,$15,$04,$04,$C4,$C4; BDB8 ........ .byte $50,$55,$40,$0F,$30,$3F,$03,$03; BDC0 PU@.0?.. .byte $3E,$FC,$C0,$05,$10,$10,$10,$10; BDC8 >....... .byte $54,$04,$00,$0C,$33,$33,$33,$3F; BDD0 T...333? .byte $65,$6A,$00,$3C,$33,$33,$33,$3C; BDD8 ej.<333< .byte $60,$60,$00,$3F,$30,$30,$3C,$30; BDE0 ``.?00<0 .byte $03,$00,$00,$00,$00,$00,$C0,$00; BDE8 ........ .byte $FF,$00,$00,$00,$00,$00,$00,$00; BDF0 ........ .byte $FF,$00,$00,$00,$00,$00,$00,$00; BDF8 ........ ; Row 24 (pixel rows 192-199): the copyright line finishes on pixel row 193, green ground below. This ; row is also where the older build whose remains start at $BF40 kept code ($BE93, $BEA7) and the ; ten-byte serial it copied from $BE30 - the picture overwrote all of it. .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; BE00 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; BE08 ........ .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF; BE10 ........ .byte $FF,$FF,$FC,$FC,$FF,$FF,$FF,$FF; BE18 ........ .byte $FC,$C0,$00,$0F,$FF,$FF,$FF,$FF; BE20 ........ .byte $11,$04,$C0,$FF,$FF,$FF,$FF,$FF; BE28 ........ .byte $11,$04,$C0,$FF,$FF,$FF,$FF,$FF; BE30 ........ .byte $10,$10,$03,$FF,$FF,$FF,$FF,$FF; BE38 ........ .byte $C4,$C4,$C0,$FF,$FF,$FF,$FF,$FF; BE40 ........ .byte $11,$11,$00,$FF,$FF,$FC,$FC,$C0; BE48 ........ .byte $04,$15,$00,$AF,$BF,$3F,$00,$00; BE50 .....?.. .byte $22,$08,$C0,$FF,$FF,$55,$00,$00; BE58 "....U.. .byte $11,$11,$00,$F2,$C2,$C0,$00,$00; BE60 ........ .byte $48,$48,$00,$5F,$0F,$0F,$00,$00; BE68 HH._.... .byte $C8,$C8,$F2,$FC,$FF,$55,$00,$00; BE70 .....U.. .byte $44,$10,$01,$20,$AF,$BF,$00,$00; BE78 D.. .... .byte $8D,$8D,$0F,$3F,$F7,$55,$00,$00; BE80 ...?.U.. .byte $04,$15,$00,$EB,$FB,$FF,$00,$00; BE88 ........ .byte $33,$0F,$00,$10,$00,$00,$10,$00; BE90 3....... .byte $33,$0C,$00,$00,$00,$00,$00,$00; BE98 3....... .byte $33,$0C,$00,$00,$00,$00,$00,$00; BEA0 3....... .byte $00,$00,$00,$00,$00,$00,$00,$03; BEA8 ........ .byte $88,$20,$01,$07,$07,$1F,$1F,$7F; BEB0 . ...... .byte $40,$54,$00,$FF,$FF,$FF,$FF,$FF; BEB8 @T...... .byte $88,$88,$00,$F5,$C0,$C5,$C4,$C0; BEC0 ........ .byte $88,$88,$00,$1F,$1F,$1F,$1F,$1F; BEC8 ........ .byte $88,$88,$00,$FD,$FD,$FD,$FD,$FD; BED0 ........ .byte $F0,$F5,$F5,$F6,$F5,$F5,$F5,$F5; BED8 ........ .byte $02,$28,$40,$F5,$7C,$7D,$DF,$DF; BEE0 .(@.|}.. .byte $22,$08,$40,$70,$70,$1C,$DC,$CC; BEE8 ".@pp... .byte $10,$10,$00,$FF,$00,$00,$C0,$00; BEF0 ........ .byte $C4,$C4,$C0,$FF,$FF,$FF,$0F,$00; BEF8 ........ .byte $01,$14,$C0,$FF,$FF,$FF,$FF,$03; BF00 ........ .byte $10,$05,$00,$00,$F0,$FF,$FF,$FF; BF08 ........ .byte $11,$11,$00,$00,$00,$0C,$F0,$FC; BF10 ........ .byte $30,$30,$00,$00,$00,$00,$00,$00; BF18 00...... .byte $30,$3F,$00,$00,$00,$00,$00,$00; BF20 0?...... .byte $00,$00,$0F,$0C,$0C,$0C,$0C,$00; BF28 ........ columns 37-39 of the last row: the small dark-grey monogram in the bottom right corner of the picture - it reads like a lower-case 'mk' with a flourish, probably the artist's initials. $BF3F is the last byte the VIC displays .byte $00,$00,$FC,$CC,$CF,$CC,$CC,$00; BF30 ........ .byte $03,$03,$4B,$6F,$0C,$60,$40,$00; BF38 ..Ko.`@. ; leftoverDataDiskCode ($BF40-$BFEC) - 173 bytes that are NOT part of the picture and are never ; executed by anything: the bitmap needs 8000 bytes and stops at $BF3F, so these are whatever happened ; to be sitting in the mastering machine's memory above it when the 'load' file was written. They are ; 6502 code, and they disassemble cleanly all the way from $BF40 to $BFEC. (At run time the half from ; $BFB0 on is overwritten by the map row address tables - see mapRowAddrLoTable; $BF40-$BFAF is never ; touched at all.) It is code from an earlier build of this game - almost certainly the same build ; whose remains also survive in the boot loader file at $C3BC-$C3FF: ; * it calls $C3C4, and the truncated original of that routine (leftoverCheckDiskId, 'read the BAM ; of track 18 to $BA00 and compare $BAA2/$BAA3 with OZ / EA') is itself still sitting unreachable ; in the boot loader file from $C3C4 to the end of the file at $C3FF; ; * both fragments call the same pair of loader entry points $CBED (set destination) and $CBF2 (read ; sectors), which in that build lived at $CBxx and in the shipped one live at $C034/$C004; ; * both use the same $BA00 sector buffer, and this fragment stamps ten bytes into $BAAB - BAM ; offset $AB, exactly the disk name/serial field the shipped checkDiskId reads at $02AB ($0FF3) ; and copies to ownPlayerName $FFDE-$FFE7; ; * its other call targets ($C1B3, $C1C6, $C1D8, $C453, $C7AB, $C860, $C933) and the strings it ; prints ($BB5C, $BB8C) match nothing in the shipped game at those addresses. ; What it does, as far as the surviving part shows: print a prompt, ask $C3C4 which disk is in the ; drive, keep asking until the right one is inserted, copy track 18 sectors $11 and $12 (the two save ; slots) through the $BA00 buffer, and write a ten-byte serial into a BAM image - i.e. the disk-swap / ; data-disk preparation that the shipped game does from $0FB1 and the film menus. The routines it ; calls below $BF40 ($BE30, $BE93, $BEA7, the strings at $BB5C and $BB8C) were all overwritten by the ; title picture, so only this tail survives. Rendered one instruction per line, with the decoded ; instruction in the comment; the file is pure data, so the bytes stay .byte. leftoverDataDiskCode: .byte $A9,$0B ; BF40 .. lda #$0B .byte $85,$5F ; BF42 ._ sta $5F - a flag or parameter of that build (in the shipped game $5F is joyFireUp) .byte $20,$D8,$C1 ; BF44 .. jsr $C1D8 - a routine of that build; the shipped boot loader has unrelated code there .byte $A4,$60 ; BF47 .` ldy $60 .byte $A6,$21 ; BF49 .! ldx $21 .byte $B9,$5C,$BF ; BF4B .\. lda leftoverTableBF5C,y - pick one of the three constants below .byte $9D,$02,$BA ; BF4E ... sta $BA02,x - into the sector buffer at $BA00, offset 2 + X .byte $A9,$04 ; BF51 .. lda #$04 .byte $20,$53,$C4 ; BF53 S. jsr $C453 .byte $A2,$07 ; BF56 .. ldx #$07 .byte $4C,$B3,$C1 ; BF58 L.. jmp $C1B3 - tail call, X = 7 .byte $60 ; BF5B ` rts - unreachable, left over from whatever preceded the jmp ; Three constants, indexed by zero page $60 in the fragment above and stored into the $BA00 sector ; buffer at offset 2 + zp $21: $00, $08, $40. leftoverTableBF5C: .byte $00,$08,$40 ; BF5C ..@ ; Prints one prompt: the string at $BB8C in that build's memory (now picture data). Called from ; $BFB0 below. leftoverDiskPrompt: .byte $A9,$0B ; BF5F .. lda #$0B .byte $20,$AB,$C7 ; BF61 .. jsr $C7AB .byte $A9,$8C ; BF64 .. lda #$8C .byte $A0,$BB ; BF66 .. ldy #$BB - A/Y = $BB8C, a string in that build .byte $20,$60,$C8 ; BF68 `. jsr $C860 - print it .byte $A9,$0A ; BF6B .. lda #$0A .byte $20,$33,$C9 ; BF6D 3. jsr $C933 .byte $A9,$0B ; BF70 .. lda #$0B .byte $20,$AB,$C7 ; BF72 .. jsr $C7AB .byte $A9,$00 ; BF75 .. lda #$00 .byte $85,$2D ; BF77 .- sta $2D .byte $4C,$75,$C7 ; BF79 Lu. jmp $C775 - tail call ; The main surviving routine: print a message, then ask $C3C4 (that build's checkDiskId, whose ; truncated remains are at $C3C4 in the boot loader file) which disk is in the drive. A = 0 means the ; expected disk is there and it goes straight on to $BFB0; A = 2 means the other disk, in which case ; the two save-slot sectors are pulled off it first. leftoverSwapDisks: .byte $20,$93,$BE ; BF7C .. jsr $BE93 - a routine of that build; the picture overwrote it (row 24 of the bitmap) .byte $A9,$5C ; BF7F .\ lda #$5C .byte $A0,$BB ; BF81 .. ldy #$BB - A/Y = $BB5C, another lost string .byte $20,$60,$C8 ; BF83 `. jsr $C860 - print it .byte $20,$C4,$C3 ; BF86 .. jsr $C3C4 - checkDiskId: reads the BAM of track 18 to $BA00 and matches $BAA2/$BAA3 .byte $C9,$00 ; BF89 .. cmp #$00 - 0 = the disk it wanted is in the drive .byte $F0,$23 ; BF8B .# beq $BFB0 .byte $A9,$07 ; BF8D .. lda #$07 .byte $20,$C6,$C1 ; BF8F .. jsr $C1C6 - prompt / wait, code 7 .byte $20,$C4,$C3 ; BF92 .. jsr $C3C4 - look again .byte $F0,$19 ; BF95 .. beq $BFB0 .byte $C9,$02 ; BF97 .. cmp #$02 - 2 = the other disk of the pair .byte $F0,$01 ; BF99 .. beq $BF9C .byte $60 ; BF9B ` rts - anything else: give up ; Reads track 18 sectors $11 and $12 - the two save slots - into the $BA00 buffer and hands each to ; $C1B3 with X = 0 then X = 1. leftoverGrabSaveSlots: .byte $A2,$11 ; BF9C .. ldx #$11 - track 18 sector 17, the first save slot .byte $20,$DA,$BF ; BF9E .. jsr leftoverReadTrack18Sector .byte $A2,$00 ; BFA1 .. ldx #$00 .byte $20,$B3,$C1 ; BFA3 .. jsr $C1B3 - pass the buffer on as 0 .byte $A2,$12 ; BFA6 .. ldx #$12 - track 18 sector 18, the second save slot .byte $20,$DA,$BF ; BFA8 .. jsr leftoverReadTrack18Sector .byte $A2,$01 ; BFAB .. ldx #$01 .byte $20,$B3,$C1 ; BFAD .. jsr $C1B3 - and as 1 ; mapRowAddrLoTable - 40 bytes, $BFB0-$BFD7, one per battlefield row: the LOW byte of the address of ; map row 0-39, i.e. of $F000 + 40*row. The matching high bytes are the separate table ; mapRowAddrHiTable at $BFD8; this is a split lo/hi pointer pair, not a table of addresses, so the two ; halves are typed as bytes. Built at start-up by buildMapRowAddressTable ($0339, low byte stored at ; $034A, high byte at $0345) and read by readMapCell ($25FA - low at $25FC, high at $2603) and every ; other map accessor, so the 80 bytes $BFB0-$BFFF are live for the whole game. They sit here because ; these are the last 80 bytes of VIC bank 2 above the bitmap (which ends at $BF3F), which is why ; initBitmapScreen ($2D41) clears only $A000-$BF3F. What the disk file holds at these addresses is the ; middle of the leftover routine below - the table is written over it before the first map cell is ; ever read. $BF40-$BFAF, the 112 bytes in front of the table, are the only bytes of this file that ; the game never reads or writes: no label in XREF.txt falls between $BF40 and $BFAF, and the bitmap ; clear stops at $BF3F. The only code that ever reaches them is the copy-protection memory wipe at ; $0A1E, which erases everything. The leftover instructions here: after the prompt, keep checking ; until the right disk is inserted, then stamp the serial in. mapRowAddrLoTable: .byte $20,$5F,$BF ; BFB0 _. jsr leftoverDiskPrompt - 'insert the other disk' .byte $20,$A7,$BE ; BFB3 .. jsr $BEA7 - another routine of that build, now under the picture .byte $20,$C4,$C3 ; BFB6 .. jsr $C3C4 - checkDiskId .byte $C9,$00 ; BFB9 .. cmp #$00 .byte $F0,$08 ; BFBB .. beq $BFC5 .byte $A9,$07 ; BFBD .. lda #$07 .byte $20,$C6,$C1 ; BFBF .. jsr $C1C6 - prompt / wait, code 7 .byte $4C,$B6,$BF ; BFC2 L.. jmp $BFB6 - loop until the right disk is in the drive ; Copies ten bytes from $BE30 (lost under the picture) into the sector buffer at $BAAB - BAM offset ; $AB, the ten-byte disk name/serial that the shipped game reads back at $02AB ($0FF3) and keeps in ; ownPlayerName ($FFDE-$FFE7) so both modem players can prove they run the same disk. Then it hands ; the buffer to $C1B3 and tail-calls $C1C6 with code 5. leftoverStampSerial: .byte $A0,$09 ; BFC5 .. ldy #$09 - ten bytes, index 9 down to 0 .byte $B9,$30,$BE ; BFC7 .0. lda $BE30,y - the serial in that build .byte $99,$AB,$BA ; BFCA ... sta $BAAB,y - into BAM offset $AB of the $BA00 buffer .byte $88 ; BFCD . dey .byte $10,$F7 ; BFCE .. bpl $BFC7 .byte $A2,$00 ; BFD0 .. ldx #$00 .byte $20,$B3,$C1 ; BFD2 .. jsr $C1B3 .byte $A9,$05 ; BFD5 .. lda #$05 .byte $4C ; BFD7 L jmp opcode ($4C); its operand is the first two bytes of the high-byte table below ; mapRowAddrHiTable - 40 bytes, $BFD8-$BFFF: the HIGH byte of the address of map row 0-39 ($F000 + ; 40*row, so $F0 for rows 0-5, $F1 for 6-12, and so on). Second half of the split pointer pair whose ; low bytes are mapRowAddrLoTable at $BFB0; written at $0345 by buildMapRowAddressTable and read at ; $2603 by readMapCell. On disk these bytes are still the leftover routine (and its trailing filler), ; starting in the middle of the jmp at $BFD7. mapRowAddrHiTable: .byte $C6,$C1 ; BFD8 .. operand $C1C6 of the jmp at $BFD7 ; Reads one sector of track 18 into the $BA00 buffer with that build's fast loader: X = sector number, ; patched into the LDX below. Called twice from $BF9C. leftoverReadTrack18Sector: .byte $8E,$E7,$BF ; BFDA ... stx $BFE7 - self-modifying: X = the sector number, patched into the ldx at $BFE6 .byte $A2,$00 ; BFDD .. ldx #$00 .byte $A0,$BA ; BFDF .. ldy #$BA - destination $BA00 .byte $20,$ED,$CB ; BFE1 .. jsr $CBED - that build's setLoadDest (shipped: $C034 / $085C) .byte $A0,$12 ; BFE4 .. ldy #$12 - track 18 .byte $A2,$00 ; BFE6 .. ldx #$00 - sector, patched at $BFDA .byte $A9,$01 ; BFE8 .. lda #$01 - one sector .byte $4C,$F2,$CB ; BFEA L.. jmp $CBF2 - that build's sector read (shipped: $C004 / $0804) ; The last 19 bytes of the loaded file: filler, not code and not picture - alternating $00/$FF with a ; stray $0B, the same kind of junk the mastering system left in the unused sector tails elsewhere on ; the disk. At run time these are entries 21-39 of mapRowAddrHiTable. titleFileTailFiller: .byte $00,$FF,$00,$00,$FF,$00,$FF,$0B,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF; BFED ...................