; SkoolKit disassembly for Knight Lore ; v1.00rc7 ; ; Copyright (c) 2019 Michael R. Cook (Skoolkit conversion) ; Copyright (c) 2017 tcdev (annotated disassembly) ; Copyright (c) 1984 Ultimate Play the Game (Knight Lore) ; Knight Lore was designed and developed by Tim Stamper and Chris Stamper ; ; Memory Map: ; ; $4000-$57FF - spectrum video memory ; $5800-$5AFF - spectrum attribute memory ; $5B9F - stack ; $5BA0-$6107 - variables ; $6108-$D8F2 - code and data ; $D8F3-$F0F2 - video buffer ; $F100-$FFFF - bit-shift & bit-reverse lookup tables ; - (built at run-time) @start=$AF6C ; Video and Attribute RAM locations @equ=zx_vram=$4000 @equ=zx_aram=$5800 @org ; Stack grows down from here ; ; Variables from here are zeroed at start of game @label=seed_1 b$5BA0 DEFB $53,$00 ; Data block at 5BA2 @label=seed_2 b$5BA2 DEFS $02 ; #TABLE(default,centre,:w) ; { =h Bit(n) | =h Description } ; { 3 | directional } ; { 2-1 | 00=keybd, 01=kempston, 10=cursor, 11=i/f-ii } ; TABLE# @label=user_input_method b$5BA4 DEFS $01 ; Data block at 5BA5 @label=seed_3 b$5BA5 DEFS $01 ; Data block at 5BA6 @label=old_input_method b$5BA6 DEFS $01 $5BA7 DEFS $01 ; variables from here are zeroed each game @label=objs_wiped_cnt b$5BA8 DEFS $01 ; Data block at 5BA9 @label=tmp_SP b$5BA9 DEFB $92,$5B ; Data block at 5BAB @label=room_size_X b$5BAB DEFS $01 ; Data block at 5BAC @label=room_size_Y b$5BAC DEFS $01 ; Data block at 5BAD @label=curr_room_attrib b$5BAD DEFS $01 ; Data block at 5BAE @label=room_size_Z b$5BAE DEFS $01 ; Data block at 5BAF @label=portcullis_moving b$5BAF DEFS $01 ; Data block at 5BB0 @label=portcullis_move_cnt b$5BB0 DEFS $01 ; Data block at 5BB1 @label=transform_flag_graphic b$5BB1 DEFS $01 ; Data block at 5BB2 @label=not_1st_screen b$5BB2 DEFS $01 ; Data block at 5BB3 @label=pickup_drop_pressed b$5BB3 DEFS $01 ; Data block at 5BB4 @label=objects_carried_changed b$5BB4 DEFS $01 ; #TABLE(default,centre,:w) ; { =h Bit(n) | =h Description } ; { b5 | ??? } ; { b4 | pickup/drop } ; { b3 | jump } ; { b2 | forward } ; { b1 | right } ; { b0 | left } ; TABLE# @label=user_input b$5BB5 DEFS $01 ; Data block at 5BB6 @label=tmp_attrib b$5BB6 DEFB $47 ; Data block at 5BB7 @label=render_status_info b$5BB7 DEFS $01 ; Data block at 5BB8 @label=suppress_border b$5BB8 DEFB $01 ; Data block at 5BB9 @label=days b$5BB9 DEFS $01 ; Data block at 5BBA @label=lives b$5BBA DEFB $05 ; Data block at 5BBB @label=objects_put_in_cauldron b$5BBB DEFS $01 ; Data block at 5BBC @label=fire_seed b$5BBC DEFS $01 ; Data block at 5BBD @label=ball_bounce_height b$5BBD DEFS $01 ; Data block at 5BBE @label=rendered_objs_cnt b$5BBE DEFS $01 ; Data block at 5BBF @label=is_spike_ball_dropping b$5BBF DEFS $01 ; Data block at 5BC0 @label=disable_spike_ball_drop b$5BC0 DEFS $01 ; Data block at 5BC1 @label=tmp_dZ b$5BC1 DEFS $01 ; Data block at 5BC2 @label=tmp_bouncing_ball_dZ b$5BC2 DEFS $01 ; Data block at 5BC3 @label=all_objs_in_cauldron b$5BC3 DEFS $01 ; Data block at 5BC4 @label=obj_dropping_into_cauldron b$5BC4 DEFS $01 ; Data block at 5BC5 @label=rising_blocks_z b$5BC5 DEFS $01 ; Data block at 5BC6 @label=num_scrns_visited b$5BC6 DEFS $01 ; Data block at 5BC7 @label=gfxbase_8x8 b$5BC7 DEFB $08,$61 ; Data block at 5BC9 @label=percent_msw b$5BC9 DEFS $01 ; Data block at 5BCA @label=percent_lsw b$5BCA DEFS $01 ; Data block at 5BCB @label=tmp_objects_to_draw b$5BCB DEFS $02 ; Data block at 5BCD @label=render_obj_1 b$5BCD DEFS $02 ; Data block at 5BCF @label=render_obj_2 b$5BCF DEFS $02 ; Data block at 5BD1 @label=audio_played b$5BD1 DEFB $01 ; Data block at 5BD2 @label=debounce_5 b$5BD2 DEFS $01 ; Data block at 5BD3 @label=cant_drop b$5BD3 DEFS $01 $5BD4 DEFS $04 ; Data block at 5BD8 @label=inventory b$5BD8 DEFS $04 ; Data block at 5BDC @label=objects_carried b$5BDC DEFS $07 ; Data block at 5BE3 @label=unk_5BE3 b$5BE3 DEFS $01 ; Data block at 5BE4 @label=object_carried_2 b$5BE4 DEFS $01 $5BE5 DEFS $02 ; Data block at 5BE7 @label=end_of_objects_carried b$5BE7 DEFS $01 ; table of bits (flags) denoting room has been visited ; ; - used only in ratings calculations @label=scrn_visited b$5BE8 DEFS $20 ; table of objects (40 max) ; ; #TABLE(default,centre,:w) ; { =h Byte(n) | =h Description } ; { 00,01 | player sprites (00=bottom, 01=top) } ; { 02,03 | special object sprites } ; { 04-39 | background, then foreground } ; TABLE# ; . ; #TABLE(default,centre,:w) ; { =h Byte(n) | =h Description } ; { +0 | graphic_no. } ; { +1 | x (center) } ; { +2 | y (center) } ; { +3 | z (bottom) } ; { +4 | width (X radius) } ; { +5 | depth (Y radius) } ; { +6 | height } ; { +7 | flags } ; { | - 7=vflip sprite } ; { | - 6=hflip sprite } ; { | - 5=wipe } ; { | - 4=draw } ; { | - 3=auto-adjust near arches (player only) } ; { | - 2=moveable } ; { | - 1=ignore in 3D calculations } ; { | - 0=is near arch (player only) } ; { +8 | screen } ; { +9 | dX } ; { +10 | dY } ; { +11 | dZ } ; { +12 | counter and flags } ; { | - 7-4=counter when entering screen } ; { | - 3=jumping } ; { | - 2=Z out-of-bounds } ; { | - 1=Y out-of-bounds } ; { | - 0=X out-of-bounds } ; { +13 | per-object info/flags } ; { | - direction and counters for looking, turning } ; { | - 7=deadly if object hits player } ; { | - 6=dead } ; { | - 5=deadly if player hits object } ; { | - 4=(not used) } ; { | - 3=triggered (dropping, collapsing blocks) } ; { | - 2=up (bouncing ball), dropping (spiked ball) } ; { | - 1=north (NS fire) } ; { | - 0=east (WE fire, EW guard), just dropped (spec objs) } ; { +14 | d_x_adj } ; { +15 | d_y_adj } ; { +16-17 | ptr object table entry or tmp player graphic_no } ; { +18 | pixel X adjustment } ; { +19 | pixel Y adjustment } ; { +20-23 | unused } ; { +24 | sprite data width (bytes) } ; { +25 | sprite data height (lines) } ; { +26 | pixel X } ; { +27 | pixel Y } ; { +28 | old sprite data width (bytes) } ; { +29 | old sprite data height (lines) } ; { +30 | old pixel X } ; { +31 | old pixel Y } ; TABLE# @label=graphic_objs_tbl b$5C08 DEFS $20 $5C28 DEFS $20 ; Data block at 5C48 @label=special_objs_here b$5C48 DEFS $20 ; Data block at 5C68 @label=special_objs_here_1 b$5C68 DEFS $20 ; Data block at 5C88 @label=other_objs_here b$5C88 DEFS $20 ; Data block at 5CA8 b$5CA8 DEFS $0460 ; Data block at 6108 @label=font b$6108 DEFB $38,$6C,$D6,$D6,$D6,$D6,$6C,$38 ; '0' $6110 DEFB $18,$38,$58,$18,$18,$18,$18,$7C ; '1' $6118 DEFB $38,$4C,$0C,$3C,$60,$C2,$C2,$FE ; '2' $6120 DEFB $38,$4C,$0C,$3C,$0E,$86,$86,$FC ; '3' $6128 DEFB $18,$38,$58,$9A,$FE,$1A,$18,$7C ; '4' $6130 DEFB $FE,$C2,$C0,$FC,$06,$06,$86,$7C ; '5' $6138 DEFB $1E,$32,$60,$7C,$C6,$C6,$C6,$7C ; '6' $6140 DEFB $7E,$46,$4C,$0C,$18,$18,$30,$F8 ; '7' $6148 DEFB $38,$6C,$6C,$7C,$FE,$C6,$C6,$7C ; '8' $6150 DEFB $7C,$C6,$C6,$C6,$7C,$0C,$98,$F0 ; '9' $6158 DEFB $0C,$1C,$2E,$66,$46,$CE,$DB,$66 ; 'A' $6160 DEFB $F8,$6C,$6C,$78,$6C,$66,$66,$FC ; 'B' $6168 DEFB $0E,$32,$60,$40,$C0,$C2,$E6,$7C ; 'C' $6170 DEFB $60,$70,$68,$6C,$66,$66,$66,$FC ; 'D' $6178 DEFB $FE,$60,$64,$7C,$64,$60,$7A,$C6 ; 'E' $6180 DEFB $C6,$7A,$60,$64,$7C,$64,$60,$60 ; 'F' $6188 DEFB $0E,$30,$60,$C6,$CE,$F6,$66,$0E ; 'G' $6190 DEFB $EE,$C6,$C6,$FE,$C6,$C6,$C6,$EE ; 'H' $6198 DEFB $7C,$18,$18,$18,$18,$18,$18,$7C ; 'I' $61A0 DEFB $1E,$06,$06,$86,$86,$C6,$7E,$1C ; 'J' $61A8 DEFB $E4,$68,$70,$78,$6C,$64,$64,$F6 ; 'K' $61B0 DEFB $E0,$60,$60,$60,$60,$60,$62,$FE ; 'L' $61B8 DEFB $C6,$EE,$EE,$D6,$D6,$D6,$C6,$EE ; 'M' $61C0 DEFB $CC,$D6,$D6,$E6,$E4,$C4,$C8,$DE ; 'N' $61C8 DEFB $38,$6C,$C6,$C6,$C6,$C6,$6C,$38 ; 'O' $61D0 DEFB $F8,$6C,$66,$76,$6E,$60,$60,$F0 ; 'P' $61D8 DEFB $38,$6C,$C6,$C6,$C6,$D6,$6C,$3A ; 'Q' $61E0 DEFB $F8,$6C,$66,$76,$7E,$78,$6C,$E6 ; 'R' $61E8 DEFB $38,$64,$60,$3C,$06,$86,$C6,$7C ; 'S' $61F0 DEFB $FE,$9A,$98,$18,$18,$18,$18,$18 ; 'T' $61F8 DEFB $F6,$26,$46,$4E,$CE,$D6,$D6,$66 ; 'U' $6200 DEFB $E2,$62,$64,$64,$68,$68,$70,$60 ; 'V' $6208 DEFB $EE,$C6,$D6,$D6,$D6,$EE,$EE,$C6 ; 'W' $6210 DEFB $C6,$C6,$6C,$38,$38,$6C,$C6,$C6 ; 'X' $6218 DEFB $86,$66,$16,$0E,$06,$04,$4C,$38 ; 'Y' $6220 DEFB $7E,$46,$0C,$18,$30,$62,$C2,$FE ; 'Z' $6228 DEFB $00,$00,$00,$00,$00,$18,$18,$00 ; '.' $6230 DEFB $3C,$42,$99,$A1,$A1,$99,$42,$3C ; '(c)' $6238 DEFB $00,$00,$00,$00,$00,$00,$00,$00 ; ' ' $6240 DEFB $00,$62,$64,$08,$10,$26,$46,$00 ; '%' ; room size table @label=room_size_tbl b$6248 DEFB $40,$40,$80 ; 0 $624B DEFB $20,$40,$80 ; 1 $624E DEFB $40,$20,$80 ; 2 ; locations @label=location_tbl b$6251 DEFB $00,$19,$03 ; id=0 $6254 DEFB $00,$01,$0C,$FF,$07,$10,$50,$90,$11,$51,$91 $625F DEFB $0A,$4A,$06,$8A,$02,$42,$82,$C8 $6267 DEFB $C1,$C0,$A8,$C9 $626B DEFB $01,$14,$14 ; id=1 $626E DEFB $01,$03,$0D,$FF,$03,$2B,$2C,$13,$14,$23,$6B $6279 DEFB $6C,$53,$54,$40,$1C,$48,$28 $6280 DEFB $02,$06,$03 ; id=2 $6283 DEFB $00,$01,$03,$0C $6287 DEFB $03,$1A,$16 ; id=3 $628A DEFB $01,$03,$0D,$FF,$03,$22,$1A,$25,$1D,$2B,$23 $6295 DEFB $1B,$24,$1C,$93,$2B,$2C,$13,$14 $629D DEFB $B3,$63,$64,$5B,$5C $62A2 DEFB $04,$13,$05 ; id=4 $62A5 DEFB $00,$03,$0C,$FF,$2B,$23,$1A,$1C,$13,$B2 $62AF DEFB $5A,$5C,$53,$02,$63,$9B,$DB $62B6 DEFB $08,$1A,$03 ; id=8 $62B9 DEFB $04,$05,$0F,$10,$FF,$1B,$1B,$5B,$9B,$DB $62C3 DEFB $2B,$23,$1A,$1C,$13,$93,$63,$5A $62CB DEFB $5C,$53,$B8,$09,$80,$49 $62D1 DEFB $09,$0B,$06 ; id=9 $62D4 DEFB $05,$07,$0F,$11,$09,$0B,$FF,$48,$23 $62DD DEFB $0A,$19,$03 ; id=10 $62E0 DEFB $05,$07,$0F,$11,$FF,$1D,$22,$62,$A2,$24 $62EA DEFB $64,$A4,$2F,$2A,$2B,$6B,$2C,$1A $62F2 DEFB $1B,$5B,$1C,$38,$0E $62F7 DEFB $0B,$06,$06 ; id=11 $62FA DEFB $05,$07,$0F,$11 $62FE DEFB $0C,$17,$03 ; id=12 $6301 DEFB $05,$07,$0F,$11,$FF,$2F,$3D,$32,$28,$2C $630B DEFB $2F,$22,$1C,$10,$2B,$12,$17,$0D $6313 DEFB $04,$B8,$24 $6316 DEFB $0D,$06,$04 ; id=13 $6319 DEFB $00,$01,$03,$0C $631D DEFB $0E,$0B,$15 ; id=14 $6320 DEFB $01,$03,$0D,$FF,$53,$12,$1D,$2C,$23 $6329 DEFB $0F,$1C,$04 ; id=15 $632C DEFB $00,$03,$0C,$FF,$07,$23,$25,$13,$15,$63,$64 $6337 DEFB $65,$5B,$04,$5D,$53,$54,$55,$1C $633F DEFB $9B,$A4,$9B,$9D,$94,$B0,$9C $6346 DEFB $10,$18,$0D ; id=16 $6349 DEFB $00,$15,$17,$0E,$FF,$01,$C3,$C4,$5B,$05,$0C $6354 DEFB $0B,$0A,$9B,$45,$4C,$4B,$4A,$A8 $635C DEFB $C2,$50,$5A $635F DEFB $12,$18,$0C ; id=18 $6362 DEFB $00,$02,$0E,$FF,$97,$FA,$FD,$F3,$F4,$EB,$EC,$E3,$E4,$97,$DB,$DC,$D3,$D4,$CB,$CC,$C2,$C5 $6378 DEFB $14,$1A,$0E ; id=20 $637B DEFB $00,$15,$17,$0E,$FF,$01,$C3,$C4,$AD,$C2,$CA,$D2,$DA,$DB,$DC,$AC,$DD,$E5,$AD,$75,$3D,$29,$0B,$0C $6393 DEFB $18,$11,$0D ; id=24 $6396 DEFB $00,$02,$0E,$FF,$2F,$2A,$2B,$2C,$2D,$12,$13,$14,$15,$B8,$1B $63A5 DEFB $1D,$1B,$0E ; id=29 $63A8 DEFB $00,$15,$17,$0E,$FF,$07,$C3,$C4,$0C,$4C,$8C,$CC,$24,$64,$02,$2C,$6C,$34,$29,$14,$1C,$58,$0C,$78,$54 $63C1 DEFB $1F,$17,$0B ; id=31 $63C4 DEFB $00,$02,$0E,$FF,$03,$12,$15,$2A,$2D,$2F,$52,$13,$14,$55,$6A,$2B,$2C,$6D,$E1,$93,$6B $63D9 DEFB $20,$12,$03 ; id=32 $63DC DEFB $00,$01,$15,$17,$0C,$FF,$02,$18,$C3,$C4,$AA,$50,$88,$C0,$28,$02 $63EC DEFB $21,$1C,$16 ; id=33 $63EF DEFB $14,$16,$03,$0D,$FF,$07,$21,$61,$A2,$A3,$24,$64,$25,$65,$03,$26,$66,$E7,$DF,$29,$A4,$A6,$30,$E2,$C0,$A5 $6409 DEFB $22,$1A,$03 ; id=34 $640C DEFB $02,$03,$0C,$FF,$03,$30,$78,$B9,$FA,$2F,$39,$3A,$3D,$3E,$3F,$33,$2B,$23,$2A,$34,$2C,$24,$A8,$FB $6424 DEFB $24,$18,$03 ; id=36 $6427 DEFB $00,$02,$0C,$FF,$2F,$02,$05,$0A,$0F,$10,$15,$19,$1B,$2F,$1C,$1F,$28,$2A,$2C,$2E,$3A,$3D $643D DEFB $27,$0F,$06 ; id=39 $6440 DEFB $00,$0C,$FF,$03,$1B,$1C,$23,$24,$4B,$12,$15,$2A,$2D $644D DEFB $28,$10,$0E ; id=40 $6450 DEFB $00,$15,$0E,$17,$FF,$39,$23,$63,$29,$0B,$0C,$01,$C3,$C4 $645E DEFB $2D,$17,$04 ; id=45 $6461 DEFB $14,$02,$16,$0C,$FF,$07,$DF,$E7,$13,$1B,$23,$5B,$63,$A3,$2B,$1E,$26,$22,$24,$70,$E3 $6476 DEFB $2E,$11,$15 ; id=46 $6479 DEFB $01,$03,$0D,$FF,$2F,$2B,$2C,$22,$25,$1A,$1D,$13,$14,$68,$23 $6488 DEFB $2F,$06,$04 ; id=47 $648B DEFB $00,$02,$03,$0C $648F DEFB $30,$16,$0D ; id=48 $6492 DEFB $00,$02,$0E,$FF,$2F,$33,$34,$2A,$2D,$22,$25,$1A,$1D,$2B,$12,$15,$0B,$0C,$B8,$1B $64A6 DEFB $34,$18,$0E ; id=52 $64A9 DEFB $00,$02,$0E,$FF,$3F,$1A,$1B,$1C,$1D,$5A,$5B,$5C,$5D,$97,$9A,$9B,$9C,$9D,$DA,$DB,$DC,$DD $64BF DEFB $37,$0D,$0D ; id=55 $64C2 DEFB $00,$02,$0E,$FF,$78,$14,$00,$2C,$49,$25,$1A $64CD DEFB $38,$19,$0B ; id=56 $64D0 DEFB $00,$15,$17,$0E,$FF,$05,$7A,$F2,$DA,$C2,$C3,$C4,$B3,$EA,$E2,$D2,$CA,$2C,$2A,$22,$1A,$12,$0A $64E7 DEFB $3F,$19,$03 ; id=63 $64EA DEFB $04,$06,$0F,$10,$FF,$1F,$18,$19,$1A,$5A,$1D,$5D,$1E,$1F,$2D,$58,$59,$9A,$9D,$5E,$5F,$D0,$1B $6501 DEFB $40,$13,$06 ; id=64 $6504 DEFB $14,$15,$16,$17,$0C,$FF,$05,$3F,$06,$C3,$C4,$DF,$E7,$68,$38,$80,$B8 $6515 DEFB $41,$17,$14 ; id=65 $6518 DEFB $01,$03,$0D,$FF,$05,$12,$14,$16,$2A,$2C,$2E,$25,$52,$54,$56,$6A,$6C,$6E,$51,$15,$2B $652D DEFB $42,$15,$05 ; id=66 $6530 DEFB $01,$03,$0C,$FF,$01,$1B,$DC,$A9,$63,$A4,$2F,$12,$1A,$22,$2B,$2C,$25,$1D,$14 $6543 DEFB $43,$1B,$16 ; id=67 $6546 DEFB $01,$03,$0D,$FF,$07,$1E,$26,$5D,$65,$19,$21,$5A,$62,$03,$2B,$2C,$13,$14,$2B,$6B,$6C,$53,$54,$60,$1B $655F DEFB $44,$07,$04 ; id=68 $6562 DEFB $00,$01,$02,$03,$0C $6567 DEFB $45,$1D,$05 ; id=69 $656A DEFB $01,$03,$0C,$FF,$07,$23,$25,$13,$15,$63,$64,$65,$5B,$03,$5D,$53,$54,$55,$9B,$A4,$9B,$9D,$94,$B0,$9C,$28,$1C $6585 DEFB $46,$1C,$16 ; id=70 $6588 DEFB $01,$03,$0D,$FF,$07,$23,$1B,$2C,$6C,$14,$54,$25,$1D,$23,$65,$5D,$63,$5B,$91,$24,$1C,$B3,$A4,$E4,$9C,$DC $65A2 DEFB $47,$06,$03 ; id=71 $65A5 DEFB $00,$02,$03,$0C $65A9 DEFB $48,$17,$0E ; id=72 $65AC DEFB $00,$15,$17,$0E,$FF,$07,$C3,$C4,$CC,$2C,$2D,$25,$6C,$6D,$00,$AC,$29,$0B,$14,$78,$8C $65C1 DEFB $4F,$15,$06 ; id=79 $65C4 DEFB $04,$06,$0F,$10,$FF,$9F,$D8,$D9,$DA,$DB,$DC,$DD,$DE,$DF,$9B,$C3,$C4,$FB,$FC $65D7 DEFB $54,$16,$0D ; id=84 $65DA DEFB $00,$02,$0E,$FF,$01,$0C,$33,$2B,$1A,$5A,$25,$65,$93,$13,$0B,$2C,$24,$79,$14,$23 $65EE DEFB $57,$14,$0D ; id=87 $65F1 DEFB $00,$02,$0E,$FF,$07,$2D,$6D,$AD,$24,$64,$A4,$1B,$5B,$03,$9B,$12,$52,$92 $6603 DEFB $58,$0B,$0D ; id=88 $6606 DEFB $00,$15,$17,$0E,$FF,$48,$1D,$80,$5D $660F DEFB $5E,$12,$06 ; id=94 $6612 DEFB $04,$05,$0F,$10,$FF,$1F,$32,$35,$29,$2E,$11,$16,$0A,$0D,$C8,$2D $6622 DEFB $5F,$06,$03 ; id=95 $6625 DEFB $04,$06,$07,$0F $6629 DEFB $64,$12,$0E ; id=100 $662C DEFB $00,$15,$17,$0E,$FF,$07,$03,$04,$0B,$0C,$23,$24,$2B,$2C,$30,$63 $663C DEFB $67,$12,$0C ; id=103 $663F DEFB $00,$02,$0E,$FF,$01,$2A,$2D,$2B,$6A,$6D,$1A,$1D,$D0,$2B,$68,$25 $664F DEFB $68,$19,$0B ; id=104 $6652 DEFB $00,$02,$0E,$FF,$07,$3A,$7A,$BA,$FA,$3D,$7D,$BD,$FD,$03,$32,$33,$34,$35,$29,$72,$75,$60,$A3 $6669 DEFB $6A,$05,$06 ; id=106 $666C DEFB $00,$01,$0C $666F DEFB $6B,$11,$14 ; id=107 $6672 DEFB $14,$03,$16,$0D,$FF,$05,$24,$1C,$64,$5C,$E7,$DF,$51,$D6,$ED $6681 DEFB $6C,$18,$13 ; id=108 $6684 DEFB $01,$03,$0D,$FF,$37,$2B,$23,$1B,$13,$6B,$63,$5B,$53,$9F,$AB,$A3,$9B,$93,$EB,$E3,$DB,$D3 $669A DEFB $6D,$17,$06 ; id=109 $669D DEFB $05,$07,$0F,$11,$FF,$1F,$14,$2C,$54,$6C,$94,$9C,$A4,$AC,$21,$D4,$EC,$38,$09,$40,$1E $66B2 DEFB $6E,$07,$03 ; id=110 $66B5 DEFB $05,$06,$07,$0F,$11 $66BA DEFB $6F,$14,$06 ; id=111 $66BD DEFB $06,$07,$0F,$11,$FF,$1A,$2D,$2E,$2F,$22,$6D,$6E,$6F,$9B,$3D,$35,$7D,$75 $66CF DEFB $74,$18,$04 ; id=116 $66D2 DEFB $01,$02,$0C,$FF,$2A,$39,$30,$31,$07,$3A,$7A,$32,$72,$28,$68,$29,$69,$B3,$B8,$B9,$B0,$B1 $66E8 DEFB $75,$0E,$13 ; id=117 $66EB DEFB $01,$03,$0D,$FF,$01,$23,$1C,$29,$24,$1B,$C8,$2B $66F7 DEFB $76,$16,$16 ; id=118 $66FA DEFB $14,$03,$16,$0D,$FF,$06,$DF,$E7,$EF,$AE,$6D,$2C,$D7,$2D,$16,$1E,$26,$15,$1D,$25 $670E DEFB $77,$07,$03 ; id=119 $6711 DEFB $00,$01,$02,$03,$0C $6716 DEFB $78,$19,$04 ; id=120 $6719 DEFB $00,$01,$02,$03,$0C,$FF,$2F,$39,$3F,$35,$28,$2C,$2F,$23,$1D,$2C,$11,$13,$0A,$0D,$0E,$68,$17 $6730 DEFB $79,$16,$13 ; id=121 $6733 DEFB $01,$03,$0D,$FF,$B3,$22,$1A,$25,$1D,$2F,$2B,$2C,$23,$24,$1B,$1C,$13,$14,$60,$DB $6747 DEFB $7A,$16,$05 ; id=122 $674A DEFB $02,$03,$0C,$FF,$04,$28,$70,$B8,$B9,$FF,$2D,$BA,$BC,$BE,$37,$2F,$27,$A9,$FB,$FD $675E DEFB $83,$05,$06 ; id=131 $6761 DEFB $00,$01,$0C $6764 DEFB $84,$17,$15 ; id=132 $6767 DEFB $01,$03,$0D,$FF,$07,$2A,$6A,$2D,$6D,$12,$52,$15,$55,$23,$AA,$AD,$92,$95,$11,$1D,$9A $677C DEFB $85,$19,$14 ; id=133 $677F DEFB $14,$03,$16,$0D,$FF,$05,$28,$69,$AA,$EB,$E7,$DF,$2F,$1B,$23,$1C,$24,$1D,$25,$1E,$26,$78,$DB $6796 DEFB $86,$0B,$13 ; id=134 $6799 DEFB $14,$03,$16,$0D,$FF,$80,$63,$B8,$23 $67A2 DEFB $87,$18,$05 ; id=135 $67A5 DEFB $00,$01,$02,$03,$0C,$FF,$03,$2A,$2D,$12,$15,$2B,$6A,$6D,$52,$55,$D1,$2B,$13,$D9,$1A,$1D $67BB DEFB $88,$13,$06 ; id=136 $67BE DEFB $00,$01,$02,$03,$12,$13,$0C,$FF,$07,$32,$29,$35,$2E,$16,$0D,$11,$0A $67CF DEFB $89,$14,$15 ; id=137 $67D2 DEFB $01,$03,$0D,$FF,$07,$2C,$6C,$AC,$24,$1C,$14,$54,$94,$21,$EC,$D4,$50,$64 $67E4 DEFB $8A,$18,$13 ; id=138 $67E7 DEFB $01,$03,$0D,$FF,$5F,$2A,$22,$1A,$12,$2D,$25,$1D,$15,$97,$EA,$E2,$DA,$D2,$ED,$E5,$DD,$D5 $67FD DEFB $8B,$06,$05 ; id=139 $6800 DEFB $00,$01,$03,$0C $6804 DEFB $8C,$19,$14 ; id=140 $6807 DEFB $01,$03,$0D,$FF,$07,$2A,$6A,$2D,$6D,$12,$52,$15,$55,$2B,$AA,$AD,$92,$95,$D9,$1A,$1D,$40,$1B $681E DEFB $8D,$1A,$05 ; id=141 $6821 DEFB $01,$03,$0C,$FF,$07,$34,$74,$6C,$B4,$BC,$FB,$FD,$F3,$03,$FC,$F5,$EB,$ED,$58,$3C,$28,$24,$10,$E4 $6839 DEFB $8E,$0C,$13 ; id=142 $683C DEFB $14,$03,$16,$0D,$FF,$39,$23,$63,$48,$2B $6846 DEFB $8F,$05,$06 ; id=143 $6849 DEFB $00,$03,$0C $684C DEFB $93,$14,$0C ; id=147 $684F DEFB $00,$02,$0E,$FF,$07,$1A,$1B,$1C,$1D,$5A,$9A,$5D,$9D,$21,$DA,$DD,$A0,$5B $6861 DEFB $97,$10,$0C ; id=151 $6864 DEFB $00,$02,$0E,$FF,$03,$1A,$1B,$1C,$1D,$23,$5A,$5B,$5C,$5D $6872 DEFB $98,$1A,$0B ; id=152 $6875 DEFB $00,$02,$0E,$FF,$01,$33,$0C,$A9,$6B,$54,$2F,$22,$23,$24,$25,$1A,$1B,$1C,$1D,$B3,$A3,$A4,$9B,$9C $688D DEFB $9B,$17,$0B ; id=155 $6890 DEFB $00,$15,$17,$0E,$FF,$07,$3D,$7D,$35,$75,$B5,$F5,$C3,$C4,$78,$DD,$70,$DB,$29,$1C,$1D $68A5 DEFB $9F,$18,$0D ; id=159 $68A8 DEFB $00,$02,$0E,$FF,$07,$1A,$1B,$1C,$1D,$5A,$5B,$5C,$5D,$03,$9A,$9B,$9C,$9D,$2A,$DB,$DC,$DD $68BE DEFB $A3,$1C,$0B ; id=163 $68C1 DEFB $00,$15,$17,$0E,$FF,$05,$3D,$7D,$34,$74,$C3,$C4,$2B,$12,$14,$23,$25,$93,$52,$54,$63,$65,$B8,$35,$80,$75 $68DB DEFB $A7,$05,$03 ; id=167 $68DE DEFB $00,$02,$0C $68E1 DEFB $A8,$18,$06 ; id=168 $68E4 DEFB $02,$0C,$FF,$07,$2A,$6A,$32,$72,$B2,$F2,$36,$76,$05,$B6,$F6,$16,$56,$96,$D6,$29,$35,$1E $68FA DEFB $AA,$18,$03 ; id=170 $68FD DEFB $00,$01,$0C,$FF,$07,$00,$48,$90,$18,$58,$98,$D8,$21,$02,$61,$28,$68,$29,$A8,$A1,$A8,$E0 $6913 DEFB $AB,$06,$04 ; id=171 $6916 DEFB $00,$02,$03,$0C $691A DEFB $AF,$0E,$0C ; id=175 $691D DEFB $00,$15,$17,$0E,$FF,$03,$1B,$1C,$33,$34,$30,$74 $6929 DEFB $B3,$06,$06 ; id=179 $692C DEFB $00,$01,$02,$0C $6930 DEFB $B4,$13,$04 ; id=180 $6933 DEFB $03,$0C,$FF,$07,$13,$14,$15,$1B,$23,$63,$A3,$E3,$30,$55,$39,$2E,$6E $6944 DEFB $B7,$0E,$0C ; id=183 $6947 DEFB $00,$02,$0E,$FF,$03,$33,$34,$0B,$0C,$49,$23,$1C $6953 DEFB $BA,$19,$05 ; id=186 $6956 DEFB $01,$02,$0C,$FF,$05,$2B,$6B,$AB,$1B,$5B,$9B,$2F,$2A,$22,$62,$A2,$1A,$2C,$24,$64,$29,$A4,$1C $696D DEFB $BB,$0B,$06 ; id=187 $6970 DEFB $02,$03,$0C,$FF,$48,$24,$81,$64,$A4 $6979 DEFB $BF,$1D,$03 ; id=191 $697C DEFB $00,$15,$17,$0C,$FF,$04,$3D,$7E,$BE,$C3,$C4,$2F,$3F,$37,$2F,$2E,$2D,$25,$1D,$15,$29,$14,$0C,$B8,$7F,$80,$BF $6997 DEFB $C3,$14,$0B ; id=195 $699A DEFB $00,$02,$0E,$FF,$07,$1A,$1B,$1C,$1D,$5A,$5B,$5C,$5D,$03,$9A,$9B,$9C,$9D $69AC DEFB $C7,$0B,$05 ; id=199 $69AF DEFB $00,$15,$17,$0C,$FF,$80,$5B,$48,$1B $69B8 DEFB $CF,$0A,$0C ; id=207 $69BB DEFB $00,$02,$08,$0A,$0E,$FF,$48,$1C $69C3 DEFB $D0,$19,$05 ; id=208 $69C6 DEFB $00,$01,$0C,$FF,$07,$03,$42,$81,$C0,$C8,$D0,$D8,$E0,$03,$1C,$5C,$9C,$DC,$2B,$1B,$24,$1D,$14 $69DD DEFB $D1,$11,$14 ; id=209 $69E0 DEFB $01,$03,$0D,$FF,$68,$16,$2F,$1E,$26,$1B,$1C,$23,$24,$19,$21 $69EF DEFB $D2,$15,$05 ; id=210 $69F2 DEFB $00,$03,$0C,$FF,$07,$03,$27,$44,$5F,$85,$97,$C6,$CF,$01,$CE,$C7,$99,$0F,$06 $6A05 DEFB $D3,$12,$0D ; id=211 $6A08 DEFB $00,$02,$0E,$FF,$01,$2A,$2D,$2B,$6A,$6D,$1A,$1D,$D0,$2B,$68,$25 $6A18 DEFB $D6,$15,$06 ; id=214 $6A1B DEFB $04,$05,$0F,$10,$FF,$1F,$2C,$6C,$AC,$EC,$24,$1C,$14,$54,$18,$94,$11,$5D,$1B $6A2E DEFB $D7,$0E,$03,$04 ; id=215 $6A32 DEFB $05,$06,$07,$0F,$FF,$51,$1B,$24,$A1,$23,$1C $6A3D DEFB $D8,$06,$03 ; id=216 $6A40 DEFB $04,$05,$07,$0F $6A44 DEFB $D9,$05,$06 ; id=217 $6A47 DEFB $04,$07,$0F,$DD,$14,$06,$00,$14,$16,$0C,$FF,$01,$E7,$DF,$5B,$2F,$26,$1E,$17,$3B,$1A,$5A,$9A,$DA $6A5F DEFB $DE,$05,$13 ; id=222 $6A62 DEFB $01,$03,$0D $6A65 DEFB $DF,$16,$06 ; id=223 $6A68 DEFB $00,$02,$03,$0C,$FF,$04,$1B,$5B,$9B,$DB,$E2,$2B,$13,$1C,$23,$1A,$B2,$12,$54,$A4 $6A7C DEFB $E0,$11,$0E ; id=224 $6A7F DEFB $00,$02,$0E,$FF,$2F,$3A,$3D,$2B,$2C,$13,$14,$02,$05,$C8,$24 $6A8E DEFB $E2,$16,$0E ; id=226 $6A91 DEFB $00,$02,$0E,$FF,$97,$05,$0A,$0C,$13,$15,$1A,$1C,$23,$95,$25,$2A,$2C,$33,$35,$3A $6AA5 DEFB $E3,$1B,$0E ; id=227 $6AA8 DEFB $00,$02,$0E,$FF,$AF,$02,$05,$4A,$4D,$92,$95,$AA,$AD,$AB,$72,$75,$3A,$3D,$B3,$DA,$DD,$E2,$E5,$60,$1B $6AC1 DEFB $E6,$07,$03 ; id=230 $6AC4 DEFB $04,$05,$06,$0F,$10 $6AC9 DEFB $E7,$11,$06 ; id=231 $6ACC DEFB $04,$05,$06,$07,$0F,$FF,$2F,$33,$34,$21,$19,$26,$1E,$0B,$0C $6ADB DEFB $E8,$16,$06 ; id=232 $6ADE DEFB $04,$05,$06,$07,$0F,$FF,$1F,$33,$21,$23,$63,$A3,$E3,$25,$13,$2B,$2B,$24,$1B,$22 $6AF2 DEFB $E9,$06,$03 ; id=233 $6AF5 DEFB $04,$06,$07,$0F $6AF9 DEFB $ED,$14,$0C ; id=237 $6AFC DEFB $00,$02,$0E,$FF,$07,$1A,$1B,$1C,$1D,$5A,$5B,$5C,$5D,$03,$9A,$9B,$9C,$9D $6B0E DEFB $EF,$05,$0D ; id=239 $6B11 DEFB $00,$02,$0E $6B14 DEFB $F0,$1B,$05 ; id=240 $6B17 DEFB $14,$15,$16,$17,$0C,$FF,$07,$DF,$E7,$FF,$FE,$78,$A8,$D0,$C0,$03,$C1,$C2,$C3,$C4,$29,$39,$3B,$70,$FB $6B30 DEFB $F1,$0A,$13 ; id=241 $6B33 DEFB $01,$03,$09,$0B,$0D,$FF,$B8,$23 $6B3B DEFB $F2,$06,$05 ; id=242 $6B3E DEFB $01,$02,$03,$0C $6B42 DEFB $F3,$17,$03 ; id=243 $6B45 DEFB $02,$03,$0C,$FF,$07,$32,$3A,$72,$7A,$34,$3C,$74,$7C,$01,$B3,$BB,$48,$33,$31,$2B,$6B $6B5A DEFB $F6,$13,$06 ; id=246 $6B5D DEFB $05,$06,$0F,$10,$11,$FF,$1B,$1B,$5B,$9B,$DB,$B0,$1C,$30,$12,$38,$34 $6B6E DEFB $F7,$15,$03 ; id=247 $6B71 DEFB $05,$06,$07,$0F,$11,$FF,$1F,$22,$23,$24,$1A,$1C,$12,$13,$14,$B8,$1B,$30,$5B $6B84 DEFB $F8,$07,$03 ; id=248 $6B87 DEFB $05,$06,$07,$0F,$11 $6B8C DEFB $F9,$13,$06 ; id=249 $6B8F DEFB $06,$07,$0F,$11,$FF,$9F,$FF,$FE,$F6,$F7,$FD,$EF,$C3,$C4,$99,$D8,$E0 $6BA0 DEFB $FD,$11,$06 ; id=253 $6BA3 DEFB $01,$02,$0C,$FF,$07,$28,$29,$2A,$32,$3A,$70,$71,$79,$00,$B8 $6BB2 DEFB $FE,$12,$13 ; id=254 $6BB5 DEFB $01,$03,$0D,$FF,$2B,$25,$1D,$22,$1A,$23,$2B,$2C,$13,$14,$60,$5B $6BC5 DEFB $FF,$0B,$06 ; id=255 $6BC8 DEFB $02,$03,$0C,$FF,$2B,$2E,$35,$37,$3E ; Block Types @label=block_type_tbl b$6BD1 DEFW $6C0B ; $00 - block 07 block $6BD3 DEFW $6C3C ; $01 - sprite b0 (fire) (unused) $6BD5 DEFW $6C43 ; $02 - sprite b2 (ball) [up/down] $6BD7 DEFW $6C66 ; $03 - block 06 rock $6BD9 DEFW $6C6D ; $04 - block 16 gargoyle $6BDB DEFW $6C74 ; $05 - block 17 spike $6BDD DEFW $6C90 ; $06 - sprite 55 (chest) $6BDF DEFW $6C97 ; $07 - sprite 54 (table) $6BE1 DEFW $6C9E ; $08 - sprite 96/90 (guard) [west/east] $6BE3 DEFW $6CB8 ; $09 - sprite 52 (ghost) $6BE5 DEFW $6CBF ; $0A - sprite b5 (fire) [north/south] $6BE7 DEFW $6C12 ; $0B - block 07 block high $6BE9 DEFW $6C4A ; $0C - sprite b2 (ball) [up/down] $6BEB DEFW $6CAB ; $0D - sprite 1e/90 (Guard) [square circuit] $6BED DEFW $6C19 ; $0E - block 36 [west/east] $6BEF DEFW $6C20 ; $0F - block 37 [north/south] $6BF1 DEFW $6C27 ; $10 - block 3e $6BF3 DEFW $6C7B ; $11 - block Spike - high!!! $6BF5 DEFW $6C82 ; $12 - sprite 3f (Spike Ball) $6BF7 DEFW $6C89 ; $13 - sprite 3f (Spike Ball) [falling] $6BF9 DEFW $6CC6 ; $14 - sprite 56 Fire [west/east] $6BFB DEFW $6C2E ; $15 - Block 5b $6BFD DEFW $6C35 ; $16 - block 8f [Collapse] $6BFF DEFW $6C5F ; $17 - sprite b6 (Ball) $6C01 DEFW $6C51 ; $18 - sprite b2 (Ball) $6C03 DEFW $6CCD ; $19 - sprite a4 (Spell) [repel player] $6C05 DEFW $6CD4 ; $1A - sprite 8 (Gate) [up/down] $6C07 DEFW $6CDB ; $1B - sprite 8 (Gate) [up/down] $6C09 DEFW $6C58 ; $1C - sprite b2 (Ball) ; Block type data ; ; #TABLE(default,centre,:w) ; { =h Byte(n) | =h Description } ; { +0 | sprite } ; { +1 | width (x) } ; { +2 | depth (y) } ; { +3 | height (z) } ; { +4 | flags (see code) } ; { +5 | offsets (see code) } ; TABLE# @label=block b$6C0B DEFB $07,$08,$08,$0C,$10,$00,$00 ; Data block at 6C12 @label=block_high b$6C12 DEFB $07,$08,$08,$0C,$10,$30,$00 ; Data block at 6C19 @label=block_ew b$6C19 DEFB $36,$08,$08,$0C,$10,$00,$00 ; Data block at 6C20 @label=block_ns b$6C20 DEFB $37,$08,$08,$0C,$10,$00,$00 ; Data block at 6C27 @label=moveable_block b$6C27 DEFB $3E,$08,$08,$0C,$14,$00,$00 ; Data block at 6C2E @label=dropping_block b$6C2E DEFB $5B,$08,$08,$0C,$10,$00,$00 ; Data block at 6C35 @label=collapsing_block b$6C35 DEFB $8F,$08,$08,$0C,$10,$00,$00 ; Data block at 6C3C @label=fire b$6C3C DEFB $B0,$06,$06,$0C,$10,$00,$00 ; Data block at 6C43 @label=ball_ud_y b$6C43 DEFB $B2,$07,$07,$0C,$10,$02,$00 ; Data block at 6C4A @label=ball_ud_xy b$6C4A DEFB $B2,$07,$07,$0C,$10,$03,$00 ; Data block at 6C51 @label=ball_ud b$6C51 DEFB $B2,$07,$07,$0C,$10,$00,$00 ; Data block at 6C58 @label=ball_ud_x b$6C58 DEFB $B2,$07,$07,$0C,$10,$01,$00 ; Data block at 6C5F @label=ball_bounce b$6C5F DEFB $B6,$07,$07,$0C,$10,$00,$00 ; Data block at 6C66 @label=rock b$6C66 DEFB $06,$08,$08,$0C,$10,$00,$00 ; Data block at 6C6D @label=gargoyle b$6C6D DEFB $16,$06,$06,$0C,$10,$00,$00 ; Data block at 6C74 @label=spike b$6C74 DEFB $17,$06,$06,$0C,$50,$00,$00 ; Data block at 6C7B @label=spike_high b$6C7B DEFB $17,$06,$06,$0C,$50,$30,$00 ; Data block at 6C82 @label=spike_ball_fall b$6C82 DEFB $3F,$06,$06,$0C,$10,$00,$00 ; Data block at 6C89 @label=spike_ball_high_fall b$6C89 DEFB $3F,$06,$06,$0C,$10,$30,$00 ; Data block at 6C90 @label=chest b$6C90 DEFB $55,$09,$06,$0C,$14,$00,$00 ; Data block at 6C97 @label=table b$6C97 DEFB $54,$06,$0A,$0C,$14,$00,$00 ; Data block at 6C9E @label=guard_ew b$6C9E DEFB $96,$06,$06,$18,$10,$02,$90,$06,$06,$00,$12,$02,$00 ; Data block at 6CAB @label=guard_square b$6CAB DEFB $1E,$06,$06,$18,$10,$00,$90,$06,$06,$00,$12,$00,$00 ; Data block at 6CB8 @label=ghost b$6CB8 DEFB $52,$06,$06,$0C,$10,$00,$00 ; Data block at 6CBF @label=fire_ns b$6CBF DEFB $B5,$06,$06,$0C,$10,$00,$00 ; Data block at 6CC6 @label=fire_ew b$6CC6 DEFB $56,$06,$06,$0C,$10,$00,$00 ; Data block at 6CCD @label=repel_spell b$6CCD DEFB $A4,$05,$05,$0C,$10,$00,$00 ; Data block at 6CD4 @label=gate_ud_1 b$6CD4 DEFB $08,$0C,$01,$20,$50,$01,$00 ; Data block at 6CDB @label=gate_ud_2 b$6CDB DEFB $08,$01,$0C,$20,$10,$02,$00 ; Background Types Pointers @label=background_type_tbl b$6CE2 DEFW $6D12 ; $00 - Arch north $6CE4 DEFW $6D23 ; $01 - arch east $6CE6 DEFW $6D45 ; $02 - arch south $6CE8 DEFW $6D67 ; $03 - arch west $6CEA DEFW $6D78 ; $04 - Tree arch north $6CEC DEFW $6D89 ; $05 - Tree arch east $6CEE DEFW $6D9A ; $06 - Tree arch south $6CF0 DEFW $6DAB ; $07 - Tree arch west $6CF2 DEFW $6DBC ; $08 - Gate $6CF4 DEFW $6DC5 ; $09 - Gate $6CF6 DEFW $6DCE ; $0A - Gate $6CF8 DEFW $6DD7 ; $0B - Gate $6CFA DEFW $6DE0 ; $0C - walls size 0 $6CFC DEFW $6E49 ; $0D - walls size 1 $6CFE DEFW $6EBA ; $0E - walls size 2 $6D00 DEFW $6F2B ; $0F - trees size 0 $6D02 DEFW $6F8C ; $10 - trees size 1 $6D04 DEFW $6F9D ; $11 - trees size 2 $6D06 DEFW $6FAE ; $12 - Wizard $6D08 DEFW $6FBF ; $13 - Pot $6D0A DEFW $6D34 ; $14 - High Arch east $6D0C DEFW $6D56 ; $15 - High Arch south $6D0E DEFW $6FD0 ; $16 - High Arch east base $6D10 DEFW $6FE1 ; $17 - High Arch south base ; Background Type Makeup ; ; #TABLE(default,centre,:w) ; { =h Byte(n) | =h Description } ; { +0 | sprite } ; { +1 | x } ; { +2 | y } ; { +3 | z } ; { +4 | width (x) } ; { +5 | depth (y) } ; { +6 | height (z) } ; { +7 | flags (see code) } ; TABLE# @label=arch_n b$6D12 DEFB $02,$8D,$C4,$80,$03,$05,$28,$50 $6D1A DEFB $03,$73,$C4,$80,$03,$05,$28,$50 $6D22 DEFB $00 ; Data block at 6D23 @label=arch_e b$6D23 DEFB $02,$C4,$73,$80,$05,$03,$28,$10 $6D2B DEFB $03,$C4,$8D,$80,$05,$03,$28,$10 $6D33 DEFB $00 ; Data block at 6D34 @label=high_arch_e b$6D34 DEFB $02,$C4,$73,$B0,$05,$03,$28,$10 $6D3C DEFB $03,$C4,$8D,$B0,$05,$03,$28,$10 $6D44 DEFB $00 ; Data block at 6D45 @label=arch_s b$6D45 DEFB $02,$8D,$3B,$80,$03,$05,$28,$50 $6D4D DEFB $03,$73,$3B,$80,$03,$05,$28,$50 $6D55 DEFB $00 ; Data block at 6D56 @label=high_arch_s b$6D56 DEFB $02,$8D,$3B,$B0,$03,$05,$28,$50 $6D5E DEFB $03,$73,$3B,$B0,$03,$05,$28,$50 $6D66 DEFB $00 ; Data block at 6D67 @label=arch_w b$6D67 DEFB $02,$3B,$73,$80,$05,$03,$28,$10 $6D6F DEFB $03,$3B,$8D,$80,$05,$03,$28,$10 $6D77 DEFB $00 ; Data block at 6D78 @label=tree_arch_n b$6D78 DEFB $04,$8D,$C4,$80,$03,$05,$28,$50 $6D80 DEFB $05,$73,$C4,$80,$03,$05,$28,$50 $6D88 DEFB $00 ; Data block at 6D89 @label=tree_arch_e b$6D89 DEFB $04,$C4,$73,$80,$05,$03,$28,$10 $6D91 DEFB $05,$C4,$8D,$80,$05,$03,$28,$10 $6D99 DEFB $00 ; Data block at 6D9A @label=tree_arch_s b$6D9A DEFB $04,$8D,$3B,$80,$03,$05,$28,$50 $6DA2 DEFB $05,$73,$3B,$80,$03,$05,$28,$50 $6DAA DEFB $00 ; Data block at 6DAB @label=tree_arch_w b$6DAB DEFB $04,$3B,$73,$80,$05,$03,$28,$10 $6DB3 DEFB $05,$3B,$8D,$80,$05,$03,$28,$10 $6DBB DEFB $00 ; Data block at 6DBC @label=gate_n b$6DBC DEFB $08,$80,$BE,$A0,$0C,$01,$20,$50 $6DC4 DEFB $00 ; Data block at 6DC5 @label=gate_e b$6DC5 DEFB $08,$BE,$80,$A0,$01,$0C,$20,$10 $6DCD DEFB $00 ; Data block at 6DCE @label=gate_s b$6DCE DEFB $08,$80,$41,$A0,$0C,$01,$20,$50 $6DD6 DEFB $00 ; Data block at 6DD7 @label=gate_w b$6DD7 DEFB $08,$41,$80,$A0,$01,$0C,$20,$10 $6DDF DEFB $00 ; Data block at 6DE0 @label=wall_size_1 b$6DE0 DEFB $0D,$3F,$B8,$80,$00,$08,$28,$10 $6DE8 DEFB $0E,$47,$C0,$80,$08,$00,$28,$10 $6DF0 DEFB $0F,$3F,$49,$80,$00,$08,$2C,$10 $6DF8 DEFB $0F,$B8,$C0,$80,$08,$00,$2C,$50 $6E00 DEFB $0F,$3F,$49,$AC,$00,$08,$2C,$10 $6E08 DEFB $0F,$B8,$C0,$AC,$08,$00,$2C,$50 $6E10 DEFB $0A,$5C,$C0,$80,$14,$00,$14,$50 $6E18 DEFB $0B,$3F,$5C,$98,$00,$0C,$14,$10 $6E20 DEFB $0C,$3F,$A0,$98,$00,$0C,$0C,$10 $6E28 DEFB $0B,$A4,$C0,$98,$0C,$00,$14,$50 $6E30 DEFB $0A,$3F,$6D,$B1,$00,$14,$14,$10 $6E38 DEFB $0C,$60,$C0,$A0,$0C,$00,$0C,$50 $6E40 DEFB $0A,$90,$C0,$B0,$14,$00,$14,$50 $6E48 DEFB $00 ; Data block at 6E49 @label=wall_size_2 b$6E49 DEFB $0D,$3F,$98,$80,$00,$08,$28,$10 $6E51 DEFB $0E,$47,$A0,$80,$08,$00,$28,$10 $6E59 DEFB $0F,$3F,$63,$80,$00,$08,$2C,$10 $6E61 DEFB $0F,$B8,$A0,$80,$08,$00,$2C,$50 $6E69 DEFB $0F,$3F,$63,$AC,$00,$08,$2C,$10 $6E71 DEFB $0F,$B8,$A0,$AC,$08,$00,$2C,$50 $6E79 DEFB $0D,$3F,$98,$A8,$00,$08,$28,$10 $6E81 DEFB $0E,$47,$A0,$A8,$08,$00,$28,$10 $6E89 DEFB $0F,$B8,$A0,$D0,$08,$00,$2C,$50 $6E91 DEFB $0A,$80,$A0,$80,$14,$00,$14,$50 $6E99 DEFB $0A,$3F,$7E,$B0,$00,$14,$14,$10 $6EA1 DEFB $0B,$60,$A0,$90,$0C,$00,$14,$50 $6EA9 DEFB $0A,$60,$A0,$B8,$14,$00,$14,$50 $6EB1 DEFB $0C,$A0,$A0,$B0,$0C,$00,$0C,$50 $6EB9 DEFB $00 ; Data block at 6EBA @label=wall_size_3 b$6EBA DEFB $0D,$5F,$B8,$80,$00,$08,$28,$10 $6EC2 DEFB $0E,$67,$C0,$80,$08,$00,$28,$10 $6ECA DEFB $0F,$5F,$48,$80,$00,$08,$2C,$10 $6ED2 DEFB $0F,$9D,$C0,$80,$08,$00,$2C,$50 $6EDA DEFB $0D,$5F,$B8,$A8,$00,$08,$28,$10 $6EE2 DEFB $0E,$67,$C0,$A8,$08,$00,$28,$10 $6EEA DEFB $0F,$5F,$48,$AC,$00,$08,$2C,$10 $6EF2 DEFB $0F,$9D,$C0,$AC,$08,$00,$2C,$50 $6EFA DEFB $0F,$5F,$48,$D0,$00,$08,$2C,$10 $6F02 DEFB $0A,$5F,$90,$80,$00,$14,$14,$10 $6F0A DEFB $0A,$84,$C0,$B0,$14,$00,$14,$50 $6F12 DEFB $0B,$5F,$60,$90,$00,$0C,$14,$10 $6F1A DEFB $0A,$5F,$68,$B8,$00,$14,$14,$10 $6F22 DEFB $0C,$5F,$A0,$B0,$00,$0C,$0C,$10 $6F2A DEFB $00 ; Data block at 6F2B @label=tree_room_size_1 b$6F2B DEFB $80,$3F,$49,$80,$00,$08,$2C,$10 $6F33 DEFB $81,$3F,$58,$80,$00,$08,$2C,$10 $6F3B DEFB $82,$3F,$68,$80,$00,$08,$2C,$10 $6F43 DEFB $80,$3F,$98,$80,$00,$08,$2C,$10 $6F4B DEFB $81,$3F,$A8,$80,$00,$08,$2C,$10 $6F53 DEFB $82,$3F,$B8,$80,$00,$08,$2C,$10 $6F5B DEFB $80,$48,$C0,$80,$08,$00,$2C,$50 $6F63 DEFB $81,$58,$C0,$80,$08,$00,$2C,$50 $6F6B DEFB $82,$68,$C0,$80,$08,$00,$2C,$50 $6F73 DEFB $80,$98,$C0,$80,$08,$00,$2C,$50 $6F7B DEFB $81,$A8,$C0,$80,$08,$00,$2C,$50 $6F83 DEFB $82,$B8,$C0,$80,$08,$00,$2C,$50 $6F8B DEFB $00 ; Data block at 6F8C @label=tree_filler_w b$6F8C DEFB $80,$3F,$78,$80,$00,$08,$2C,$10 $6F94 DEFB $81,$3F,$88,$80,$00,$08,$2C,$10 $6F9C DEFB $00 ; Data block at 6F9D @label=tree_filler_n b$6F9D DEFB $80,$78,$C0,$80,$08,$00,$2C,$50 $6FA5 DEFB $81,$88,$C0,$80,$08,$00,$2C,$50 $6FAD DEFB $00 ; Data block at 6FAE @label=wizard b$6FAE DEFB $9E,$98,$68,$80,$05,$05,$18,$10 $6FB6 DEFB $90,$A0,$60,$80,$05,$05,$00,$12 $6FBE DEFB $00 ; Data block at 6FBF @label=cauldron b$6FBF DEFB $8D,$80,$80,$80,$0A,$0A,$18,$10 $6FC7 DEFB $8E,$80,$88,$80,$00,$00,$00,$12 $6FCF DEFB $00 ; Data block at 6FD0 @label=high_arch_e_base b$6FD0 DEFB $07,$C8,$78,$A4,$08,$08,$0C,$10 $6FD8 DEFB $07,$C8,$88,$A4,$08,$08,$0C,$10 $6FE0 DEFB $00 ; Data block at 6FE1 @label=high_arch_s_base b$6FE1 DEFB $07,$78,$38,$A4,$08,$08,$0C,$10 $6FE9 DEFB $07,$88,$38,$A4,$08,$08,$0C,$10 $6FF1 DEFB $00 ; Objects ; ; #TABLE(default,centre,:w) ; { =h Byte(n) | =h Description } ; { +0 | object graphic no (dynamic $60-$67) } ; { +1 | start X position ($46-0xba) } ; { +2 | start Y position ($40-$70 +/-0x0c) } ; { +3 | start Z position ($46-0xba) } ; { +4 | start screen } ; { +5 | current X } ; { +6 | current Y } ; { +7 | current Z } ; { +8 | current screen } ; TABLE# @label=special_objs_tbl b$6FF2 DEFB $00,$88,$80,$A4,$6D,$00,$00,$00,$00 $6FFB DEFB $00,$80,$80,$8C,$27,$00,$00,$00,$00 $7004 DEFB $00,$88,$78,$B0,$D0,$00,$00,$00,$00 $700D DEFB $00,$78,$88,$80,$0A,$00,$00,$00,$00 $7016 DEFB $00,$78,$88,$80,$BA,$00,$00,$00,$00 $701F DEFB $00,$88,$78,$B0,$42,$00,$00,$00,$00 $7028 DEFB $00,$88,$B8,$BC,$8D,$00,$00,$00,$00 $7031 DEFB $00,$A8,$A8,$80,$FF,$00,$00,$00,$00 $703A DEFB $00,$80,$80,$80,$87,$00,$00,$00,$00 $7043 DEFB $00,$78,$B8,$80,$F3,$00,$00,$00,$00 $704C DEFB $00,$A8,$68,$B0,$A8,$00,$00,$00,$00 $7055 DEFB $00,$B8,$48,$B0,$D2,$00,$00,$00,$00 $705E DEFB $00,$48,$48,$80,$00,$00,$00,$00,$00 $7067 DEFB $00,$88,$B8,$80,$22,$00,$00,$00,$00 $7070 DEFB $00,$B8,$B8,$B0,$7A,$00,$00,$00,$00 $7079 DEFB $00,$B8,$B8,$80,$F9,$00,$00,$00,$00 $7082 DEFB $00,$88,$98,$B0,$D6,$00,$00,$00,$00 $708B DEFB $00,$78,$88,$B0,$E8,$00,$00,$00,$00 $7094 DEFB $00,$78,$78,$B0,$F6,$00,$00,$00,$00 $709D DEFB $00,$88,$78,$8C,$0F,$00,$00,$00,$00 $70A6 DEFB $00,$B8,$B8,$80,$6F,$00,$00,$00,$00 $70AF DEFB $00,$48,$B8,$A4,$FD,$00,$00,$00,$00 $70B8 DEFB $00,$78,$78,$B0,$08,$00,$00,$00,$00 $70C1 DEFB $00,$88,$88,$A4,$BB,$00,$00,$00,$00 $70CA DEFB $00,$78,$78,$B0,$DF,$00,$00,$00,$00 $70D3 DEFB $00,$80,$80,$80,$5E,$00,$00,$00,$00 $70DC DEFB $00,$78,$88,$B0,$B4,$00,$00,$00,$00 $70E5 DEFB $00,$78,$78,$B0,$04,$00,$00,$00,$00 $70EE DEFB $00,$48,$B8,$80,$74,$00,$00,$00,$00 $70F7 DEFB $00,$80,$80,$80,$40,$00,$00,$00,$00 $7100 DEFB $00,$68,$78,$B0,$38,$00,$00,$00,$00 $7109 DEFB $00,$48,$B8,$98,$F0,$00,$00,$00,$00 ; Pointers to Sprite Graphics @label=sprite_tbl b$7112 DEFW $728A,$728A,$9ACA,$9C04,$7FB0,$80A2,$77AA,$7E08 $7122 DEFW $8A0C,$8A0C,$9EB8,$9FB4,$A046,$9946,$9A08,$9C92 $7132 DEFW $922E,$9290,$92F2,$9354,$92F2,$9290,$7894,$7404 $7142 DEFW $93B6,$9418,$947A,$94DC,$947A,$9418,$763C,$75B0 $7152 DEFW $8F42,$8FD4,$8CEE,$8EB0,$8CEE,$8FD4,$8E18,$953E $7162 DEFW $9066,$8D80,$9196,$90FE,$9196,$8D80,$9668,$95D0 $7172 DEFW $A0B4,$A116,$A178,$A1DA,$A178,$A116,$7E08,$7E08 $7182 DEFW $A23C,$A29E,$A300,$A362,$A300,$A29E,$7E08,$74E6 $7192 DEFW $A3C4,$A474,$A524,$A5D4,$A524,$A474,$A95C,$AA0C $71A2 DEFW $A8A6,$A7F0,$A73A,$A684,$A73A,$A7F0,$AABC,$AB72 $71B2 DEFW $882A,$88A4,$8918,$8992,$8BF4,$8B0A,$7926,$7964 $71C2 DEFW $87A6,$87E8,$728C,$7E08,$AC28,$ACEA,$ADB2,$AE98 $71D2 DEFW $84A0,$8514,$7F30,$859A,$8626,$8694,$8726,$7EEA $71E2 DEFW $84A0,$8514,$7F30,$859A,$8626,$8694,$8726,$840E $71F2 DEFW $840E,$837C,$840E,$837C,$82EA,$825E,$81DE,$8164 $7202 DEFW $8164,$81DE,$825E,$82EA,$837C,$840E,$837C,$840E $7212 DEFW $9700,$97C2,$9884,$840E,$837C,$82EA,$7DE6,$7C96 $7222 DEFW $7DA4,$7B5A,$7C5C,$7C64,$7EEA,$9D54,$9E5E,$7E08 $7232 DEFW $922E,$9290,$92F2,$9354,$92F2,$9290,$763C,$75B0 $7242 DEFW $93B6,$9418,$947A,$94DC,$947A,$9418,$7A92,$79A6 $7252 DEFW $840E,$837C,$82EA,$837C,$840E,$837C,$82EA,$837C $7262 DEFW $84A0,$8514,$7F30,$859A,$8626,$8694,$8726,$7EEA $7272 DEFW $7926,$7964,$76C8,$773C,$7926,$7964,$76C8,$773C $7282 DEFW $840E,$837C,$7348,$840E ; Sprite Graphics Data ; ; #TABLE(default,centre,:w) ; { =h Byte(n) | =h Description } ; { +0 | width } ; { +1 | height } ; { 0..height | data } ; { 0..width | data } ; { +0 | mask } ; { +1 | image } ; TABLE# @label=spr_nul b$728A DEFB $00,$00 ; Data block at 728C @label=spr_000 b$728C DEFB $03,$1F $728E DEFB $FF,$1F,$FF,$00,$FF,$00,$FF,$31 $7296 DEFB $FF,$C0,$FF,$00,$FF,$2F,$FF,$F0 $729E DEFB $FF,$00,$FF,$37,$FF,$FE,$FF,$00 $72A6 DEFB $FF,$1F,$FF,$3F,$FF,$E0,$FF,$07 $72AE DEFB $BF,$0F,$FF,$FF,$FF,$07,$8F,$03 $72B6 DEFB $FF,$FF,$FF,$07,$83,$00,$FF,$3F $72BE DEFB $FF,$07,$80,$00,$3F,$00,$FF,$0F $72C6 DEFB $80,$00,$00,$00,$FF,$1D,$80,$00 $72CE DEFB $00,$00,$FF,$3F,$80,$00,$00,$00 $72D6 DEFB $FF,$27,$80,$00,$00,$00,$FF,$07 $72DE DEFB $80,$00,$00,$00,$FF,$27,$80,$00 $72E6 DEFB $00,$00,$FF,$3F,$80,$00,$00,$00 $72EE DEFB $FF,$1D,$80,$00,$00,$00,$FF,$0F $72F6 DEFB $80,$00,$00,$00,$FF,$07,$80,$00 $72FE DEFB $00,$00,$FF,$07,$80,$00,$00,$00 $7306 DEFB $FF,$1F,$80,$00,$00,$00,$FF,$33 $730E DEFB $80,$00,$00,$00,$FF,$2F,$80,$00 $7316 DEFB $00,$00,$FF,$37,$C0,$00,$00,$00 $731E DEFB $FF,$19,$F0,$C0,$00,$00,$FF,$0F $7326 DEFB $FE,$F0,$00,$00,$FF,$03,$FF,$FE $732E DEFB $E0,$00,$FF,$00,$FF,$FF,$FF,$E0 $7336 DEFB $FF,$00,$FF,$1F,$FF,$FF,$FF,$00 $733E DEFB $FF,$03,$FF,$FF,$FF,$00,$FF,$00 $7346 DEFB $FF,$3F ; Data block at 7348 @label=spr_001 b$7348 DEFB $03,$1F $734A DEFB $FF,$00,$FF,$00,$FF,$F8,$FF,$00 $7352 DEFB $FF,$03,$FF,$8C,$FF,$00,$FF,$0F $735A DEFB $FF,$F4,$FF,$00,$FF,$7F,$FF,$EC $7362 DEFB $FF,$07,$FF,$FC,$FF,$F8,$FF,$FF $736A DEFB $FD,$F0,$FF,$E0,$FF,$FF,$F1,$C0 $7372 DEFB $FF,$E0,$FF,$FC,$C1,$00,$FF,$E0 $737A DEFB $FC,$00,$01,$00,$FF,$E0,$00,$00 $7382 DEFB $01,$00,$FF,$F0,$00,$00,$01,$00 $738A DEFB $FF,$D8,$00,$00,$01,$00,$FF,$FC $7392 DEFB $00,$00,$01,$00,$FF,$E4,$00,$00 $739A DEFB $01,$00,$FF,$E0,$00,$00,$01,$00 $73A2 DEFB $FF,$E4,$00,$00,$01,$00,$FF,$FC $73AA DEFB $00,$00,$01,$00,$FF,$D8,$00,$00 $73B2 DEFB $01,$00,$FF,$F0,$00,$00,$01,$00 $73BA DEFB $FF,$E0,$00,$00,$01,$00,$FF,$E0 $73C2 DEFB $00,$00,$01,$00,$FF,$F8,$00,$00 $73CA DEFB $01,$00,$FF,$CC,$00,$00,$01,$00 $73D2 DEFB $FF,$F4,$00,$00,$03,$00,$FF,$EC $73DA DEFB $00,$00,$0F,$03,$FF,$98,$00,$00 $73E2 DEFB $7F,$0F,$FF,$F0,$07,$00,$FF,$7F $73EA DEFB $FF,$C0,$FF,$07,$FF,$FF,$FF,$00 $73F2 DEFB $FF,$FF,$FF,$F8,$FF,$00,$FF,$FF $73FA DEFB $FF,$C0,$FF,$00,$FF,$FC,$FF,$00 $7402 DEFB $FF,$00 ; Data block at 7404 @label=spr_002 b$7404 DEFB $04,$1C $7406 DEFB $00,$00,$01,$00,$80,$00,$00,$00 $740E DEFB $00,$00,$07,$01,$E0,$80,$00,$00 $7416 DEFB $00,$00,$1F,$07,$F8,$E0,$00,$00 $741E DEFB $00,$00,$7F,$1E,$FE,$78,$00,$00 $7426 DEFB $01,$00,$FF,$79,$FF,$9E,$80,$00 $742E DEFB $07,$01,$FF,$E7,$FF,$E7,$E0,$80 $7436 DEFB $1F,$07,$FF,$9D,$FF,$F9,$F8,$E0 $743E DEFB $7F,$1E,$FF,$7D,$FF,$BE,$FE,$78 $7446 DEFB $FF,$79,$FF,$ED,$FF,$AD,$FF,$9E $744E DEFB $FF,$67,$FF,$6D,$FF,$AD,$FF,$E6 $7456 DEFB $FF,$1F,$FF,$6D,$FF,$AD,$FF,$F8 $745E DEFB $FF,$7F,$FF,$AD,$FF,$6B,$FF,$FE $7466 DEFB $FF,$5D,$FF,$AD,$FF,$6B,$FF,$BA $746E DEFB $7F,$1D,$FF,$DD,$FF,$6B,$FE,$B8 $7476 DEFB $1F,$0D,$FF,$FD,$FF,$77,$F8,$B8 $747E DEFB $1F,$0D,$FF,$6E,$FF,$FE,$F8,$B8 $7486 DEFB $1F,$0D,$FF,$6F,$FF,$FC,$F8,$B0 $748E DEFB $1D,$08,$FF,$6D,$FF,$B6,$F8,$30 $7496 DEFB $1C,$08,$FF,$6D,$FF,$B6,$38,$10 $749E DEFB $1C,$08,$FF,$65,$FF,$A6,$38,$10 $74A6 DEFB $1C,$08,$E7,$41,$EF,$86,$38,$10 $74AE DEFB $1C,$08,$E3,$41,$C7,$82,$10,$00 $74B6 DEFB $08,$00,$E1,$40,$C7,$82,$00,$00 $74BE DEFB $00,$00,$E1,$40,$C7,$82,$00,$00 $74C6 DEFB $00,$00,$41,$00,$C2,$80,$00,$00 $74CE DEFB $00,$00,$01,$00,$C0,$80,$00,$00 $74D6 DEFB $00,$00,$01,$00,$C0,$80,$00,$00 $74DE DEFB $00,$00,$00,$00,$80,$00,$00,$00 ; Data block at 74E6 @label=spr_003 b$74E6 DEFB $04,$19 $74E8 DEFB $00,$00,$00,$00,$80,$00,$00,$00 $74F0 DEFB $00,$00,$01,$00,$C0,$80,$00,$00 $74F8 DEFB $00,$00,$07,$00,$E2,$80,$00,$00 $7500 DEFB $00,$00,$3F,$07,$F7,$E2,$00,$00 $7508 DEFB $03,$00,$7F,$2F,$FF,$F4,$00,$00 $7510 DEFB $07,$03,$FF,$13,$FE,$F4,$00,$00 $7518 DEFB $03,$01,$FF,$6D,$FF,$EA,$00,$00 $7520 DEFB $01,$00,$FF,$ED,$FF,$F7,$80,$00 $7528 DEFB $01,$00,$FF,$F3,$FF,$FF,$E0,$00 $7530 DEFB $0F,$00,$FF,$7F,$FF,$FC,$F0,$60 $7538 DEFB $1F,$0F,$FF,$BF,$FF,$FB,$E0,$80 $7540 DEFB $0F,$00,$FF,$7C,$FF,$F6,$C0,$00 $7548 DEFB $03,$01,$FF,$FB,$FF,$F9,$F0,$80 $7550 DEFB $03,$01,$FF,$FC,$FF,$FF,$F8,$F0 $7558 DEFB $07,$01,$FF,$FF,$FF,$FF,$F0,$80 $7560 DEFB $0F,$06,$FF,$FF,$FF,$F7,$80,$00 $7568 DEFB $1F,$08,$FF,$CF,$FF,$EB,$80,$00 $7570 DEFB $08,$00,$FF,$37,$FF,$F4,$00,$00 $7578 DEFB $00,$00,$FF,$6F,$FF,$FA,$00,$00 $7580 DEFB $01,$00,$FF,$9E,$FF,$F9,$80,$00 $7588 DEFB $00,$00,$9F,$05,$F9,$60,$00,$00 $7590 DEFB $00,$00,$1F,$09,$F8,$10,$00,$00 $7598 DEFB $00,$00,$1F,$09,$9C,$08,$00,$00 $75A0 DEFB $00,$00,$0B,$01,$88,$00,$00,$00 $75A8 DEFB $00,$00,$01,$00,$00,$00,$00,$00 ; Data block at 75B0 @label=spr_004 b$75B0 DEFB $03,$17 $75B2 DEFB $03,$00,$7F,$00,$00,$00,$07,$03 $75BA DEFB $FF,$3F,$E0,$00,$0F,$07,$FF,$7F $75C2 DEFB $F0,$E0,$0F,$03,$FF,$7F,$F8,$F0 $75CA DEFB $1F,$0B,$FF,$7F,$F8,$F0,$1F,$0B $75D2 DEFB $FF,$7F,$F0,$E0,$0F,$05,$FF,$01 $75DA DEFB $F0,$E0,$0F,$06,$FF,$60,$F0,$20 $75E2 DEFB $0F,$05,$FF,$F0,$F0,$00,$07,$03 $75EA DEFB $FF,$B0,$F8,$C0,$07,$03,$FF,$32 $75F2 DEFB $FC,$C8,$0F,$06,$FF,$BB,$FC,$28 $75FA DEFB $0F,$05,$FF,$5C,$FC,$68,$07,$03 $7602 DEFB $FF,$2F,$F8,$90,$07,$03,$FF,$33 $760A DEFB $F8,$F0,$07,$03,$FF,$3C,$F0,$60 $7612 DEFB $03,$01,$FF,$BF,$F0,$A0,$03,$01 $761A DEFB $FF,$9F,$E0,$C0,$01,$00,$FF,$DF $7622 DEFB $E0,$C0,$00,$00,$FF,$6F,$C0,$80 $762A DEFB $00,$00,$7F,$37,$80,$00,$00,$00 $7632 DEFB $3F,$1C,$00,$00,$00,$00,$1C,$00 $763A DEFB $00,$00 ; Data block at 763C @label=spr_005 b$763C DEFB $03,$17 $763E DEFB $01,$00,$80,$00,$00,$00,$03,$01 $7646 DEFB $FF,$80,$00,$00,$07,$03,$FF,$BF $764E DEFB $E0,$00,$0F,$03,$FF,$7F,$F0,$E0 $7656 DEFB $1F,$0B,$FF,$7F,$F8,$F0,$1F,$0B $765E DEFB $FF,$BF,$F8,$F0,$0F,$05,$FF,$BF $7666 DEFB $F0,$E0,$0F,$05,$FF,$81,$F0,$E0 $766E DEFB $07,$00,$FF,$7E,$E0,$40,$0F,$01 $7676 DEFB $FF,$FF,$C0,$80,$1F,$0D,$FF,$C2 $767E DEFB $E0,$40,$1F,$0D,$FF,$BC,$F0,$60 $7686 DEFB $1F,$0D,$FF,$BC,$F0,$20,$0F,$05 $768E DEFB $FF,$BE,$F0,$40,$07,$03,$FF,$BC $7696 DEFB $F0,$E0,$0F,$07,$FF,$7C,$E0,$C0 $769E DEFB $0F,$06,$FF,$FC,$E0,$C0,$07,$01 $76A6 DEFB $FF,$FD,$C0,$80,$03,$01,$FF,$F9 $76AE DEFB $C0,$80,$01,$00,$FF,$FB,$80,$00 $76B6 DEFB $00,$00,$FF,$76,$00,$00,$00,$00 $76BE DEFB $7E,$38,$00,$00,$00,$00,$38,$00 $76C6 DEFB $00,$00 ; Data block at 76C8 @label=spr_006 b$76C8 DEFB $03,$13 $76CA DEFB $00,$00,$3E,$00,$00,$00,$00,$00 $76D2 DEFB $FF,$3E,$80,$00,$01,$00,$FF,$FF $76DA DEFB $C0,$80,$03,$01,$FF,$FF,$E0,$C0 $76E2 DEFB $07,$03,$FF,$FF,$F0,$E0,$0F,$07 $76EA DEFB $FF,$FF,$F8,$F0,$0F,$07,$FF,$FF $76F2 DEFB $F8,$F0,$1F,$0F,$FF,$FF,$FC,$F8 $76FA DEFB $1F,$0F,$FF,$FF,$FC,$F8,$1F,$0C $7702 DEFB $FF,$FF,$FC,$F8,$1F,$0C,$FF,$FF $770A DEFB $FC,$F8,$1F,$0C,$FF,$7F,$FC,$F8 $7712 DEFB $0F,$06,$FF,$3F,$F8,$F0,$0F,$07 $771A DEFB $FF,$1F,$F8,$F0,$07,$03,$FF,$87 $7722 DEFB $F0,$E0,$03,$01,$FF,$C7,$E0,$C0 $772A DEFB $01,$00,$FF,$FF,$C0,$80,$00,$00 $7732 DEFB $FF,$3E,$80,$00,$00,$00,$3E,$00 $773A DEFB $00,$00 ; Data block at 773C @label=spr_007 b$773C DEFB $03,$12 $773E DEFB $00,$00,$3E,$00,$00,$00,$01,$00 $7746 DEFB $FF,$3E,$C0,$00,$03,$01,$FF,$FF $774E DEFB $E0,$C0,$07,$03,$FF,$FF,$F0,$E0 $7756 DEFB $0F,$07,$FF,$FF,$F8,$F0,$1F,$0F $775E DEFB $FF,$FF,$FC,$F8,$1F,$0F,$FF,$FF $7766 DEFB $FC,$F8,$3F,$1F,$FF,$FF,$FE,$FC $776E DEFB $3F,$19,$FF,$FF,$FE,$FC,$3F,$19 $7776 DEFB $FF,$FF,$FE,$FC,$3F,$1C,$FF,$FF $777E DEFB $FE,$FC,$1F,$0C,$FF,$7F,$FC,$F8 $7786 DEFB $1F,$0E,$FF,$3F,$FC,$F8,$0F,$07 $778E DEFB $FF,$07,$F8,$F0,$07,$03,$FF,$C7 $7796 DEFB $F0,$E0,$03,$01,$FF,$FF,$E0,$C0 $779E DEFB $01,$00,$FF,$3E,$C0,$00,$00,$00 $77A6 DEFB $3E,$00,$00,$00 ; Data block at 77AA @label=spr_008 b$77AA DEFB $04,$1D $77AC DEFB $00,$00,$38,$00,$70,$00,$00,$00 $77B4 DEFB $00,$00,$7F,$38,$FC,$70,$00,$00 $77BC DEFB $00,$00,$FF,$04,$FE,$E4,$00,$00 $77C4 DEFB $01,$00,$FF,$87,$FF,$CE,$00,$00 $77CC DEFB $01,$00,$FF,$E7,$FF,$CE,$80,$00 $77D4 DEFB $03,$01,$FF,$47,$FF,$CE,$E0,$80 $77DC DEFB $07,$01,$FF,$66,$FF,$1A,$F8,$60 $77E4 DEFB $3F,$06,$FF,$66,$FF,$1B,$FC,$78 $77EC DEFB $7F,$3C,$FF,$32,$FF,$3D,$FE,$3C $77F4 DEFB $7F,$12,$FF,$73,$FF,$3C,$FE,$3C $77FC DEFB $FF,$62,$FF,$E7,$FF,$1C,$FF,$32 $7804 DEFB $FF,$62,$FF,$6D,$FF,$1E,$FF,$32 $780C DEFB $FF,$76,$FF,$4D,$FF,$DE,$FF,$32 $7814 DEFB $FF,$24,$FF,$4F,$FF,$FE,$FF,$66 $781C DEFB $FF,$6C,$FF,$7F,$FF,$FE,$FF,$66 $7824 DEFB $FF,$6C,$FF,$FF,$FF,$FF,$FE,$64 $782C DEFB $FF,$72,$FF,$FF,$FF,$FF,$FE,$E4 $7834 DEFB $FF,$73,$FF,$FF,$FF,$FF,$FE,$F4 $783C DEFB $FF,$7F,$FF,$FF,$FF,$FF,$FF,$FA $7844 DEFB $7F,$3F,$FF,$FF,$FF,$FF,$FF,$FA $784C DEFB $7F,$3F,$FF,$FF,$FF,$FF,$FF,$FE $7854 DEFB $3F,$1F,$FF,$FF,$FF,$FF,$FE,$FC $785C DEFB $1F,$0F,$FF,$FF,$FF,$FF,$FE,$FC $7864 DEFB $0F,$07,$FF,$FF,$FF,$FF,$FC,$F8 $786C DEFB $07,$03,$FF,$FF,$FF,$FF,$F8,$E0 $7874 DEFB $03,$00,$FF,$7F,$FF,$FF,$E0,$00 $787C DEFB $00,$00,$7F,$37,$FF,$FE,$00,$00 $7884 DEFB $00,$00,$37,$03,$FE,$C0,$00,$00 $788C DEFB $00,$00,$03,$00,$C0,$00,$00,$00 ; Data block at 7894 @label=spr_009 b$7894 DEFB $03,$18 $7896 DEFB $00,$00,$10,$00,$00,$00,$00,$00 $789E DEFB $7C,$10,$00,$00,$01,$00,$FF,$7C $78A6 DEFB $00,$00,$07,$00,$FF,$FF,$C0,$00 $78AE DEFB $1F,$07,$FF,$E7,$F0,$C0,$7F,$1F $78B6 DEFB $FF,$99,$FC,$F0,$FF,$7E,$FF,$60 $78BE DEFB $FE,$7C,$7F,$39,$FF,$9C,$FF,$1E $78C6 DEFB $3F,$07,$FF,$7B,$FE,$A4,$1F,$0E $78CE DEFB $FF,$F7,$FC,$B0,$0F,$04,$FF,$FC $78D6 DEFB $F0,$60,$07,$03,$FF,$3E,$E0,$80 $78DE DEFB $0F,$07,$FF,$DE,$C0,$00,$0F,$07 $78E6 DEFB $FF,$FD,$E0,$C0,$07,$03,$FF,$F7 $78EE DEFB $F0,$60,$03,$00,$FF,$FC,$F0,$A0 $78F6 DEFB $00,$00,$FF,$38,$F8,$90,$00,$00 $78FE DEFB $7F,$37,$F8,$F0,$00,$00,$7F,$3F $7906 DEFB $F0,$E0,$00,$00,$7F,$33,$E0,$C0 $790E DEFB $00,$00,$FF,$73,$C0,$80,$00,$00 $7916 DEFB $FF,$7F,$E0,$C0,$00,$00,$FF,$61 $791E DEFB $E0,$C0,$00,$00,$61,$00,$C0,$00 ; Data block at 7926 @label=spr_010 b$7926 DEFB $02,$0F $7928 DEFB $1F,$0C,$F0,$00,$1F,$0B,$F8,$F0 $7930 DEFB $0F,$07,$FC,$F8,$1F,$0F,$FE,$7C $7938 DEFB $3F,$0E,$FE,$FC,$7F,$2D,$FE,$7C $7940 DEFB $7F,$2D,$FE,$6C,$7F,$25,$FC,$68 $7948 DEFB $3F,$15,$FC,$68,$3F,$12,$FE,$C4 $7950 DEFB $1F,$02,$FC,$90,$1F,$08,$F8,$90 $7958 DEFB $1D,$08,$F0,$20,$0B,$01,$F0,$20 $7960 DEFB $01,$00,$20,$00 ; Data block at 7964 @label=spr_011 b$7964 DEFB $02,$10 $7966 DEFB $03,$00,$C0,$00,$07,$03,$F8,$C0 $796E DEFB $0F,$07,$FC,$F8,$0F,$05,$FE,$FC $7976 DEFB $1F,$0C,$FE,$DC,$5F,$0C,$FE,$9C $797E DEFB $FD,$48,$DE,$88,$EE,$44,$DF,$82 $7986 DEFB $EE,$44,$FF,$26,$7F,$2F,$7E,$6C $798E DEFB $3F,$0E,$7E,$6C,$3F,$16,$7E,$64 $7996 DEFB $3F,$12,$7E,$64,$3F,$12,$E7,$42 $799E DEFB $1F,$09,$E7,$42,$09,$00,$42,$00 ; Data block at 79A6 @label=spr_012 b$79A6 DEFB $03,$27 $79A8 DEFB $00,$00,$80,$00,$00,$00,$01,$00 $79B0 DEFB $C0,$80,$00,$00,$03,$01,$C0,$80 $79B8 DEFB $04,$00,$07,$02,$C0,$80,$E0,$04 $79C0 DEFB $0F,$06,$C0,$80,$0E,$04,$0F,$06 $79C8 DEFB $C0,$80,$1F,$0A,$1F,$0E,$FF,$40 $79D0 DEFB $1F,$0A,$1F,$0C,$FF,$5F,$BF,$1A $79D8 DEFB $1F,$0C,$FF,$5F,$FF,$92,$1F,$0C $79E0 DEFB $FF,$5F,$FF,$B2,$3F,$1E,$FF,$5F $79E8 DEFB $FF,$B2,$3F,$1E,$FF,$BD,$FF,$B2 $79F0 DEFB $3F,$1F,$FF,$7A,$FF,$B2,$3F,$1E $79F8 DEFB $FF,$F2,$FF,$B2,$3F,$1E,$FF,$EA $7A00 DEFB $FE,$BC,$3F,$1E,$FF,$CA,$FC,$F8 $7A08 DEFB $1F,$0F,$FF,$AF,$F8,$70,$1F,$0F $7A10 DEFB $FF,$AF,$F0,$60,$0F,$07,$FF,$BF $7A18 DEFB $F0,$60,$07,$03,$FF,$BF,$E0,$00 $7A20 DEFB $03,$01,$FF,$7F,$E0,$40,$07,$02 $7A28 DEFB $FF,$64,$F0,$A0,$07,$02,$FF,$40 $7A30 DEFB $F0,$20,$07,$02,$FF,$1B,$F0,$20 $7A38 DEFB $07,$03,$FF,$20,$F0,$A0,$07,$03 $7A40 DEFB $FF,$C0,$E0,$40,$07,$03,$FF,$FF $7A48 DEFB $C0,$80,$07,$03,$FF,$FF,$80,$00 $7A50 DEFB $07,$03,$FF,$8F,$80,$00,$07,$03 $7A58 DEFB $FF,$16,$00,$00,$07,$03,$FE,$3C $7A60 DEFB $00,$00,$03,$01,$FC,$78,$00,$00 $7A68 DEFB $03,$01,$F8,$70,$00,$00,$03,$01 $7A70 DEFB $F8,$F0,$00,$00,$03,$01,$F0,$E0 $7A78 DEFB $00,$00,$03,$01,$E0,$C0,$00,$00 $7A80 DEFB $03,$01,$C0,$80,$00,$00,$03,$01 $7A88 DEFB $80,$00,$00,$00,$01,$00,$00,$00 $7A90 DEFB $00,$00 ; Data block at 7A92 @label=spr_013 b$7A92 DEFB $03,$21 $7A94 DEFB $20,$00,$00,$00,$00,$00,$70,$20 $7A9C DEFB $00,$00,$00,$00,$78,$30,$00,$00 $7AA4 DEFB $00,$00,$7C,$38,$7F,$00,$10,$00 $7AAC DEFB $7E,$3C,$FF,$7F,$B8,$10,$7F,$3E $7AB4 DEFB $FF,$FF,$F8,$B0,$FF,$7F,$FF,$7F $7ABC DEFB $FC,$B8,$FF,$7F,$FF,$BF,$FC,$B8 $7AC4 DEFB $FF,$7F,$FF,$DF,$FE,$BC,$FF,$7F $7ACC DEFB $FF,$DF,$FE,$7C,$FF,$7F,$FF,$EF $7AD4 DEFB $FE,$7C,$FF,$7F,$FF,$FF,$FE,$FC $7ADC DEFB $FF,$7F,$FF,$FF,$FC,$F8,$7F,$07 $7AE4 DEFB $FF,$FF,$F8,$F0,$07,$01,$FF,$FF $7AEC DEFB $F0,$E0,$01,$00,$FF,$7C,$E0,$00 $7AF4 DEFB $00,$00,$FF,$33,$F0,$E0,$01,$00 $7AFC DEFB $FF,$CF,$F8,$F0,$01,$00,$FF,$DF $7B04 DEFB $F8,$F0,$00,$00,$FF,$3E,$F8,$70 $7B0C DEFB $00,$00,$7F,$3C,$F8,$F0,$00,$00 $7B14 DEFB $FF,$79,$FC,$F8,$00,$00,$FF,$79 $7B1C DEFB $FC,$F8,$00,$00,$FF,$78,$FC,$F8 $7B24 DEFB $00,$00,$FF,$78,$FC,$F8,$00,$00 $7B2C DEFB $7F,$3C,$FE,$7C,$00,$00,$3F,$0F $7B34 DEFB $FE,$FC,$00,$00,$0F,$03,$FE,$FC $7B3C DEFB $00,$00,$03,$00,$FE,$FC,$00,$00 $7B44 DEFB $00,$00,$FF,$3E,$00,$00,$00,$00 $7B4C DEFB $3F,$0E,$00,$00,$00,$00,$0F,$02 $7B54 DEFB $00,$00,$00,$00,$02,$00 ; Data block at 7B5A @label=spr_014 b$7B5A DEFB $84,$20 $7B5C DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7B64 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7B6C DEFB $00,$00,$1F,$1F,$00,$00,$03,$03 $7B74 DEFB $00,$00,$3F,$3F,$80,$80,$07,$07 $7B7C DEFB $00,$00,$7F,$7F,$C0,$C0,$0F,$0F $7B84 DEFB $00,$00,$FB,$FB,$E0,$E0,$1F,$1F $7B8C DEFB $01,$01,$F1,$F1,$F0,$F0,$3E,$3E $7B94 DEFB $03,$03,$E0,$E0,$F8,$F8,$7C,$7C $7B9C DEFB $07,$07,$C0,$C0,$7C,$7C,$F8,$F8 $7BA4 DEFB $0F,$0F,$80,$80,$3D,$3D,$F0,$F0 $7BAC DEFB $1F,$1F,$00,$00,$1B,$1B,$E0,$E0 $7BB4 DEFB $3E,$3E,$00,$00,$07,$07,$C0,$C0 $7BBC DEFB $3C,$3C,$00,$00,$0F,$0F,$80,$80 $7BC4 DEFB $38,$38,$00,$00,$1F,$1F,$60,$60 $7BCC DEFB $3C,$3C,$00,$00,$3E,$3E,$F0,$F0 $7BD4 DEFB $3E,$3E,$00,$00,$7C,$7C,$F8,$F8 $7BDC DEFB $1F,$1F,$00,$00,$F8,$F8,$7C,$7C $7BE4 DEFB $0F,$0F,$81,$81,$F0,$F0,$3E,$3E $7BEC DEFB $07,$07,$C3,$C3,$E0,$E0,$1F,$1F $7BF4 DEFB $03,$03,$E7,$E7,$C0,$C0,$0F,$0F $7BFC DEFB $01,$01,$F7,$F7,$80,$80,$07,$07 $7C04 DEFB $00,$00,$FB,$FB,$00,$00,$03,$03 $7C0C DEFB $00,$00,$7C,$7C,$00,$00,$00,$00 $7C14 DEFB $00,$00,$3E,$3E,$00,$00,$00,$00 $7C1C DEFB $00,$00,$DF,$DF,$00,$00,$00,$00 $7C24 DEFB $01,$01,$EF,$EF,$80,$80,$00,$00 $7C2C DEFB $03,$03,$E7,$E7,$C0,$C0,$00,$00 $7C34 DEFB $07,$07,$C3,$C3,$E0,$E0,$00,$00 $7C3C DEFB $0F,$0F,$81,$81,$F0,$F0,$00,$00 $7C44 DEFB $1F,$1F,$00,$00,$F8,$F8,$00,$00 $7C4C DEFB $3E,$3E,$00,$00,$7C,$7C,$00,$00 $7C54 DEFB $3C,$3C,$00,$00,$3C,$3C,$00,$00 ; Data block at 7C5C @label=spr_015 b$7C5C DEFB $03,$01 $7C5E DEFB $3C,$3C,$00,$00,$3C,$3C ; Data block at 7C64 @label=spr_016 b$7C64 DEFB $01,$18 $7C66 DEFB $00,$00,$00,$00,$FF,$FF,$FF,$FF $7C6E DEFB $FF,$FF,$FF,$FF,$00,$00,$00,$00 $7C76 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7C7E DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7C86 DEFB $00,$00,$00,$00,$FF,$FF,$FF,$FF $7C8E DEFB $FF,$FF,$FF,$FF,$00,$00,$00,$00 ; Data block at 7C96 @label=spr_017 b$7C96 DEFB $02,$40 $7C98 DEFB $87,$87,$F0,$F0,$58,$58,$0C,$0C $7CA0 DEFB $20,$20,$02,$02,$40,$40,$01,$01 $7CA8 DEFB $40,$40,$01,$01,$40,$40,$01,$01 $7CB0 DEFB $40,$40,$01,$01,$20,$20,$02,$02 $7CB8 DEFB $20,$20,$02,$02,$20,$20,$02,$02 $7CC0 DEFB $10,$10,$04,$04,$10,$10,$04,$04 $7CC8 DEFB $10,$10,$04,$04,$10,$10,$04,$04 $7CD0 DEFB $10,$10,$04,$04,$10,$10,$04,$04 $7CD8 DEFB $10,$10,$04,$04,$10,$10,$04,$04 $7CE0 DEFB $10,$10,$04,$04,$10,$10,$04,$04 $7CE8 DEFB $10,$10,$04,$04,$10,$10,$04,$04 $7CF0 DEFB $10,$10,$04,$04,$10,$10,$04,$04 $7CF8 DEFB $10,$10,$04,$04,$10,$10,$04,$04 $7D00 DEFB $10,$10,$04,$04,$10,$10,$04,$04 $7D08 DEFB $10,$10,$04,$04,$10,$10,$04,$04 $7D10 DEFB $10,$10,$04,$04,$10,$10,$04,$04 $7D18 DEFB $10,$10,$04,$04,$10,$10,$04,$04 $7D20 DEFB $10,$10,$04,$04,$10,$10,$04,$04 $7D28 DEFB $10,$10,$04,$04,$10,$10,$04,$04 $7D30 DEFB $10,$10,$04,$04,$10,$10,$04,$04 $7D38 DEFB $10,$10,$04,$04,$10,$10,$04,$04 $7D40 DEFB $10,$10,$04,$04,$10,$10,$04,$04 $7D48 DEFB $10,$10,$04,$04,$10,$10,$04,$04 $7D50 DEFB $20,$20,$04,$04,$20,$20,$02,$02 $7D58 DEFB $20,$20,$02,$02,$20,$20,$02,$02 $7D60 DEFB $40,$40,$02,$02,$47,$47,$82,$82 $7D68 DEFB $58,$58,$F2,$F2,$60,$60,$89,$89 $7D70 DEFB $40,$40,$85,$85,$40,$40,$83,$83 $7D78 DEFB $20,$20,$81,$81,$18,$18,$81,$81 $7D80 DEFB $07,$07,$81,$81,$C0,$C0,$01,$01 $7D88 DEFB $60,$60,$02,$02,$10,$10,$04,$04 $7D90 DEFB $0E,$0E,$18,$18,$01,$01,$E0,$E0 ; Data block at 7D98 @label=filler b$7D98 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; Data block at 7DA4 @label=spr_018 b$7DA4 DEFB $02,$10 $7DA6 DEFB $03,$03,$C3,$C3,$04,$04,$2C,$2C $7DAE DEFB $08,$08,$10,$10,$08,$08,$10,$10 $7DB6 DEFB $04,$04,$10,$10,$07,$07,$90,$90 $7DBE DEFB $0D,$0D,$70,$70,$09,$09,$10,$10 $7DC6 DEFB $09,$09,$10,$10,$09,$09,$E0,$E0 $7DCE DEFB $04,$04,$00,$00,$02,$02,$00,$00 $7DD6 DEFB $01,$01,$80,$80,$00,$00,$70,$70 $7DDE DEFB $00,$00,$0C,$0C,$00,$00,$03,$03 ; Data block at 7DE6 @label=spr_019 b$7DE6 DEFB $02,$08 $7DE8 DEFB $00,$00,$03,$03,$00,$00,$0C,$0C $7DF0 DEFB $00,$00,$30,$30,$00,$00,$C0,$C0 $7DF8 DEFB $03,$03,$00,$00,$0C,$0C,$00,$00 $7E00 DEFB $30,$30,$00,$00,$C0,$C0,$00,$00 ; Data block at 7E08 @label=spr_020 b$7E08 DEFB $04,$1C $7E0A DEFB $00,$00,$01,$00,$80,$00,$00,$00 $7E12 DEFB $00,$00,$07,$01,$E0,$80,$00,$00 $7E1A DEFB $00,$00,$1F,$06,$F8,$A0,$00,$00 $7E22 DEFB $00,$00,$7F,$1E,$FE,$50,$00,$00 $7E2A DEFB $01,$00,$FF,$7E,$FF,$AA,$80,$00 $7E32 DEFB $07,$01,$FF,$FE,$FF,$55,$E0,$00 $7E3A DEFB $1F,$07,$FF,$FE,$FF,$AA,$F8,$80 $7E42 DEFB $7F,$1F,$FF,$FE,$FF,$55,$FE,$50 $7E4A DEFB $FF,$7F,$FF,$FE,$FF,$AA,$FF,$AA $7E52 DEFB $FF,$7F,$FF,$FE,$FF,$55,$FF,$54 $7E5A DEFB $FF,$7F,$FF,$FE,$FF,$AA,$FF,$AA $7E62 DEFB $FF,$7F,$FF,$FE,$FF,$55,$FF,$54 $7E6A DEFB $FF,$7F,$FF,$F9,$FF,$8A,$FF,$AA $7E72 DEFB $FF,$7F,$FF,$E7,$FF,$E5,$FF,$54 $7E7A DEFB $FF,$7F,$FF,$9F,$FF,$F8,$FF,$AA $7E82 DEFB $FF,$7E,$FF,$7F,$FF,$FE,$FF,$54 $7E8A DEFB $FF,$79,$FF,$FF,$FF,$FF,$FF,$8A $7E92 DEFB $FF,$67,$FF,$FF,$FF,$FF,$FF,$E4 $7E9A DEFB $FF,$5F,$FF,$FF,$FF,$FF,$FF,$FA $7EA2 DEFB $FF,$7F,$FF,$FF,$FF,$FF,$FF,$FE $7EAA DEFB $7F,$1F,$FF,$FF,$FF,$FF,$FE,$F8 $7EB2 DEFB $1F,$07,$FF,$FF,$FF,$FF,$F8,$E0 $7EBA DEFB $07,$01,$FF,$FF,$FF,$FF,$E0,$80 $7EC2 DEFB $01,$00,$FF,$7F,$FF,$FE,$80,$00 $7ECA DEFB $00,$00,$7F,$1F,$FE,$F8,$00,$00 $7ED2 DEFB $00,$00,$1F,$07,$F8,$E0,$00,$00 $7EDA DEFB $00,$00,$07,$01,$E0,$80,$00,$00 $7EE2 DEFB $00,$00,$01,$00,$80,$00,$00,$00 ; Data block at 7EEA @label=spr_021 b$7EEA DEFB $02,$11 $7EEC DEFB $0E,$00,$38,$00,$1F,$0E,$7C,$38 $7EF4 DEFB $1F,$0B,$FC,$78,$0F,$05,$F8,$70 $7EFC DEFB $0E,$03,$F0,$60,$0F,$03,$F8,$E0 $7F04 DEFB $1F,$0D,$FC,$F8,$1F,$0D,$FC,$F8 $7F0C DEFB $1F,$0D,$FC,$F8,$1F,$0D,$FC,$F8 $7F14 DEFB $1F,$0E,$FC,$38,$0F,$05,$F8,$D0 $7F1C DEFB $07,$02,$F0,$E0,$07,$02,$F0,$E0 $7F24 DEFB $07,$02,$F0,$E0,$03,$01,$E0,$40 $7F2C DEFB $01,$00,$C0,$00 ; Data block at 7F30 @label=spr_022 b$7F30 DEFB $03,$15 $7F32 DEFB $03,$00,$E0,$00,$00,$00,$07,$03 $7F3A DEFB $F0,$E0,$00,$00,$0F,$07,$F8,$F0 $7F42 DEFB $00,$00,$1F,$0C,$FC,$18,$00,$00 $7F4A DEFB $1F,$0B,$FE,$E4,$70,$00,$1F,$07 $7F52 DEFB $FF,$FA,$F8,$70,$1F,$0F,$FF,$FD $7F5A DEFB $FC,$F8,$1F,$09,$FF,$FE,$FC,$18 $7F62 DEFB $1F,$0C,$FF,$EF,$FC,$E8,$0F,$06 $7F6A DEFB $FF,$DF,$F8,$70,$07,$03,$FF,$BB $7F72 DEFB $FC,$B8,$03,$00,$BF,$1F,$F8,$B0 $7F7A DEFB $00,$00,$1F,$0B,$F8,$D0,$00,$00 $7F82 DEFB $1F,$0F,$F0,$E0,$00,$00,$1F,$0B $7F8A DEFB $F0,$E0,$00,$00,$1F,$0C,$F8,$10 $7F92 DEFB $00,$00,$3F,$18,$FC,$08,$00,$00 $7F9A DEFB $3F,$10,$FC,$08,$00,$00,$1F,$08 $7FA2 DEFB $F8,$30,$00,$00,$0F,$07,$F0,$C0 $7FAA DEFB $00,$00,$07,$00,$C0,$00 ; Data block at 7FB0 @label=spr_023 b$7FB0 DEFB $02,$3C $7FB2 DEFB $C0,$00,$00,$00,$F0,$C0,$00,$00 $7FBA DEFB $F8,$F0,$00,$00,$F0,$E0,$00,$00 $7FC2 DEFB $E0,$40,$00,$00,$F0,$60,$00,$00 $7FCA DEFB $F0,$60,$00,$00,$F0,$60,$00,$00 $7FD2 DEFB $F8,$70,$00,$00,$F8,$30,$00,$00 $7FDA DEFB $F8,$30,$00,$00,$F8,$70,$00,$00 $7FE2 DEFB $F0,$60,$00,$00,$F0,$60,$00,$00 $7FEA DEFB $E0,$C0,$00,$00,$E0,$C0,$00,$00 $7FF2 DEFB $E0,$C0,$00,$00,$F0,$E0,$00,$00 $7FFA DEFB $F8,$70,$00,$00,$F8,$70,$00,$00 $8002 DEFB $FC,$78,$00,$00,$7C,$38,$00,$00 $800A DEFB $7C,$38,$00,$00,$7C,$38,$00,$00 $8012 DEFB $3C,$18,$00,$00,$3C,$18,$00,$00 $801A DEFB $3C,$18,$00,$00,$1C,$08,$00,$00 $8022 DEFB $1E,$0C,$00,$00,$3E,$1C,$00,$00 $802A DEFB $3E,$1C,$00,$00,$3C,$18,$00,$00 $8032 DEFB $7E,$38,$00,$00,$FF,$5E,$80,$00 $803A DEFB $FF,$4F,$C0,$80,$FF,$67,$E0,$80 $8042 DEFB $FF,$63,$F0,$A0,$FF,$77,$F0,$20 $804A DEFB $FF,$37,$F8,$30,$FF,$6F,$FD,$18 $8052 DEFB $FF,$6F,$FF,$1C,$FF,$5E,$FF,$4E $805A DEFB $FF,$5E,$FF,$46,$FF,$5C,$FF,$66 $8062 DEFB $FF,$5C,$FF,$23,$FF,$43,$FF,$33 $806A DEFB $7F,$2C,$FF,$11,$7F,$2C,$FF,$18 $8072 DEFB $7F,$2C,$FF,$31,$7F,$24,$FF,$31 $807A DEFB $3F,$04,$7F,$30,$1E,$04,$7F,$30 $8082 DEFB $0E,$04,$7B,$20,$06,$00,$7B,$20 $808A DEFB $00,$00,$79,$20,$00,$00,$38,$10 $8092 DEFB $00,$00,$38,$10,$00,$00,$38,$10 $809A DEFB $00,$00,$10,$00,$00,$00,$00,$00 ; Data block at 80A2 @label=spr_024 b$80A2 DEFB $02,$30 $80A4 DEFB $00,$00,$60,$00,$00,$00,$F8,$60 $80AC DEFB $03,$00,$F8,$D8,$0F,$03,$FF,$7E $80B4 DEFB $1F,$0C,$FF,$CD,$1F,$0A,$FF,$8D $80BC DEFB $1F,$0A,$FF,$C5,$1F,$08,$FF,$CB $80C4 DEFB $1F,$09,$FF,$E3,$1F,$0D,$FF,$A6 $80CC DEFB $0F,$05,$FF,$A6,$0F,$04,$FF,$AC $80D4 DEFB $1F,$08,$FF,$A6,$1F,$0C,$FF,$E2 $80DC DEFB $0F,$05,$FF,$EA,$0F,$05,$FF,$EA $80E4 DEFB $1F,$0C,$FF,$EB,$1F,$0C,$FF,$69 $80EC DEFB $1F,$0E,$FF,$5A,$1F,$0C,$FF,$D6 $80F4 DEFB $1F,$0D,$FF,$C6,$1F,$0D,$FF,$56 $80FC DEFB $3F,$1D,$FF,$96,$3F,$19,$FF,$AE $8104 DEFB $3F,$13,$FF,$2E,$7F,$26,$FF,$46 $810C DEFB $FF,$4C,$FF,$86,$FF,$89,$FF,$86 $8114 DEFB $FF,$13,$FF,$0E,$FF,$67,$FF,$0E $811C DEFB $FF,$C6,$FF,$0E,$FF,$CE,$FE,$0C $8124 DEFB $FF,$8E,$FE,$4C,$FF,$8E,$FF,$4E $812C DEFB $FF,$8E,$FF,$4E,$FF,$8E,$FF,$66 $8134 DEFB $FF,$8E,$FF,$66,$FF,$8E,$FF,$72 $813C DEFB $FF,$8F,$FF,$32,$FF,$C7,$FF,$1A $8144 DEFB $FF,$C7,$FF,$9A,$F7,$43,$FE,$98 $814C DEFB $F3,$61,$FC,$C8,$F1,$20,$FC,$C8 $8154 DEFB $70,$00,$FC,$48,$20,$00,$7C,$28 $815C DEFB $00,$00,$3C,$08,$00,$00,$08,$00 ; Data block at 8164 @label=spr_025 b$8164 DEFB $03,$14 $8166 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $816E DEFB $00,$00,$00,$00,$08,$00,$00,$00 $8176 DEFB $00,$00,$1C,$08,$00,$00,$00,$00 $817E DEFB $08,$00,$00,$00,$00,$00,$00,$00 $8186 DEFB $00,$00,$20,$00,$00,$00,$00,$00 $818E DEFB $70,$20,$00,$00,$00,$00,$20,$00 $8196 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $819E DEFB $00,$00,$00,$00,$10,$00,$00,$00 $81A6 DEFB $00,$00,$38,$10,$00,$00,$80,$00 $81AE DEFB $10,$00,$11,$00,$C0,$80,$00,$00 $81B6 DEFB $38,$10,$80,$00,$00,$00,$7C,$38 $81BE DEFB $00,$00,$00,$00,$38,$10,$00,$00 $81C6 DEFB $00,$00,$10,$00,$00,$00,$01,$00 $81CE DEFB $00,$00,$00,$00,$03,$01,$80,$00 $81D6 DEFB $00,$00,$01,$00,$00,$00,$00,$00 ; Data block at 81DE @label=spr_026 b$81DE DEFB $03,$15 $81E0 DEFB $00,$00,$00,$00,$00,$00,$08,$00 $81E8 DEFB $00,$00,$00,$00,$1C,$08,$00,$00 $81F0 DEFB $00,$00,$3E,$1C,$00,$00,$00,$00 $81F8 DEFB $1C,$08,$00,$00,$00,$00,$08,$00 $8200 DEFB $1C,$08,$70,$20,$00,$00,$3E,$1C $8208 DEFB $F8,$70,$01,$00,$1C,$08,$70,$20 $8210 DEFB $03,$01,$88,$00,$20,$00,$11,$00 $8218 DEFB $00,$00,$00,$00,$38,$10,$00,$00 $8220 DEFB $80,$00,$7C,$38,$11,$00,$C0,$80 $8228 DEFB $38,$10,$3B,$11,$E0,$C0,$10,$00 $8230 DEFB $7D,$38,$C0,$80,$00,$00,$FE,$7C $8238 DEFB $80,$00,$00,$00,$7C,$38,$00,$00 $8240 DEFB $01,$00,$38,$10,$00,$00,$03,$01 $8248 DEFB $90,$00,$00,$00,$07,$03,$C0,$80 $8250 DEFB $00,$00,$03,$01,$80,$00,$00,$00 $8258 DEFB $01,$00,$00,$00,$00,$00 ; Data block at 825E @label=spr_027 b$825E DEFB $03,$17 $8260 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $8268 DEFB $00,$00,$00,$00,$08,$00,$00,$00 $8270 DEFB $00,$00,$1C,$08,$08,$00,$00,$00 $8278 DEFB $08,$00,$1C,$08,$00,$00,$00,$00 $8280 DEFB $3E,$1C,$20,$00,$01,$00,$7F,$3E $8288 DEFB $70,$20,$03,$01,$BE,$1C,$20,$00 $8290 DEFB $17,$03,$DC,$88,$00,$00,$3B,$11 $8298 DEFB $88,$00,$80,$00,$7D,$38,$11,$00 $82A0 DEFB $C0,$80,$FE,$7C,$3B,$11,$E0,$C0 $82A8 DEFB $7C,$38,$7F,$3B,$F0,$E0,$38,$10 $82B0 DEFB $FF,$7D,$E0,$C0,$11,$00,$FF,$FE $82B8 DEFB $C0,$80,$00,$00,$FE,$7C,$80,$00 $82C0 DEFB $00,$00,$7C,$38,$00,$00,$01,$00 $82C8 DEFB $38,$10,$00,$00,$03,$01,$90,$00 $82D0 DEFB $00,$00,$01,$00,$00,$00,$00,$00 $82D8 DEFB $00,$00,$00,$00,$80,$00,$00,$00 $82E0 DEFB $01,$00,$C0,$80,$00,$00,$00,$00 $82E8 DEFB $80,$00 ; Data block at 82EA @label=spr_028 b$82EA DEFB $03,$18 $82EC DEFB $00,$00,$00,$00,$00,$00,$08,$00 $82F4 DEFB $00,$00,$00,$00,$1C,$08,$08,$00 $82FC DEFB $00,$00,$3E,$1C,$1C,$01,$00,$00 $8304 DEFB $1C,$08,$3E,$1C,$20,$00,$09,$00 $830C DEFB $7F,$3E,$70,$20,$03,$01,$FF,$7F $8314 DEFB $F8,$70,$17,$03,$FF,$BE,$70,$20 $831C DEFB $3F,$17,$FE,$DC,$20,$00,$7F,$3B $8324 DEFB $DC,$88,$00,$00,$FF,$7D,$88,$00 $832C DEFB $80,$00,$FF,$FE,$01,$00,$C0,$80 $8334 DEFB $FE,$7C,$13,$01,$E0,$C0,$7C,$38 $833C DEFB $39,$10,$C8,$80,$38,$10,$7C,$38 $8344 DEFB $9C,$08,$10,$00,$38,$10,$08,$00 $834C DEFB $01,$00,$10,$00,$00,$00,$03,$10 $8354 DEFB $80,$00,$00,$00,$07,$03,$C0,$80 $835C DEFB $00,$00,$03,$10,$80,$00,$80,$00 $8364 DEFB $01,$00,$09,$00,$C0,$80,$00,$00 $836C DEFB $1F,$09,$E0,$C0,$00,$00,$09,$00 $8374 DEFB $C0,$80,$00,$00,$00,$00,$80,$00 ; Data block at 837C @label=spr_029 b$837C DEFB $03,$18 $837E DEFB $08,$00,$70,$20,$00,$00,$1C,$08 $8386 DEFB $F8,$70,$08,$00,$3F,$1C,$FC,$F8 $838E DEFB $3C,$08,$7F,$36,$F8,$70,$78,$20 $8396 DEFB $3E,$1C,$78,$20,$F8,$70,$1C,$08 $839E DEFB $3D,$08,$FC,$F8,$08,$00,$3F,$1D $83A6 DEFB $FE,$FC,$01,$00,$1D,$08,$FC,$F8 $83AE DEFB $13,$01,$C8,$00,$F8,$70,$39,$10 $83B6 DEFB $E0,$40,$70,$40,$7C,$38,$50,$00 $83BE DEFB $20,$00,$FE,$7C,$38,$10,$80,$00 $83C6 DEFB $7F,$3A,$7D,$38,$C8,$80,$3A,$10 $83CE DEFB $FE,$7C,$9C,$08,$11,$00,$FF,$FE $83D6 DEFB $3E,$1C,$01,$00,$FF,$7C,$1C,$08 $83DE DEFB $03,$01,$FF,$39,$88,$00,$07,$03 $83E6 DEFB $F9,$90,$00,$00,$0F,$07,$F0,$C0 $83EE DEFB $80,$00,$07,$03,$C1,$80,$C0,$80 $83F6 DEFB $03,$01,$8B,$01,$E0,$C0,$01,$00 $83FE DEFB $1F,$0B,$F0,$E0,$00,$00,$0B,$01 $8406 DEFB $E0,$C0,$00,$00,$01,$00,$C0,$80 ; Data block at 840E @label=spr_030 b$840E DEFB $03,$18 $8410 DEFB $1C,$08,$00,$00,$08,$00,$3E,$1C $8418 DEFB $20,$00,$1C,$08,$7F,$3E,$78,$20 $8420 DEFB $3E,$1C,$FF,$7F,$BC,$08,$1C,$08 $8428 DEFB $7F,$3E,$3E,$1C,$28,$00,$3F,$1C $8430 DEFB $7F,$3E,$70,$20,$1F,$09,$FF,$7F $8438 DEFB $F8,$70,$0F,$03,$FF,$BE,$70,$20 $8440 DEFB $0F,$07,$FE,$DC,$A0,$00,$07,$03 $8448 DEFB $DD,$88,$C0,$80,$13,$01,$8B,$01 $8450 DEFB $E0,$C0,$3B,$10,$07,$03,$F8,$E0 $8458 DEFB $17,$02,$13,$01,$FC,$C8,$0F,$07 $8460 DEFB $B9,$10,$FE,$9C,$07,$02,$7D,$38 $8468 DEFB $FF,$3E,$03,$01,$BB,$11,$BE,$1C $8470 DEFB $07,$03,$D7,$83,$DC,$11,$0F,$07 $8478 DEFB $E3,$C1,$88,$00,$1F,$0F,$F9,$E0 $8480 DEFB $00,$00,$0F,$07,$FC,$C8,$80,$00 $8488 DEFB $07,$03,$FF,$9C,$C0,$80,$03,$01 $8490 DEFB $FF,$3F,$E0,$C0,$01,$00,$BF,$1C $8498 DEFB $C0,$80,$00,$00,$1C,$08,$80,$00 ; Data block at 84A0 @label=spr_031 b$84A0 DEFB $03,$13 $84A2 DEFB $00,$00,$7F,$08,$00,$00,$00,$00 $84AA DEFB $FF,$5D,$80,$00,$01,$00,$FF,$DD $84B2 DEFB $C0,$80,$03,$01,$FF,$BE,$E0,$C0 $84BA DEFB $03,$01,$FF,$BE,$E0,$C0,$07,$03 $84C2 DEFB $FF,$7F,$F0,$60,$0F,$07,$FF,$7F $84CA DEFB $F8,$70,$0F,$06,$FF,$FF,$F8,$B0 $84D2 DEFB $1F,$0E,$FF,$FF,$FC,$B8,$3F,$1D $84DA DEFB $FF,$FF,$FE,$5C,$3F,$1D,$FF,$00 $84E2 DEFB $FE,$AC,$7F,$37,$FF,$7F,$FF,$76 $84EA DEFB $7F,$2F,$FF,$7F,$FF,$7A,$3F,$1E $84F2 DEFB $FF,$80,$FE,$BC,$1F,$0D,$FF,$FF $84FA DEFB $FC,$D8,$0F,$03,$FF,$FF,$F8,$E0 $8502 DEFB $03,$01,$FF,$FF,$E0,$C0,$01,$00 $850A DEFB $FF,$FF,$C0,$80,$00,$00,$FF,$00 $8512 DEFB $80,$00 ; Data block at 8514 @label=spr_032 b$8514 DEFB $03,$16 $8516 DEFB $00,$00,$FF,$00,$00,$00,$07,$00 $851E DEFB $FF,$FF,$E0,$00,$1F,$07,$FF,$FF $8526 DEFB $F8,$E0,$3F,$1E,$FF,$7E,$FC,$78 $852E DEFB $7F,$3E,$FF,$99,$FE,$7C,$7F,$3F $8536 DEFB $FF,$E7,$F8,$FC,$FF,$7F,$FF,$99 $853E DEFB $FF,$FE,$FF,$7E,$FF,$66,$FF,$7E $8546 DEFB $FF,$7E,$FF,$66,$FF,$7E,$FF,$7F $854E DEFB $FF,$C3,$FF,$FE,$7F,$3F,$FF,$C3 $8556 DEFB $FE,$FC,$7F,$3E,$FF,$E7,$FE,$7C $855E DEFB $3F,$1F,$FF,$7E,$FC,$F8,$1F,$07 $8566 DEFB $FF,$7E,$F8,$E0,$07,$00,$FF,$7E $856E DEFB $E0,$00,$00,$00,$FF,$7E,$00,$00 $8576 DEFB $00,$00,$FF,$7E,$00,$00,$00,$00 $857E DEFB $FF,$42,$00,$00,$01,$00,$FF,$BD $8586 DEFB $80,$00,$00,$00,$FF,$7E,$00,$00 $858E DEFB $00,$00,$7E,$3C,$00,$00,$00,$00 $8596 DEFB $3C,$00,$00,$00 ; Data block at 859A @label=spr_033 b$859A DEFB $03,$17 $859C DEFB $00,$00,$7E,$00,$00,$00,$03,$00 $85A4 DEFB $FF,$7E,$C0,$00,$07,$01,$FF,$FF $85AC DEFB $E0,$C0,$0F,$01,$FF,$E7,$F0,$E0 $85B4 DEFB $1F,$0C,$FF,$DB,$F8,$F0,$0F,$06 $85BC DEFB $FF,$3D,$F0,$E0,$07,$03,$FF,$81 $85C4 DEFB $E0,$C0,$01,$00,$FF,$5E,$80,$00 $85CC DEFB $03,$03,$FF,$BF,$C0,$C0,$07,$03 $85D4 DEFB $FF,$7F,$E0,$C0,$0F,$06,$FF,$00 $85DC DEFB $F0,$E0,$1F,$08,$FF,$FF,$F8,$10 $85E4 DEFB $1F,$05,$FF,$FF,$F8,$E0,$1F,$09 $85EC DEFB $FF,$00,$FC,$F0,$3F,$18,$FF,$FF $85F4 DEFB $FC,$18,$3F,$17,$FF,$00,$FC,$E8 $85FC DEFB $3F,$08,$FF,$00,$FC,$10,$3F,$10 $8604 DEFB $FF,$00,$FC,$08,$3F,$10,$FF,$00 $860C DEFB $FC,$08,$1F,$08,$FF,$00,$F8,$10 $8614 DEFB $0F,$07,$FF,$00,$F0,$E0,$07,$00 $861C DEFB $FF,$FF,$E0,$00,$00,$00,$FF,$00 $8624 DEFB $00,$00 ; Data block at 8626 @label=spr_034 b$8626 DEFB $03,$12 $8628 DEFB $07,$00,$FC,$00,$00,$00,$0F,$07 $8630 DEFB $FE,$FC,$00,$00,$1F,$0E,$FF,$0E $8638 DEFB $00,$00,$1F,$09,$FF,$F2,$00,$00 $8640 DEFB $0F,$07,$FF,$FC,$F8,$00,$1F,$0F $8648 DEFB $FF,$FE,$FC,$F8,$3F,$1F,$FF,$FF $8650 DEFB $FE,$7C,$7F,$3F,$FF,$FF,$FE,$8C $8658 DEFB $7F,$3E,$FF,$0F,$FF,$86,$FF,$71 $8660 DEFB $FF,$F1,$FF,$C6,$FF,$4E,$FF,$0E $8668 DEFB $FF,$46,$FF,$30,$FF,$01,$FF,$86 $8670 DEFB $FF,$40,$FF,$00,$FE,$5C,$FF,$40 $8678 DEFB $FF,$00,$FC,$58,$7F,$30,$FF,$01 $8680 DEFB $D8,$80,$3F,$0E,$FF,$0E,$80,$00 $8688 DEFB $0F,$01,$FE,$F0,$00,$00,$01,$00 $8690 DEFB $F0,$00,$00,$00 ; Data block at 8694 @label=spr_035 b$8694 DEFB $03,$18 $8696 DEFB $00,$00,$FE,$00,$00,$00,$03,$00 $869E DEFB $FF,$FE,$80,$00,$07,$02,$FF,$FF $86A6 DEFB $C0,$80,$0F,$04,$FF,$03,$E0,$C0 $86AE DEFB $0F,$04,$FF,$FB,$E0,$C0,$0F,$00 $86B6 DEFB $FF,$FB,$E0,$C0,$0F,$04,$FF,$FB $86BE DEFB $E0,$C0,$0F,$04,$FF,$FB,$E0,$C0 $86C6 DEFB $0F,$04,$FF,$FB,$E0,$C0,$0F,$04 $86CE DEFB $FF,$03,$E0,$C0,$0F,$04,$FF,$FF $86D6 DEFB $E0,$C0,$0F,$02,$FF,$FF,$E0,$C0 $86DE DEFB $0F,$06,$FF,$FF,$E0,$C0,$07,$03 $86E6 DEFB $FF,$7F,$C0,$80,$07,$03,$FF,$BF $86EE DEFB $C0,$80,$03,$01,$FF,$BF,$80,$00 $86F6 DEFB $01,$00,$FF,$DE,$00,$00,$00,$00 $86FE DEFB $FE,$5C,$00,$00,$00,$00,$FE,$5C $8706 DEFB $00,$00,$00,$00,$FE,$44,$00,$00 $870E DEFB $01,$00,$FF,$BA,$00,$00,$00,$00 $8716 DEFB $FE,$7C,$00,$00,$00,$00,$7C,$38 $871E DEFB $00,$00,$00,$00,$38,$00,$00,$00 ; Data block at 8726 @label=spr_036 b$8726 DEFB $03,$15 $8728 DEFB $00,$00,$FF,$00,$00,$00,$03,$00 $8730 DEFB $FF,$FF,$C0,$00,$07,$03,$FF,$FF $8738 DEFB $E0,$C0,$0F,$07,$FF,$81,$F0,$E0 $8740 DEFB $1F,$0E,$FF,$7E,$F8,$70,$0F,$05 $8748 DEFB $FF,$FF,$F0,$A0,$07,$03,$FF,$FF $8750 DEFB $E0,$C0,$0F,$07,$FF,$FF,$F0,$E0 $8758 DEFB $0F,$07,$FF,$FF,$F0,$E0,$1F,$0F $8760 DEFB $FF,$FF,$F8,$F0,$1F,$0F,$FF,$FF $8768 DEFB $F8,$F0,$1F,$0F,$FF,$FF,$F8,$F0 $8770 DEFB $1F,$0C,$FF,$7F,$F8,$F0,$1F,$0C $8778 DEFB $FF,$7F,$F8,$F0,$1F,$0C,$FF,$3F $8780 DEFB $F8,$F0,$0F,$06,$FF,$0F,$F0,$E0 $8788 DEFB $0F,$07,$FF,$0F,$F0,$E0,$07,$03 $8790 DEFB $FF,$8F,$E0,$C0,$03,$01,$FF,$FF $8798 DEFB $C0,$80,$01,$00,$FF,$7E,$80,$00 $87A0 DEFB $00,$00,$7E,$00,$00,$00 ; Data block at 87A6 @label=spr_037 b$87A6 DEFB $02,$10 $87A8 DEFB $03,$01,$80,$00,$23,$01,$84,$00 $87B0 DEFB $77,$20,$CE,$04,$3F,$13,$FC,$C8 $87B8 DEFB $1F,$07,$F8,$E0,$1F,$0F,$F8,$F0 $87C0 DEFB $3F,$1F,$FF,$F8,$FF,$1F,$FF,$FB $87C8 DEFB $FF,$DF,$FF,$F8,$FF,$1F,$FC,$F8 $87D0 DEFB $3F,$0F,$F8,$F0,$1F,$07,$F8,$E0 $87D8 DEFB $3F,$13,$FC,$C8,$73,$20,$CE,$04 $87E0 DEFB $21,$00,$C4,$80,$01,$00,$C0,$80 ; Data block at 87E8 @label=spr_038 b$87E8 DEFB $02,$10 $87EA DEFB $03,$00,$C0,$00,$0F,$03,$F0,$C0 $87F2 DEFB $1F,$0F,$F8,$D0,$3F,$1F,$FC,$38 $87FA DEFB $7F,$1E,$FE,$FC,$7F,$3D,$FE,$FC $8802 DEFB $FF,$7E,$FF,$3E,$FF,$7F,$FF,$BE $880A DEFB $FF,$7F,$FF,$BE,$FF,$7E,$FF,$7E $8812 DEFB $7F,$35,$FE,$EC,$7F,$32,$FE,$CC $881A DEFB $3F,$1E,$FC,$F8,$1F,$0F,$F8,$30 $8822 DEFB $0F,$03,$F0,$C0,$03,$00,$C0,$00 ; Data block at 882A @label=spr_039 b$882A DEFB $03,$14 $882C DEFB $00,$00,$1E,$00,$00,$00,$00,$00 $8834 DEFB $3F,$1E,$00,$00,$01,$00,$FF,$3F $883C DEFB $80,$00,$03,$01,$FF,$FF,$80,$00 $8844 DEFB $03,$01,$FF,$FE,$E6,$00,$7F,$03 $884C DEFB $FF,$FF,$FF,$66,$FF,$7F,$FF,$FF $8854 DEFB $FF,$FE,$FF,$7F,$FF,$FF,$FF,$FE $885C DEFB $7F,$3F,$FF,$FF,$FE,$FC,$3F,$1F $8864 DEFB $FF,$FF,$FE,$FC,$1F,$0F,$FF,$E7 $886C DEFB $FC,$F8,$0F,$07,$FF,$0B,$F8,$F0 $8874 DEFB $0F,$06,$FF,$9B,$F8,$F0,$07,$02 $887C DEFB $FF,$C7,$F0,$E0,$07,$03,$FF,$3F $8884 DEFB $F0,$E0,$03,$01,$FF,$FF,$E0,$C0 $888C DEFB $03,$01,$FF,$FF,$C0,$80,$01,$00 $8894 DEFB $FF,$FF,$80,$00,$00,$00,$FF,$3C $889C DEFB $00,$00,$00,$00,$3C,$00,$00,$00 ; Data block at 88A4 @label=spr_040 b$88A4 DEFB $03,$13 $88A6 DEFB $00,$00,$1C,$00,$00,$00,$00,$00 $88AE DEFB $3E,$1C,$00,$00,$07,$00,$3F,$1E $88B6 DEFB $38,$00,$0F,$07,$FF,$3F,$FC,$38 $88BE DEFB $1F,$0F,$FF,$FF,$FC,$F8,$0F,$07 $88C6 DEFB $FF,$FF,$FE,$F8,$7F,$07,$FF,$FF $88CE DEFB $FF,$FE,$FF,$7F,$FF,$FF,$FF,$FE $88D6 DEFB $FF,$7F,$FF,$FF,$FF,$FE,$7F,$3F $88DE DEFB $FF,$FF,$FE,$FC,$3F,$1F,$FF,$E7 $88E6 DEFB $FC,$F8,$1F,$0F,$FF,$0B,$FC,$F8 $88EE DEFB $0F,$06,$FF,$9B,$F8,$F0,$0F,$06 $88F6 DEFB $FF,$C7,$F8,$F0,$0F,$07,$FF,$3F $88FE DEFB $F8,$F0,$07,$03,$FF,$FF,$F0,$E0 $8906 DEFB $03,$01,$FF,$FF,$E0,$80,$01,$00 $890E DEFB $FF,$3C,$80,$00,$00,$00,$3C,$00 $8916 DEFB $00,$00 ; Data block at 8918 @label=spr_041 b$8918 DEFB $03,$14 $891A DEFB $00,$00,$06,$00,$00,$00,$03,$00 $8922 DEFB $1F,$06,$00,$00,$07,$03,$FF,$1F $892A DEFB $F0,$00,$0F,$07,$FF,$FF,$F8,$F0 $8932 DEFB $3F,$0F,$FF,$FF,$F8,$F0,$7F,$3F $893A DEFB $FF,$FF,$FC,$F0,$FF,$7F,$FF,$FF $8942 DEFB $FE,$FC,$FF,$7F,$FF,$FF,$FF,$FE $894A DEFB $7F,$3F,$FF,$FF,$FF,$FE,$3F,$1F $8952 DEFB $FF,$FF,$FE,$FC,$1F,$0F,$FF,$FF $895A DEFB $FC,$F8,$0F,$07,$FF,$FF,$FC,$98 $8962 DEFB $0F,$07,$FF,$FF,$F8,$50,$07,$03 $896A DEFB $FF,$FF,$F0,$20,$07,$03,$FF,$FF $8972 DEFB $F0,$20,$03,$01,$FF,$FF,$E0,$C0 $897A DEFB $03,$01,$FF,$FF,$C0,$80,$01,$00 $8982 DEFB $FF,$FF,$80,$00,$00,$00,$FF,$3C $898A DEFB $00,$00,$00,$00,$3C,$00,$00,$00 ; Data block at 8992 @label=spr_042 b$8992 DEFB $03,$14 $8994 DEFB $00,$00,$1E,$00,$00,$00,$00,$00 $899C DEFB $3F,$1E,$00,$00,$1E,$00,$7F,$3F $89A4 DEFB $F0,$00,$3F,$1E,$7F,$3F,$F8,$30 $89AC DEFB $1F,$0F,$FF,$3F,$FC,$F8,$3F,$0F $89B4 DEFB $FF,$FF,$FC,$F8,$7F,$3F,$FF,$FF $89BC DEFB $FE,$FC,$FF,$7F,$FF,$FF,$FF,$FE $89C4 DEFB $7F,$3F,$FF,$FF,$FF,$FE,$3F,$1F $89CC DEFB $FF,$FF,$FE,$FC,$1F,$0F,$FF,$FF $89D4 DEFB $FC,$F8,$0F,$07,$FF,$FF,$FC,$98 $89DC DEFB $0F,$07,$FF,$FF,$F8,$50,$07,$03 $89E4 DEFB $FF,$FF,$F0,$20,$07,$03,$FF,$FF $89EC DEFB $F0,$20,$03,$01,$FF,$FF,$E0,$C0 $89F4 DEFB $03,$01,$FF,$FF,$C0,$80,$01,$00 $89FC DEFB $FF,$FF,$80,$00,$00,$00,$FF,$3C $8A04 DEFB $00,$00,$00,$00,$3C,$00,$00,$00 ; Data block at 8A0C @label=spr_043 b$8A0C DEFB $03,$2A $8A0E DEFB $30,$00,$00,$00,$00,$00,$78,$30 $8A16 DEFB $00,$00,$00,$00,$F8,$70,$00,$00 $8A1E DEFB $00,$00,$7C,$18,$C0,$00,$00,$00 $8A26 DEFB $79,$20,$E0,$C0,$00,$00,$7B,$31 $8A2E DEFB $E0,$C0,$00,$00,$F9,$70,$F3,$60 $8A36 DEFB $00,$00,$FF,$78,$E7,$83,$80,$00 $8A3E DEFB $7F,$3E,$EF,$C7,$80,$00,$7F,$37 $8A46 DEFB $E7,$C1,$CC,$80,$7F,$31,$FF,$E2 $8A4E DEFB $9E,$0C,$F9,$70,$FF,$FB,$BE,$1C $8A56 DEFB $FF,$78,$FF,$DF,$9F,$06,$7F,$3E $8A5E DEFB $FF,$C7,$FE,$88,$7F,$37,$E7,$C3 $8A66 DEFB $FE,$EC,$7F,$31,$FF,$E3,$FE,$7C $8A6E DEFB $F9,$70,$FF,$FB,$FF,$1E,$FF,$78 $8A76 DEFB $FF,$DF,$9F,$0E,$7F,$3E,$FF,$C7 $8A7E DEFB $FE,$8C,$7F,$37,$E7,$C3,$FE,$EC $8A86 DEFB $7F,$31,$FF,$E3,$FE,$7C,$F9,$70 $8A8E DEFB $FF,$FB,$FF,$1E,$FF,$78,$FF,$DF $8A96 DEFB $9F,$0E,$7F,$3E,$FF,$C7,$FE,$8C $8A9E DEFB $7F,$37,$E7,$C3,$FE,$EC,$7F,$31 $8AA6 DEFB $FF,$E3,$FE,$7C,$F9,$70,$FF,$FB $8AAE DEFB $FF,$1E,$FF,$78,$FF,$DF,$9F,$0E $8AB6 DEFB $7F,$3E,$FF,$C7,$FE,$8C,$7F,$37 $8ABE DEFB $E7,$C3,$FE,$EC,$7F,$31,$FF,$E3 $8AC6 DEFB $FE,$7C,$79,$30,$FF,$FB,$FF,$1E $8ACE DEFB $39,$10,$FF,$DF,$9F,$0E,$11,$00 $8AD6 DEFB $FF,$C7,$FE,$8C,$01,$00,$E7,$C3 $8ADE DEFB $FE,$EC,$00,$00,$E7,$43,$FE,$7C $8AE6 DEFB $00,$00,$47,$03,$FF,$1E,$00,$00 $8AEE DEFB $07,$03,$9F,$0E,$00,$00,$03,$01 $8AF6 DEFB $9E,$0C,$00,$00,$01,$00,$1E,$0C $8AFE DEFB $00,$00,$00,$00,$0E,$04,$00,$00 $8B06 DEFB $00,$00,$04,$00 ; Data block at 8B0A @label=spr_044 b$8B0A DEFB $04,$1D $8B0C DEFB $00,$00,$00,$00,$38,$00,$00,$00 $8B14 DEFB $00,$00,$00,$00,$FE,$38,$00,$00 $8B1C DEFB $00,$00,$03,$00,$FF,$DA,$80,$00 $8B24 DEFB $00,$00,$0F,$03,$FF,$57,$E0,$80 $8B2C DEFB $00,$00,$3F,$0F,$FF,$8F,$F8,$E0 $8B34 DEFB $00,$00,$FF,$33,$FF,$DF,$FE,$F8 $8B3C DEFB $03,$00,$FF,$F3,$FF,$DF,$FF,$F6 $8B44 DEFB $0F,$03,$FF,$F3,$FF,$DF,$FF,$FA $8B4C DEFB $3F,$0D,$FF,$F3,$FF,$DF,$FF,$FC $8B54 DEFB $7F,$39,$FF,$F3,$FF,$DF,$FF,$FE $8B5C DEFB $FF,$59,$FF,$F3,$FF,$DF,$FF,$FE $8B64 DEFB $FF,$59,$FF,$B3,$FF,$DF,$FF,$FE $8B6C DEFB $FF,$39,$FF,$93,$FF,$07,$FF,$FE $8B74 DEFB $FF,$79,$FF,$1C,$FF,$B9,$FF,$FE $8B7C DEFB $FF,$79,$FF,$73,$FF,$BE,$FF,$7E $8B84 DEFB $FF,$79,$FF,$CF,$FF,$DF,$FF,$9E $8B8C DEFB $FF,$7B,$FF,$33,$FF,$9F,$FF,$E6 $8B94 DEFB $FF,$7C,$FF,$F0,$FF,$6F,$FF,$FA $8B9C DEFB $FF,$73,$FF,$F9,$FF,$C7,$FF,$FE $8BA4 DEFB $FF,$4D,$FF,$E0,$FF,$39,$FE,$FC $8BAC DEFB $FF,$38,$FF,$9C,$FF,$7E,$FC,$30 $8BB4 DEFB $7F,$3C,$FF,$F2,$FF,$3F,$F0,$C0 $8BBC DEFB $7F,$38,$FF,$0F,$FF,$0F,$C0,$00 $8BC4 DEFB $3F,$16,$FF,$3F,$FF,$C4,$00,$00 $8BCC DEFB $3F,$1C,$FF,$1F,$FC,$F0,$00,$00 $8BD4 DEFB $1F,$0B,$FF,$87,$F0,$C0,$00,$00 $8BDC DEFB $0F,$07,$FF,$E3,$C0,$00,$00,$00 $8BE4 DEFB $07,$01,$FF,$FC,$00,$00,$00,$00 $8BEC DEFB $01,$00,$FC,$00,$00,$00,$00,$00 ; Data block at 8BF4 @label=spr_045 b$8BF4 DEFB $04,$1F $8BF6 DEFB $00,$00,$0C,$00,$00,$00,$00,$00 $8BFE DEFB $00,$00,$1E,$0C,$00,$00,$00,$00 $8C06 DEFB $00,$00,$3E,$14,$00,$00,$00,$00 $8C0E DEFB $00,$00,$3E,$14,$00,$00,$00,$00 $8C16 DEFB $00,$00,$3E,$14,$00,$00,$00,$00 $8C1E DEFB $18,$00,$3E,$14,$00,$00,$00,$00 $8C26 DEFB $3C,$18,$3E,$14,$00,$00,$00,$00 $8C2E DEFB $7C,$28,$3E,$14,$00,$00,$0C,$00 $8C36 DEFB $7C,$28,$3E,$14,$00,$00,$1E,$0C $8C3E DEFB $7C,$28,$3E,$14,$00,$00,$3E,$14 $8C46 DEFB $7C,$28,$3E,$14,$00,$00,$3E,$14 $8C4E DEFB $7C,$28,$3E,$04,$00,$00,$3E,$14 $8C56 DEFB $7C,$28,$7E,$18,$18,$00,$3E,$14 $8C5E DEFB $7C,$28,$FF,$66,$BC,$18,$3E,$14 $8C66 DEFB $7F,$29,$FF,$99,$FC,$88,$3E,$14 $8C6E DEFB $7F,$26,$FF,$7E,$FC,$60,$3E,$14 $8C76 DEFB $7F,$19,$FF,$FF,$FE,$98,$3E,$14 $8C7E DEFB $FF,$67,$FF,$FF,$FF,$E6,$BE,$14 $8C86 DEFB $FF,$9F,$FF,$FF,$FF,$F9,$FE,$94 $8C8E DEFB $FF,$FF,$FF,$FF,$FF,$FE,$FE,$64 $8C96 DEFB $FF,$FF,$FF,$FF,$FF,$FF,$FE,$98 $8C9E DEFB $FF,$7F,$FF,$FF,$FF,$FF,$FF,$E6 $8CA6 DEFB $7F,$1F,$FF,$FF,$FF,$FF,$FF,$F9 $8CAE DEFB $1F,$07,$FF,$FF,$FF,$FF,$FF,$FF $8CB6 DEFB $07,$01,$FF,$FF,$FF,$FF,$FF,$FF $8CBE DEFB $01,$00,$FF,$7F,$FF,$FF,$FF,$FC $8CC6 DEFB $00,$00,$7F,$1F,$FF,$FF,$FC,$F0 $8CCE DEFB $00,$00,$1F,$07,$FF,$FF,$F0,$C0 $8CD6 DEFB $00,$00,$07,$01,$FF,$FF,$C0,$00 $8CDE DEFB $00,$00,$01,$00,$FF,$7C,$00,$00 $8CE6 DEFB $00,$00,$00,$00,$7C,$10,$00,$00 ; Data block at 8CEE @label=spr_046 b$8CEE DEFB $03,$18 $8CF0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $8CF8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $8D00 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $8D08 DEFB $00,$00,$0E,$00,$00,$00,$0E,$00 $8D10 DEFB $3F,$0E,$F8,$20,$3F,$0E,$FF,$3F $8D18 DEFB $FC,$B8,$7F,$3D,$FF,$DF,$FC,$88 $8D20 DEFB $FF,$7B,$FF,$DF,$F8,$D0,$FF,$63 $8D28 DEFB $FF,$FF,$FC,$F8,$63,$01,$FF,$FF $8D30 DEFB $F8,$80,$01,$00,$FF,$FC,$F8,$70 $8D38 DEFB $00,$00,$FF,$73,$FC,$F8,$01,$00 $8D40 DEFB $FF,$CF,$FE,$FC,$01,$00,$FF,$DF $8D48 DEFB $FE,$8C,$00,$00,$FF,$3E,$FC,$78 $8D50 DEFB $00,$00,$FF,$79,$F8,$70,$01,$00 $8D58 DEFB $FF,$F7,$FC,$B8,$03,$01,$FF,$E7 $8D60 DEFB $F8,$B0,$03,$01,$FF,$EB,$F8,$A0 $8D68 DEFB $01,$00,$FF,$EC,$F8,$50,$00,$00 $8D70 DEFB $FF,$6F,$F0,$A0,$00,$00,$6F,$07 $8D78 DEFB $E0,$00,$00,$00,$07,$00,$00,$00 ; Data block at 8D80 @label=spr_047 b$8D80 DEFB $03,$19 $8D82 DEFB $03,$00,$00,$00,$00,$00,$07,$03 $8D8A DEFB $80,$00,$00,$00,$0F,$07,$80,$00 $8D92 DEFB $00,$00,$0F,$07,$80,$00,$00,$00 $8D9A DEFB $1F,$0E,$38,$00,$04,$00,$1F,$0E $8DA2 DEFB $FF,$38,$0E,$04,$3F,$18,$FF,$FF $8DAA DEFB $9F,$0E,$3F,$17,$FF,$7F,$FE,$1C $8DB2 DEFB $1F,$0F,$FF,$7E,$FC,$E8,$1F,$0F $8DBA DEFB $FF,$FE,$F8,$E0,$0F,$07,$FF,$FF $8DC2 DEFB $E0,$C0,$07,$03,$FF,$F1,$E0,$C0 $8DCA DEFB $0F,$05,$FF,$C0,$C0,$80,$1F,$08 $8DD2 DEFB $FF,$46,$E0,$40,$1F,$08,$FF,$06 $8DDA DEFB $F0,$20,$0F,$04,$FF,$15,$F8,$10 $8DE2 DEFB $07,$02,$FF,$1B,$FC,$08,$0F,$05 $8DEA DEFB $FF,$80,$FC,$08,$0F,$06,$FF,$60 $8DF2 DEFB $F8,$30,$07,$02,$FF,$9F,$F0,$C0 $8DFA DEFB $07,$02,$FF,$E0,$C0,$00,$03,$01 $8E02 DEFB $FF,$77,$80,$00,$01,$00,$FF,$AE $8E0A DEFB $00,$00,$00,$00,$FE,$58,$00,$00 $8E12 DEFB $00,$00,$78,$00,$00,$00 ; Data block at 8E18 @label=spr_048 b$8E18 DEFB $03,$19 $8E1A DEFB $00,$00,$00,$00,$00,$00,$00,$00 $8E22 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $8E2A DEFB $00,$00,$00,$00,$00,$00,$00,$00 $8E32 DEFB $0F,$00,$0E,$00,$20,$00,$3F,$0F $8E3A DEFB $BF,$0E,$F0,$20,$7F,$3E,$FF,$BF $8E42 DEFB $F0,$A0,$7F,$35,$FF,$DF,$F8,$B0 $8E4A DEFB $3F,$03,$FF,$DF,$FC,$C8,$07,$03 $8E52 DEFB $FF,$FF,$F8,$F0,$03,$00,$FF,$FF $8E5A DEFB $F8,$F0,$01,$00,$FF,$3F,$FC,$E0 $8E62 DEFB $03,$01,$FF,$C7,$FE,$9C,$03,$01 $8E6A DEFB $FF,$B0,$FF,$7E,$01,$00,$FF,$71 $8E72 DEFB $FF,$FE,$00,$00,$FF,$67,$FE,$C4 $8E7A DEFB $00,$00,$7F,$1E,$FC,$38,$00,$00 $8E82 DEFB $FF,$79,$FE,$BC,$01,$00,$FF,$F7 $8E8A DEFB $FE,$BC,$03,$01,$FF,$EB,$FC,$B8 $8E92 DEFB $03,$01,$FF,$DC,$FC,$D8,$01,$00 $8E9A DEFB $FF,$DE,$F8,$50,$00,$00,$FF,$1F $8EA2 DEFB $F0,$A0,$00,$00,$1F,$07,$E0,$C0 $8EAA DEFB $00,$00,$07,$00,$C0,$00 ; Data block at 8EB0 @label=spr_049 b$8EB0 DEFB $03,$18 $8EB2 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $8EBA DEFB $00,$00,$00,$00,$00,$00,$00,$00 $8EC2 DEFB $00,$00,$00,$00,$00,$00,$1C,$00 $8ECA DEFB $00,$00,$0E,$00,$7E,$1C,$18,$00 $8ED2 DEFB $7F,$0E,$FE,$7C,$3D,$18,$FF,$7F $8EDA DEFB $FE,$A8,$3F,$1D,$FF,$BF,$FE,$84 $8EE2 DEFB $7F,$3B,$FF,$DF,$FC,$D8,$7F,$37 $8EEA DEFB $FF,$FF,$FC,$F8,$F7,$63,$FF,$FF $8EF2 DEFB $F8,$80,$F3,$61,$FF,$FC,$F8,$70 $8EFA DEFB $61,$00,$FF,$73,$FC,$F8,$01,$00 $8F02 DEFB $FF,$CF,$FE,$FC,$01,$00,$FF,$DF $8F0A DEFB $FE,$8C,$00,$00,$FF,$3E,$FC,$78 $8F12 DEFB $00,$00,$FF,$79,$F8,$70,$01,$00 $8F1A DEFB $FF,$F7,$FC,$B8,$03,$01,$FF,$E7 $8F22 DEFB $F8,$B0,$03,$01,$FF,$EB,$F8,$A0 $8F2A DEFB $01,$00,$FF,$EC,$F8,$50,$00,$00 $8F32 DEFB $FF,$6F,$F0,$A0,$00,$00,$6F,$07 $8F3A DEFB $E0,$00,$00,$00,$07,$00,$00,$00 ; Data block at 8F42 @label=spr_050 b$8F42 DEFB $03,$18 $8F44 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $8F4C DEFB $00,$00,$00,$00,$00,$00,$00,$00 $8F54 DEFB $00,$00,$03,$00,$80,$00,$00,$00 $8F5C DEFB $0F,$03,$CE,$80,$00,$00,$1F,$0F $8F64 DEFB $FF,$8E,$80,$00,$3F,$1C,$FF,$6F $8F6C DEFB $C0,$80,$3F,$11,$FF,$EF,$E0,$C0 $8F74 DEFB $13,$01,$FF,$EF,$F0,$E0,$01,$00 $8F7C DEFB $FF,$FF,$F0,$E0,$01,$00,$FF,$FF $8F84 DEFB $F0,$80,$00,$00,$FF,$7C,$F8,$70 $8F8C DEFB $00,$00,$FF,$73,$FC,$F8,$01,$00 $8F94 DEFB $FF,$CF,$FE,$FC,$01,$00,$FF,$DF $8F9C DEFB $FE,$8C,$00,$00,$FF,$3E,$FC,$78 $8FA4 DEFB $00,$00,$FF,$79,$F8,$70,$01,$00 $8FAC DEFB $FF,$F7,$FC,$B8,$03,$01,$FF,$E7 $8FB4 DEFB $F8,$B0,$03,$01,$FF,$EB,$F8,$A0 $8FBC DEFB $01,$00,$FF,$EC,$F8,$50,$00,$00 $8FC4 DEFB $FF,$6F,$F0,$A0,$00,$00,$6F,$07 $8FCC DEFB $E0,$00,$00,$00,$07,$00,$00,$00 ; Data block at 8FD4 @label=spr_051 b$8FD4 DEFB $03,$18 $8FD6 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $8FDE DEFB $00,$00,$00,$00,$00,$00,$00,$00 $8FE6 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $8FEE DEFB $07,$00,$0E,$00,$60,$00,$1F,$07 $8FF6 DEFB $DF,$0E,$F0,$60,$3F,$1E,$FF,$5F $8FFE DEFB $F0,$A0,$7F,$39,$FF,$DF,$F8,$90 $9006 DEFB $7F,$23,$FF,$DF,$F0,$E0,$23,$01 $900E DEFB $FF,$FF,$F8,$F0,$01,$00,$FF,$FF $9016 DEFB $F0,$80,$01,$00,$FF,$FC,$F8,$70 $901E DEFB $00,$00,$FF,$73,$FC,$F8,$01,$00 $9026 DEFB $FF,$CF,$FE,$FC,$01,$00,$FF,$DF $902E DEFB $FE,$9C,$00,$00,$FF,$3E,$FC,$78 $9036 DEFB $00,$00,$FF,$79,$F8,$70,$01,$00 $903E DEFB $FF,$F7,$FC,$B8,$03,$01,$FF,$E7 $9046 DEFB $F8,$B0,$03,$01,$FF,$EB,$F8,$A0 $904E DEFB $01,$00,$FF,$EC,$F8,$50,$00,$00 $9056 DEFB $FF,$6F,$F0,$A0,$00,$00,$6F,$07 $905E DEFB $E0,$00,$00,$00,$07,$00,$00,$00 ; Data block at 9066 @label=spr_052 b$9066 DEFB $03,$19 $9068 DEFB $01,$00,$C0,$00,$00,$00,$03,$01 $9070 DEFB $E0,$C0,$00,$00,$07,$03,$C0,$80 $9078 DEFB $00,$00,$0F,$07,$80,$00,$00,$00 $9080 DEFB $0F,$07,$B8,$00,$00,$00,$1F,$0F $9088 DEFB $FF,$38,$08,$00,$1F,$0C,$FF,$7F $9090 DEFB $9C,$08,$0F,$03,$FF,$BF,$BE,$1C $9098 DEFB $1F,$0F,$FF,$BE,$FC,$B8,$1F,$0F $90A0 DEFB $FF,$FE,$F8,$D0,$0F,$07,$FF,$FF $90A8 DEFB $F0,$C0,$07,$03,$FF,$F1,$E0,$C0 $90B0 DEFB $0F,$05,$FF,$C0,$C0,$80,$1F,$08 $90B8 DEFB $FF,$46,$E0,$40,$1F,$08,$FF,$06 $90C0 DEFB $F0,$20,$0F,$04,$FF,$15,$F8,$10 $90C8 DEFB $07,$02,$FF,$1B,$FC,$08,$0F,$05 $90D0 DEFB $FF,$80,$FC,$08,$0F,$06,$FF,$60 $90D8 DEFB $F8,$30,$07,$02,$FF,$9F,$F0,$C0 $90E0 DEFB $07,$02,$FF,$E0,$C0,$00,$03,$01 $90E8 DEFB $FF,$77,$80,$00,$01,$00,$FF,$AE $90F0 DEFB $00,$00,$00,$00,$FE,$58,$00,$00 $90F8 DEFB $00,$00,$78,$00,$00,$00 ; Data block at 90FE @label=spr_053 b$90FE DEFB $03,$19 $9100 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $9108 DEFB $00,$00,$00,$00,$0C,$00,$00,$00 $9110 DEFB $00,$00,$1E,$0C,$00,$00,$06,$00 $9118 DEFB $3E,$1C,$38,$00,$0F,$06,$3E,$18 $9120 DEFB $FF,$38,$3F,$0E,$7F,$38,$FF,$FF $9128 DEFB $FE,$3C,$7F,$37,$FF,$FF,$FC,$58 $9130 DEFB $7F,$2F,$FF,$7E,$F8,$E0,$3F,$1F $9138 DEFB $FF,$FE,$F8,$F0,$3F,$1F,$FF,$FF $9140 DEFB $F0,$E0,$1F,$07,$FF,$F1,$E0,$C0 $9148 DEFB $0F,$05,$FF,$C0,$C0,$80,$1F,$08 $9150 DEFB $FF,$46,$E0,$40,$1F,$08,$FF,$06 $9158 DEFB $F0,$20,$0F,$04,$FF,$15,$F8,$10 $9160 DEFB $07,$02,$FF,$1B,$FC,$08,$0F,$05 $9168 DEFB $FF,$80,$FC,$08,$0F,$06,$FF,$60 $9170 DEFB $F8,$30,$07,$02,$FF,$9F,$F0,$C0 $9178 DEFB $07,$02,$FF,$E0,$C0,$00,$03,$01 $9180 DEFB $FF,$77,$80,$00,$01,$00,$FF,$AE $9188 DEFB $00,$00,$00,$00,$FE,$58,$00,$00 $9190 DEFB $00,$00,$78,$00,$00,$00 ; Data block at 9196 @label=spr_054 b$9196 DEFB $03,$19 $9198 DEFB $00,$00,$00,$00,$00,$00,$06,$00 $91A0 DEFB $00,$00,$00,$00,$0F,$06,$00,$00 $91A8 DEFB $00,$00,$1F,$0E,$00,$00,$06,$00 $91B0 DEFB $3E,$1C,$38,$00,$1F,$06,$3E,$1C $91B8 DEFB $FF,$38,$3F,$1E,$3F,$18,$FF,$FF $91C0 DEFB $FF,$3C,$7F,$36,$FF,$FF,$FE,$58 $91C8 DEFB $3F,$0F,$FF,$7E,$F8,$E0,$3F,$1F $91D0 DEFB $FF,$FE,$F8,$F0,$1F,$0F,$FF,$FF $91D8 DEFB $F0,$E0,$0F,$07,$FF,$F1,$E0,$C0 $91E0 DEFB $0F,$05,$FF,$C0,$C0,$80,$1F,$08 $91E8 DEFB $FF,$46,$E0,$40,$1F,$08,$FF,$06 $91F0 DEFB $F0,$20,$0F,$04,$FF,$15,$F8,$10 $91F8 DEFB $07,$02,$FF,$1B,$FC,$08,$0F,$05 $9200 DEFB $FF,$80,$FC,$08,$0F,$06,$FF,$60 $9208 DEFB $F8,$30,$07,$02,$FF,$9F,$F0,$C0 $9210 DEFB $07,$02,$FF,$E0,$C0,$00,$03,$01 $9218 DEFB $FF,$77,$80,$00,$01,$00,$FF,$AE $9220 DEFB $00,$00,$00,$00,$FE,$58,$00,$00 $9228 DEFB $00,$00,$78,$00,$00,$00 ; Data block at 922E @label=spr_055 b$922E DEFB $03,$10 $9230 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $9238 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $9240 DEFB $00,$00,$00,$00,$00,$00,$E0,$00 $9248 DEFB $00,$00,$03,$00,$F0,$E0,$06,$00 $9250 DEFB $0F,$03,$F0,$E0,$3F,$06,$1F,$0F $9258 DEFB $F0,$E0,$7F,$3F,$9F,$0E,$F0,$00 $9260 DEFB $FF,$7F,$9F,$0D,$E0,$C0,$FF,$78 $9268 DEFB $3F,$01,$C0,$80,$7F,$36,$7B,$30 $9270 DEFB $80,$00,$3F,$06,$FF,$7B,$E0,$80 $9278 DEFB $0F,$06,$FF,$FD,$F0,$F0,$0F,$05 $9280 DEFB $FF,$FE,$F0,$E0,$07,$03,$FF,$FE $9288 DEFB $E0,$C0,$03,$00,$FF,$FF,$E0,$C0 ; Data block at 9290 @label=spr_056 b$9290 DEFB $03,$10 $9292 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $929A DEFB $00,$00,$00,$00,$00,$00,$00,$00 $92A2 DEFB $00,$00,$00,$00,$C0,$00,$00,$00 $92AA DEFB $07,$00,$E3,$C0,$80,$00,$0F,$07 $92B2 DEFB $FF,$E3,$C0,$80,$1F,$0F,$FF,$EF $92BA DEFB $C0,$80,$1F,$0F,$FF,$1F,$C0,$80 $92C2 DEFB $0F,$06,$FF,$D7,$80,$00,$07,$00 $92CA DEFB $FF,$C9,$80,$00,$01,$00,$FF,$DC $92D2 DEFB $80,$00,$01,$00,$FF,$BD,$C0,$80 $92DA DEFB $01,$00,$FF,$7E,$E0,$C0,$03,$01 $92E2 DEFB $FF,$FE,$E0,$C0,$01,$00,$FF,$FE $92EA DEFB $E0,$C0,$00,$00,$FF,$7F,$E0,$C0 ; Data block at 92F2 @label=spr_057 b$92F2 DEFB $03,$10 $92F4 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $92FC DEFB $00,$00,$00,$00,$00,$00,$18,$00 $9304 DEFB $00,$00,$00,$00,$FC,$18,$00,$00 $930C DEFB $01,$00,$FE,$FC,$00,$00,$03,$01 $9314 DEFB $FE,$FC,$00,$00,$03,$01,$FF,$E2 $931C DEFB $00,$00,$01,$00,$FF,$DA,$00,$00 $9324 DEFB $01,$00,$FF,$36,$00,$00,$03,$01 $932C DEFB $FE,$60,$00,$00,$03,$01,$FF,$4E $9334 DEFB $80,$00,$01,$00,$FF,$3F,$C0,$00 $933C DEFB $01,$00,$FF,$7F,$E0,$40,$01,$00 $9344 DEFB $FF,$FF,$E0,$40,$00,$00,$FF,$7F $934C DEFB $E0,$40,$00,$00,$FF,$7F,$E0,$C0 ; Data block at 9354 @label=spr_058 b$9354 DEFB $03,$10 $9356 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $935E DEFB $06,$00,$00,$00,$00,$00,$1F,$06 $9366 DEFB $00,$00,$00,$00,$7F,$1F,$80,$00 $936E DEFB $00,$00,$FF,$7B,$80,$00,$00,$00 $9376 DEFB $FF,$70,$00,$00,$00,$00,$7F,$06 $937E DEFB $00,$00,$00,$00,$FE,$0C,$00,$00 $9386 DEFB $03,$00,$FC,$D8,$00,$00,$07,$03 $938E DEFB $FF,$D0,$00,$00,$07,$03,$FF,$87 $9396 DEFB $80,$00,$03,$00,$FF,$5F,$C0,$00 $939E DEFB $01,$00,$FF,$BF,$E0,$40,$01,$00 $93A6 DEFB $FF,$FF,$E0,$40,$03,$01,$FF,$7F $93AE DEFB $E0,$40,$03,$01,$FF,$7F,$E0,$80 ; Data block at 93B6 @label=spr_059 b$93B6 DEFB $03,$10 $93B8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $93C0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $93C8 DEFB $38,$00,$00,$00,$00,$00,$FC,$38 $93D0 DEFB $07,$00,$03,$00,$FC,$F8,$1F,$07 $93D8 DEFB $87,$03,$FC,$F8,$3F,$1F,$8F,$07 $93E0 DEFB $F8,$D0,$7F,$3E,$07,$03,$D0,$00 $93E8 DEFB $FF,$70,$03,$01,$C0,$80,$FF,$6F $93F0 DEFB $FE,$00,$E0,$C0,$7F,$1C,$FF,$6E $93F8 DEFB $F0,$20,$1F,$03,$FF,$EF,$E0,$C0 $9400 DEFB $1F,$0F,$FF,$F7,$E0,$C0,$0F,$07 $9408 DEFB $FF,$F7,$C0,$80,$0F,$07,$FF,$F7 $9410 DEFB $C0,$80,$07,$03,$FF,$FF,$80,$00 ; Data block at 9418 @label=spr_060 b$9418 DEFB $03,$10 $941A DEFB $00,$00,$00,$00,$00,$00,$00,$00 $9422 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $942A DEFB $00,$00,$00,$00,$E0,$00,$E0,$00 $9432 DEFB $03,$00,$F3,$E0,$F0,$E0,$07,$03 $943A DEFB $FF,$E3,$F0,$E0,$0F,$07,$FF,$CF $9442 DEFB $F0,$E0,$1F,$0F,$DF,$0F,$E0,$00 $944A DEFB $1F,$0C,$8F,$00,$00,$00,$0F,$03 $9452 DEFB $FF,$86,$00,$00,$03,$01,$FF,$31 $945A DEFB $80,$00,$07,$00,$FF,$F7,$C0,$80 $9462 DEFB $0F,$07,$FF,$F7,$C0,$80,$07,$03 $946A DEFB $FF,$F7,$80,$00,$07,$03,$FF,$F7 $9472 DEFB $80,$00,$03,$01,$FF,$FF,$80,$00 ; Data block at 947A @label=spr_061 b$947A DEFB $03,$10 $947C DEFB $00,$00,$00,$00,$00,$00,$00,$00 $9484 DEFB $00,$00,$00,$00,$00,$00,$30,$00 $948C DEFB $00,$00,$00,$00,$F8,$30,$00,$00 $9494 DEFB $03,$00,$FF,$F8,$80,$00,$07,$03 $949C DEFB $FF,$8B,$C0,$80,$07,$03,$FF,$C7 $94A4 DEFB $C0,$80,$07,$02,$FF,$3D,$C0,$80 $94AC DEFB $03,$01,$FF,$B8,$80,$00,$03,$01 $94B4 DEFB $FE,$84,$00,$00,$01,$00,$FE,$30 $94BC DEFB $00,$00,$03,$01,$FF,$F6,$00,$00 $94C4 DEFB $07,$03,$FF,$F6,$00,$00,$07,$03 $94CC DEFB $FF,$F7,$80,$00,$07,$03,$FF,$F7 $94D4 DEFB $80,$00,$03,$01,$FF,$FF,$80,$00 ; Data block at 94DC @label=spr_062 b$94DC DEFB $03,$10 $94DE DEFB $00,$00,$06,$00,$00,$00,$00,$00 $94E6 DEFB $1F,$06,$00,$00,$00,$00,$7F,$1F $94EE DEFB $80,$00,$00,$00,$FF,$7F,$80,$00 $94F6 DEFB $01,$00,$FF,$FE,$00,$00,$01,$00 $94FE DEFB $FE,$E0,$00,$00,$00,$00,$F8,$50 $9506 DEFB $00,$00,$03,$00,$FC,$B8,$00,$00 $950E DEFB $07,$03,$FC,$D8,$00,$00,$07,$03 $9516 DEFB $FE,$0C,$00,$00,$07,$02,$FC,$F0 $951E DEFB $00,$00,$03,$01,$FE,$FC,$00,$00 $9526 DEFB $03,$01,$FF,$FA,$00,$00,$07,$03 $952E DEFB $FF,$FA,$00,$00,$07,$03,$FF,$F7 $9536 DEFB $80,$00,$07,$03,$FF,$FF,$80,$00 ; Data block at 953E @label=spr_063 b$953E DEFB $03,$18 $9540 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $9548 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $9550 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $9558 DEFB $00,$00,$0E,$00,$20,$00,$0E,$00 $9560 DEFB $FF,$0E,$F8,$20,$3F,$0E,$FF,$3F $9568 DEFB $FC,$B8,$7F,$3D,$FF,$DF,$FC,$88 $9570 DEFB $FF,$7B,$FF,$DF,$F8,$D0,$FF,$63 $9578 DEFB $FF,$C3,$FC,$F8,$63,$01,$FF,$80 $9580 DEFB $F8,$30,$01,$00,$FF,$7F,$F0,$A0 $9588 DEFB $01,$00,$FF,$C7,$E0,$C0,$01,$00 $9590 DEFB $FF,$B1,$F0,$E0,$01,$00,$FF,$76 $9598 DEFB $F8,$F0,$01,$00,$FF,$EF,$FC,$78 $95A0 DEFB $01,$00,$FF,$DE,$FC,$B8,$01,$00 $95A8 DEFB $FF,$DD,$FE,$BC,$01,$00,$FF,$FB $95B0 DEFB $FE,$DC,$00,$00,$FF,$57,$FE,$DC $95B8 DEFB $00,$00,$FF,$4E,$FE,$DC,$00,$00 $95C0 DEFB $7F,$29,$FC,$38,$00,$00,$3F,$1E $95C8 DEFB $F8,$F0,$00,$00,$1F,$00,$F0,$00 ; Data block at 95D0 @label=spr_064 b$95D0 DEFB $03,$19 $95D2 DEFB $00,$00,$00,$00,$00,$00,$03,$00 $95DA DEFB $00,$00,$00,$00,$07,$03,$80,$00 $95E2 DEFB $00,$00,$0F,$07,$00,$00,$00,$00 $95EA DEFB $1F,$0E,$38,$00,$04,$00,$1F,$0E $95F2 DEFB $FF,$38,$0E,$04,$3F,$19,$FF,$FF $95FA DEFB $9F,$0E,$3F,$17,$FF,$7F,$FE,$1C $9602 DEFB $1F,$0F,$FF,$7E,$FC,$E8,$1F,$0F $960A DEFB $FF,$FE,$F8,$E0,$0F,$07,$FF,$FF $9612 DEFB $F0,$C0,$07,$03,$FF,$F1,$F8,$D0 $961A DEFB $0F,$05,$FF,$C0,$F8,$90,$1F,$08 $9622 DEFB $FF,$00,$F8,$10,$3F,$10,$FF,$80 $962A DEFB $F0,$20,$7F,$22,$FF,$A0,$F8,$50 $9632 DEFB $7F,$23,$FF,$60,$F8,$B0,$7F,$20 $963A DEFB $FF,$03,$F8,$70,$3F,$10,$FF,$1C $9642 DEFB $F8,$B0,$1F,$0F,$FF,$E3,$F0,$A0 $964A DEFB $0F,$02,$FF,$1D,$E0,$40,$03,$01 $9652 DEFB $FF,$CE,$C0,$80,$01,$00,$FF,$F3 $965A DEFB $80,$00,$00,$00,$FF,$3C,$00,$00 $9662 DEFB $00,$00,$3C,$00,$00,$00 ; Data block at 9668 @label=spr_065 b$9668 DEFB $03,$19 $966A DEFB $00,$00,$00,$00,$00,$00,$03,$00 $9672 DEFB $00,$00,$00,$00,$07,$03,$80,$00 $967A DEFB $00,$00,$0F,$07,$80,$00,$00,$00 $9682 DEFB $1F,$0E,$38,$00,$00,$00,$3F,$1E $968A DEFB $FF,$38,$18,$00,$3F,$11,$FF,$7F $9692 DEFB $FC,$18,$3F,$0F,$FF,$7F,$FE,$7C $969A DEFB $3F,$1F,$FF,$BE,$FC,$B8,$1F,$0F $96A2 DEFB $FF,$FE,$F8,$C0,$0F,$03,$FF,$FF $96AA DEFB $E0,$C0,$1F,$09,$FF,$F1,$C0,$80 $96B2 DEFB $1F,$08,$FF,$F0,$C0,$00,$0F,$04 $96BA DEFB $FF,$60,$F0,$00,$07,$02,$FF,$00 $96C2 DEFB $F8,$70,$0F,$05,$FF,$00,$F8,$B0 $96CA DEFB $0F,$06,$FF,$C0,$FC,$C8,$0F,$07 $96D2 DEFB $FF,$38,$FC,$08,$0F,$06,$FF,$C7 $96DA DEFB $FC,$88,$07,$02,$FF,$E8,$F8,$70 $96E2 DEFB $07,$02,$FF,$DD,$F0,$80,$03,$01 $96EA DEFB $FF,$53,$80,$00,$01,$00,$FF,$8E $96F2 DEFB $00,$00,$00,$00,$FE,$78,$00,$00 $96FA DEFB $00,$00,$78,$00,$00,$00 ; Data block at 9700 @label=spr_066 b$9700 DEFB $02,$30 $9702 DEFB $FC,$00,$00,$00,$FE,$7C,$00,$00 $970A DEFB $FF,$7E,$70,$00,$FF,$3D,$F8,$70 $9712 DEFB $FF,$3C,$FC,$B0,$FF,$3C,$FE,$3C $971A DEFB $FF,$3D,$FF,$1A,$FF,$1D,$FF,$1B $9722 DEFB $FF,$1D,$FF,$18,$FF,$1D,$FF,$38 $972A DEFB $FF,$1D,$FF,$3C,$FF,$19,$FF,$B0 $9732 DEFB $FF,$39,$FF,$B0,$FF,$31,$FF,$A0 $973A DEFB $FF,$71,$FF,$F0,$FF,$70,$FF,$F0 $9742 DEFB $FF,$70,$FF,$F0,$FF,$78,$FF,$F2 $974A DEFB $FF,$6C,$FF,$71,$FF,$74,$FF,$59 $9752 DEFB $FF,$72,$FF,$75,$FF,$39,$FF,$71 $975A DEFB $FF,$39,$FF,$A2,$FF,$39,$FF,$C2 $9762 DEFB $FF,$38,$FF,$34,$FF,$3C,$FF,$E4 $976A DEFB $FF,$3C,$FF,$E6,$FF,$3C,$FF,$E6 $9772 DEFB $FF,$1C,$FF,$66,$FF,$1C,$FF,$72 $977A DEFB $FF,$1C,$FF,$72,$FF,$0E,$FF,$32 $9782 DEFB $FF,$0E,$FF,$32,$FF,$0E,$FF,$3A $978A DEFB $FF,$0E,$FF,$1A,$FF,$0E,$FF,$99 $9792 DEFB $FF,$0C,$FF,$59,$FF,$0C,$FF,$58 $979A DEFB $FF,$18,$FF,$48,$FF,$18,$FF,$6C $97A2 DEFB $FF,$10,$FF,$C4,$FF,$11,$FF,$84 $97AA DEFB $FF,$11,$FF,$84,$FF,$23,$FF,$04 $97B2 DEFB $FF,$23,$FF,$04,$FF,$02,$FF,$02 $97BA DEFB $FF,$02,$FF,$02,$FF,$00,$FF,$02 ; Data block at 97C2 @label=spr_067 b$97C2 DEFB $02,$30 $97C4 DEFB $F8,$00,$00,$00,$FE,$78,$00,$00 $97CC DEFB $FF,$7E,$00,$00,$FF,$7D,$80,$00 $97D4 DEFB $FF,$7C,$FC,$80,$FF,$6C,$FE,$FC $97DC DEFB $FF,$6C,$FF,$7C,$FF,$6C,$FF,$7D $97E4 DEFB $FF,$5C,$FF,$3E,$FF,$5C,$FF,$3E $97EC DEFB $FF,$5C,$FF,$1F,$FF,$2C,$FF,$1F $97F4 DEFB $FF,$1E,$FF,$0F,$FF,$97,$FF,$0F $97FC DEFB $FF,$57,$FF,$0F,$FF,$57,$FF,$0F $9804 DEFB $FF,$4B,$FF,$1E,$FF,$4B,$FF,$1E $980C DEFB $FF,$E7,$FF,$9E,$FF,$E7,$FF,$9C $9814 DEFB $FF,$E7,$FF,$9C,$FF,$E7,$FF,$1C $981C DEFB $FF,$6F,$FF,$1C,$FF,$4F,$FF,$1E $9824 DEFB $FF,$4B,$FF,$3F,$FF,$13,$FF,$5E $982C DEFB $FF,$26,$FF,$5E,$FF,$26,$FF,$9C $9834 DEFB $FF,$4C,$FF,$1C,$FF,$5C,$FF,$3C $983C DEFB $FF,$58,$FF,$38,$FF,$28,$FF,$3E $9844 DEFB $FF,$28,$FF,$3F,$FF,$18,$FF,$1E $984C DEFB $FF,$18,$FF,$1E,$FF,$14,$FF,$1C $9854 DEFB $FF,$14,$FF,$1C,$FF,$16,$FF,$0C $985C DEFB $FF,$1E,$FF,$0C,$FF,$1C,$FF,$0C $9864 DEFB $FF,$14,$FF,$16,$FF,$14,$FF,$16 $986C DEFB $FF,$18,$FF,$24,$FF,$18,$FF,$2C $9874 DEFB $FF,$18,$FF,$48,$FF,$10,$FF,$10 $987C DEFB $FF,$10,$FF,$00,$FF,$00,$FF,$00 ; Data block at 9884 @label=spr_068 b$9884 DEFB $02,$30 $9886 DEFB $F8,$C0,$00,$00,$FF,$78,$F0,$00 $988E DEFB $FF,$3F,$F8,$F0,$FF,$1F,$FC,$E8 $9896 DEFB $FF,$1E,$FC,$E8,$FF,$0E,$FE,$C4 $989E DEFB $FF,$0E,$FF,$C2,$FF,$4E,$FF,$C1 $98A6 DEFB $FF,$4E,$FF,$C0,$FF,$4E,$FF,$40 $98AE DEFB $FF,$47,$FF,$40,$FF,$47,$FF,$E0 $98B6 DEFB $FF,$43,$FF,$E4,$FF,$69,$FF,$E4 $98BE DEFB $FF,$68,$FF,$E4,$FF,$65,$FF,$EC $98C6 DEFB $FF,$25,$FF,$EC,$FF,$25,$FF,$EC $98CE DEFB $FF,$39,$FF,$E4,$FF,$39,$FF,$F4 $98D6 DEFB $FF,$31,$FF,$F2,$FF,$31,$FF,$F2 $98DE DEFB $FF,$31,$FF,$F0,$FF,$21,$FF,$E0 $98E6 DEFB $FF,$21,$FF,$E0,$FF,$41,$FF,$E1 $98EE DEFB $FF,$41,$FF,$F1,$FF,$41,$FF,$F2 $98F6 DEFB $FF,$01,$FF,$F2,$FF,$03,$FF,$E2 $98FE DEFB $FF,$07,$FF,$C2,$FF,$07,$FF,$83 $9906 DEFB $FF,$0F,$FF,$03,$FF,$0E,$FF,$03 $990E DEFB $FF,$1C,$FF,$07,$FF,$18,$FF,$06 $9916 DEFB $FF,$18,$FF,$06,$FF,$18,$FF,$0C $991E DEFB $FF,$18,$FF,$1C,$FF,$18,$FF,$18 $9926 DEFB $FF,$08,$FF,$30,$FF,$08,$FF,$20 $992E DEFB $FF,$08,$FF,$40,$FF,$18,$FF,$00 $9936 DEFB $FF,$01,$FF,$00,$FF,$01,$FF,$00 $993E DEFB $FF,$00,$FF,$00,$FF,$00,$FF,$00 ; Data block at 9946 @label=spr_069 b$9946 DEFB $02,$30 $9948 DEFB $40,$00,$00,$00,$F0,$40,$00,$00 $9950 DEFB $FC,$70,$00,$00,$FE,$7C,$00,$00 $9958 DEFB $FF,$7E,$C0,$00,$FF,$7E,$F0,$C0 $9960 DEFB $FF,$7E,$FC,$F0,$FF,$7E,$FF,$FC $9968 DEFB $7F,$36,$FF,$FE,$37,$00,$FF,$FE $9970 DEFB $0F,$06,$FF,$3E,$0F,$07,$FF,$8E $9978 DEFB $0F,$07,$FF,$E2,$07,$03,$FF,$F8 $9980 DEFB $07,$03,$FF,$FE,$07,$03,$FF,$FF $9988 DEFB $07,$03,$FF,$FF,$0F,$07,$FF,$FF $9990 DEFB $0F,$07,$FF,$FF,$0F,$07,$FF,$FF $9998 DEFB $67,$01,$FF,$FF,$F9,$60,$FF,$7F $99A0 DEFB $FE,$78,$FF,$1F,$FF,$7E,$FF,$67 $99A8 DEFB $FF,$7E,$FF,$F8,$7F,$1E,$FF,$FE $99B0 DEFB $1F,$06,$FF,$FE,$07,$00,$FF,$FE $99B8 DEFB $01,$00,$FF,$FE,$00,$00,$FF,$3E $99C0 DEFB $06,$00,$7F,$0E,$0F,$06,$7F,$30 $99C8 DEFB $1F,$0E,$FF,$3C,$1F,$0F,$FF,$9E $99D0 DEFB $0F,$07,$FF,$E6,$07,$01,$FF,$F8 $99D8 DEFB $07,$02,$FF,$7F,$07,$03,$FF,$9F $99E0 DEFB $07,$03,$FF,$E7,$03,$01,$FF,$F9 $99E8 DEFB $03,$00,$FF,$FE,$07,$03,$FF,$3F $99F0 DEFB $07,$03,$FF,$CF,$07,$03,$FF,$F7 $99F8 DEFB $03,$00,$FF,$F7,$00,$00,$FF,$33 $9A00 DEFB $00,$00,$3B,$00,$00,$00,$00,$00 ; Data block at 9A08 @label=spr_070 b$9A08 DEFB $02,$30 $9A0A DEFB $00,$00,$02,$00,$00,$00,$0F,$02 $9A12 DEFB $00,$00,$1F,$0E,$00,$00,$FF,$0E $9A1A DEFB $03,$00,$FF,$EE,$0F,$03,$FF,$EE $9A22 DEFB $03,$0F,$FF,$EE,$FF,$3F,$FE,$E8 $9A2A DEFB $FF,$FF,$F8,$E0,$FF,$FF,$E0,$C0 $9A32 DEFB $FF,$FF,$C0,$00,$FF,$FC,$E0,$C0 $9A3A DEFB $FF,$F3,$EC,$C0,$FF,$CF,$FE,$8C $9A42 DEFB $FF,$3F,$FE,$3C,$FF,$7C,$FE,$FC $9A4A DEFB $FF,$73,$FE,$FC,$FF,$4F,$FC,$F0 $9A52 DEFB $FF,$3F,$F0,$C0,$FF,$7F,$C0,$00 $9A5A DEFB $FF,$7C,$C0,$80,$FF,$73,$C0,$80 $9A62 DEFB $FF,$4F,$C0,$80,$FF,$3F,$80,$00 $9A6A DEFB $FF,$7C,$80,$00,$FF,$FB,$8F,$02 $9A72 DEFB $FF,$E7,$FF,$8E,$FF,$9F,$FF,$BE $9A7A DEFB $FF,$7F,$FE,$BC,$FF,$FF,$FC,$B0 $9A82 DEFB $FF,$FF,$F0,$80,$FF,$FF,$F8,$30 $9A8A DEFB $FF,$FC,$FC,$78,$FF,$F1,$FC,$F8 $9A92 DEFB $FF,$49,$FC,$F8,$FF,$3D,$F8,$F0 $9A9A DEFB $FF,$7D,$F0,$E0,$FF,$7D,$F0,$80 $9AA2 DEFB $FF,$7C,$F0,$20,$FF,$78,$F8,$F0 $9AAA DEFB $FF,$73,$F8,$F0,$FF,$4F,$F8,$F0 $9AB2 DEFB $FF,$3F,$F0,$E0,$FF,$7F,$E0,$80 $9ABA DEFB $FF,$7E,$80,$00,$FE,$78,$00,$00 $9AC2 DEFB $F8,$60,$00,$00,$60,$00,$00,$00 ; Data block at 9ACA @label=spr_071 b$9ACA DEFB $03,$34 $9ACC DEFB $01,$00,$F0,$C0,$00,$00,$07,$01 $9AD4 DEFB $F8,$70,$00,$00,$1F,$07,$FC,$78 $9ADC DEFB $00,$00,$7F,$1F,$FC,$78,$00,$00 $9AE4 DEFB $FF,$7F,$FC,$78,$00,$00,$FF,$7F $9AEC DEFB $FC,$78,$00,$00,$FF,$7F,$FC,$78 $9AF4 DEFB $00,$00,$FF,$7E,$FC,$38,$00,$00 $9AFC DEFB $FF,$79,$FC,$48,$00,$00,$FF,$67 $9B04 DEFB $FC,$70,$00,$00,$FF,$1F,$FC,$78 $9B0C DEFB $00,$00,$FF,$7F,$FC,$78,$00,$00 $9B14 DEFB $FF,$7F,$FC,$78,$00,$00,$FF,$7F $9B1C DEFB $FC,$78,$00,$00,$FF,$7E,$FC,$18 $9B24 DEFB $00,$00,$FF,$79,$FC,$60,$00,$00 $9B2C DEFB $FF,$67,$FC,$78,$00,$00,$FF,$1F $9B34 DEFB $FC,$78,$00,$00,$FF,$7F,$FC,$78 $9B3C DEFB $00,$00,$FF,$7F,$FC,$78,$00,$00 $9B44 DEFB $FF,$7F,$FC,$78,$00,$00,$FF,$7F $9B4C DEFB $FC,$18,$00,$00,$FF,$7C,$FC,$A0 $9B54 DEFB $00,$00,$FF,$73,$FE,$BC,$00,$00 $9B5C DEFB $7F,$0F,$FE,$BC,$00,$00,$7F,$3F $9B64 DEFB $FE,$BC,$00,$00,$7F,$3F,$FF,$BE $9B6C DEFB $00,$00,$7F,$3F,$FF,$DE,$00,$00 $9B74 DEFB $7F,$3F,$FF,$80,$00,$00,$7F,$3E $9B7C DEFB $FF,$5F,$80,$00,$3F,$19,$FF,$EF $9B84 DEFB $80,$00,$3F,$07,$FF,$EF,$80,$00 $9B8C DEFB $3F,$1F,$FF,$EF,$80,$00,$1F,$0F $9B94 DEFB $FF,$F7,$C0,$80,$1F,$0F,$FF,$F7 $9B9C DEFB $E0,$00,$1F,$0F,$FF,$F8,$F0,$E0 $9BA4 DEFB $0F,$07,$FF,$F3,$F0,$E0,$0F,$07 $9BAC DEFB $FF,$CD,$F8,$F0,$07,$03,$FF,$3E $9BB4 DEFB $FC,$F8,$07,$00,$FF,$FE,$FE,$F4 $9BBC DEFB $03,$01,$FF,$FF,$FE,$6C,$01,$00 $9BC4 DEFB $FF,$FF,$FF,$9E,$01,$00,$FF,$FE $9BCC DEFB $FF,$5F,$00,$00,$FF,$79,$FF,$EF $9BD4 DEFB $00,$00,$7F,$27,$FF,$F7,$00,$00 $9BDC DEFB $3F,$1F,$FF,$FB,$00,$00,$1F,$0F $9BE4 DEFB $FF,$FD,$00,$00,$0F,$07,$FF,$F8 $9BEC DEFB $00,$00,$07,$03,$FF,$E3,$00,$00 $9BF4 DEFB $03,$01,$FF,$8C,$00,$00,$01,$00 $9BFC DEFB $FC,$30,$00,$00,$00,$00,$30,$00 ; Data block at 9C04 @label=spr_072 b$9C04 DEFB $02,$23 $9C06 DEFB $00,$00,$3C,$00,$00,$00,$FE,$2C $9C0E DEFB $03,$00,$FF,$EE,$0F,$03,$FF,$EE $9C16 DEFB $1F,$0F,$FF,$EE,$1F,$0F,$FF,$EE $9C1E DEFB $1F,$0F,$FF,$EE,$1F,$0F,$FF,$EE $9C26 DEFB $1F,$0F,$FF,$C2,$1F,$0F,$FF,$2D $9C2E DEFB $1F,$0C,$FF,$EE,$1F,$03,$FF,$EE $9C36 DEFB $1F,$0F,$FF,$EE,$1F,$0F,$FF,$C2 $9C3E DEFB $1F,$0F,$FF,$2C,$1F,$0C,$FF,$EE $9C46 DEFB $1F,$03,$FF,$EE,$1F,$0F,$FF,$E6 $9C4E DEFB $1F,$0F,$FF,$18,$1F,$0C,$FF,$DE $9C56 DEFB $1F,$03,$FE,$DC,$3F,$1F,$FE,$BC $9C5E DEFB $3F,$1F,$FE,$0C,$3F,$1C,$FC,$70 $9C66 DEFB $7F,$33,$FC,$78,$7F,$0E,$F8,$F0 $9C6E DEFB $FF,$7C,$F8,$F0,$FF,$73,$F0,$60 $9C76 DEFB $FF,$CF,$E0,$80,$FF,$37,$C0,$80 $9C7E DEFB $FF,$77,$80,$00,$FF,$7A,$00,$00 $9C86 DEFB $FE,$78,$00,$00,$F8,$60,$00,$00 $9C8E DEFB $E0,$00,$00,$00 ; Data block at 9C92 @label=spr_073 b$9C92 DEFB $02,$30 $9C94 DEFB $C0,$00,$00,$00,$F0,$C0,$00,$00 $9C9C DEFB $FC,$F0,$00,$00,$FF,$FC,$00,$00 $9CA4 DEFB $FF,$FF,$C0,$00,$FF,$FF,$F0,$C0 $9CAC DEFB $FF,$FF,$FC,$F0,$FF,$FF,$FE,$FC $9CB4 DEFB $FF,$3F,$FF,$FE,$FF,$CF,$FF,$FE $9CBC DEFB $FF,$E3,$FF,$FE,$FF,$EC,$FF,$FE $9CC4 DEFB $FF,$EF,$FE,$3C,$FF,$EF,$FE,$CC $9CCC DEFB $FF,$0F,$FC,$E0,$FF,$67,$F0,$E0 $9CD4 DEFB $FF,$F9,$F0,$E0,$FF,$FE,$F0,$60 $9CDC DEFB $FF,$FF,$E0,$80,$FF,$FF,$F0,$E0 $9CE4 DEFB $FF,$FF,$F8,$F0,$FF,$FF,$F8,$F0 $9CEC DEFB $FF,$FF,$F8,$F0,$FF,$7F,$F8,$F0 $9CF4 DEFB $FF,$1F,$F8,$F0,$FF,$67,$F8,$F0 $9CFC DEFB $FF,$79,$FC,$F8,$FF,$7E,$FE,$7C $9D04 DEFB $FF,$7F,$FE,$1C,$FF,$1F,$9E,$04 $9D0C DEFB $FF,$E7,$84,$00,$FF,$F9,$80,$00 $9D14 DEFB $FF,$FE,$00,$00,$FF,$FF,$E0,$00 $9D1C DEFB $FF,$FF,$F8,$A0,$FF,$FF,$FC,$B8 $9D24 DEFB $FF,$3F,$FE,$DC,$FF,$CF,$FE,$DC $9D2C DEFB $FF,$F3,$FE,$DC,$FF,$FC,$FF,$DE $9D34 DEFB $FF,$FF,$FF,$1E,$FF,$FF,$9F,$0E $9D3C DEFB $FF,$FF,$8F,$02,$FF,$FF,$82,$00 $9D44 DEFB $FF,$3F,$80,$00,$3F,$0F,$80,$00 $9D4C DEFB $0F,$03,$80,$00,$03,$00,$00,$00 ; Data block at 9D54 @label=spr_074 b$9D54 DEFB $04,$21 $9D56 DEFB $01,$00,$C0,$00,$00,$00,$00,$00 $9D5E DEFB $03,$01,$E0,$C0,$C0,$00,$00,$00 $9D66 DEFB $07,$03,$F3,$E1,$E7,$C0,$00,$00 $9D6E DEFB $07,$03,$FF,$E3,$EF,$C7,$98,$00 $9D76 DEFB $03,$01,$FF,$D3,$FF,$CF,$FC,$8C $9D7E DEFB $3B,$01,$FF,$17,$FF,$5F,$FE,$BC $9D86 DEFB $7F,$38,$FF,$98,$FF,$A7,$FE,$7C $9D8E DEFB $FF,$7C,$FF,$51,$FF,$42,$FE,$B8 $9D96 DEFB $FF,$7E,$FF,$00,$FF,$05,$FF,$62 $9D9E DEFB $7F,$38,$FF,$7F,$FF,$FE,$FF,$0E $9DA6 DEFB $7F,$23,$FF,$FF,$FF,$FF,$FF,$CE $9DAE DEFB $3F,$0F,$FF,$FF,$FF,$FF,$FF,$F6 $9DB6 DEFB $3F,$1F,$FF,$1F,$FF,$FF,$FE,$F8 $9DBE DEFB $7F,$3E,$FF,$1F,$FF,$FF,$FE,$FC $9DC6 DEFB $7F,$3C,$FF,$3F,$FF,$FF,$FE,$FC $9DCE DEFB $FF,$7C,$FF,$7F,$FF,$FF,$FF,$FE $9DD6 DEFB $FF,$78,$FF,$FF,$FF,$FF,$FF,$FE $9DDE DEFB $FF,$78,$FF,$FF,$FF,$FF,$FF,$FE $9DE6 DEFB $FF,$78,$FF,$FF,$FF,$FF,$FF,$FE $9DEE DEFB $7F,$38,$FF,$FF,$FF,$E0,$FE,$3C $9DF6 DEFB $7F,$38,$FF,$7F,$FF,$1F,$FE,$CC $9DFE DEFB $3F,$1C,$FF,$7C,$FF,$FF,$FC,$F0 $9E06 DEFB $3F,$1E,$FF,$7B,$FF,$FF,$FE,$FC $9E0E DEFB $1F,$0F,$FF,$F7,$FF,$FF,$FE,$F4 $9E16 DEFB $0F,$07,$FF,$EF,$FF,$FF,$F7,$E2 $9E1E DEFB $07,$03,$FF,$DF,$FF,$FF,$E7,$C2 $9E26 DEFB $07,$03,$FF,$9F,$FF,$FF,$E7,$C2 $9E2E DEFB $07,$03,$FF,$9F,$FF,$FF,$E7,$C2 $9E36 DEFB $07,$03,$F0,$F0,$0F,$0F,$EE,$C2 $9E3E DEFB $0F,$07,$00,$00,$00,$00,$FE,$E4 $9E46 DEFB $1C,$0C,$00,$00,$00,$00,$3C,$38 $9E4E DEFB $18,$08,$00,$00,$00,$00,$18,$10 $9E56 DEFB $10,$00,$00,$00,$00,$00,$08,$00 ; Data block at 9E5E @label=spr_075 b$9E5E DEFB $04,$0B $9E60 DEFB $00,$00,$0F,$00,$F0,$00,$00,$00 $9E68 DEFB $00,$00,$FF,$05,$FF,$50,$00,$00 $9E70 DEFB $03,$00,$FF,$6C,$FF,$21,$C0,$00 $9E78 DEFB $07,$02,$FF,$92,$FF,$91,$E0,$80 $9E80 DEFB $0F,$07,$FF,$FD,$FF,$51,$F0,$60 $9E88 DEFB $1F,$0D,$FF,$35,$FF,$E0,$F8,$F0 $9E90 DEFB $0F,$06,$FF,$FB,$FF,$78,$F0,$60 $9E98 DEFB $07,$03,$FF,$DD,$FF,$F8,$E0,$C0 $9EA0 DEFB $03,$00,$FF,$FF,$FF,$FF,$C0,$00 $9EA8 DEFB $00,$00,$FF,$0F,$FF,$F0,$00,$00 $9EB0 DEFB $00,$00,$0F,$00,$F0,$00,$00,$00 ; Data block at 9EB8 @label=spr_076 b$9EB8 DEFB $05,$19 $9EBA DEFB $00,$00,$C0,$00,$00,$00,$00,$00 $9EC2 DEFB $00,$00,$01,$00,$F1,$C0,$80,$00 $9ECA DEFB $00,$00,$00,$00,$01,$00,$FB,$F8 $9ED2 DEFB $E0,$80,$00,$00,$00,$00,$01,$00 $9EDA DEFB $FF,$F9,$F8,$E0,$00,$00,$00,$00 $9EE2 DEFB $01,$00,$FF,$F9,$FE,$F8,$60,$00 $9EEA DEFB $00,$00,$71,$00,$FF,$F8,$FF,$7E $9EF2 DEFB $F8,$60,$00,$00,$FD,$70,$FF,$F9 $9EFA DEFB $FF,$9F,$FE,$78,$00,$00,$FF,$7C $9F02 DEFB $FF,$FB,$FF,$E7,$FF,$7E,$80,$00 $9F0A DEFB $FF,$7F,$FF,$3B,$FF,$F9,$FF,$7F $9F12 DEFB $E0,$80,$FF,$7F,$FF,$CD,$FF,$FE $9F1A DEFB $FF,$7F,$F8,$E0,$7F,$3F,$FF,$F3 $9F22 DEFB $FF,$FF,$FF,$9F,$FE,$F8,$3F,$0F $9F2A DEFB $FF,$FC,$FF,$FF,$FF,$C7,$FF,$FE $9F32 DEFB $0F,$03,$FF,$FF,$FF,$3F,$FF,$E9 $9F3A DEFB $FF,$FE,$03,$00,$FF,$FF,$FF,$8F $9F42 DEFB $FF,$EE,$FF,$7E,$00,$00,$FF,$3F $9F4A DEFB $CF,$83,$FF,$EF,$FF,$9E,$00,$00 $9F52 DEFB $FF,$4F,$C3,$80,$FF,$EF,$FF,$C6 $9F5A DEFB $00,$00,$FF,$73,$C0,$80,$FF,$2F $9F62 DEFB $E6,$C0,$00,$00,$FF,$7C,$C0,$80 $9F6A DEFB $3F,$0F,$E0,$C0,$00,$00,$7F,$3F $9F72 DEFB $C0,$00,$1F,$0F,$E0,$C0,$00,$00 $9F7A DEFB $3F,$0F,$F0,$C0,$0F,$0F,$E0,$C0 $9F82 DEFB $00,$00,$0F,$03,$F8,$F0,$0F,$07 $9F8A DEFB $E0,$C0,$00,$00,$03,$00,$FC,$F8 $9F92 DEFB $07,$01,$E0,$C0,$00,$00,$00,$00 $9F9A DEFB $FC,$38,$01,$00,$E0,$40,$00,$00 $9FA2 DEFB $00,$00,$3C,$08,$00,$00,$40,$00 $9FAA DEFB $00,$00,$00,$00,$08,$00,$00,$00 $9FB2 DEFB $00,$00 ; Data block at 9FB4 @label=spr_077 b$9FB4 DEFB $03,$18 $9FB6 DEFB $01,$00,$80,$00,$00,$00,$03,$01 $9FBE DEFB $E0,$80,$00,$00,$03,$01,$F8,$E0 $9FC6 DEFB $00,$00,$03,$01,$FE,$F8,$00,$00 $9FCE DEFB $01,$00,$FF,$FE,$80,$00,$00,$00 $9FD6 DEFB $FF,$7F,$C0,$80,$08,$00,$FF,$7F $9FDE DEFB $E0,$80,$1E,$08,$7F,$3F,$F1,$A0 $9FE6 DEFB $3F,$1E,$FF,$3F,$FC,$B8,$3F,$1F $9FEE DEFB $FF,$BF,$FC,$B8,$1F,$0F,$FF,$BF $9FF6 DEFB $FC,$B8,$1F,$0F,$FF,$9F,$FC,$B8 $9FFE DEFB $7F,$0F,$FF,$A7,$FC,$98,$FF,$67 $A006 DEFB $FF,$B9,$D8,$80,$FF,$79,$FF,$BE $A00E DEFB $C0,$00,$FF,$7E,$FF,$3F,$E0,$80 $A016 DEFB $7F,$3F,$FF,$9F,$F8,$E0,$3F,$0F $A01E DEFB $FF,$E7,$FE,$F8,$0F,$03,$FF,$F9 $A026 DEFB $FF,$FE,$03,$00,$FF,$FD,$FF,$FE $A02E DEFB $00,$00,$FF,$3D,$FF,$FE,$00,$00 $A036 DEFB $3F,$0C,$FF,$7E,$00,$00,$0C,$00 $A03E DEFB $7E,$1C,$00,$00,$00,$00,$1C,$00 ; Data block at A046 @label=spr_078 b$A046 DEFB $03,$12 $A048 DEFB $40,$00,$00,$00,$00,$00,$F0,$40 $A050 DEFB $00,$00,$00,$00,$FC,$70,$00,$00 $A058 DEFB $00,$00,$FF,$7C,$00,$00,$00,$00 $A060 DEFB $FF,$7F,$C3,$00,$00,$00,$FF,$7F $A068 DEFB $F7,$C3,$C0,$00,$7F,$33,$FF,$F3 $A070 DEFB $F0,$C0,$3F,$14,$FF,$FB,$FC,$F0 $A078 DEFB $1F,$07,$FF,$3B,$FE,$FC,$0F,$07 $A080 DEFB $FF,$CB,$FF,$FE,$0F,$07,$FF,$F3 $A088 DEFB $FF,$FE,$07,$01,$FF,$FC,$FF,$FE $A090 DEFB $01,$00,$FF,$7F,$FF,$3E,$00,$00 $A098 DEFB $7F,$1F,$FF,$CE,$00,$00,$1F,$07 $A0A0 DEFB $FF,$E2,$00,$00,$07,$01,$F2,$E0 $A0A8 DEFB $00,$00,$01,$00,$F0,$60,$00,$00 $A0B0 DEFB $00,$00,$60,$00 ; Data block at A0B4 @label=spr_079 b$A0B4 DEFB $03,$10 $A0B6 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $A0BE DEFB $00,$00,$00,$00,$00,$00,$00,$00 $A0C6 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $A0CE DEFB $00,$00,$00,$00,$60,$00,$00,$00 $A0D6 DEFB $09,$00,$F0,$60,$03,$00,$1F,$09 $A0DE DEFB $F8,$F0,$27,$03,$9F,$0F,$F8,$F0 $A0E6 DEFB $7F,$27,$CF,$87,$F0,$60,$7F,$3F $A0EE DEFB $C7,$80,$F0,$E0,$7F,$3D,$C1,$80 $A0F6 DEFB $E0,$C0,$3F,$1B,$8D,$00,$E0,$C0 $A0FE DEFB $1F,$03,$BF,$0D,$E0,$C0,$07,$03 $A106 DEFB $FF,$3E,$F0,$E0,$07,$03,$FF,$FF $A10E DEFB $F8,$60,$03,$01,$FF,$FF,$F8,$60 ; Data block at A116 @label=spr_080 b$A116 DEFB $03,$10 $A118 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $A120 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $A128 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $A130 DEFB $00,$00,$C0,$00,$00,$00,$09,$00 $A138 DEFB $E3,$C0,$80,$00,$1F,$09,$FF,$E3 $A140 DEFB $C0,$80,$1F,$0F,$FF,$EF,$C0,$80 $A148 DEFB $1F,$0F,$FF,$5F,$C0,$80,$0F,$06 $A150 DEFB $FF,$D9,$80,$00,$07,$00,$FF,$C3 $A158 DEFB $80,$00,$01,$00,$FF,$FB,$80,$00 $A160 DEFB $01,$00,$FF,$FD,$C0,$80,$01,$00 $A168 DEFB $FF,$FE,$E0,$C0,$01,$00,$FF,$FE $A170 DEFB $E0,$C0,$00,$00,$FF,$7E,$E0,$C0 ; Data block at A178 @label=spr_081 b$A178 DEFB $03,$10 $A17A DEFB $00,$00,$00,$00,$00,$00,$00,$00 $A182 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $A18A DEFB $00,$00,$00,$00,$18,$00,$00,$00 $A192 DEFB $01,$00,$3C,$18,$00,$00,$03,$01 $A19A DEFB $FE,$3C,$00,$00,$03,$01,$FE,$FC $A1A2 DEFB $00,$00,$03,$01,$FE,$EC,$00,$00 $A1AA DEFB $01,$00,$FF,$DA,$00,$00,$03,$01 $A1B2 DEFB $FF,$36,$00,$00,$03,$01,$FE,$B4 $A1BA DEFB $00,$00,$03,$01,$FF,$7A,$00,$00 $A1C2 DEFB $01,$00,$FF,$7C,$00,$00,$00,$00 $A1CA DEFB $FF,$7E,$00,$00,$00,$00,$7F,$3F $A1D2 DEFB $C0,$00,$00,$00,$FF,$7F,$E0,$40 ; Data block at A1DA @label=spr_082 b$A1DA DEFB $03,$10 $A1DC DEFB $00,$00,$00,$00,$00,$00,$00,$00 $A1E4 DEFB $00,$00,$00,$00,$00,$00,$06,$00 $A1EC DEFB $00,$00,$00,$00,$5F,$06,$00,$00 $A1F4 DEFB $00,$00,$FF,$5F,$80,$00,$00,$00 $A1FC DEFB $FF,$7B,$80,$00,$00,$00,$7F,$37 $A204 DEFB $80,$00,$02,$00,$7F,$06,$00,$00 $A20C DEFB $07,$02,$FF,$6E,$00,$00,$07,$03 $A214 DEFB $FE,$EC,$00,$00,$07,$03,$FE,$DC $A21C DEFB $00,$00,$03,$00,$FF,$5E,$00,$00 $A224 DEFB $00,$00,$FF,$5F,$80,$00,$01,$00 $A22C DEFB $FF,$DF,$80,$00,$01,$00,$FF,$BF $A234 DEFB $C0,$80,$03,$01,$FF,$BF,$C0,$80 ; Data block at A23C @label=spr_083 b$A23C DEFB $03,$10 $A23E DEFB $00,$00,$01,$00,$00,$00,$00,$00 $A246 DEFB $07,$01,$80,$00,$00,$00,$1F,$07 $A24E DEFB $80,$00,$00,$00,$7F,$1F,$80,$00 $A256 DEFB $00,$00,$FF,$7C,$00,$00,$01,$00 $A25E DEFB $FC,$F0,$00,$00,$00,$00,$FE,$64 $A266 DEFB $00,$00,$00,$00,$FE,$74,$00,$00 $A26E DEFB $03,$00,$FC,$B8,$00,$00,$07,$03 $A276 DEFB $FE,$BC,$00,$00,$07,$03,$FE,$7C $A27E DEFB $00,$00,$07,$02,$FE,$FC,$00,$00 $A286 DEFB $03,$01,$FF,$FA,$00,$00,$07,$03 $A28E DEFB $FF,$FA,$00,$00,$07,$03,$FF,$F6 $A296 DEFB $00,$00,$07,$03,$FF,$FF,$80,$00 ; Data block at A29E @label=spr_084 b$A29E DEFB $03,$10 $A2A0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $A2A8 DEFB $00,$00,$00,$00,$00,$00,$08,$00 $A2B0 DEFB $00,$00,$00,$00,$3C,$08,$80,$00 $A2B8 DEFB $00,$00,$FF,$38,$C0,$80,$03,$00 $A2C0 DEFB $FF,$FB,$C0,$80,$07,$03,$FF,$F7 $A2C8 DEFB $C0,$80,$0F,$07,$FF,$C7,$80,$00 $A2D0 DEFB $07,$03,$FE,$3C,$00,$00,$07,$03 $A2D8 DEFB $FC,$B8,$00,$00,$03,$01,$FC,$D8 $A2E0 DEFB $00,$00,$03,$01,$FE,$EC,$00,$00 $A2E8 DEFB $01,$00,$FF,$EE,$00,$00,$01,$00 $A2F0 DEFB $FF,$F7,$80,$00,$03,$01,$FF,$F7 $A2F8 DEFB $80,$00,$03,$01,$FF,$FF,$80,$00 ; Data block at A300 @label=spr_085 b$A300 DEFB $03,$10 $A302 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $A30A DEFB $00,$00,$00,$00,$00,$00,$00,$00 $A312 DEFB $00,$00,$00,$00,$20,$00,$20,$00 $A31A DEFB $00,$00,$F1,$20,$F0,$20,$03,$00 $A322 DEFB $F7,$E1,$F0,$E0,$0F,$03,$FF,$E7 $A32A DEFB $F0,$E0,$1F,$0F,$FF,$DF,$E0,$80 $A332 DEFB $3F,$1F,$FF,$1E,$80,$00,$1F,$0E $A33A DEFB $9E,$0C,$00,$00,$0F,$07,$FF,$8E $A342 DEFB $00,$00,$07,$01,$FF,$EF,$80,$00 $A34A DEFB $01,$00,$FF,$F7,$80,$00,$01,$00 $A352 DEFB $FF,$F7,$C0,$80,$03,$01,$FF,$F7 $A35A DEFB $C0,$80,$03,$01,$FF,$FF,$80,$00 ; Data block at A362 @label=spr_086 b$A362 DEFB $03,$10 $A364 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $A36C DEFB $00,$00,$00,$00,$00,$00,$00,$00 $A374 DEFB $08,$00,$00,$00,$00,$00,$3C,$08 $A37C DEFB $01,$00,$00,$00,$FC,$38,$07,$01 $A384 DEFB $83,$00,$FC,$F8,$1F,$07,$87,$03 $A38C DEFB $F8,$E0,$3F,$1F,$8F,$07,$E0,$80 $A394 DEFB $7F,$3C,$07,$03,$80,$00,$FF,$70 $A39C DEFB $03,$01,$C0,$80,$FF,$7F,$83,$01 $A3A4 DEFB $E0,$C0,$7F,$3F,$C7,$83,$E0,$C0 $A3AC DEFB $3F,$07,$EF,$C7,$E0,$C0,$07,$03 $A3B4 DEFB $FF,$EF,$E0,$C0,$07,$03,$FF,$EF $A3BC DEFB $C0,$80,$07,$03,$FF,$FF,$C0,$80 ; Data block at A3C4 @label=spr_087 b$A3C4 DEFB $03,$1D $A3C6 DEFB $00,$00,$18,$00,$00,$00,$00,$00 $A3CE DEFB $3C,$18,$00,$00,$00,$00,$7E,$34 $A3D6 DEFB $00,$00,$00,$00,$74,$20,$00,$00 $A3DE DEFB $00,$00,$F0,$60,$00,$00,$00,$00 $A3E6 DEFB $F8,$70,$00,$00,$00,$00,$F8,$70 $A3EE DEFB $00,$00,$00,$00,$7C,$38,$00,$00 $A3F6 DEFB $00,$00,$7E,$3C,$00,$00,$00,$00 $A3FE DEFB $3F,$1D,$E0,$C0,$00,$00,$7F,$3D $A406 DEFB $E0,$C0,$00,$00,$FF,$7B,$E0,$C0 $A40E DEFB $01,$00,$FF,$F7,$F0,$C0,$01,$00 $A416 DEFB $FF,$EF,$F8,$D0,$03,$01,$FF,$FF $A41E DEFB $FC,$F8,$03,$01,$FF,$FF,$FC,$F8 $A426 DEFB $01,$00,$FF,$7F,$FC,$F8,$01,$00 $A42E DEFB $FF,$8F,$F8,$E0,$01,$00,$FF,$9F $A436 DEFB $F8,$F0,$03,$01,$FF,$F7,$F8,$F0 $A43E DEFB $03,$01,$FF,$D7,$F8,$F0,$01,$00 $A446 DEFB $FF,$BB,$F8,$F0,$00,$00,$FF,$7B $A44E DEFB $F8,$F0,$00,$00,$FF,$77,$F8,$F0 $A456 DEFB $01,$00,$FF,$EF,$F0,$E0,$01,$00 $A45E DEFB $EF,$C0,$F0,$E0,$00,$00,$C1,$00 $A466 DEFB $E0,$C0,$00,$00,$01,$00,$C0,$80 $A46E DEFB $00,$00,$00,$00,$80,$00 ; Data block at A474 @label=spr_088 b$A474 DEFB $03,$1D $A476 DEFB $00,$00,$30,$00,$00,$00,$00,$00 $A47E DEFB $78,$30,$00,$00,$00,$00,$FC,$68 $A486 DEFB $00,$00,$00,$00,$F8,$60,$00,$00 $A48E DEFB $01,$00,$F0,$E0,$00,$00,$01,$00 $A496 DEFB $F0,$E0,$00,$00,$01,$00,$F8,$F0 $A49E DEFB $00,$00,$00,$00,$F8,$70,$00,$00 $A4A6 DEFB $00,$00,$FC,$78,$00,$00,$00,$00 $A4AE DEFB $FF,$7B,$E0,$C0,$00,$00,$FF,$7B $A4B6 DEFB $F0,$C0,$00,$00,$FF,$77,$F8,$D0 $A4BE DEFB $01,$00,$FF,$EF,$F8,$D0,$01,$00 $A4C6 DEFB $FF,$FF,$FC,$D8,$03,$01,$FF,$FF $A4CE DEFB $FC,$F8,$03,$01,$FF,$FF,$FC,$F8 $A4D6 DEFB $01,$00,$FF,$7F,$FC,$F8,$01,$00 $A4DE DEFB $FF,$8F,$F8,$E0,$01,$00,$FF,$9F $A4E6 DEFB $F8,$F0,$03,$01,$FF,$F7,$F8,$F0 $A4EE DEFB $03,$01,$FF,$D7,$F8,$F0,$01,$00 $A4F6 DEFB $FF,$BB,$F8,$F0,$00,$00,$FF,$7B $A4FE DEFB $F8,$F0,$00,$00,$FF,$77,$F8,$F0 $A506 DEFB $01,$00,$FF,$EF,$F0,$E0,$01,$00 $A50E DEFB $EF,$C0,$F0,$E0,$00,$00,$C1,$00 $A516 DEFB $E0,$C0,$00,$00,$01,$00,$C0,$80 $A51E DEFB $00,$00,$00,$00,$80,$00 ; Data block at A524 @label=spr_089 b$A524 DEFB $03,$1D $A526 DEFB $00,$00,$00,$00,$00,$00,$03,$00 $A52E DEFB $00,$00,$00,$00,$07,$03,$80,$00 $A536 DEFB $00,$00,$0F,$06,$C0,$80,$00,$00 $A53E DEFB $0F,$06,$80,$00,$00,$00,$0F,$06 $A546 DEFB $00,$00,$00,$00,$0F,$07,$C0,$00 $A54E DEFB $00,$00,$07,$03,$E0,$C0,$00,$00 $A556 DEFB $03,$01,$F0,$E0,$00,$00,$01,$00 $A55E DEFB $FF,$F7,$F8,$D0,$01,$00,$FF,$F7 $A566 DEFB $FC,$D8,$01,$00,$FF,$EF,$FC,$D8 $A56E DEFB $01,$00,$FF,$EF,$FC,$D8,$01,$00 $A576 DEFB $FF,$FF,$FC,$E8,$03,$01,$FF,$FF $A57E DEFB $FC,$F8,$03,$01,$FF,$FF,$FC,$F8 $A586 DEFB $01,$00,$FF,$7F,$FC,$F8,$01,$00 $A58E DEFB $FF,$8F,$F8,$E0,$01,$00,$FF,$9F $A596 DEFB $F8,$F0,$03,$01,$FF,$F7,$F8,$F0 $A59E DEFB $03,$01,$FF,$D7,$F8,$F0,$01,$00 $A5A6 DEFB $FF,$BB,$F8,$F0,$00,$00,$FF,$7B $A5AE DEFB $F8,$F0,$00,$00,$FF,$77,$F8,$F0 $A5B6 DEFB $01,$00,$FF,$EF,$F0,$E0,$01,$00 $A5BE DEFB $EF,$C0,$F0,$E0,$00,$00,$C1,$00 $A5C6 DEFB $E0,$C0,$00,$00,$01,$00,$C0,$80 $A5CE DEFB $00,$00,$00,$00,$80,$00 ; Data block at A5D4 @label=spr_090 b$A5D4 DEFB $03,$1D $A5D6 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $A5DE DEFB $00,$00,$00,$00,$00,$00,$00,$00 $A5E6 DEFB $00,$00,$10,$00,$00,$00,$00,$00 $A5EE DEFB $38,$10,$00,$00,$00,$00,$70,$20 $A5F6 DEFB $00,$00,$00,$00,$FC,$60,$00,$00 $A5FE DEFB $00,$00,$FF,$7C,$C0,$00,$0C,$00 $A606 DEFB $7F,$3F,$E0,$C0,$0E,$0C,$3F,$0F $A60E DEFB $FF,$EF,$FF,$DE,$0F,$01,$FF,$EF $A616 DEFB $FF,$D6,$03,$01,$FF,$DF,$FF,$C6 $A61E DEFB $03,$01,$FF,$DF,$FF,$EE,$03,$01 $A626 DEFB $FF,$FF,$FE,$EC,$03,$01,$FF,$FF $A62E DEFB $FE,$FC,$03,$00,$FF,$FF,$FE,$FC $A636 DEFB $01,$00,$FF,$7F,$FC,$F8,$01,$00 $A63E DEFB $FF,$8F,$F8,$E0,$01,$00,$FF,$9F $A646 DEFB $F8,$F0,$03,$01,$FF,$F7,$F8,$F0 $A64E DEFB $03,$01,$FF,$D7,$F8,$F0,$01,$00 $A656 DEFB $FF,$BB,$F8,$F0,$00,$00,$FF,$7B $A65E DEFB $F8,$F0,$00,$00,$FF,$77,$F8,$F0 $A666 DEFB $01,$00,$FF,$EF,$F0,$E0,$01,$00 $A66E DEFB $EF,$C0,$F0,$E0,$00,$00,$C1,$00 $A676 DEFB $E0,$C0,$00,$00,$01,$00,$C0,$80 $A67E DEFB $00,$00,$00,$00,$80,$00 ; Data block at A684 @label=spr_091 b$A684 DEFB $03,$1E $A686 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $A68E DEFB $20,$00,$00,$00,$00,$00,$70,$20 $A696 DEFB $00,$00,$00,$00,$78,$30,$00,$00 $A69E DEFB $00,$00,$F8,$30,$00,$00,$01,$00 $A6A6 DEFB $F8,$F0,$00,$00,$03,$01,$F0,$E0 $A6AE DEFB $10,$00,$07,$03,$E0,$C0,$38,$10 $A6B6 DEFB $0F,$07,$C0,$80,$3C,$18,$1F,$0F $A6BE DEFB $FF,$7F,$FC,$98,$1F,$0F,$FF,$7F $A6C6 DEFB $FC,$B8,$1F,$0F,$FF,$7F,$F8,$B0 $A6CE DEFB $0F,$07,$FF,$7F,$F0,$A0,$0F,$07 $A6D6 DEFB $FF,$7F,$E0,$80,$0F,$07,$FF,$FE $A6DE DEFB $C0,$00,$0F,$07,$FF,$F1,$E0,$C0 $A6E6 DEFB $0F,$07,$FF,$EA,$E0,$80,$07,$02 $A6EE DEFB $FF,$1A,$F0,$20,$03,$01,$FF,$FB $A6F6 DEFB $F0,$E0,$03,$01,$FF,$F6,$F0,$A0 $A6FE DEFB $03,$01,$FF,$FF,$F0,$E0,$03,$01 $A706 DEFB $FF,$7F,$E0,$C0,$01,$00,$FF,$F7 $A70E DEFB $E0,$40,$01,$00,$FF,$F2,$F0,$60 $A716 DEFB $03,$01,$FF,$FF,$F8,$D0,$03,$01 $A71E DEFB $FF,$FF,$F8,$B0,$07,$03,$FF,$DF $A726 DEFB $F8,$E0,$07,$03,$DF,$00,$78,$30 $A72E DEFB $0F,$04,$00,$00,$3C,$08,$04,$00 $A736 DEFB $00,$00,$08,$00 ; Data block at A73A @label=spr_092 b$A73A DEFB $03,$1E $A73C DEFB $00,$00,$00,$00,$00,$00,$00,$00 $A744 DEFB $80,$00,$00,$00,$01,$00,$C0,$80 $A74C DEFB $00,$00,$00,$00,$E0,$40,$00,$00 $A754 DEFB $00,$00,$F0,$60,$00,$00,$01,$00 $A75C DEFB $F0,$E0,$00,$00,$07,$01,$E0,$C0 $A764 DEFB $10,$00,$0F,$07,$C0,$80,$38,$10 $A76C DEFB $1F,$0F,$80,$00,$3C,$08,$3F,$1E $A774 DEFB $FF,$FF,$FE,$8C,$7F,$3E,$FF,$FF $A77C DEFB $FE,$9C,$3F,$1E,$FF,$FF,$FC,$B8 $A784 DEFB $3F,$1F,$FF,$7F,$F8,$B0,$3F,$1F $A78C DEFB $FF,$7F,$F0,$80,$1F,$0F,$FF,$FE $A794 DEFB $C0,$00,$1F,$0F,$FF,$F1,$E0,$C0 $A79C DEFB $1F,$0F,$FF,$EA,$E0,$80,$0F,$06 $A7A4 DEFB $FF,$1A,$F0,$20,$07,$01,$FF,$FB $A7AC DEFB $F0,$E0,$03,$01,$FF,$F6,$F0,$A0 $A7B4 DEFB $03,$01,$FF,$FF,$F0,$E0,$03,$01 $A7BC DEFB $FF,$7F,$E0,$C0,$01,$00,$FF,$F7 $A7C4 DEFB $E0,$40,$01,$00,$FF,$F2,$F0,$60 $A7CC DEFB $03,$01,$FF,$FF,$F8,$D0,$03,$01 $A7D4 DEFB $FF,$FF,$F8,$B0,$07,$03,$FF,$DF $A7DC DEFB $F8,$70,$07,$03,$BF,$00,$78,$30 $A7E4 DEFB $0F,$04,$00,$00,$3C,$08,$04,$00 $A7EC DEFB $00,$00,$08,$00 ; Data block at A7F0 @label=spr_093 b$A7F0 DEFB $03,$1E $A7F2 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $A7FA DEFB $00,$00,$00,$00,$03,$00,$00,$00 $A802 DEFB $00,$00,$07,$03,$80,$00,$00,$00 $A80A DEFB $03,$01,$C0,$80,$00,$00,$03,$01 $A812 DEFB $C0,$80,$08,$00,$03,$01,$C0,$80 $A81A DEFB $1C,$08,$07,$03,$C0,$80,$0E,$04 $A822 DEFB $0F,$07,$80,$00,$0E,$04,$1F,$0E $A82A DEFB $FF,$FF,$FE,$8C,$3F,$1C,$FF,$FF $A832 DEFB $FE,$BC,$7F,$3C,$FF,$FF,$FC,$B8 $A83A DEFB $7F,$3E,$FF,$7F,$F8,$B0,$3F,$1F $A842 DEFB $FF,$7F,$F0,$80,$3F,$1F,$FF,$FE $A84A DEFB $C0,$00,$1F,$0F,$FF,$F1,$E0,$C0 $A852 DEFB $0F,$07,$FF,$EA,$E0,$80,$07,$02 $A85A DEFB $FF,$1A,$F0,$20,$03,$01,$FF,$FB $A862 DEFB $F0,$E0,$03,$01,$FF,$F6,$F0,$A0 $A86A DEFB $03,$01,$FF,$FF,$F0,$E0,$03,$01 $A872 DEFB $FF,$7F,$E0,$C0,$01,$00,$FF,$F7 $A87A DEFB $E0,$60,$01,$00,$FF,$F2,$F0,$40 $A882 DEFB $03,$01,$FF,$FF,$F8,$D0,$03,$01 $A88A DEFB $FF,$FF,$F8,$B0,$07,$03,$FF,$DF $A892 DEFB $F8,$70,$07,$03,$DF,$00,$78,$30 $A89A DEFB $0F,$04,$00,$00,$3C,$08,$04,$00 $A8A2 DEFB $00,$00,$08,$00 ; Data block at A8A6 @label=spr_094 b$A8A6 DEFB $03,$1E $A8A8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $A8B0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $A8B8 DEFB $00,$00,$06,$00,$00,$00,$0C,$00 $A8C0 DEFB $0F,$06,$00,$00,$1E,$0C,$07,$03 $A8C8 DEFB $80,$00,$0F,$06,$07,$03,$80,$00 $A8D0 DEFB $0F,$06,$07,$03,$80,$00,$1F,$0E $A8D8 DEFB $0F,$06,$00,$00,$3E,$1C,$0F,$06 $A8E0 DEFB $FF,$FF,$FC,$B8,$1F,$0D,$FF,$FF $A8E8 DEFB $FC,$B8,$1F,$0D,$FF,$FF,$F8,$B0 $A8F0 DEFB $3F,$1E,$FF,$FF,$F8,$B0,$3F,$1F $A8F8 DEFB $FF,$7F,$F8,$B0,$3F,$1F,$FF,$FE $A900 DEFB $F0,$20,$1F,$0F,$FF,$F1,$E0,$C0 $A908 DEFB $0F,$07,$FF,$EA,$E0,$80,$07,$02 $A910 DEFB $FF,$1A,$F0,$20,$03,$01,$FF,$FB $A918 DEFB $F0,$E0,$03,$01,$FF,$F6,$F0,$A0 $A920 DEFB $03,$01,$FF,$FF,$F0,$E0,$03,$01 $A928 DEFB $FF,$7F,$E0,$C0,$01,$00,$FF,$F7 $A930 DEFB $E0,$40,$01,$00,$FF,$F2,$F0,$60 $A938 DEFB $03,$01,$FF,$FF,$F8,$D0,$03,$01 $A940 DEFB $FF,$FF,$F8,$B0,$07,$03,$FF,$DF $A948 DEFB $F8,$70,$07,$03,$DF,$00,$78,$30 $A950 DEFB $0F,$04,$00,$00,$3C,$08,$04,$00 $A958 DEFB $00,$00,$08,$00 ; Data block at A95C @label=spr_095 b$A95C DEFB $03,$1D $A95E DEFB $00,$00,$00,$00,$00,$00,$03,$00 $A966 DEFB $00,$00,$00,$00,$07,$03,$80,$00 $A96E DEFB $00,$00,$0F,$06,$C0,$80,$00,$00 $A976 DEFB $0F,$06,$80,$00,$00,$00,$0F,$06 $A97E DEFB $80,$00,$00,$00,$07,$03,$E0,$80 $A986 DEFB $00,$00,$03,$01,$F0,$E0,$00,$00 $A98E DEFB $01,$00,$F8,$F0,$00,$00,$00,$00 $A996 DEFB $FF,$77,$F0,$C0,$00,$00,$FF,$77 $A99E DEFB $F8,$D0,$01,$00,$FF,$F7,$F8,$D0 $A9A6 DEFB $01,$00,$FF,$F7,$FC,$D8,$01,$00 $A9AE DEFB $FF,$FF,$FC,$E8,$01,$00,$FF,$FF $A9B6 DEFB $FC,$F8,$03,$00,$FF,$FF,$FC,$F8 $A9BE DEFB $07,$03,$FF,$3F,$F8,$F0,$07,$03 $A9C6 DEFB $FF,$FF,$F0,$C0,$07,$00,$FF,$3F $A9CE DEFB $F0,$E0,$0E,$04,$FF,$7F,$F0,$E0 $A9D6 DEFB $0F,$06,$FF,$EF,$F0,$E0,$1F,$0F $A9DE DEFB $FF,$DF,$F0,$E0,$1F,$0B,$FF,$DF $A9E6 DEFB $F0,$E0,$0F,$06,$FF,$3F,$F0,$E0 $A9EE DEFB $06,$00,$7F,$3F,$E0,$C0,$00,$00 $A9F6 DEFB $7F,$33,$C0,$80,$00,$00,$77,$23 $A9FE DEFB $C0,$80,$00,$00,$27,$03,$80,$00 $AA06 DEFB $00,$00,$03,$00,$00,$00 ; Data block at AA0C @label=spr_096 b$AA0C DEFB $03,$1D $AA0E DEFB $00,$00,$00,$00,$00,$00,$03,$00 $AA16 DEFB $00,$00,$00,$00,$07,$03,$80,$00 $AA1E DEFB $00,$00,$0F,$06,$C0,$80,$00,$00 $AA26 DEFB $0F,$06,$80,$00,$00,$00,$0F,$06 $AA2E DEFB $00,$00,$00,$00,$0F,$06,$00,$00 $AA36 DEFB $00,$00,$0F,$07,$80,$00,$00,$00 $AA3E DEFB $0F,$07,$C0,$80,$00,$00,$07,$03 $AA46 DEFB $FF,$DF,$F8,$D0,$03,$01,$FF,$DF $AA4E DEFB $FC,$D8,$03,$01,$FF,$DF,$FC,$D8 $AA56 DEFB $03,$01,$FF,$DF,$FE,$DC,$03,$01 $AA5E DEFB $FF,$DF,$FE,$FC,$03,$01,$FF,$FF $AA66 DEFB $FE,$FC,$01,$00,$FF,$FF,$FE,$FC $AA6E DEFB $01,$00,$FF,$FF,$FC,$F8,$00,$00 $AA76 DEFB $FF,$1F,$FC,$E0,$00,$00,$7F,$3F $AA7E DEFB $FE,$FC,$00,$00,$7F,$3F,$FF,$FE $AA86 DEFB $00,$00,$7F,$3F,$FE,$F8,$00,$00 $AA8E DEFB $7F,$3F,$FF,$FE,$00,$00,$7F,$3F $AA96 DEFB $FF,$FE,$00,$00,$7F,$3F,$FE,$F8 $AA9E DEFB $00,$00,$7F,$3F,$F8,$F0,$00,$00 $AAA6 DEFB $7F,$38,$F8,$70,$00,$00,$3C,$18 $AAAE DEFB $F8,$70,$00,$00,$1C,$08,$70,$20 $AAB6 DEFB $00,$00,$08,$00,$20,$00 ; Data block at AABC @label=spr_097 b$AABC DEFB $03,$1E $AABE DEFB $00,$00,$00,$00,$00,$00,$00,$00 $AAC6 DEFB $20,$00,$00,$00,$00,$00,$70,$20 $AACE DEFB $00,$00,$00,$00,$78,$30,$00,$00 $AAD6 DEFB $00,$00,$F8,$30,$00,$00,$01,$00 $AADE DEFB $F8,$F0,$00,$00,$03,$01,$F0,$E0 $AAE6 DEFB $10,$00,$07,$03,$E0,$C0,$38,$10 $AAEE DEFB $0F,$07,$C0,$00,$3C,$18,$1F,$0F $AAF6 DEFB $FF,$7F,$FC,$98,$1F,$0F,$FF,$7F $AAFE DEFB $FC,$B8,$1F,$0F,$FF,$7F,$F8,$B0 $AB06 DEFB $0F,$07,$FF,$7F,$F0,$E0,$0F,$07 $AB0E DEFB $FF,$FF,$F0,$E0,$07,$03,$FF,$FF $AB16 DEFB $FC,$80,$07,$03,$FF,$FF,$FE,$7C $AB1E DEFB $07,$03,$FF,$FC,$FE,$C0,$03,$01 $AB26 DEFB $FF,$03,$FF,$92,$01,$00,$FF,$FF $AB2E DEFB $FF,$12,$01,$00,$FF,$FE,$FF,$7E $AB36 DEFB $01,$00,$FF,$FF,$FF,$EA,$01,$00 $AB3E DEFB $FF,$FF,$FE,$FC,$00,$00,$FF,$7D $AB46 DEFB $FC,$F0,$00,$00,$FF,$7C,$F0,$A0 $AB4E DEFB $01,$00,$FF,$FF,$F0,$E0,$01,$00 $AB56 DEFB $FF,$FF,$F0,$E0,$01,$00,$FF,$F7 $AB5E DEFB $F0,$E0,$01,$00,$FF,$E0,$F0,$E0 $AB66 DEFB $03,$01,$E0,$80,$F8,$30,$01,$00 $AB6E DEFB $80,$00,$30,$00 ; Data block at AB72 @label=spr_098 b$AB72 DEFB $03,$1E $AB74 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $AB7C DEFB $80,$00,$00,$00,$01,$00,$C0,$80 $AB84 DEFB $00,$00,$00,$00,$E0,$40,$00,$00 $AB8C DEFB $00,$00,$E0,$40,$00,$00,$01,$00 $AB94 DEFB $E0,$C0,$00,$00,$03,$01,$E0,$C0 $AB9C DEFB $10,$00,$07,$03,$C0,$80,$38,$10 $ABA4 DEFB $0F,$07,$80,$00,$3C,$18,$1F,$0E $ABAC DEFB $FF,$FF,$FC,$D8,$1F,$0E,$FF,$FF $ABB4 DEFB $FC,$D8,$1F,$0E,$FF,$FF,$FC,$D8 $ABBC DEFB $3F,$1E,$FF,$FF,$FC,$B8,$3F,$1F $ABC4 DEFB $FF,$FF,$FC,$F8,$3F,$1F,$FF,$3F $ABCC DEFB $F8,$F0,$3F,$1C,$FF,$CF,$F8,$F0 $ABD4 DEFB $1F,$0A,$FF,$14,$F0,$E0,$0F,$03 $ABDC DEFB $FF,$F3,$E0,$00,$07,$03,$FF,$FB $ABE4 DEFB $E0,$C0,$07,$03,$FF,$5F,$E0,$C0 $ABEC DEFB $03,$01,$FF,$FF,$E0,$C0,$03,$01 $ABF4 DEFB $FF,$FF,$E0,$C0,$01,$00,$FF,$BB $ABFC DEFB $E0,$C0,$01,$00,$FF,$93,$E0,$C0 $AC04 DEFB $01,$00,$FF,$FF,$C0,$80,$03,$01 $AC0C DEFB $FF,$FF,$E0,$C0,$03,$01,$FF,$FF $AC14 DEFB $E0,$C0,$03,$01,$FF,$E1,$E0,$C0 $AC1C DEFB $03,$01,$E1,$80,$F0,$60,$01,$00 $AC24 DEFB $80,$00,$60,$00 ; Data block at AC28 @label=spr_099 b$AC28 DEFB $03,$20 $AC2A DEFB $00,$00,$00,$00,$02,$00,$40,$00 $AC32 DEFB $00,$00,$0F,$02,$F0,$40,$00,$00 $AC3A DEFB $3F,$0E,$FC,$70,$00,$00,$FF,$3E $AC42 DEFB $FF,$7C,$01,$00,$FE,$F8,$7F,$3F $AC4A DEFB $81,$00,$F8,$E0,$3F,$0F,$81,$00 $AC52 DEFB $F0,$60,$0F,$06,$E7,$81,$F8,$70 $AC5A DEFB $1F,$0E,$FF,$E7,$F8,$30,$1F,$0D $AC62 DEFB $FF,$FF,$FC,$98,$3F,$1D,$FF,$FF $AC6A DEFB $FC,$B8,$3F,$1B,$FF,$FF,$FC,$D8 $AC72 DEFB $3F,$1B,$FF,$FF,$F8,$C0,$1F,$03 $AC7A DEFB $FF,$00,$E0,$C0,$1F,$0C,$FF,$7F $AC82 DEFB $C0,$00,$1F,$0E,$FF,$7F,$C6,$80 $AC8A DEFB $3F,$1D,$FF,$BF,$CF,$86,$3F,$1D $AC92 DEFB $FF,$FF,$CF,$86,$7F,$39,$FF,$FF $AC9A DEFB $EF,$C6,$7B,$31,$FF,$C3,$FF,$EE $ACA2 DEFB $FB,$71,$FF,$3C,$FE,$EC,$F3,$60 $ACAA DEFB $FF,$FF,$FE,$2C,$67,$03,$FF,$FF $ACB2 DEFB $FE,$DC,$0F,$07,$FF,$81,$FE,$EC $ACBA DEFB $1F,$0E,$FF,$7E,$FC,$70,$1F,$0D $ACC2 DEFB $FF,$BD,$F8,$B0,$1F,$0D,$FF,$BD $ACCA DEFB $F8,$B0,$0F,$05,$FF,$BD,$F0,$A0 $ACD2 DEFB $07,$02,$FF,$DB,$E0,$40,$02,$00 $ACDA DEFB $FF,$5A,$40,$00,$00,$00,$7E,$24 $ACE2 DEFB $00,$00,$00,$00,$3C,$00,$00,$00 ; Data block at ACEA @label=spr_100 b$ACEA DEFB $03,$21 $ACEC DEFB $00,$00,$07,$00,$F0,$00,$18,$00 $ACF4 DEFB $0F,$07,$F8,$F0,$3C,$18,$0F,$03 $ACFC DEFB $F8,$F0,$3E,$1C,$7F,$00,$FC,$38 $AD04 DEFB $1F,$0E,$FD,$78,$FC,$38,$1F,$0E $AD0C DEFB $FF,$F1,$FE,$0C,$0F,$07,$FF,$CF $AD14 DEFB $FE,$70,$37,$03,$FF,$3F,$FF,$7E $AD1C DEFB $7B,$30,$3F,$1F,$FF,$FE,$FC,$78 $AD24 DEFB $3F,$1F,$FE,$FC,$FE,$5C,$1F,$0F $AD2C DEFB $FF,$FA,$5F,$0E,$BF,$13,$FE,$F4 $AD34 DEFB $1F,$0D,$FF,$9C,$FC,$E8,$1F,$0B $AD3C DEFB $FF,$DF,$FE,$2C,$0F,$07,$FF,$FF $AD44 DEFB $FE,$CC,$0F,$07,$FF,$FF,$FF,$E6 $AD4C DEFB $07,$03,$FF,$FF,$FF,$C6,$03,$01 $AD54 DEFB $FF,$8F,$FF,$B6,$03,$00,$FF,$01 $AD5C DEFB $FF,$F6,$07,$03,$FF,$30,$FF,$7A $AD64 DEFB $0F,$04,$FF,$7C,$FE,$38,$0F,$04 $AD6C DEFB $FF,$2F,$F8,$40,$0F,$04,$FF,$03 $AD74 DEFB $F0,$20,$0F,$04,$FF,$08,$F0,$20 $AD7C DEFB $0F,$04,$FF,$33,$F8,$10,$07,$02 $AD84 DEFB $FF,$37,$F8,$10,$07,$03,$FF,$07 $AD8C DEFB $F8,$10,$07,$02,$FF,$80,$F8,$10 $AD94 DEFB $07,$03,$FF,$60,$F8,$10,$03,$01 $AD9C DEFB $FF,$9E,$F0,$60,$01,$00,$FF,$E5 $ADA4 DEFB $E0,$80,$00,$00,$FF,$78,$80,$00 $ADAC DEFB $00,$00,$78,$00,$00,$00 ; Data block at ADB2 @label=spr_101 b$ADB2 DEFB $03,$26 $ADB4 DEFB $00,$00,$07,$00,$E0,$00,$07,$00 $ADBC DEFB $AF,$07,$F0,$E0,$0F,$06,$F7,$A3 $ADC4 DEFB $E0,$00,$1F,$0F,$F7,$23,$C0,$80 $ADCC DEFB $1F,$0B,$FB,$31,$F0,$C0,$0F,$07 $ADD4 DEFB $F9,$90,$F8,$F0,$0F,$07,$F8,$D0 $ADDC DEFB $F8,$70,$1F,$0F,$F9,$F0,$F0,$A0 $ADE4 DEFB $1F,$0B,$FF,$69,$F0,$C0,$0F,$06 $ADEC DEFB $FF,$7D,$F8,$F0,$0F,$07,$FF,$FD $ADF4 DEFB $F8,$F0,$0F,$07,$FF,$FB,$F0,$E0 $ADFC DEFB $0F,$07,$FF,$F7,$E0,$C0,$1F,$0F $AE04 DEFB $FF,$F7,$C0,$80,$1F,$0C,$FF,$6F $AE0C DEFB $E0,$C0,$0F,$03,$FF,$7F,$F0,$E0 $AE14 DEFB $1F,$0F,$FF,$5F,$F0,$E0,$3F,$17 $AE1C DEFB $FF,$5F,$F8,$F0,$3F,$1B,$FF,$1F $AE24 DEFB $F0,$C0,$3F,$1A,$3F,$1E,$F8,$30 $AE2C DEFB $3E,$18,$1F,$01,$FC,$F8,$3C,$18 $AE34 DEFB $1F,$0F,$FC,$F8,$3C,$18,$3F,$1F $AE3C DEFB $FE,$FC,$18,$00,$3F,$1D,$FF,$FE $AE44 DEFB $03,$00,$7F,$3D,$FF,$FE,$0F,$03 $AE4C DEFB $FF,$3E,$FE,$F8,$3F,$0F,$FF,$1E $AE54 DEFB $F8,$C0,$7F,$3F,$FF,$A6,$F8,$30 $AE5C DEFB $FF,$7E,$FF,$F8,$F8,$70,$FF,$78 $AE64 DEFB $FF,$F0,$F8,$F0,$78,$00,$FF,$01 $AE6C DEFB $F0,$E0,$00,$00,$3F,$0D,$E0,$C0 $AE74 DEFB $00,$00,$3F,$1C,$C0,$00,$00,$00 $AE7C DEFB $3C,$18,$00,$00,$00,$00,$7C,$38 $AE84 DEFB $00,$00,$00,$00,$78,$30,$00,$00 $AE8C DEFB $00,$00,$78,$30,$00,$00,$00,$00 $AE94 DEFB $30,$00,$00,$00 ; Data block at AE98 @label=spr_102 b$AE98 DEFB $03,$23 $AE9A DEFB $03,$00,$00,$00,$C0,$00,$0F,$03 $AEA2 DEFB $81,$00,$F0,$C0,$3F,$0F,$C1,$80 $AEAA DEFB $FC,$F0,$7F,$3F,$80,$00,$FE,$7C $AEB2 DEFB $FF,$7C,$00,$00,$7F,$1E,$FC,$70 $AEBA DEFB $00,$00,$3F,$0E,$7F,$3C,$00,$00 $AEC2 DEFB $FF,$3E,$3F,$1F,$B3,$00,$FE,$F8 $AECA DEFB $1F,$0F,$FF,$33,$F8,$20,$0F,$02 $AED2 DEFB $FF,$F7,$F0,$C0,$03,$01,$FF,$F7 $AEDA DEFB $F8,$F0,$07,$03,$FF,$FF,$F8,$F0 $AEE2 DEFB $07,$03,$FF,$FF,$F0,$E0,$03,$01 $AEEA DEFB $FF,$FF,$E0,$C0,$01,$00,$FF,$0F $AEF2 DEFB $C0,$80,$01,$00,$FF,$F0,$80,$00 $AEFA DEFB $01,$00,$FF,$FF,$80,$00,$03,$01 $AF02 DEFB $FF,$FF,$80,$00,$03,$01,$FF,$FF $AF0A DEFB $80,$00,$07,$01,$FF,$FF,$80,$00 $AF12 DEFB $0F,$07,$FF,$FF,$C0,$80,$1F,$0F $AF1A DEFB $FF,$C7,$F0,$C0,$3F,$17,$FF,$BB $AF22 DEFB $F8,$F0,$7F,$13,$FF,$3D,$F0,$E0 $AF2A DEFB $FF,$58,$FF,$FE,$F8,$D0,$FF,$5F $AF32 DEFB $FF,$FE,$FC,$58,$FF,$4E,$FF,$7E $AF3A DEFB $7E,$3C,$FF,$60,$FF,$FE,$3E,$0C $AF42 DEFB $FF,$6B,$FF,$FE,$9E,$0C,$7F,$0F $AF4A DEFB $FF,$BC,$DE,$8C,$3F,$1F,$FF,$3E $AF52 DEFB $DE,$8C,$3F,$17,$FF,$EE,$EC,$C0 $AF5A DEFB $1F,$0C,$EF,$06,$F0,$E0,$0C,$00 $AF62 DEFB $07,$02,$E0,$00,$00,$00,$02,$00 $AF6A DEFB $00,$00 ; Routine at AF6C @label=START c$AF6C LD HL,$5BA0 ; location to clear $AF6F LD BC,$0568 ; # bytes to clear $AF72 LD A,($5C78) ; FRAMES system variable (LSB) $AF75 PUSH AF ; $AF76 CALL $D53A ; $AF79 POP AF ; $AF7A LD ($5BA0),A ; $AF7D JR $AF88 ; ; location to clear ; ; Used by the routine at #R$BA87. @label=start_menu c$AF7F LD HL,$5BA8 ; $AF82 LD BC,$0560 ; # bytes to clear $AF85 CALL $D53A ; ; for bit reversal & shifting ; ; Used by the routine at #R$AF6C. @label=main c$AF88 CALL $D69E ; $AF8B XOR A ; $AF8C LD ($5BB2),A ; $AF8F LD ($D16D),A ; plyr_spr_1_scratchpad $AF92 LD A,$05 ; 5 lives to start $AF94 LD ($5BBA),A ; $AF97 LD HL,$5BA0 ; $AF9A LD A,($5BA2) ; $AF9D ADD A,(HL) ; seed_1 += seed_2 $AF9E LD (HL),A ; update seed $AF9F CALL $D55F ; {colour is bright yellow on black $AFA2 CALL $BD0C ; $AFA5 LD DE,$B20E ; } $AFA8 CALL $B2CF ; play tune $AFAB CALL $B544 ; randomise order of required objects $AFAE CALL $D1B1 ; {randomise player start location $AFB1 CALL $C46D ; } $AFB4 CALL $C47E ; randomise special object locations ; Routine at AFB7 ; ; Used by the routine at #R$B074. @label=player_dies c$AFB7 CALL $D12A ; ; Routine at AFBA ; ; Used by the routine at #R$CABA. @label=game_loop c$AFBA CALL $D1E6 ; ; Routine at AFBD ; ; Used by the routine at #R$B074. @label=onscreen_loop c$AFBD LD A,($5BA2) ; $AFC0 LD ($5BBC),A ; $AFC3 LD IX,$5C08 ; start of table ; init stack ; ; Used by the routine at #R$AFE4. @label=update_sprite_loop c$AFC7 LD SP,$5BA0 ; $AFCA LD HL,$5BBC ; $AFCD INC (HL) ; $AFCE LD HL,$AFE4 ; $AFD1 PUSH HL ; set return address $AFD2 CALL $CE49 ; ; sprite graphic to render ; ; Used by the routine at #R$BF11. @label=jump_to_upd_object c$AFD5 LD L,(IX+$00) ; $AFD8 LD BC,$B096 ; ; Routine at AFDB ; ; Used by the routines at #R$B566, #R$B9CC, #R$CA17 and #R$CF62. @label=jump_to_tbl_entry c$AFDB LD H,$00 ; $AFDD ADD HL,HL ; word offset $AFDE ADD HL,BC ; get ptr jump entry $AFDF LD A,(HL) ; $AFE0 INC HL ; $AFE1 LD H,(HL) ; $AFE2 LD L,A ; HL=jump address $AFE3 JP (HL) ; go ; Routine at AFE4 @label=ret_from_tbl_jp c$AFE4 LD A,R ; $AFE6 LD C,A ; $AFE7 LD A,($5BA5) ; $AFEA ADD A,C ; $AFEB LD ($5BA5),A ; {update seed #3 $AFEE LD BC,$0020 ; } $AFF1 ADD IX,BC ; next sprite to render $AFF3 PUSH IX ; $AFF5 POP HL ; $AFF6 LD BC,$6108 ; {end of table $AFF9 AND A ; } $AFFA SBC HL,BC ; past end of table? $AFFC JR NC,$B000 ; yes, exit $AFFE JR $AFC7 ; loop ; Routine at B000 ; ; Used by the routine at #R$AFE4. @label=loc_B000 c$B000 LD HL,($5BA2) ; $B003 INC HL ; $B004 LD ($5BA2),HL ; $B007 LD A,($5BA5) ; $B00A ADD A,(HL) ; $B00B ADD A,L ; $B00C ADD A,H ; $B00D LD ($5BA5),A ; $B010 LD HL,$5BB2 ; $B013 SET 0,(HL) ; update special objects table next time $B015 CALL $D50E ; $B018 CALL $B8A9 ; $B01B CALL $CE62 ; builds a list of screen objects $B01E CALL $D59F ; {renders above list $B021 LD A,($5BC5) ; } $B024 AND A ; any blocks rising? $B025 CALL NZ,$B454 ; {yes, play audio $B028 LD A,($5BBE) ; $B02B NEG ; } $B02D ADD A,$06 ; calculate delay loop value $B02F LD B,A ; $B030 JP M,$B03F ; $B033 JR Z,$B03F ; ; Routine at B035 ; ; Used by the routine at #R$B038. @label=game_delay c$B035 LD HL,$0500 ; ; Routine at B038 @label=delay_loop c$B038 DEC HL ; $B039 LD A,L ; $B03A OR H ; $B03B JR NZ,$B038 ; $B03D DJNZ $B035 ; ; Routine at B03F ; ; Used by the routine at #R$B000. @label=no_delay c$B03F LD A,($5BB7) ; $B042 AND A ; rendered before? $B043 JR Z,$B074 ; yes, skip $B045 XOR A ; reset flag $B046 LD ($5BB7),A ; $B049 LD A,($5BAD) ; attribute $B04C CALL $D556 ; set screen colour $B04F CALL $BF4E ; {inventory $B052 CALL $D2EF ; $B055 CALL $D30D ; $B058 CALL $D255 ; $B05B LD IX,$C44D ; $B05F CALL $C3A4 ; $B062 CALL $BCCA ; $B065 CALL $BC66 ; $B068 CALL $BC7A ; $B06B CALL $BCA3 ; } $B06E CALL $D56F ; {copy to display $B071 CALL $B088 ; } ; Routine at B074 ; ; Used by the routine at #R$B03F. @label=loc_B074 c$B074 XOR A ; $B075 LD ($5BC5),A ; {clear $B078 LD IX,$5C08 ; } $B07C LD A,(IX+$00) ; player sprite half $B07F OR (IX+$20) ; player other sprite half $B082 JP Z,$AFB7 ; {both null? yes, lose a life $B085 JP $AFBD ; } ; Routine at B088 ; ; Used by the routine at #R$B03F. @label=reset_objs_wipe_flag c$B088 LD B,$28 ; max #objects in draw table $B08A LD DE,$0020 ; object size $B08D LD HL,$5C0F ; offset to flags ; reset flag=??? @label=loc_B090 c$B090 RES 5,(HL) ; $B092 ADD HL,DE ; next entry $B093 DJNZ $B090 ; {loop until done $B095 RET ; } ; Data block at B096 @label=upd_sprite_jmp_tbl b$B096 DEFW $C2CB ; No Update $B098 DEFW $C2CB ; (unused) $B09A DEFW $C73C ; stone arch (near side) $B09C DEFW $C722 ; stone arch (far side) $B09E DEFW $C73C ; tree arch (near side) $B0A0 DEFW $C722 ; tree arch (far side) $B0A2 DEFW $C4E3 ; rock $B0A4 DEFW $C4E3 ; block $B0A6 DEFW $C65E ; portcullis (stationary) $B0A8 DEFW $C6BD ; portcullis (moving) $B0AA DEFW $C4E8 ; bricks $B0AC DEFW $C4ED ; more bricks $B0AE DEFW $C4F2 ; even more bricks $B0B0 DEFW $C4F2 $B0B2 DEFW $C4F2 $B0B4 DEFW $C4F2 $B0B6 DEFW $C823 ; human legs $B0B8 DEFW $C823 $B0BA DEFW $C823 $B0BC DEFW $C823 $B0BE DEFW $C823 $B0C0 DEFW $C823 $B0C2 DEFW $B7A3 ; gargoyle $B0C4 DEFW $B7E7 ; spikes $B0C6 DEFW $C823 $B0C8 DEFW $C823 $B0CA DEFW $C823 $B0CC DEFW $C823 $B0CE DEFW $C823 $B0D0 DEFW $C823 $B0D2 DEFW $B9A5 ; guard (moving NSEW) (top half) $B0D4 DEFW $B9A5 $B0D6 DEFW $CDDA ; player (top half) $B0D8 DEFW $CDDA $B0DA DEFW $CDDA $B0DC DEFW $CDDA $B0DE DEFW $CDDA $B0E0 DEFW $CDDA $B0E2 DEFW $CDDA $B0E4 DEFW $CDDA $B0E6 DEFW $CDDA $B0E8 DEFW $CDDA $B0EA DEFW $CDDA $B0EC DEFW $CDDA $B0EE DEFW $CDDA $B0F0 DEFW $CDDA $B0F2 DEFW $CDDA $B0F4 DEFW $CDDA $B0F6 DEFW $C828 ; wulf legs $B0F8 DEFW $C828 $B0FA DEFW $C828 $B0FC DEFW $C828 $B0FE DEFW $C828 $B100 DEFW $C828 $B102 DEFW $B6B9 ; block (moving EW) $B104 DEFW $B6B1 ; block (moving NS) $B106 DEFW $C828 $B108 DEFW $C828 $B10A DEFW $C828 $B10C DEFW $C828 $B10E DEFW $C828 $B110 DEFW $C828 $B112 DEFW $C4AA ; another block $B114 DEFW $B7A9 ; spiked ball $B116 DEFW $CDDF ; player (wulf top half) $B118 DEFW $CDDF $B11A DEFW $CDDF $B11C DEFW $CDDF $B11E DEFW $CDDF $B120 DEFW $CDDF $B122 DEFW $CDDF $B124 DEFW $CDDF $B126 DEFW $CDDF $B128 DEFW $CDDF $B12A DEFW $CDDF $B12C DEFW $CDDF $B12E DEFW $CDDF $B130 DEFW $CDDF $B132 DEFW $CDDF $B134 DEFW $CDDF $B136 DEFW $C5C8 ; ghost $B138 DEFW $C5C8 $B13A DEFW $C5C8 $B13C DEFW $C5C8 $B13E DEFW $C4C3 ; table $B140 DEFW $C4B6 ; chest $B142 DEFW $B7ED ; fire (EW) $B144 DEFW $B7ED ; fire (EW) $B146 DEFW $C506 ; sun $B148 DEFW $C506 ; moon $B14A DEFW $C506 ; frame (left) $B14C DEFW $B683 ; block (dropping) $B14E DEFW $C337 ; human/wulf transform $B150 DEFW $C337 $B152 DEFW $C337 $B154 DEFW $C337 $B156 DEFW $C28B ; diamond $B158 DEFW $C28B ; poison $B15A DEFW $C28B ; boot $B15C DEFW $C28B ; chalice $B15E DEFW $C28B ; cup $B160 DEFW $C28B ; bottle $B162 DEFW $C28B ; crystal ball $B164 DEFW $C1AB ; extra life $B166 DEFW $C1F1 ; special object (diamond) $B168 DEFW $C1F1 ; " (poison) $B16A DEFW $C1F1 ; " (boot) $B16C DEFW $C1F1 ; " (chalice) $B16E DEFW $C1F1 ; " (cup) $B170 DEFW $C1F1 ; " (bottle) $B172 DEFW $C1F1 ; " (crytsal ball) $B174 DEFW $B95E ; final sparkles in cauldron $B176 DEFW $BF2B ; death sparkles $B178 DEFW $BF2B $B17A DEFW $BF2B $B17C DEFW $BF2B $B17E DEFW $BF2B $B180 DEFW $BF2B $B182 DEFW $BF2B $B184 DEFW $BF3F ; last death sparkle $B186 DEFW $BEFE ; player appears sparkles $B188 DEFW $BEFE $B18A DEFW $BEFE $B18C DEFW $BEFE $B18E DEFW $BEFE $B190 DEFW $BEFE $B192 DEFW $BEFE $B194 DEFW $BF11 ; last player appears sparkle $B196 DEFW $C4D3 ; tree wall $B198 DEFW $C4D3 $B19A DEFW $C4D3 $B19C DEFW $B566 ; sparkles in the cauldron room at end of game $B19E DEFW $B566 $B1A0 DEFW $B566 $B1A2 DEFW $C2CB $B1A4 DEFW $C2CB $B1A6 DEFW $C2CB $B1A8 DEFW $C2CB $B1AA DEFW $C2CB $B1AC DEFW $C2CB $B1AE DEFW $C2CB $B1B0 DEFW $B99C ; cauldron (bottom) $B1B2 DEFW $B99F ; cauldron (top) $B1B4 DEFW $B6A2 ; block (collapsing) $B1B6 DEFW $B6F9 ; guard & wizard (bottom half) $B1B8 DEFW $B6F9 $B1BA DEFW $B6F9 $B1BC DEFW $B6F9 $B1BE DEFW $B6F9 $B1C0 DEFW $B6F9 $B1C2 DEFW $B73C ; guard (EW) (top half) $B1C4 DEFW $B73C $B1C6 DEFW $B6F9 $B1C8 DEFW $B6F9 $B1CA DEFW $B6F9 $B1CC DEFW $B6F9 $B1CE DEFW $B6F9 $B1D0 DEFW $B6F9 $B1D2 DEFW $B9A5 ; wizard (top half) $B1D4 DEFW $B9A5 $B1D6 DEFW $B8DA ; cauldron bubbles $B1D8 DEFW $B8DA $B1DA DEFW $B8DA $B1DC DEFW $B8DA $B1DE DEFW $B92C ; repel spell $B1E0 DEFW $B92C $B1E2 DEFW $B92C $B1E4 DEFW $B92C $B1E6 DEFW $B923 ; diamond $B1E8 DEFW $B923 ; poison $B1EA DEFW $B923 ; boot $B1EC DEFW $B923 ; chalice $B1EE DEFW $B923 ; cup $B1F0 DEFW $B923 ; bottle $B1F2 DEFW $B923 ; crystal ball $B1F4 DEFW $B923 ; extra life $B1F6 DEFW $B83F ; fire (stationary) (not used) $B1F8 DEFW $B83F ; fire (stationary) (not used) $B1FA DEFW $B865 ; ball up/down $B1FC DEFW $B865 ; ball up/down $B1FE DEFW $B80F ; fire (NS) $B200 DEFW $B80F ; fire (NS) $B202 DEFW $B5FF ; ball (bouncing around) $B204 DEFW $B5FF $B206 DEFW $BF2B ; death sparkles $B208 DEFW $BF37 ; last obj in cauldron sparkle $B20A DEFW $C2CB $B20C DEFW $BF37 ; last obj in cauldron sparkle ; Audio Tunes @label=start_game_tune b$B20E DEFB $59,$5C,$5B,$54,$19,$17,$14,$17 $B216 DEFB $D9,$FF ; Data block at B218 @label=game_over_tune b$B218 DEFB $2E,$17,$27,$17,$2E,$17,$27,$17 $B220 DEFB $2C,$19,$27,$19,$2C,$19,$27,$19 $B228 DEFB $2A,$1B,$27,$1B,$2A,$1B,$27,$1B $B230 DEFB $2A,$1B,$27,$1B,$2A,$1B,$27,$1B $B238 DEFB $FF ; Data block at B239 @label=game_complete_tune b$B239 DEFB $1B,$1D,$1E,$1B,$1D,$1E,$20,$1D $B241 DEFB $1E,$20,$22,$1E,$1D,$1E,$20,$1D $B249 DEFB $1B,$1D,$1E,$1B,$1A,$1B,$1D,$1A $B251 DEFB $9B,$FF ; Data block at B253 @label=menu_tune b$B253 DEFB $1B,$27,$1B,$27,$1B,$2A,$2E,$1B $B25B DEFB $27,$1B,$27,$1B,$2A,$1B,$2E,$16 $B263 DEFB $25,$16,$24,$16,$22,$16,$22,$16 $B26B DEFB $25,$16,$24,$16,$22,$16,$22,$16 $B273 DEFB $22,$1B,$27,$1B,$27,$1B,$2A,$2E $B27B DEFB $1B,$27,$1B,$27,$1B,$2A,$1B,$2E $B283 DEFB $16,$25,$16,$24,$16,$22,$16,$22 $B28B DEFB $16,$25,$16,$24,$16,$22,$16,$22 $B293 DEFB $16,$22,$17,$2E,$17,$2E,$17,$2E $B29B DEFB $17,$2E,$19,$2E,$19,$2E,$19,$2E $B2A3 DEFB $19,$2E,$1B,$2E,$1B,$2E,$1B,$2E $B2AB DEFB $1B,$2E,$1B,$2E,$1B,$2E,$1B,$2E $B2B3 DEFB $1B,$2E,$FF ; Routine at B2B6 ; ; Used by the routine at #R$BD23. @label=play_audio_wait_key c$B2B6 LD HL,$5BD1 ; $B2B9 LD A,(HL) ; $B2BA AND A ; $B2BB RET NZ ; $B2BC SET 0,(HL) ; ; Routine at B2BE ; ; Used by the routines at #R$B2C5 and #R$BA87. @label=play_audio_until_keypress c$B2BE XOR A ; $B2BF CALL $B5F7 ; $B2C2 JR Z,$B2C5 ; $B2C4 RET ; ; audio data ; ; Used by the routine at #R$B2BE. @label=loc_B2C5 c$B2C5 LD A,(DE) ; $B2C6 CP $FF ; done? $B2C8 JR Z,$B2D9 ; {yes, exit $B2CA CALL $B2DA ; $B2CD JR $B2BE ; } ; Routine at B2CF ; ; Used by the routines at #R$AF88 and #R$BAAB. @label=play_audio c$B2CF LD A,(DE) ; audio data byte $B2D0 CP $FF ; done? $B2D2 JR Z,$B2D9 ; {yes, return $B2D4 CALL $B2DA ; $B2D7 JR $B2CF ; } ; Routine at B2D9 ; ; Used by the routines at #R$B2C5 and #R$B2CF. @label=end_audio c$B2D9 RET ; ; Routine at B2DA ; ; Used by the routines at #R$B2C5 and #R$B2CF. @label=play_note c$B2DA AND $3F ; note $B2DC JR Z,$B31C ; $B2DE LD L,A ; $B2DF LD H,$00 ; $B2E1 ADD HL,HL ; HL=2A $B2E2 CALL $D4F2 ; HL=3A $B2E5 LD BC,$B332 ; frequency table $B2E8 ADD HL,BC ; ptr to entry $B2E9 LD B,(HL) ; loop cnt LSB $B2EA INC HL ; $B2EB LD C,(HL) ; loop cnt MSB $B2EC INC HL ; $B2ED LD L,(HL) ; duration LSB $B2EE LD H,$00 ; $B2F0 LD A,(DE) ; note & duration MSB $B2F1 RLCA ; $B2F2 RLCA ; $B2F3 AND $03 ; $B2F5 INC A ; duration MSB $B2F6 PUSH DE ; $B2F7 LD E,L ; $B2F8 LD D,H ; HL,DE=duration LSB ; Routine at B2F9 @label=calc_duration c$B2F9 DEC A ; $B2FA JR Z,$B2FF ; $B2FC ADD HL,DE ; $B2FD JR $B2F9 ; calc 16-bit duration (HL) ; Routine at B2FF ; ; Used by the routine at #R$B2F9. @label=loc_B2FF c$B2FF POP DE ; ; Routine at B300 ; ; Used by the routine at #R$B30F. @label=loc_B300 c$B300 PUSH BC ; $B301 XOR A ; $B302 OUT ($FE),A ; ; Routine at B304 @label=loc_B304 c$B304 DJNZ $B304 ; $B306 DEC C ; $B307 JR NZ,$B304 ; $B309 POP BC ; $B30A PUSH BC ; $B30B LD A,$10 ; $B30D OUT ($FE),A ; ; Routine at B30F @label=loc_B30F c$B30F DJNZ $B30F ; $B311 DEC C ; $B312 JR NZ,$B30F ; $B314 POP BC ; $B315 DEC HL ; $B316 LD A,H ; $B317 OR L ; $B318 JR NZ,$B300 ; $B31A INC DE ; $B31B RET ; ; Routine at B31C ; ; Used by the routine at #R$B2DA. @label=snd_delay c$B31C LD A,(DE) ; $B31D INC DE ; $B31E RLCA ; $B31F RLCA ; $B320 AND $03 ; $B322 INC A ; $B323 LD L,A ; $B324 LD BC,$430B ; ; Routine at B327 ; ; Used by the routine at #R$B328. @label=loc_B327 c$B327 PUSH BC ; ; Routine at B328 @label=loc_B328 c$B328 DEC BC ; $B329 LD A,B ; $B32A OR C ; $B32B JR NZ,$B328 ; $B32D POP BC ; $B32E DEC L ; $B32F JR NZ,$B327 ; $B331 RET ; ; Frequency Table? @label=freq_tbl b$B332 DEFB $00,$00,$00 $B335 DEFB $F4,$0A,$08 $B338 DEFB $65,$0A,$09 $B33B DEFB $DE,$09,$09 $B33E DEFB $5E,$09,$0A $B341 DEFB $E7,$08,$0A $B344 DEFB $75,$08,$0B $B347 DEFB $0A,$08,$0C $B34A DEFB $A5,$07,$0C $B34D DEFB $45,$07,$0D $B350 DEFB $EB,$06,$0E $B353 DEFB $96,$06,$0F $B356 DEFB $46,$06,$0F $B359 DEFB $FA,$05,$10 $B35C DEFB $B3,$05,$11 $B35F DEFB $6F,$05,$12 $B362 DEFB $2F,$05,$13 $B365 DEFB $F3,$04,$15 $B368 DEFB $F3,$04,$16 $B36B DEFB $85,$04,$17 $B36E DEFB $52,$04,$19 $B371 DEFB $23,$04,$1A $B374 DEFB $F6,$03,$1C $B377 DEFB $CB,$03,$1D $B37A DEFB $A3,$03,$1F $B37D DEFB $7D,$03,$21 $B380 DEFB $59,$03,$23 $B383 DEFB $38,$03,$25 $B386 DEFB $18,$03,$27 $B389 DEFB $FA,$02,$29 $B38C DEFB $DD,$02,$2C $B38F DEFB $C2,$02,$2E $B392 DEFB $A9,$02,$31 $B395 DEFB $91,$02,$34 $B398 DEFB $7B,$02,$37 $B39B DEFB $66,$02,$3A $B39E DEFB $51,$02,$3E $B3A1 DEFB $3F,$02,$41 $B3A4 DEFB $2D,$02,$45 $B3A7 DEFB $1C,$02,$49 $B3AA DEFB $0C,$02,$4E $B3AD DEFB $FD,$01,$52 $B3B0 DEFB $EF,$01,$57 $B3B3 DEFB $E2,$01,$5D $B3B6 DEFB $D5,$01,$62 $B3B9 DEFB $C9,$01,$68 $B3BC DEFB $BD,$01,$6E $B3BF DEFB $B3,$01,$75 $B3C2 DEFB $A9,$01,$7B $B3C5 DEFB $9F,$01,$83 $B3C8 DEFB $96,$01,$8B $B3CB DEFB $8E,$01,$93 $B3CE DEFB $86,$01,$9C $B3D1 DEFB $7E,$01,$A5 $B3D4 DEFB $77,$01,$AF $B3D7 DEFB $71,$01,$B9 $B3DA DEFB $6A,$01,$C4 $B3DD DEFB $64,$01,$D0 $B3E0 DEFB $5F,$01,$DC $B3E3 DEFB $59,$01,$E9 $B3E6 DEFB $54,$01,$F7 ; block (62) ; ; Used by the routine at #R$C4AA. @label=audio_B3E9 c$B3E9 LD A,($5BA2) ; $B3EC AND $07 ; $B3EE LD L,A ; $B3EF LD H,$00 ; $B3F1 LD BC,$B3FB ; ??? table $B3F4 ADD HL,BC ; ptr entry $B3F5 LD B,(HL) ; $B3F6 LD C,$04 ; $B3F8 JP $B4E6 ; ; Data block at B3FB @label=byte_B3FB b$B3FB DEFB $A0,$B0,$C0,$90,$A0,$E0,$80,$60 ; eg. death sparkles ; ; Used by the routines at #R$BF31 and #R$C2AD. @label=audio_B403 c$B403 LD A,(IX+$00) ; sprite index $B406 CPL ; $B407 AND $1F ; $B409 LD E,A ; $B40A LD HL,$1234 ; location in ROM ; Routine at B40D @label=loc_B40D c$B40D LD A,(HL) ; $B40E INC HL ; $B40F LD B,A ; $B410 LD C,$02 ; $B412 CALL $B4E6 ; $B415 DEC E ; $B416 JR NZ,$B40D ; $B418 RET ; ; eg. player appears sparkles ; ; Used by the routine at #R$BEFE. @label=audio_B419 c$B419 LD A,(IX+$00) ; player sprite graphic no. $B41C RLCA ; $B41D RLCA ; $B41E AND $1F ; $B420 OR $03 ; $B422 LD C,A ; ; bits 4:0 only @label=loc_B423 c$B423 LD A,C ; $B424 RLCA ; $B425 RLCA ; bits 6:2 only $B426 LD B,A ; $B427 CALL $B4ED ; $B42A DEC C ; $B42B JR NZ,$B423 ; $B42D RET ; ; ball bouncing around ; ; Used by the routines at #R$B63C, #R$B82F and #R$B876. @label=audio_B42E c$B42E LD HL,$0000 ; $B431 LD E,$04 ; ; Routine at B433 @label=loc_B433 c$B433 LD C,$03 ; $B435 LD A,(HL) ; $B436 INC HL ; $B437 OR $C0 ; $B439 LD B,A ; $B43A CALL $B4E6 ; $B43D DEC E ; $B43E JR NZ,$B433 ; $B440 RET ; ; jumping ; ; Used by the routine at #R$C948. @label=audio_B441 c$B441 LD C,$20 ; ' ' ; Routine at B443 @label=loc_B443 c$B443 LD A,C ; $B444 RRCA ; $B445 RRCA ; $B446 RRCA ; $B447 RRCA ; $B448 RRCA ; $B449 LD B,A ; $B44A CALL $B4ED ; $B44D DEC C ; $B44E JR NZ,$B443 ; $B450 RET ; ; eg. dropping block, spiked ball drop, ball up/down ; ; Used by the routines at #R$B683, #R$B7CD, #R$B876 and #R$C9CD. @label=audio_B451 c$B451 LD A,(IX+$03) ; Z ; eg. rising blocks ; ; Used by the routines at #R$B000, #R$B45D, #R$B462 and #R$B467. @label=audio_B454 c$B454 CPL ; $B455 RLCA ; $B456 RLCA ; $B457 LD B,A ; $B458 LD C,$06 ; $B45A JP $B4E6 ; ; block, fire movng (EW) ; ; Used by the routines at #R$B6B9 and #R$B7FE. @label=audio_B45D c$B45D LD A,(IX+$01) ; X $B460 JR $B454 ; ; fire, block moving (NS) ; ; Used by the routines at #R$B6B1 and #R$B820. @label=audio_B462 c$B462 LD A,(IX+$02) ; Y $B465 JR $B454 ; ; eg. special objects, ghost, portcullis (up) ; ; Used by the routines at #R$C232, #R$C5DD and #R$C6EA. @label=audio_B467 c$B467 LD A,(IX+$01) ; $B46A ADD A,(IX+$02) ; $B46D ADD A,(IX+$03) ; $B470 JR $B454 ; ; human/wulf transform ; ; Used by the routine at #R$C349. @label=audio_B472 c$B472 LD A,(IX+$00) ; $B475 RLCA ; $B476 RLCA ; $B477 RLCA ; $B478 AND $18 ; $B47A ADD A,$10 ; $B47C LD C,A ; ; Routine at B47D @label=loc_B47D c$B47D LD A,C ; $B47E XOR $55 ; 'U' $B480 ADD A,C ; $B481 LD B,A ; $B482 CALL $B4ED ; $B485 DEC C ; $B486 JR NZ,$B47D ; $B488 RET ; ; portcullis ; ; Used by the routine at #R$C6BD. @label=audio_B489 c$B489 LD A,($5BA5) ; $B48C LD L,A ; $B48D LD A,($5BA2) ; $B490 AND $1F ; $B492 LD H,A ; $B493 LD E,$10 ; ; Routine at B495 @label=loc_B495 c$B495 LD A,(HL) ; $B496 INC HL ; $B497 AND $7F ; $B499 LD B,A ; $B49A LD C,$02 ; $B49C CALL $B4E6 ; $B49F DEC E ; $B4A0 JR NZ,$B495 ; $B4A2 RET ; ; Routine at B4A3 ; ; Used by the routines at #R$BD6C, #R$C041 and #R$C1AB. @label=toggle_audio_hw_x16 c$B4A3 LD BC,$8010 ; $B4A6 JR $B4E6 ; ; Routine at B4A8 ; ; Used by the routines at #R$D519 and #R$D52E. @label=toggle_audio_hw_x24 c$B4A8 LD BC,$5018 ; $B4AB JR $B4E6 ; ; graphic_no ; ; Used by the routine at #R$B6F9. @label=audio_guard_wizard c$B4AD LD A,(IX+$00) ; $B4B0 AND $01 ; even? $B4B2 RET NZ ; no, exit $B4B3 LD B,$80 ; $B4B5 LD A,($5BA2) ; $B4B8 CPL ; $B4B9 JR $B4C6 ; ; eg. walking graphic_no ; ; Used by the routine at #R$C97A. @label=audio_B4BB c$B4BB LD A,(IX+$00) ; $B4BE AND $01 ; $B4C0 RET NZ ; ; Routine at B4C1 ; ; Used by the routine at #R$C8FD. @label=audio_B4C1 c$B4C1 LD B,$60 ; $B4C3 LD A,($5BA2) ; ; Routine at B4C6 ; ; Used by the routine at #R$B4AD. @label=loc_B4C6 c$B4C6 BIT 1,A ; $B4C8 JR Z,$B4D1 ; $B4CA LD A,(IX+$03) ; Z $B4CD CPL ; $B4CE SRL A ; $B4D0 LD B,A ; ; X ; ; Used by the routine at #R$B4C6. @label=loc_B4D1 c$B4D1 LD A,(IX+$01) ; $B4D4 SRL A ; $B4D6 LD C,A ; $B4D7 LD A,(IX+$02) ; Y $B4DA NEG ; $B4DC SRL A ; $B4DE ADD A,C ; $B4DF RRCA ; $B4E0 RRCA ; $B4E1 RRCA ; $B4E2 RRCA ; $B4E3 AND $0F ; $B4E5 LD C,A ; ; Routine at B4E6 ; ; Used by the routines at #R$B3E9, #R$B40D, #R$B433, #R$B454, #R$B495, #R$B4A3 and #R$B4A8. @label=toggle_audio_hw_xC c$B4E6 CALL $B4ED ; $B4E9 DEC C ; $B4EA JR NZ,$B4E6 ; $B4EC RET ; ; Routine at B4ED ; ; Used by the routines at #R$B423, #R$B443, #R$B47D and #R$B4E6. @label=toggle_audio_hw c$B4ED LD A,$10 ; EAR output $B4EF OUT ($FE),A ; enable $B4F1 LD A,B ; ; Routine at B4F2 @label=loc_B4F2 c$B4F2 DJNZ $B4F2 ; $B4F4 LD B,A ; $B4F5 XOR A ; MIC output $B4F6 OUT ($FE),A ; enable (disable EAR) $B4F8 LD A,B ; ; Routine at B4F9 @label=loc_B4F9 c$B4F9 DJNZ $B4F9 ; $B4FB LD B,A ; $B4FC RET ; ; Check for intersecting objects ; ; Output:C flag set if any other object intersects with this one @label=do_any_objs_intersect c$B4FD PUSH BC ; $B4FE PUSH DE ; $B4FF PUSH HL ; $B500 PUSH IY ; $B502 LD IY,$5C08 ; $B506 LD B,$28 ; max objects $B508 LD C,$00 ; dX=0 $B50A LD L,C ; dY=0 $B50B LD H,C ; dZ=0 $B50C SET 1,(IX+$07) ; ignore this object ; Routine at B510 ; ; Used by the routine at #R$B52E. @label=loc_B510 c$B510 CALL $B538 ; $B513 JR Z,$B52E ; {no, skip $B515 CALL $CC9D ; } $B518 JR NC,$B52E ; {no, skip $B51A CALL $CCB2 ; } $B51D JR NC,$B52E ; {no, skip $B51F CALL $CCC7 ; } $B522 JR NC,$B52E ; no, skip ; Routine at B524 ; ; Used by the routine at #R$B52E. @label=loc_B524 c$B524 POP IY ; $B526 POP HL ; $B527 POP DE ; $B528 POP BC ; $B529 RES 1,(IX+$07) ; reset ignore flag $B52D RET ; C flag set indicates intersection ; entry size ; ; Used by the routine at #R$B510. @label=loc_B52E c$B52E LD DE,$0020 ; $B531 ADD IY,DE ; next entry $B533 DJNZ $B510 ; {loop through object table $B535 AND A ; $B536 JR $B524 ; } ; Routine at B538 ; ; Used by the routines at #R$B510, #R$CBA0, #R$CBEF and #R$CC3E. @label=is_object_not_ignored c$B538 LD A,(IY+$00) ; graphic no. $B53B AND A ; null? $B53C RET Z ; yes, exit $B53D LD A,(IY+$07) ; flags $B540 CPL ; $B541 AND $02 ; test bit 1 $B543 RET ; ; Routine at B544 ; ; Used by the routine at #R$AF88. @label=shuffle_objects_required c$B544 LD A,($5BA0) ; $B547 AND $03 ; $B549 OR $04 ; $B54B LD C,A ; random 4-7 ; 14 items (13 swaps) ; ; Used by the routine at #R$B555. @label=loc_B54C c$B54C LD B,$0D ; $B54E LD IY,$C27D ; $B552 LD E,(IY+$00) ; ; Routine at B555 @label=loc_B555 c$B555 LD A,(IY+$01) ; $B558 LD (IY+$00),A ; $B55B INC IY ; $B55D DJNZ $B555 ; $B55F LD (IY+$00),E ; $B562 DEC C ; $B563 JR NZ,$B54C ; $B565 RET ; ; sparkles from the blocks in the cauldron room at the end of the game @label=upd_131_to_133 c$B566 CALL $C4D8 ; $B569 LD A,(IX+$03) ; Z $B56C CP $A4 ; <164? $B56E JR NC,$B5C4 ; no, go $B570 LD (IX+$0B),$03 ; dZ=3 $B574 LD A,(IX+$01) ; X $B577 RLCA ; $B578 AND $01 ; $B57A LD L,A ; X bit7->bit0 $B57B LD A,(IX+$02) ; Y $B57E AND $80 ; Y bit7 $B580 OR L ; $B581 RLCA ; bit0->bit1, bit7->bit1 $B582 AND $03 ; $B584 LD L,A ; $B585 LD BC,$B58B ; {jump table $B588 JP $AFDB ; } ; Data block at B58B @label=dX_dY_tbl b$B58B DEFW $B593 ; +4, -4 $B58D DEFW $B5B5 ; +4, +4 $B58F DEFW $B5BA ; -4, -4 $B591 DEFW $B5BF ; -4, +4 ; +4, -4 @label=p4_m4 c$B593 LD HL,$04FC ; ; Routine at B596 ; ; Used by the routines at #R$B5B5, #R$B5BA and #R$B5BF. @label=save_dX_dY c$B596 LD (IX+$09),L ; dX $B599 LD (IX+$0A),H ; dY $B59C LD A,($5BA5) ; $B59F AND $03 ; rnd 0-3 $B5A1 JR NZ,$B5A4 ; >0, skip $B5A3 INC A ; =1 ; rnd twinkly sprite ; ; Used by the routine at #R$B596. @label=loc_B5A4 c$B5A4 ADD A,$82 ; $B5A6 LD (IX+$00),A ; set graphic no. ; Z ; ; Used by the routine at #R$B5E3. @label=loc_B5A9 c$B5A9 LD A,(IX+$03) ; $B5AC LD ($5BC5),A ; ; Routine at B5AF ; ; Used by the routines at #R$B6EF and #R$C4AA. @label=dec_dZ_wipe_and_draw c$B5AF CALL $C700 ; $B5B2 JP $C692 ; ; +4, +4 @label=p4_p4 c$B5B5 LD HL,$0404 ; $B5B8 JR $B596 ; ; -4, -4 @label=m4_m4 c$B5BA LD HL,$FCFC ; $B5BD JR $B596 ; ; -4, +4 @label=m4_p4 c$B5BF LD HL,$FC04 ; $B5C2 JR $B596 ; ; plyr_spr_1 X ; ; Used by the routine at #R$B566. @label=loc_B5C4 c$B5C4 LD A,($5C09) ; $B5C7 SUB (IX+$01) ; object X $B5CA JP P,$B5CF ; $B5CD NEG ; abs(delta x) ; less than 6? ; ; Used by the routine at #R$B5C4. @label=loc_B5CF c$B5CF CP $06 ; $B5D1 JR NC,$B5E3 ; no, skip $B5D3 LD A,($5C0A) ; plyr_spr_1 Y $B5D6 SUB (IX+$02) ; object Y $B5D9 JP P,$B5DE ; $B5DC NEG ; abs(delta y) ; less than 6? ; ; Used by the routine at #R$B5CF. @label=loc_B5DE c$B5DE CP $06 ; $B5E0 JP C,$BA22 ; yes, exit ; fatal if it hits player ; ; Used by the routine at #R$B5CF. @label=loc_B5E3 c$B5E3 SET 7,(IX+$0D) ; $B5E7 SET 1,(IX+$07) ; ignore object in 3D calculations $B5EB LD (IX+$0B),$01 ; dZ=1 $B5EF LD BC,$0404 ; dX,dY=4 $B5F2 CALL $B965 ; $B5F5 JR $B5A9 ; ; Routine at B5F7 ; ; Used by the routines at #R$B2BE, #R$BA87, #R$BA9E, #R$BD23, #R$BD6C, #R$D03E, #R$D046, #R$D09C, #R$D0A9, #R$D0C8, ; #R$D0F6, #R$D0FF, #R$D108, #R$D111, #R$D50E, #R$D519, #R$D525 and #R$D52E. @label=read_port c$B5F7 OUT ($FD),A ; select upper address $B5F9 IN A,($FE) ; read status $B5FB CPL ; positive logic $B5FC AND $1F ; mask off undefined bits $B5FE RET ; ; ball (bouncing around) ; ; - bounces towards wulf ; . ; - bounces away from sabreman ; . ; adj(-4,-8) @label=upd_182_183 c$B5FF CALL $C4F2 ; $B602 LD L,(IX+$09) ; dX $B605 LD H,(IX+$0A) ; dY $B608 PUSH HL ; $B609 LD A,(IX+$0B) ; dZ $B60C LD ($5BC2),A ; {tmp store $B60F CALL $C700 ; $B612 POP HL ; } $B613 LD (IX+$09),L ; preserve old dX $B616 LD (IX+$0A),H ; preserve old dY $B619 LD A,($5C08) ; {plyr graphic_no $B61C SUB $10 ; } $B61E CP $20 ; wulf? $B620 LD A,$30 ; jr nc,___ $B622 JR NC,$B626 ; yes, skip $B624 ADD A,$08 ; jr,c___ ; self-modifying code ; ; Used by the routine at #R$B5FF. @label=loc_B626 c$B626 LD ($B65D),A ; $B629 LD ($B676),A ; self-modifying code $B62C LD A,($5C10) ; {plyr_spr_1 screen $B62F AND $01 ; $B631 LD A,$04 ; $B633 JR Z,$B63C ; $B635 LD B,A ; $B636 LD A,($5BA5) ; $B639 AND $03 ; $B63B ADD A,B ; } ; Z OOB? ; ; Used by the routine at #R$B626. @label=loc_B63C c$B63C BIT 2,(IX+$0C) ; $B640 JR Z,$B668 ; no, skip $B642 LD (IX+$0B),A ; new dZ $B645 LD A,($5BC2) ; old dZ $B648 AND A ; >=0? $B649 JP P,$B64F ; {yes, skip $B64C CALL $B42E ; } ; random ; ; Used by the routine at #R$B63C. @label=loc_B64F c$B64F LD A,R ; $B651 AND $01 ; $B653 JR Z,$B66E ; $B655 LD A,($5C0A) ; plyr_spr_1 Y $B658 CP (IX+$02) ; = room height? $CA63 RET NC ; yes, return $CA64 SET 2,(IX+$0C) ; $CA68 LD A,H ; Z+dZ $CA69 CALL $CA89 ; $CA6C LD H,A ; new dZ $CA6D JR NZ,$CA5E ; {check again $CA6F RET ; } ; Routine at CA70 ; ; Used by the routine at #R$C9CD. @label=handle_exit_screen c$CA70 LD A,(IX+$0C) ; flags12 $CA73 AND $F0 ; entering room? $CA75 RET NZ ; yes, exit $CA76 BIT 0,(IX+$07) ; near an arch? $CA7A RET Z ; no, return $CA7B RES 0,(IX+$07) ; reset flag $CA7F LD BC,$CA92 ; $CA82 LD HL,($5BAB) ; $CA85 PUSH HL ; $CA86 JP $CA17 ; ; adjust dX/dY/dZ when out of bounds ; ; Input:A dX/dY/dZ @label=adj_d_for_out_of_bounds c$CA89 AND A ; zero? $CA8A RET Z ; yes, exit $CA8B JP P,$CA90 ; {skip if >0 $CA8E INC A ; $CA8F INC A ; } ; Routine at CA90 ; ; Used by the routine at #R$CA89. @label=loc_CA90 c$CA90 DEC A ; $CA91 RET ; ; Data block at CA92 @label=screen_move_tbl b$CA92 DEFW $CA9A $CA94 DEFW $CAF3 $CA96 DEFW $CB0E $CA98 DEFW $CB29 ; Routine at CA9A @label=screen_west c$CA9A POP HL ; $CA9B LD A,$80 ; $CA9D SUB L ; room_size_X $CA9E LD L,A ; $CA9F LD A,(IX+$01) ; X $CAA2 ADD A,(IX+$09) ; +dX $CAA5 ADD A,(IX+$04) ; +width $CAA8 CP L ; $CAA9 RET NC ; $CAAA LD (IX+$01),$00 ; X $CAAE LD A,(IX+$08) ; screen $CAB1 LD L,A ; $CAB2 DEC A ; screen to the west ; low nibble ; ; Used by the routine at #R$CAF3. @label=screen_e_w c$CAB3 AND $0F ; $CAB5 LD H,A ; $CAB6 LD A,L ; $CAB7 AND $F0 ; high nibble - don't change row $CAB9 OR H ; same row - wraps??? ; store new screen ; ; Used by the routines at #R$CB0E and #R$CB29. @label=exit_screen c$CABA LD (IX+$08),A ; $CABD LD A,(IX+$0C) ; flags12 $CAC0 OR $30 ; init enter room counter $CAC2 LD (IX+$0C),A ; save $CAC5 LD A,(IX+$00) ; graphic no. $CAC8 SUB $10 ; $CACA CP $40 ; wulf? $CACC RET NC ; WHY is wulf handled differently??? $CACD INC SP ; $CACE INC SP ; $CACF INC SP ; $CAD0 INC SP ; $CAD1 PUSH IX ; $CAD3 POP HL ; $CAD4 LD DE,$D161 ; $CAD7 LD BC,$0040 ; $CADA LDIR ; $CADC LD A,($D161) ; {graphic no. $CADF LD ($D171),A ; } $CAE2 LD A,($D181) ; {graphic no. $CAE5 LD ($D191),A ; } $CAE8 LD A,$78 ; sparkly transform #1 $CAEA LD ($D161),A ; graphic no. $CAED LD ($D181),A ; {graphic no. $CAF0 JP $AFBA ; } ; Routine at CAF3 @label=screen_east c$CAF3 POP HL ; $CAF4 LD A,L ; $CAF5 ADD A,$80 ; $CAF7 LD L,A ; room_size_X + 128 $CAF8 LD A,(IX+$01) ; X $CAFB ADD A,(IX+$09) ; +dX $CAFE SUB (IX+$04) ; -width $CB01 CP L ; $CB02 RET C ; $CB03 LD (IX+$01),$FF ; X $CB07 LD A,(IX+$08) ; screen $CB0A LD L,A ; $CB0B INC A ; screen to the east $CB0C JR $CAB3 ; ; Routine at CB0E @label=screen_north c$CB0E POP HL ; $CB0F LD A,H ; room_size_Y $CB10 ADD A,$80 ; $CB12 LD H,A ; $CB13 LD A,(IX+$02) ; Y $CB16 ADD A,(IX+$0A) ; +dY $CB19 SUB (IX+$05) ; -depth $CB1C CP H ; $CB1D RET C ; $CB1E LD (IX+$02),$FF ; Y $CB22 LD A,(IX+$08) ; screen $CB25 ADD A,$10 ; screen to the north $CB27 JR $CABA ; ; Routine at CB29 @label=screen_south c$CB29 POP HL ; $CB2A LD A,$80 ; $CB2C SUB H ; room_size_Y $CB2D LD H,A ; $CB2E LD A,(IX+$02) ; Y $CB31 ADD A,(IX+$0A) ; +dY $CB34 ADD A,(IX+$05) ; +depth $CB37 CP H ; $CB38 RET NC ; $CB39 LD (IX+$02),$00 ; Y $CB3D LD A,(IX+$08) ; screen $CB40 SUB $10 ; screen to the south $CB42 JP $CABA ; ; Routine at CB45 ; ; Used by the routines at #R$C700 and #R$C9CD. @label=adj_for_out_of_bounds c$CB45 BIT 1,(IX+$07) ; $CB49 RET NZ ; $CB4A SET 1,(IX+$07) ; $CB4E LD A,(IX+$0C) ; $CB51 AND $F8 ; clear X,Y,Z OOB $CB53 LD (IX+$0C),A ; $CB56 LD L,$00 ; $CB58 LD C,L ; $CB59 LD A,(IX+$0B) ; dZ $CB5C AND A ; zero? $CB5D LD H,A ; $CB5E JR Z,$CB6A ; {yes, skip $CB60 CALL $CA5A ; } $CB63 LD A,H ; new dZ $CB64 AND A ; zero? $CB65 JR Z,$CB6A ; {yes, skip $CB67 CALL $CC38 ; } ; Routine at CB6A ; ; Used by the routine at #R$CB45. @label=dZ_ok c$CB6A LD A,(IX+$09) ; dX $CB6D AND A ; zero? $CB6E LD C,A ; $CB6F JR Z,$CB7B ; {yes, skip $CB71 CALL $CCDD ; } $CB74 LD A,C ; new dX $CB75 AND A ; zero? $CB76 JR Z,$CB7B ; {yes, skip $CB78 CALL $CB9A ; } ; dY ; ; Used by the routine at #R$CB6A. @label=loc_CB7B c$CB7B LD A,(IX+$0A) ; $CB7E AND A ; zero? $CB7F LD L,A ; $CB80 JR Z,$CB8C ; {yes, skip $CB82 CALL $CD08 ; } $CB85 LD A,L ; new dY $CB86 AND A ; zero? $CB87 JR Z,$CB8C ; {yes, skip $CB89 CALL $CBE9 ; } ; new dX ; ; Used by the routine at #R$CB7B. @label=loc_CB8C c$CB8C LD (IX+$09),C ; $CB8F LD (IX+$0A),L ; new dY $CB92 LD (IX+$0B),H ; new dZ $CB95 RES 1,(IX+$07) ; $CB99 RET ; ; Routine at CB9A ; ; Used by the routine at #R$CB6A. @label=adj_dX_for_obj_intersect c$CB9A LD IY,$5C08 ; $CB9E LD B,$28 ; max objects ; Routine at CBA0 ; ; Used by the routine at #R$CBE1. @label=loc_CBA0 c$CBA0 CALL $B538 ; $CBA3 JR Z,$CBE1 ; {ignored, skip $CBA5 CALL $CCB2 ; $CBA8 JR NC,$CBE1 ; $CBAA CALL $CCC7 ; $CBAD JR NC,$CBE1 ; } ; Routine at CBAF ; ; Used by the routine at #R$CBD9. @label=loc_CBAF c$CBAF CALL $CC9D ; $CBB2 JR NC,$CBE1 ; $CBB4 SET 0,(IX+$0C) ; set X OOB $CBB8 LD A,(IX+$0D) ; $CBBB RRCA ; $CBBC AND $40 ; bit 7->6 $CBBE OR (IY+$0D) ; obj2 destroyed? $CBC1 LD (IY+$0D),A ; $CBC4 RLCA ; $CBC5 AND $40 ; bit 5->6 $CBC7 OR (IX+$0D) ; obj1 destroyed? $CBCA LD (IX+$0D),A ; $CBCD BIT 2,(IY+$07) ; moveable? $CBD1 JR Z,$CBD9 ; {no, skip $CBD3 LD A,(IX+$09) ; } $CBD6 LD (IY+$09),A ; copy dX ; Routine at CBD9 ; ; Used by the routine at #R$CBAF. @label=loc_CBD9 c$CBD9 LD A,C ; $CBDA CALL $CA89 ; $CBDD LD C,A ; $CBDE RET Z ; $CBDF JR $CBAF ; ; entry size ; ; Used by the routines at #R$CBA0 and #R$CBAF. @label=loc_CBE1 c$CBE1 LD DE,$0020 ; $CBE4 ADD IY,DE ; next entry $CBE6 DJNZ $CBA0 ; $CBE8 RET ; ; Routine at CBE9 ; ; Used by the routine at #R$CB7B. @label=adj_dY_for_obj_intersect c$CBE9 LD IY,$5C08 ; $CBED LD B,$28 ; max objects ; Routine at CBEF ; ; Used by the routine at #R$CC30. @label=loc_CBEF c$CBEF CALL $B538 ; $CBF2 JR Z,$CC30 ; {next entry $CBF4 CALL $CC9D ; } $CBF7 JR NC,$CC30 ; {next entry $CBF9 CALL $CCC7 ; } $CBFC JR NC,$CC30 ; next entry ; Routine at CBFE ; ; Used by the routine at #R$CC28. @label=loc_CBFE c$CBFE CALL $CCB2 ; $CC01 JR NC,$CC30 ; next entry $CC03 SET 1,(IX+$0C) ; set Y OOB $CC07 LD A,(IX+$0D) ; $CC0A RRCA ; $CC0B AND $40 ; bit 7->6 $CC0D OR (IY+$0D) ; obj2 destroyed? $CC10 LD (IY+$0D),A ; $CC13 RLCA ; $CC14 AND $40 ; bit 5->6 $CC16 OR (IX+$0D) ; obj1 destroyed? $CC19 LD (IX+$0D),A ; $CC1C BIT 2,(IY+$07) ; moveable? $CC20 JR Z,$CC28 ; {no, skip $CC22 LD A,(IX+$0A) ; } $CC25 LD (IY+$0A),A ; copy dY ; Routine at CC28 ; ; Used by the routine at #R$CBFE. @label=loc_CC28 c$CC28 LD A,L ; $CC29 CALL $CA89 ; $CC2C LD L,A ; $CC2D RET Z ; $CC2E JR $CBFE ; ; entry size ; ; Used by the routines at #R$CBEF and #R$CBFE. @label=loc_CC30 c$CC30 LD DE,$0020 ; $CC33 ADD IY,DE ; next entry $CC35 DJNZ $CBEF ; {loop through table $CC37 RET ; } ; Routine at CC38 ; ; Used by the routine at #R$CB45. @label=adj_dZ_for_obj_intersect c$CC38 LD IY,$5C08 ; $CC3C LD B,$28 ; max objects ; Routine at CC3E ; ; Used by the routine at #R$CC95. @label=loc_CC3E c$CC3E CALL $B538 ; $CC41 JR Z,$CC95 ; {next entry $CC43 CALL $CC9D ; } $CC46 JR NC,$CC95 ; {next entry $CC48 CALL $CCB2 ; } $CC4B JR NC,$CC95 ; next entry ; Routine at CC4D ; ; Used by the routine at #R$CC8D. @label=loc_CC4D c$CC4D CALL $CCC7 ; $CC50 JR NC,$CC95 ; next entry $CC52 SET 2,(IX+$0C) ; set Z OOB $CC56 LD A,(IX+$0D) ; $CC59 RRCA ; $CC5A AND $40 ; bit 7->6 $CC5C OR (IY+$0D) ; obj2 destroyed? $CC5F LD (IY+$0D),A ; $CC62 RLCA ; $CC63 AND $40 ; bit 5->6 $CC65 OR (IX+$0D) ; obj1 destroyed? $CC68 LD (IX+$0D),A ; $CC6B SET 3,(IY+$0D) ; triggered (falling, collapsing blocks) $CC6F BIT 2,(IX+$07) ; moveable? $CC73 JR Z,$CC8D ; no, skip $CC75 LD A,(IX+$09) ; dX $CC78 AND A ; zero? $CC79 JR NZ,$CC81 ; {no, skip $CC7B LD A,(IY+$09) ; } $CC7E LD (IX+$09),A ; copy dX ; objdY ; ; Used by the routine at #R$CC4D. @label=loc_CC81 c$CC81 LD A,(IX+$0A) ; $CC84 AND A ; moving along Y? $CC85 JR NZ,$CC8D ; {yes, skip $CC87 LD A,(IY+$0A) ; } $CC8A LD (IX+$0A),A ; copy dY ; Routine at CC8D ; ; Used by the routines at #R$CC4D and #R$CC81. @label=loc_CC8D c$CC8D LD A,H ; $CC8E CALL $CA89 ; $CC91 LD H,A ; $CC92 RET Z ; $CC93 JR $CC4D ; ; entry size ; ; Used by the routines at #R$CC3E and #R$CC4D. @label=loc_CC95 c$CC95 LD DE,$0020 ; $CC98 ADD IY,DE ; next entry $CC9A DJNZ $CC3E ; {loop through table $CC9C RET ; } ; Routine at CC9D ; ; Used by the routines at #R$B510, #R$C17A, #R$CBAF, #R$CBEF and #R$CC3E. @label=do_objs_intersect_on_x c$CC9D LD A,(IX+$04) ; objW (width) $CCA0 ADD A,(IY+$04) ; thisW $CCA3 LD D,A ; objW+thisW $CCA4 LD A,(IX+$01) ; obj X $CCA7 ADD A,C ; new dX $CCA8 SUB (IY+$01) ; objX + newdX - thisX $CCAB JP P,$CCB0 ; $CCAE NEG ; abs() ; abs(objX+newdX-thisX)-(objW+thisW) ; ; Used by the routine at #R$CC9D. @label=loc_CCB0 c$CCB0 SUB D ; $CCB1 RET ; C flag set indicates intersection ; Routine at CCB2 ; ; Used by the routines at #R$B510, #R$C17A, #R$CBA0, #R$CBFE and #R$CC3E. @label=do_objs_intersect_on_y c$CCB2 LD A,(IX+$05) ; objD (depth) $CCB5 ADD A,(IY+$05) ; thisD $CCB8 LD D,A ; (objD+thisD) $CCB9 LD A,(IX+$02) ; objY $CCBC ADD A,L ; $CCBD SUB (IY+$02) ; (objY+new dY-thisY) $CCC0 JP P,$CCC5 ; $CCC3 NEG ; abs() ; (objY+l+thisY)-(objD+thisD) ; ; Used by the routine at #R$CCB2. @label=loc_CCC5 c$CCC5 SUB D ; $CCC6 RET ; C flag set indicates intersection ; Routine at CCC7 ; ; Used by the routines at #R$B510, #R$C17A, #R$CBA0, #R$CBEF and #R$CC4D. @label=do_objs_intersect_on_z c$CCC7 LD A,(IX+$03) ; objZ $CCCA ADD A,H ; $CCCB SUB (IY+$03) ; (objZ+new dZ-thisZ) $CCCE JP P,$CCD8 ; $CCD1 NEG ; abs() $CCD3 LD D,(IX+$06) ; objH (height) ; (objZ+H-thisZ)-(objH or thisH) ; ; Used by the routine at #R$CCD8. @label=loc_CCD6 c$CCD6 SUB D ; $CCD7 RET ; C flag set indicates intersection ; thisH (height) ; ; Used by the routine at #R$CCC7. @label=loc_CCD8 c$CCD8 LD D,(IY+$06) ; $CCDB JR $CCD6 ; ; Routine at CCDD ; ; Used by the routine at #R$CB6A. @label=adj_dX_for_out_of_bounds c$CCDD LD A,(IX+$0C) ; flags12 $CCE0 AND $F0 ; entering room? $CCE2 RET NZ ; yes, exit $CCE3 BIT 0,(IX+$07) ; near an arch? $CCE7 RET NZ ; yes, exit $CCE8 LD A,($5BAB) ; $CCEB LD B,A ; ; X ; ; Used by the routine at #R$CCF6. @label=loc_CCEC c$CCEC LD A,(IX+$01) ; $CCEF ADD A,C ; +dX $CCF0 SUB $80 ; $CCF2 JR NC,$CCF6 ; $CCF4 NEG ; ; X+dX+width ; ; Used by the routine at #R$CCEC. @label=loc_CCF6 c$CCF6 ADD A,(IX+$04) ; $CCF9 CP B ; < room width? $CCFA JR C,$CD07 ; yes, skip $CCFC SET 0,(IX+$0C) ; set X OOB $CD00 LD A,C ; dX $CD01 CALL $CA89 ; $CD04 LD C,A ; new dX $CD05 JR NZ,$CCEC ; check again ; Routine at CD07 ; ; Used by the routine at #R$CCF6. @label=dX_ok c$CD07 RET ; ; Routine at CD08 ; ; Used by the routine at #R$CB7B. @label=adj_dY_for_out_of_bounds c$CD08 LD A,(IX+$0C) ; flags12 $CD0B AND $F0 ; entering room? $CD0D RET NZ ; yes, exit $CD0E BIT 0,(IX+$07) ; near and arch? $CD12 RET NZ ; yes, exit $CD13 LD A,($5BAC) ; $CD16 LD B,A ; ; Y ; ; Used by the routine at #R$CD21. @label=loc_CD17 c$CD17 LD A,(IX+$02) ; $CD1A ADD A,L ; +dY $CD1B SUB $80 ; $CD1D JR NC,$CD21 ; $CD1F NEG ; ; Y+dY+depth ; ; Used by the routine at #R$CD17. @label=loc_CD21 c$CD21 ADD A,(IX+$05) ; $CD24 CP B ; < room depth? $CD25 JR C,$CD32 ; yes, skip $CD27 SET 1,(IX+$0C) ; set Y OOB $CD2B LD A,L ; dY $CD2C CALL $CA89 ; $CD2F LD L,A ; new dY $CD30 JR NZ,$CD17 ; check again ; Routine at CD32 ; ; Used by the routine at #R$CD21. @label=dY_ok c$CD32 RET ; ; Routine at CD33 ; ; Used by the routine at #R$CD4D. @label=calc_2d_info c$CD33 CALL $D6C9 ; $CD36 CALL $D6EF ; $CD39 LD A,(IX+$1A) ; pixel X $CD3C AND $07 ; bit offset $CD3E LD A,(DE) ; ptr sprite data (width) $CD3F INC DE ; ptr height $CD40 JR Z,$CD43 ; $CD42 INC A ; ; Routine at CD43 ; ; Used by the routine at #R$CD33. @label=loc_CD43 c$CD43 AND $0F ; $CD45 LD (IX+$18),A ; sprite data width (bytes) $CD48 LD A,(DE) ; $CD49 LD (IX+$19),A ; sprite data height $CD4C RET ; ; Routine at CD4D ; ; Used by the routines at #R$C692 and #R$CE27. @label=set_draw_objs_overlapped c$CD4D LD IY,$5C08 ; $CD51 CALL $CD33 ; $CD54 LD B,$28 ; max objects $CD56 LD A,(IX+$1A) ; pixelX $CD59 RRCA ; $CD5A RRCA ; $CD5B RRCA ; $CD5C AND $1F ; byte address $CD5E LD L,A ; $CD5F LD A,(IX+$1E) ; old pixelX $CD62 RRCA ; $CD63 RRCA ; $CD64 RRCA ; $CD65 AND $1F ; bytes address $CD67 LD H,A ; $CD68 CP L ; $CD69 JR C,$CD6C ; $CD6B LD A,L ; ; left extremity (byte address) ; ; Used by the routine at #R$CD4D. @label=loc_CD6C c$CD6C LD E,A ; $CD6D LD A,L ; byte address $CD6E ADD A,(IX+$18) ; + data width (bytes) $CD71 LD L,A ; $CD72 LD A,H ; old byte address $CD73 ADD A,(IX+$1C) ; + old data width bytes $CD76 CP L ; $CD77 JR NC,$CD7A ; $CD79 LD A,L ; ; combined width old & new ; ; Used by the routine at #R$CD6C. @label=loc_CD7A c$CD7A SUB E ; $CD7B LD D,A ; $CD7C LD A,(IX+$1B) ; pixel Y $CD7F CP (IX+$1F) ; old pixelY $CD82 JR C,$CD87 ; $CD84 LD A,(IX+$1F) ; old pixelY ; lowest Y ; ; Used by the routine at #R$CD7A. @label=loc_CD87 c$CD87 LD L,A ; $CD88 LD A,(IX+$1B) ; pixel Y $CD8B ADD A,(IX+$19) ; + data height (lines) $CD8E LD H,A ; $CD8F LD A,(IX+$1F) ; old pixelY $CD92 ADD A,(IX+$1D) ; + old data height (lines) $CD95 CP H ; $CD96 JR NC,$CD99 ; $CD98 LD A,H ; ; Routine at CD99 ; ; Used by the routine at #R$CD87. @label=loc_CD99 c$CD99 SUB L ; $CD9A LD H,A ; combined height (lines) ; graphic_no ; ; Used by the routine at #R$CDC2. @label=test_overlap_obj c$CD9B LD A,(IY+$00) ; $CD9E AND A ; null? $CD9F JR Z,$CDC2 ; yes, skip $CDA1 BIT 4,(IY+$07) ; DRAW flag already set? $CDA5 JR NZ,$CDC2 ; yes, skip $CDA7 LD A,(IY+$1A) ; pixel X $CDAA RRCA ; $CDAB RRCA ; $CDAC RRCA ; $CDAD AND $1F ; byte address of pixel $CDAF SUB E ; < left extremity (to the left)? $CDB0 JR C,$CDCC ; yes, go $CDB2 CP D ; < right extermity (overlapping)? ; no, skip ; ; Used by the routine at #R$CDCC. @label=loc_CDB3 c$CDB3 JR NC,$CDC2 ; $CDB5 LD A,(IY+$1B) ; pixel Y $CDB8 SUB L ; < lowest Y (below)? $CDB9 JR C,$CDD3 ; yes, go $CDBB CP H ; < height (overlapping)? ; no, skip ; ; Used by the routine at #R$CDD3. @label=loc_CDBC c$CDBC JR NC,$CDC2 ; $CDBE SET 4,(IY+$07) ; set DRAW flag ; Routine at CDC2 ; ; Used by the routines at #R$CD9B, #R$CDB3 and #R$CDBC. @label=next_overlap_obj c$CDC2 EXX ; $CDC3 LD DE,$0020 ; entry size $CDC6 ADD IY,DE ; next entry $CDC8 EXX ; $CDC9 DJNZ $CD9B ; $CDCB RET ; ; Routine at CDCC ; ; Used by the routine at #R$CD9B. @label=loc_CDCC c$CDCC NEG ; $CDCE CP (IY+$18) ; data width (bytes) $CDD1 JR $CDB3 ; ; Routine at CDD3 ; ; Used by the routine at #R$CDB3. @label=loc_CDD3 c$CDD3 NEG ; $CDD5 CP (IY+$19) ; data height (lines) $CDD8 JR $CDBC ; ; player (human top half) @label=upd_32_to_47 c$CDDA CALL $C4F7 ; $CDDD JR $CDE2 ; ; player (wulf top half) @label=upd_64_to_79 c$CDDF CALL $C501 ; ; copies most information from bottom half object ; ; handles randomly looking around @label=upd_player_top c$CDE2 LD A,($5BC3) ; $CDE5 AND A ; $CDE6 JR NZ,$CDEF ; $CDE8 BIT 6,(IX+$0D) ; $CDEC JP NZ,$BF21 ; ; Routine at CDEF ; ; Used by the routine at #R$CDE2. @label=loc_CDEF c$CDEF PUSH IX ; $CDF1 POP DE ; DE=top $CDF2 LD HL,$FFE0 ; -32 $CDF5 ADD HL,DE ; $CDF6 PUSH HL ; HL=bottom $CDF7 POP IY ; IY=player bottom half $CDF9 INC DE ; DE=top+1 $CDFA INC HL ; HL=bottom+1 $CDFB LD BC,$0007 ; $CDFE LDIR ; copy x,y,z,w,d,h,flags $CE00 LD (IX+$06),$00 ; height (top) $CE04 SET 1,(IX+$07) ; ignore in 3D calcs $CE08 LD A,(IX+$0D) ; flags13 $CE0B AND $0F ; look around counter $CE0D JR Z,$CE14 ; maybe look around again? $CE0F DEC (IX+$0D) ; dec look around counter $CE12 JR $CE27 ; ; look in a random direction ; ; Used by the routine at #R$CDEF. @label=loc_CE14 c$CE14 LD A,($5BA5) ; $CE17 CP $02 ; one way? $CE19 JR C,$CE33 ; yes, go $CE1B CP $FE ; other way? $CE1D JR NC,$CE40 ; yes, go $CE1F LD A,(IY+$00) ; straight ahead ; Routine at CE22 ; ; Used by the routine at #R$CE3A. @label=set_top_sprite c$CE22 ADD A,$10 ; $CE24 LD (IX+$00),A ; graphic_no (top half) ; Z (bottom half) ; ; Used by the routine at #R$CDEF. @label=loc_CE27 c$CE27 LD A,(IY+$03) ; $CE2A ADD A,$0C ; directly above $CE2C LD (IX+$03),A ; store in top half $CE2F CALL $CD4D ; $CE32 RET ; ; graphic_no (bottom half) ; ; Used by the routine at #R$CE14. @label=loc_CE33 c$CE33 LD A,(IY+$00) ; $CE36 AND $F8 ; $CE38 OR $06 ; look one way ; look for 8 iterations ; ; Used by the routine at #R$CE40. @label=loc_CE3A c$CE3A LD (IX+$0D),$08 ; $CE3E JR $CE22 ; ; Routine at CE40 ; ; Used by the routine at #R$CE14. @label=loc_CE40 c$CE40 LD A,(IY+$00) ; $CE43 AND $F8 ; $CE45 OR $07 ; look the other way $CE47 JR $CE3A ; ; Routine at CE49 ; ; Used by the routine at #R$AFC7. @label=save_2d_info c$CE49 LD A,(IX+$18) ; data width (bytes) $CE4C LD (IX+$1C),A ; $CE4F LD A,(IX+$19) ; data height (lines) $CE52 LD (IX+$1D),A ; $CE55 LD A,(IX+$1A) ; pixel X $CE58 LD (IX+$1E),A ; $CE5B LD A,(IX+$1B) ; pixel Y $CE5E LD (IX+$1F),A ; $CE61 RET ; ; Routine at CE62 ; ; Used by the routine at #R$B000. @label=list_objects_to_draw c$CE62 PUSH IX ; $CE64 LD B,$28 ; max 40 objects in list $CE66 LD DE,$0020 ; object size = 32 bytes $CE69 LD IX,$5C08 ; {base of object table $CE6D LD HL,$CE8B ; } $CE70 LD C,$00 ; init object index ; graphic no. ; ; Used by the routine at #R$CE80. @label=loc_CE72 c$CE72 LD A,(IX+$00) ; $CE75 AND A ; null? $CE76 JR Z,$CE80 ; yes, skip $CE78 BIT 4,(IX+$07) ; draw flag set? $CE7C JR Z,$CE80 ; no, skip $CE7E LD (HL),C ; add object index to list $CE7F INC HL ; ptr next list address ; next object index ; ; Used by the routine at #R$CE72. @label=loc_CE80 c$CE80 INC C ; $CE81 ADD IX,DE ; ptr next object in table $CE83 DJNZ $CE72 ; {loop through all objects $CE85 LD A,$FF ; } $CE87 LD (HL),A ; flag end of list $CE88 POP IX ; $CE8A RET ; ; Data block at CE8B @label=objects_to_draw b$CE8B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $CE93 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $CE9B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $CEA3 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $CEAB DEFB $00,$00,$00,$00,$00,$00,$00,$00 $CEB3 DEFB $00,$00,$00,$00,$00,$00,$00,$00 ; Routine at CEBB ; ; Used by the routine at #R$D653. @label=calc_display_order_and_render c$CEBB XOR A ; $CEBC LD ($5BBE),A ; $CEBF PUSH IX ; $CEC1 PUSH IY ; ; Routine at CEC3 ; ; Used by the routines at #R$CFD1 and #R$D003. @label=process_remaining_objs c$CEC3 LD DE,$CE8B ; ; graphic no. @label=loc_CEC6 c$CEC6 LD A,(DE) ; $CEC7 INC DE ; $CEC8 CP $FF ; end of list? $CECA JP Z,$D015 ; yes, exit $CECD BIT 7,A ; already rendered? $CECF JR NZ,$CEC6 ; yes, skip $CED1 CALL $D3B5 ; {ret=HL $CED4 LD ($5BCD),DE ; $CED8 PUSH HL ; } $CED9 POP IX ; IX=ptr graphic object table entry #1 ; next object graphic no. ; ; Used by the routines at #R$CF9F, #R$CFA2, #R$CFB8 and #R$CFFD. @label=loc_CEDB c$CEDB LD A,(DE) ; $CEDC INC DE ; $CEDD CP $FF ; end of list? $CEDF JP Z,$D000 ; $CEE2 BIT 7,A ; $CEE4 JR NZ,$CEDB ; $CEE6 CALL $D3B5 ; $CEE9 LD ($5BCF),DE ; $CEED PUSH HL ; $CEEE POP IY ; HL,IY=ptr graphic object table entry #2 $CEF0 PUSH IX ; $CEF2 POP BC ; IX,BC=ptr graphic object table entry #1 $CEF3 AND A ; $CEF4 SBC HL,BC ; same objects? $CEF6 JR Z,$CEDB ; {yes, loop $CEF8 LD C,$00 ; } $CEFA LD A,(IY+$03) ; Z2 $CEFD ADD A,(IY+$06) ; add height(H2) $CF00 LD L,A ; Z2+H2 $CF01 LD A,(IX+$03) ; Z1 $CF04 SUB L ; Z1-(Z2+H2) $CF05 JR NC,$CF16 ; no overlap (C+=0) $CF07 LD A,(IX+$03) ; Z1 $CF0A ADD A,(IX+$06) ; add H1 $CF0D LD L,A ; $CF0E LD A,(IY+$03) ; Z2 $CF11 SUB L ; Z2-(Z1+H1) $CF12 JR C,$CF15 ; overlap (C+=1) $CF14 INC C ; no overlap (C+=2) ; Routine at CF15 ; ; Used by the routine at #R$CEDB. @label=loc_CF15 c$CF15 INC C ; ; Y2 ; ; Used by the routine at #R$CEDB. @label=loc_CF16 c$CF16 LD A,(IY+$02) ; $CF19 ADD A,(IY+$05) ; add depth (D2) $CF1C LD L,A ; $CF1D LD A,(IX+$02) ; Y1 $CF20 SUB (IX+$05) ; sub D1 $CF23 SUB L ; Y1-D1-(Y2+d2) $CF24 JR NC,$CF3C ; no overlap (C+=0) $CF26 LD A,(IX+$02) ; Y1 $CF29 ADD A,(IX+$05) ; add D1 $CF2C LD L,A ; $CF2D LD A,(IY+$02) ; Y2 $CF30 SUB (IY+$05) ; sub D2 $CF33 SUB L ; Y2-D2-(Y1+D1) $CF34 LD A,C ; $CF35 JR C,$CF39 ; overlap (C+=3) $CF37 ADD A,$03 ; no overlap (C+=6) ; Routine at CF39 ; ; Used by the routine at #R$CF16. @label=loc_CF39 c$CF39 ADD A,$03 ; $CF3B LD C,A ; ; X2 ; ; Used by the routine at #R$CF16. @label=loc_CF3C c$CF3C LD A,(IY+$01) ; $CF3F ADD A,(IY+$04) ; add width (W2) $CF42 LD L,A ; $CF43 LD A,(IX+$01) ; X1 $CF46 SUB (IX+$04) ; sub W1 $CF49 SUB L ; X1-W1-(X2+W2) $CF4A JR NC,$CF62 ; no overlap (C+=0) $CF4C LD A,(IX+$01) ; X1 $CF4F ADD A,(IX+$04) ; add W1 $CF52 LD L,A ; $CF53 LD A,(IY+$01) ; X2 $CF56 SUB (IY+$04) ; sub W2 $CF59 SUB L ; X2-W2-(X1+W1) $CF5A LD A,C ; $CF5B JR C,$CF5F ; overlap (C+=9) $CF5D ADD A,$09 ; no overlap (c+=18) ; Routine at CF5F ; ; Used by the routine at #R$CF3C. @label=loc_CF5F c$CF5F ADD A,$09 ; $CF61 LD C,A ; ; Routine at CF62 ; ; Used by the routine at #R$CF3C. @label=loc_CF62 c$CF62 LD L,C ; $CF63 LD BC,$CF69 ; {jump table $CF66 JP $AFDB ; } ; Data block at CF69 @label=off_CF69 b$CF69 DEFW $CF9F ; continue_1 $CF6B DEFW $CF9F ; continue_1 $CF6D DEFW $CF9F ; continue_1 $CF6F DEFW $CFA5 ; d_3467121516 $CF71 DEFW $CFA5 ; d_3467121516 $CF73 DEFW $CF9F ; continue_1 $CF75 DEFW $CFA5 ; d_3467121516 $CF77 DEFW $CFA5 ; d_3467121516 $CF79 DEFW $CF9F ; continue_1 $CF7B DEFW $CF9F ; continue_1 $CF7D DEFW $CFA2 ; continue_2 $CF7F DEFW $CFA2 ; continue_2 $CF81 DEFW $CFA5 ; d_3467121516 $CF83 DEFW $CFE1 ; objs_coincide $CF85 DEFW $CFA2 ; continue_2 $CF87 DEFW $CFA5 ; d_3467121516 $CF89 DEFW $CFA5 ; d_3467121516 $CF8B DEFW $CF9F ; continue_1 $CF8D DEFW $CF9F ; continue_1 $CF8F DEFW $CFA2 ; continue_2 $CF91 DEFW $CFA2 ; continue_2 $CF93 DEFW $CF9F ; continue_1 $CF95 DEFW $CFA2 ; continue_2 $CF97 DEFW $CFA2 ; continue_2 $CF99 DEFW $CF9F ; continue_1 $CF9B DEFW $CF9F ; continue_1 $CF9D DEFW $CF9F ; continue_1 ; Routine at CF9F @label=continue_1 c$CF9F JP $CEDB ; ; Routine at CFA2 @label=continue_2 c$CFA2 JP $CEDB ; ; object following obj#2 @label=d_3467121516 c$CFA5 LD HL,($5BCF) ; $CFA8 DEC HL ; ptr obj#2 $CFA9 LD C,(HL) ; index $CFAA LD DE,$D01A ; ; Routine at CFAD @label=loc_CFAD c$CFAD LD A,(DE) ; $CFAE CP $FF ; empty entry? $CFB0 JR Z,$CFB8 ; yes, go $CFB2 CP C ; already listed? $CFB3 JR Z,$CFCE ; yes, go $CFB5 INC DE ; next entry $CFB6 JR $CFAD ; loop ; index ; ; Used by the routine at #R$CFAD. @label=loc_CFB8 c$CFB8 LD A,C ; $CFB9 LD (DE),A ; add to list $CFBA INC DE ; next entry $CFBB LD A,$FF ; $CFBD LD (DE),A ; flag empty $CFBE PUSH IY ; $CFC0 POP IX ; obj#2=obj#1 $CFC2 LD HL,($5BCF) ; object following obj#2 $CFC5 LD ($5BCD),HL ; {set to object following #1 $CFC8 LD DE,$CE8B ; } $CFCB JP $CEDB ; go again ; Routine at CFCE ; ; Used by the routine at #R$CFAD. @label=loc_CFCE c$CFCE LD HL,$CE8B ; ; graphic_no @label=loc_CFD1 c$CFD1 LD A,(HL) ; $CFD2 INC HL ; $CFD3 CP $FF ; end of list? $CFD5 JP Z,$CEC3 ; yes, exit $CFD8 CP C ; what we're looking for? $CFD9 JR NZ,$CFD1 ; {no, loop $CFDB PUSH IY ; } $CFDD POP IX ; obj#2=obj#1 $CFDF JR $D003 ; ; obj#1 graphic no. @label=objs_coincide c$CFE1 LD A,(IX+$00) ; $CFE4 SUB $60 ; $CFE6 CP $07 ; special object? $CFE8 JR NC,$CFF0 ; no, skip $CFEA LD (IX+$00),$BB ; set to twinkle sprite $CFEE JR $CFFD ; ; object #2 graphic no. ; ; Used by the routine at #R$CFE1. @label=loc_CFF0 c$CFF0 LD A,(IY+$00) ; $CFF3 SUB $60 ; $CFF5 CP $07 ; special object? $CFF7 JR NC,$CFFD ; no, skip $CFF9 LD (IY+$00),$BB ; set to twinkle sprite ; continue ; ; Used by the routines at #R$CFE1 and #R$CFF0. @label=loc_CFFD c$CFFD JP $CEDB ; ; Routine at D000 ; ; Used by the routine at #R$CEDB. @label=render_obj_no1 c$D000 LD HL,($5BCD) ; ; back to entry we're searching for ; ; Used by the routine at #R$CFD1. @label=render_obj c$D003 DEC HL ; $D004 SET 7,(HL) ; flag as rendered $D006 LD A,$FF ; $D008 LD ($D01A),A ; {set entry to empty $D00B LD HL,$5BBE ; $D00E INC (HL) ; } $D00F CALL $D704 ; render object to video buffer $D012 JP $CEC3 ; restart processing again ; Routine at D015 ; ; Used by the routine at #R$CEC6. @label=render_done c$D015 POP IY ; $D017 POP IX ; $D019 RET ; ; Data block at D01A @label=render_list b$D01A DEFB $FF $D01B DEFB $FF $D01C DEFB $FF $D01D DEFB $FF $D01E DEFB $FF $D01F DEFB $FF $D020 DEFB $FF $D021 DEFB $FF ; Routine at D022 ; ; Used by the routine at #R$C83E. @label=check_user_input c$D022 LD A,($5BC3) ; $D025 LD C,A ; $D026 LD A,($5BC4) ; $D029 OR C ; $D02A LD C,$00 ; $D02C JP NZ,$D111 ; $D02F LD A,($5BA4) ; $D032 RRCA ; $D033 AND $03 ; keybd/joystick bits only $D035 JP Z,$D0C8 ; $D038 DEC A ; $D039 JR Z,$D077 ; $D03B DEC A ; $D03C JR Z,$D09C ; ; address interface ii joystick @label=interface_ii c$D03E LD A,$F7 ; $D040 CALL $B5F7 ; {read joystick $D043 PUSH BC ; } $D044 LD B,$05 ; 5 bits to read ; Routine at D046 @label=loc_D046 c$D046 RRA ; $D047 RL C ; reverse bit order $D049 DJNZ $D046 ; {loop thru all bits $D04B LD A,C ; $D04C POP BC ; } $D04D LD C,A ; store joystick reading $D04E LD A,$EF ; 0,9,8,7,6 $D050 CALL $B5F7 ; $D053 OR C ; add joystick bits $D054 LD C,$00 ; $D056 BIT 0,A ; 0/left??? $D058 JR Z,$D05C ; $D05A SET 3,C ; ; Routine at D05C ; ; Used by the routine at #R$D046. @label=loc_D05C c$D05C BIT 1,A ; $D05E JR Z,$D062 ; $D060 SET 2,C ; ; Routine at D062 ; ; Used by the routine at #R$D05C. @label=loc_D062 c$D062 BIT 2,A ; $D064 JR Z,$D068 ; $D066 SET 4,C ; ; Routine at D068 ; ; Used by the routine at #R$D062. @label=loc_D068 c$D068 BIT 3,A ; $D06A JR Z,$D06E ; $D06C SET 1,C ; ; Routine at D06E ; ; Used by the routine at #R$D068. @label=loc_D06E c$D06E BIT 4,A ; $D070 JR Z,$D074 ; $D072 SET 0,C ; ; Routine at D074 ; ; Used by the routine at #R$D06E. @label=loc_D074 c$D074 JP $D111 ; ; Routine at D077 ; ; Used by the routine at #R$D022. @label=kempston c$D077 IN A,($1F) ; $D079 LD C,$00 ; $D07B BIT 0,A ; right? $D07D JR Z,$D081 ; $D07F SET 1,C ; flag RIGHT ; left? ; ; Used by the routine at #R$D077. @label=loc_D081 c$D081 BIT 1,A ; $D083 JR Z,$D087 ; $D085 SET 0,C ; flag LEFT ; down? ; ; Used by the routine at #R$D081. @label=loc_D087 c$D087 BIT 2,A ; $D089 JR Z,$D08D ; $D08B SET 4,C ; flag PICKUP/DROP ; up? ; ; Used by the routine at #R$D087. @label=loc_D08D c$D08D BIT 3,A ; $D08F JR Z,$D093 ; $D091 SET 2,C ; flag FORWARD ; fire? ; ; Used by the routine at #R$D08D. @label=loc_D093 c$D093 BIT 4,A ; $D095 JR Z,$D099 ; $D097 SET 3,C ; flag JUMP ; Routine at D099 ; ; Used by the routine at #R$D093. @label=loc_D099 c$D099 JP $D111 ; ; Routine at D09C ; ; Used by the routine at #R$D022. @label=cursor c$D09C LD C,$00 ; $D09E LD A,$F7 ; row 3 $D0A0 CALL $B5F7 ; $D0A3 BIT 4,A ; '5'? $D0A5 JR Z,$D0A9 ; $D0A7 SET 0,C ; ; row 4 ; ; Used by the routine at #R$D09C. @label=loc_D0A9 c$D0A9 LD A,$EF ; 'ï' $D0AB CALL $B5F7 ; $D0AE BIT 0,A ; '0'? $D0B0 JR Z,$D0B4 ; $D0B2 SET 3,C ; ; '7'? ; ; Used by the routine at #R$D0A9. @label=loc_D0B4 c$D0B4 BIT 3,A ; $D0B6 JR Z,$D0BA ; $D0B8 SET 2,C ; ; '8'? ; ; Used by the routine at #R$D0B4. @label=loc_D0BA c$D0BA BIT 2,A ; $D0BC JR Z,$D0C0 ; $D0BE SET 1,C ; ; '6'? ; ; Used by the routine at #R$D0BA. @label=loc_D0C0 c$D0C0 BIT 4,A ; $D0C2 JR Z,$D111 ; $D0C4 SET 4,C ; $D0C6 JR $D111 ; ; row 0 (SHIFT,Z,X,C,V) ; ; Used by the routine at #R$D022. @label=keyboard c$D0C8 LD A,$FE ; $D0CA CALL $B5F7 ; $D0CD RRCA ; $D0CE LD C,A ; $D0CF AND $03 ; $D0D1 SRL C ; $D0D3 SRL C ; $D0D5 OR C ; $D0D6 AND $03 ; $D0D8 LD C,A ; $D0D9 LD A,$7F ; row 7 $D0DB CALL $B5F7 ; $D0DE BIT 1,A ; SYM SHIFT? (right) $D0E0 JR Z,$D0E4 ; no, skip $D0E2 SET 1,C ; flag RIGHT ; 'M'? (left) ; ; Used by the routine at #R$D0C8. @label=loc_D0E4 c$D0E4 BIT 2,A ; $D0E6 JR Z,$D0EA ; no, skip $D0E8 SET 0,C ; flag LEFT ; 'N'? (right) ; ; Used by the routine at #R$D0E4. @label=loc_D0EA c$D0EA BIT 3,A ; $D0EC JR Z,$D0F0 ; no, skip $D0EE SET 1,C ; flag RIGHT ; 'B'? (left) ; ; Used by the routine at #R$D0EA. @label=loc_D0F0 c$D0F0 BIT 4,A ; $D0F2 JR Z,$D0F6 ; $D0F4 SET 0,C ; flag LEFT ; row 1,6 (2nd row) A,S,F,G,G,H,J,K,L,ENTER (FORWARD) ; ; Used by the routine at #R$D0F0. @label=loc_D0F6 c$D0F6 LD A,$BD ; $D0F8 CALL $B5F7 ; $D0FB JR Z,$D0FF ; $D0FD SET 2,C ; flag FORWARD ; row 2,5 (1st row) QWERTYUIOP (JUMP) ; ; Used by the routine at #R$D0F6. @label=loc_D0FF c$D0FF LD A,$DB ; $D101 CALL $B5F7 ; $D104 JR Z,$D108 ; $D106 SET 3,C ; flag JUMP ; row 3,4 (0-9) (PICKUP/DROP) ; ; Used by the routine at #R$D0FF. @label=loc_D108 c$D108 LD A,$E7 ; $D10A CALL $B5F7 ; $D10D JR Z,$D111 ; $D10F SET 4,C ; flag PICKUP/DROP ; (3rd row) SHIFT,Z,X,C,V,SPACE,SYMSHIFT,M,N,B (LEFT/RIGHT) ; ; Used by the routines at #R$D022, #R$D074, #R$D099, #R$D0C0 and #R$D108. @label=finished_input c$D111 LD A,$7E ; $D113 CALL $B5F7 ; $D116 AND $1E ; Z,X,C,V,SYMSHIFT,M,N,B $D118 PUSH BC ; $D119 LD B,A ; $D11A LD A,$99 ; $D11C CALL $B5F7 ; $D11F OR B ; $D120 POP BC ; $D121 JR Z,$D125 ; $D123 SET 5,C ; flag PICKUP/DROP (directional) ; Routine at D125 ; ; Used by the routine at #R$D111. @label=loc_D125 c$D125 LD A,C ; $D126 LD ($5BB5),A ; $D129 RET ; ; Routine at D12A ; ; Used by the routine at #R$AFB7. @label=lose_life c$D12A LD HL,$D161 ; $D12D LD DE,$5C08 ; $D130 PUSH DE ; $D131 POP IX ; $D133 LD BC,$0040 ; 1st 2 entries $D136 LDIR ; copy scratchpad back to object table $D138 XOR A ; $D139 LD ($5BB1),A ; $D13C LD HL,$5BBA ; $D13F DEC (HL) ; decrement life $D140 JP M,$BA22 ; any left? no, exit $D143 LD A,($C44D) ; {sprite index $D146 RRCA ; $D147 RRCA ; $D148 RRCA ; } $D149 AND $20 ; day/night? $D14B LD C,A ; $D14C LD A,(IX+$10) ; plyr graphic no $D14F AND $1F ; $D151 ADD A,C ; legs human/wulf? $D152 LD (IX+$10),A ; $D155 LD A,(IX+$30) ; top half playr graphic no $D158 AND $0F ; $D15A ADD A,C ; $D15B ADD A,$20 ; top half human/wulf $D15D LD (IX+$30),A ; $D160 RET ; ; scratchpad for player sprites/objects @label=plyr_spr_1_scratchpad b$D161 DEFB $00,$00,$00,$00,$00,$00,$00,$00 ; Data block at D169 @label=start_loc_1 b$D169 DEFB $00,$00,$00,$00 ; Data block at D16D @label=flags12_1 b$D16D DEFB $00,$00,$00,$00 ; Data block at D171 @label=byte_D171 b$D171 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $D179 DEFB $00,$00,$00,$00,$00,$00,$00,$00 ; Data block at D181 @label=plyr_spr_2_scratchpad b$D181 DEFB $00,$00,$00,$00,$00,$00,$00,$00 ; Data block at D189 @label=start_loc_2 b$D189 DEFB $00,$00,$00,$00,$00,$00,$00,$00 ; Data block at D191 @label=byte_D191 b$D191 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $D199 DEFB $00,$00,$00,$00,$00,$00,$00,$00 ; Data block at D1A1 @label=plyr_spr_init_data b$D1A1 DEFB $78,$80,$80,$80,$05,$05,$17,$1C $D1A9 DEFB $78,$80,$80,$8C,$05,$05,$00,$1E ; Routine at D1B1 ; ; Used by the routine at #R$AF88. @label=init_start_location c$D1B1 LD HL,$D1A1 ; $D1B4 LD DE,$D161 ; $D1B7 LD BC,$0008 ; $D1BA LDIR ; $D1BC LD DE,$D181 ; $D1BF LD BC,$0008 ; $D1C2 LDIR ; $D1C4 LD A,$12 ; graphic_no (player top half) $D1C6 LD ($D171),A ; plyr_spr_1_scratchpad (byte 16) $D1C9 LD A,$22 ; graphic_no (player bottom half) $D1CB LD ($D191),A ; {plyr_spr_2_scratchpad (byte 16) $D1CE LD A,($5BA0) ; } $D1D1 AND $03 ; random 0-3 $D1D3 LD L,A ; $D1D4 LD H,$00 ; $D1D6 LD BC,$D1E2 ; $D1D9 ADD HL,BC ; offset to random entry $D1DA LD A,(HL) ; start location $D1DB LD ($D169),A ; $D1DE LD ($D189),A ; $D1E1 RET ; ; Data block at D1E2 @label=start_locations b$D1E2 DEFB $2F,$44,$B3,$8F ; Routine at D1E6 ; ; Used by the routine at #R$AFBA. @label=build_screen_objects c$D1E6 LD A,($5BB2) ; $D1E9 AND A ; 1st screen of the game? $D1EA JR Z,$D1EF ; yes, skip updating special objects $D1EC CALL $C591 ; save state in special_objs_tbl ; Routine at D1EF ; ; Used by the routine at #R$D1E6. @label=loc_D1EF c$D1EF CALL $D567 ; $D1F2 CALL $D3C6 ; $D1F5 CALL $C525 ; {find special objects in new room $D1F8 CALL $D320 ; } $D1FB XOR A ; flag not moving $D1FC LD ($5BAF),A ; $D1FF LD ($5BB0),A ; $D202 LD ($5BBD),A ; $D205 LD ($5BBF),A ; $D208 LD A,$01 ; flag rendering of status information $D20A LD ($5BB7),A ; $D20D LD A,($5C10) ; {plyr_spr_1 screen $D210 AND $01 ; $D212 LD ($5BC0),A ; $D215 CALL $D219 ; $D218 RET ; } ; plyr_spr_1_screen ; ; Used by the routine at #R$D1EF. @label=flag_room_visited c$D219 LD A,($5C10) ; $D21C LD C,A ; $D21D RRCA ; $D21E RRCA ; $D21F RRCA ; $D220 AND $1F ; /8 (byte offset) $D222 LD L,A ; $D223 LD H,$00 ; $D225 LD A,C ; $D226 RLCA ; $D227 RLCA ; $D228 RLCA ; $D229 AND $38 ; $D22B OR $C6 ; SET 0,(HL) $D22D LD ($D235),A ; {self-modifying code $D230 LD BC,$5BE8 ; } $D233 ADD HL,BC ; offset to room flag $D234 SET 0,(HL) ; {D235=flag as visited? $D236 RET ; } ; Routine at D237 ; ; Used by the routines at #R$D24C, #R$D255 and #R$D296. @label=transfer_sprite c$D237 LD A,(HL) ; sprite index $D238 INC HL ; $D239 LD (IX+$00),A ; store sprite index $D23C LD A,(HL) ; flags $D23D INC HL ; $D23E LD (IX+$07),A ; store flags $D241 LD A,(HL) ; X $D242 INC HL ; $D243 LD (IX+$1A),A ; pixel X $D246 LD A,(HL) ; Y $D247 INC HL ; $D248 LD (IX+$1B),A ; pixel Y $D24B RET ; ; Routine at D24C ; ; Used by the routines at #R$D255 and #R$D296. @label=transfer_sprite_and_print c$D24C CALL $D237 ; {copy to scratchpad $D24F PUSH HL ; $D250 CALL $D718 ; $D253 POP HL ; $D254 RET ; } ; Routine at D255 ; ; Used by the routine at #R$B03F. @label=display_panel c$D255 LD IX,$BFDB ; $D259 LD HL,$D27E ; $D25C CALL $D237 ; $D25F LD DE,$F810 ; x+=16,y-=8 $D262 LD B,$05 ; 5 sprites $D264 CALL $BEE4 ; $D267 CALL $D24C ; $D26A CALL $D24C ; $D26D CALL $D237 ; $D270 LD DE,$0810 ; x+=16,y+=8 $D273 LD B,$05 ; 5 sprites $D275 CALL $BEE4 ; $D278 CALL $D24C ; $D27B JP $D24C ; ; Data block at D27E @label=panel_data b$D27E DEFB $86,$00,$10,$34 $D282 DEFB $87,$00,$F0,$00 $D286 DEFB $88,$00,$90,$04 $D28A DEFB $86,$40,$A0,$14 $D28E DEFB $87,$40,$00,$00 $D292 DEFB $88,$40,$60,$04 ; Routine at D296 ; ; Used by the routines at #R$BA79 and #R$BEBF. @label=print_border c$D296 LD IX,$BFDB ; $D29A LD HL,$D2CF ; $D29D CALL $D24C ; $D2A0 CALL $D24C ; $D2A3 CALL $D24C ; $D2A6 CALL $D24C ; $D2A9 CALL $D237 ; $D2AC LD DE,$0008 ; X+=8, Y+=0 $D2AF LD B,$18 ; 24 times $D2B1 CALL $BEE4 ; $D2B4 CALL $D237 ; $D2B7 LD B,$18 ; 24 times $D2B9 CALL $BEE4 ; $D2BC CALL $D237 ; $D2BF LD DE,$0100 ; X+=0, Y+=1 $D2C2 LD B,$80 ; 128 times $D2C4 CALL $BEE4 ; $D2C7 CALL $D237 ; $D2CA LD B,$80 ; 128 times $D2CC JP $BEE4 ; ; sprite index, flags, X, Y @label=border_data b$D2CF DEFB $89,$00,$00,$A0 $D2D3 DEFB $89,$40,$E0,$A0 $D2D7 DEFB $89,$C0,$E0,$00 $D2DB DEFB $89,$80,$00,$00 $D2DF DEFB $8B,$00,$20,$A8 $D2E3 DEFB $8B,$00,$20,$00 $D2E7 DEFB $8A,$00,$00,$20 $D2EB DEFB $8A,$00,$E8,$20 ; Routine at D2EF ; ; Used by the routine at #R$B03F. @label=colour_panel c$D2EF XOR A ; $D2F0 LD HL,$5AB6 ; $D2F3 LD BC,$0103 ; 1 bytes, 3 lines $D2F6 CALL $C515 ; $D2F9 LD HL,$5ABD ; $D2FC LD BC,$0103 ; 1 byte, 3 lines $D2FF CALL $C515 ; $D302 LD A,$42 ; 'B' $D304 LD HL,$5A97 ; $D307 LD BC,$0604 ; 6 bytes, 4 lines $D30A JP $C515 ; ; Routine at D30D ; ; Used by the routines at #R$B03F and #R$C3FF. @label=colour_sun_moon c$D30D LD A,($C44D) ; graphic_no $D310 AND $01 ; sun? $D312 LD A,$46 ; attribute $D314 JR Z,$D317 ; {yes, skip $D316 INC A ; } ; attribute memory ; ; Used by the routine at #R$D30D. @label=loc_D317 c$D317 LD HL,$5AB8 ; $D31A LD BC,$0402 ; 4 bytes, 2 lines $D31D JP $C515 ; ; Routine at D320 ; ; Used by the routine at #R$D1EF. @label=adjust_plyr_xyz_for_room_size c$D320 LD A,($5BAB) ; $D323 SUB $02 ; $D325 LD L,A ; $D326 LD A,($5BAC) ; $D329 SUB $02 ; $D32B LD H,A ; $D32C LD A,(IX+$01) ; X $D32F AND A ; 0? $D330 JR Z,$D37F ; yes, go $D332 INC A ; -1? $D333 JR Z,$D36F ; yes, go $D335 LD A,(IX+$02) ; Y $D338 AND A ; 0? $D339 JR Z,$D362 ; yes, go $D33B INC A ; -1? $D33C JR Z,$D33F ; {yes, go $D33E RET ; } ; Routine at D33F ; ; Used by the routine at #R$D320. @label=enter_arch_s c$D33F LD C,$C8 ; $D341 CALL $D38C ; $D344 LD A,$80 ; 128 $D346 SUB H ; sub (room_size_Y-2) $D347 SUB (IX+$05) ; sub depth ; plyr_spr_1 Y ; ; Used by the routine at #R$D362. @label=adjust_plyr_y c$D34A LD (IX+$02),A ; ; set draw plyr_spr_1 ; ; Used by the routine at #R$D37A. @label=copy_spr_1_xy_2 c$D34D SET 4,(IX+$07) ; $D351 SET 4,(IX+$27) ; set draw_plyr_spr_2 $D355 LD A,(IX+$01) ; plyr_spr_1 X $D358 LD (IX+$21),A ; set plyr_spr_2 X $D35B LD A,(IX+$02) ; plyr_spr_1 Y $D35E LD (IX+$22),A ; set plyr_spr_2 Y $D361 RET ; ; Routine at D362 ; ; Used by the routine at #R$D320. @label=enter_arch_n c$D362 LD C,$51 ; $D364 CALL $D38C ; $D367 LD A,H ; room_size_Y-2 $D368 ADD A,$80 ; $D36A ADD A,(IX+$05) ; add depth $D36D JR $D34A ; ; Routine at D36F ; ; Used by the routine at #R$D320. @label=enter_arch_w c$D36F LD C,$AE ; $D371 CALL $D38C ; $D374 LD A,$80 ; $D376 SUB L ; sub (room_size_X-2) $D377 SUB (IX+$04) ; sub width ; Routine at D37A ; ; Used by the routine at #R$D37F. @label=adjust_plyr_x c$D37A LD (IX+$01),A ; $D37D JR $D34D ; ; Routine at D37F ; ; Used by the routine at #R$D320. @label=enter_arch_e c$D37F LD C,$37 ; $D381 CALL $D38C ; $D384 LD A,L ; room_size_X-2 $D385 ADD A,$80 ; add 128 $D387 ADD A,(IX+$04) ; add width $D38A JR $D37A ; ; Routine at D38C ; ; Used by the routines at #R$D33F, #R$D362, #R$D36F and #R$D37F. @label=adjust_plyr_Z_for_arch c$D38C LD IY,$5C88 ; $D390 LD DE,$0040 ; 2 object entries $D393 LD B,$04 ; max 4 arches/location ; graphic no. @label=loc_D395 c$D395 LD A,(IY+$00) ; $D398 CP $06 ; arch? $D39A RET NC ; no, return $D39B LD A,(IY+$01) ; X $D39E ADD A,(IY+$02) ; (X+Y)=pixelY $D3A1 CP C ; match? $D3A2 JR Z,$D3A9 ; yes, adjust player $D3A4 ADD IY,DE ; next object sprite pair $D3A6 DJNZ $D395 ; {loop through all arches $D3A8 RET ; } ; Routine at D3A9 ; ; Used by the routine at #R$D395. @label=adj_plyr_Z c$D3A9 LD A,(IY+$03) ; arch Z $D3AC LD (IX+$03),A ; set player_sprite_1 Z $D3AF ADD A,$0C ; $D3B1 LD (IX+$23),A ; set player_sprite_2 Z $D3B4 RET ; ; Routine at D3B5 ; ; Used by the routines at #R$CEC6, #R$CEDB and #R$D5B2. @label=get_ptr_object c$D3B5 PUSH BC ; $D3B6 AND $7F ; $D3B8 LD L,A ; $D3B9 LD H,$00 ; HL=A $D3BB ADD HL,HL ; x2 $D3BC ADD HL,HL ; x4 $D3BD ADD HL,HL ; x8 $D3BE ADD HL,HL ; x16 $D3BF ADD HL,HL ; x32 $D3C0 LD BC,$5C08 ; base of graphical object table $D3C3 ADD HL,BC ; get table entry $D3C4 POP BC ; $D3C5 RET ; ; Retrieves graphics objects to render screen ; ; - background object sprites, then ; . ; - foreground object sprites ; . ; Populates graphics_object_tbl ; ; Input:IX player object @label=retrieve_screen c$D3C6 LD DE,$5C88 ; $D3C9 LD BC,$6BD1 ; {end of location table $D3CC LD HL,$6251 ; } ; get location ID @label=find_screen c$D3CF LD A,(HL) ; $D3D0 INC HL ; $D3D1 CP (IX+$08) ; same as player (current) screen? $D3D4 JR Z,$D3F0 ; yes, exit $D3D6 LD A,(HL) ; get entry size $D3D7 CALL $D4F2 ; {ptr next entry $D3DA AND A ; } $D3DB SBC HL,BC ; end of location table? $D3DD JR NC,$D3E2 ; {yes, exit $D3DF ADD HL,BC ; } $D3E0 JR $D3CF ; loop ; start of program data ; ; Used by the routines at #R$D3CF, #R$D432 and #R$D4EA. @label=zero_end_of_graphic_objs_tbl c$D3E2 LD HL,$6108 ; $D3E5 AND A ; $D3E6 SBC HL,DE ; done? $D3E8 RET Z ; yes, exit $D3E9 LD B,$20 ; 32 bytes to clear $D3EB CALL $D508 ; $D3EE JR $D3E2 ; ; get entry size ; ; Used by the routine at #R$D3CF. @label=found_screen c$D3F0 LD B,(HL) ; $D3F1 INC HL ; $D3F2 LD A,(HL) ; get attributes $D3F3 AND $07 ; mask off unused bits $D3F5 OR $40 ; bright ON $D3F7 LD ($5BAD),A ; {store $D3FA PUSH DE ; } $D3FB EX DE,HL ; DE=attributes $D3FC LD A,(DE) ; get attributes $D3FD INC DE ; ptr background type $D3FE RRCA ; $D3FF RRCA ; $D400 RRCA ; $D401 AND $1F ; get room size $D403 LD C,A ; C=room size $D404 ADD A,A ; $D405 ADD A,C ; A=room size x3 $D406 LD HL,$6248 ; $D409 CALL $D4F2 ; ptr entry $D40C LD A,(HL) ; room size X $D40D INC HL ; $D40E LD ($5BAB),A ; $D411 LD A,(HL) ; room size Y $D412 INC HL ; $D413 LD ($5BAC),A ; $D416 LD A,(HL) ; room size Z $D417 LD ($5BAE),A ; $D41A DEC B ; $D41B DEC B ; adjust entry size $D41C EX DE,HL ; $D41D POP DE ; ; get background type ; ; Used by the routine at #R$D432. @label=next_bg_obj c$D41E LD A,(HL) ; $D41F INC HL ; next entry $D420 CP $FF ; done all background types? $D422 JR Z,$D44C ; {yes, exit $D424 PUSH BC ; $D425 PUSH HL ; $D426 LD L,A ; $D427 LD H,$00 ; } $D429 ADD HL,HL ; word offset $D42A LD BC,$6CE2 ; $D42D ADD HL,BC ; ptr entry $D42E LD A,(HL) ; $D42F INC HL ; $D430 LD H,(HL) ; $D431 LD L,A ; HL=ptr to background object ; 8 bytes/entry @label=next_bg_obj_sprite c$D432 LD BC,$0008 ; $D435 LDIR ; copy to graphic_object_tbl $D437 LD A,(IX+$08) ; player (current) screen $D43A LD (DE),A ; store $D43B INC DE ; $D43C LD B,$17 ; $D43E CALL $D508 ; {8+1+23 = 32 bytes/entry $D441 LD A,(HL) ; } $D442 AND A ; done object? $D443 JR NZ,$D432 ; {no, loop $D445 POP HL ; $D446 POP BC ; } $D447 DJNZ $D41E ; {done location? no, loop $D449 JP $D3E2 ; } ; adjust bytes remaining ; ; Used by the routine at #R$D41E. @label=find_fg_objs c$D44C DEC B ; $D44D PUSH IY ; $D44F PUSH DE ; graphic object table $D450 POP IY ; IY = graphic object table ; block/count ; ; Used by the routine at #R$D4CD. @label=next_fg_obj c$D452 LD A,(HL) ; $D453 AND $07 ; count $D455 INC A ; adjust to 1-8 $D456 LD C,A ; C = count $D457 LD A,(HL) ; block/count $D458 INC HL ; $D459 DEC B ; adjust bytes remaining $D45A LD D,(HL) ; location (x/y/z) $D45B INC HL ; $D45C PUSH HL ; $D45D RRCA ; $D45E RRCA ; $D45F AND $3E ; block x2 $D461 LD HL,$6BD1 ; $D464 CALL $D4F2 ; {ptr entry $D467 LD A,(HL) ; $D468 INC HL ; $D469 LD H,(HL) ; } $D46A LD L,A ; HL=ptr object ; Routine at D46B ; ; Used by the routine at #R$D4CD. @label=next_fg_obj_in_count c$D46B PUSH HL ; ; sprite ; ; Used by the routine at #R$D4CD. @label=next_fg_obj_sprite c$D46C LD A,(HL) ; $D46D INC HL ; $D46E LD (IY+$00),A ; $D471 LD A,(HL) ; width $D472 INC HL ; $D473 LD (IY+$04),A ; $D476 LD A,(HL) ; depth $D477 INC HL ; $D478 LD (IY+$05),A ; $D47B LD A,(HL) ; height $D47C INC HL ; $D47D LD (IY+$06),A ; $D480 LD A,(HL) ; flags $D481 INC HL ; $D482 LD (IY+$07),A ; $D485 LD A,(IX+$08) ; $D488 LD (IY+$08),A ; $D48B LD A,(HL) ; offsets $D48C RLCA ; $D48D RLCA ; $D48E RLCA ; $D48F AND $08 ; x1 in bit3 $D491 LD E,A ; E=x1*8 $D492 LD A,D ; location (x/y/z) $D493 RLCA ; $D494 RLCA ; $D495 RLCA ; $D496 RLCA ; $D497 AND $70 ; x*16 $D499 ADD A,E ; x*16+x1*8 $D49A ADD A,$48 ; x*16+x1*8+72 $D49C LD (IY+$01),A ; store X $D49F LD A,(HL) ; offsets $D4A0 RLCA ; $D4A1 RLCA ; $D4A2 AND $08 ; y1 in bit3 $D4A4 LD E,A ; E=y1*8 $D4A5 LD A,D ; location (x/y/z) $D4A6 RLCA ; $D4A7 AND $70 ; Y*16 $D4A9 ADD A,E ; Y*16+Y1*8 $D4AA ADD A,$48 ; Y*16+Y1*8+72 $D4AC LD (IY+$02),A ; store Y $D4AF LD A,D ; location (x/y/z) $D4B0 RLCA ; $D4B1 RLCA ; $D4B2 AND $03 ; z $D4B4 ADD A,A ; $D4B5 ADD A,A ; z*4 $D4B6 LD E,A ; $D4B7 ADD A,A ; z*8 $D4B8 ADD A,E ; z*12 $D4B9 ADD A,(HL) ; z*12+z1*4+rubbish $D4BA INC HL ; $D4BB AND $FC ; mask off rubbish bits $D4BD LD E,A ; $D4BE LD A,($5BAE) ; $D4C1 ADD A,E ; z*12+z1*4+room_size_Z $D4C2 LD (IY+$03),A ; store Z $D4C5 PUSH BC ; $D4C6 LD BC,$0009 ; $D4C9 ADD IY,BC ; $D4CB LD B,$17 ; 9+23=32 bytes/entry ; zero byte @label=loc_D4CD c$D4CD LD (IY+$00),$00 ; $D4D1 INC IY ; $D4D3 DJNZ $D4CD ; $D4D5 POP BC ; $D4D6 LD A,(HL) ; next entry $D4D7 AND A ; done? $D4D8 JR NZ,$D46C ; {no, loop $D4DA POP DE ; $D4DB POP HL ; $D4DC DEC B ; $D4DD JR Z,$D4EA ; } $D4DF DEC C ; done count blocks? $D4E0 JP Z,$D452 ; {yes, exit loop $D4E3 LD A,(HL) ; $D4E4 INC HL ; $D4E5 PUSH HL ; $D4E6 EX DE,HL ; $D4E7 LD D,A ; $D4E8 JR $D46B ; } ; Routine at D4EA ; ; Used by the routine at #R$D4CD. @label=loc_D4EA c$D4EA PUSH IY ; $D4EC POP DE ; $D4ED POP IY ; $D4EF JP $D3E2 ; ; Routine at D4F2 ; ; Used by the routines at #R$B2DA, #R$C274, #R$C3A4, #R$D3CF, #R$D3F0, #R$D452, #R$D865 and #R$D88D. @label=add_HL_A c$D4F2 ADD A,L ; $D4F3 LD L,A ; $D4F4 LD A,H ; $D4F5 ADC A,$00 ; $D4F7 LD H,A ; $D4F8 RET ; ; Routine at D4F9 ; ; Used by the routine at #R$D865. @label=HL_equals_DE_x_A c$D4F9 PUSH BC ; $D4FA LD HL,$0000 ; $D4FD LD B,$08 ; ; Routine at D4FF ; ; Used by the routine at #R$D504. @label=loc_D4FF c$D4FF ADD HL,HL ; $D500 RLCA ; $D501 JR NC,$D504 ; $D503 ADD HL,DE ; ; Routine at D504 ; ; Used by the routine at #R$D4FF. @label=loc_D504 c$D504 DJNZ $D4FF ; $D506 POP BC ; $D507 RET ; ; Routine at D508 ; ; Used by the routines at #R$C12B, #R$C530, #R$C583, #R$D3E2 and #R$D432. @label=zero_DE c$D508 XOR A ; ; Routine at D509 ; ; Used by the routine at #R$BC7A. @label=fill_DE c$D509 LD (DE),A ; $D50A INC DE ; $D50B DJNZ $D509 ; $D50D RET ; ; Routine at D50E ; ; Used by the routine at #R$B000. @label=handle_pause c$D50E LD A,$7E ; SPACE,SYMSHIFT,M,N,B $D510 CALL $B5F7 ; $D513 BIT 0,A ; SPACE? $D515 RET Z ; no, exit $D516 AND $1E ; any other key? $D518 RET NZ ; yes, exit ; Routine at D519 @label=debounce_space_press c$D519 LD A,$7E ; $D51B CALL $B5F7 ; $D51E BIT 0,A ; SPACE? $D520 JR NZ,$D519 ; {yes, loop $D522 CALL $B4A8 ; } ; Routine at D525 @label=wait_for_space c$D525 LD A,$7E ; $D527 CALL $B5F7 ; $D52A BIT 0,A ; SPACE? $D52C JR Z,$D525 ; no, loop ; Routine at D52E @label=debounce_space_release c$D52E LD A,$7E ; $D530 CALL $B5F7 ; $D533 BIT 0,A ; SPACE? $D535 JR NZ,$D52E ; {no, loop $D537 JP $B4A8 ; } ; Routine at D53A ; ; Used by the routines at #R$AF6C, #R$AF7F, #R$D544 and #R$D567. @label=clr_mem c$D53A LD E,$00 ; ; zero location ; ; Used by the routines at #R$D54C and #R$D556. @label=clr_byte c$D53C LD (HL),E ; $D53D INC HL ; next location $D53E DEC BC ; $D53F LD A,B ; $D540 OR C ; done? $D541 JR NZ,$D53C ; {no, loop $D543 RET ; } ; screen memory ; ; Used by the routine at #R$D55F. @label=clr_bitmap_memory c$D544 LD HL,$4000 ; $D547 LD BC,$1800 ; # bytes to clear $D54A JR $D53A ; ; Routine at D54C ; ; Used by the routine at #R$D55F. @label=clr_attribute_memory c$D54C LD HL,$5800 ; colour data $D54F LD BC,$0300 ; # bytes to clear $D552 LD E,$46 ; bright yellow on black $D554 JR $D53C ; ; Routine at D556 ; ; Used by the routine at #R$B03F. @label=fill_attr c$D556 LD HL,$5800 ; colour data $D559 LD BC,$0300 ; # bytes to clear $D55C LD E,A ; attribute to set $D55D JR $D53C ; fill ; Routine at D55F ; ; Used by the routines at #R$AF88, #R$BA29 and #R$BAAB. @label=clear_scrn c$D55F XOR A ; border colour BLACK, activate MIC $D560 OUT ($FE),A ; ULA $D562 CALL $D54C ; $D565 JR $D544 ; ; Routine at D567 ; ; Used by the routines at #R$BA29, #R$BAAB, #R$BD15 and #R$D1EF. @label=clear_scrn_buffer c$D567 LD BC,$1800 ; # bytes to clear $D56A LD HL,$D8F3 ; {screen buffer $D56D JR $D53A ; } ; copies from screen buffer to video memory ; ; Used by the routines at #R$B03F, #R$BA79 and #R$BEBF. @label=update_screen c$D56F LD HL,$D8F3 ; screen buffer $D572 LD DE,$57E0 ; last line of attribute memory $D575 LD BC,$20C0 ; B=32 bytes, C=192 lines ; Routine at D578 ; ; Used by the routine at #R$D59A. @label=loc_D578 c$D578 PUSH BC ; $D579 PUSH DE ; $D57A PUSH HL ; ; source byte @label=loc_D57B c$D57B LD A,(HL) ; $D57C LD (DE),A ; copy to destination $D57D LD (HL),$00 ; wipe source byte $D57F INC HL ; next source location $D580 INC E ; next destination location $D581 DJNZ $D57B ; loop for a line $D583 POP HL ; source - start of line $D584 LD BC,$0020 ; $D587 ADD HL,BC ; next line $D588 POP DE ; last line of attribute memory $D589 DEC D ; $D58A LD A,D ; $D58B CPL ; $D58C AND $07 ; $D58E JR NZ,$D59A ; $D590 LD A,E ; $D591 SUB $20 ; $D593 LD E,A ; $D594 JR C,$D59A ; $D596 LD A,D ; $D597 ADD A,$08 ; $D599 LD D,A ; add 2K ; byte, line counter ; ; Used by the routine at #R$D57B. @label=loc_D59A c$D59A POP BC ; $D59B DEC C ; dec line counter $D59C JR NZ,$D578 ; {loop through all lines $D59E RET ; } ; Routine at D59F ; ; Used by the routine at #R$B000. @label=render_dynamic_objects c$D59F XOR A ; $D5A0 LD ($5BA8),A ; {zero count of wiped objects $D5A3 PUSH IX ; $D5A5 LD A,($5BB7) ; } $D5A8 AND A ; initial rendering? $D5A9 JP NZ,$D653 ; {yes, no need to wipe anything $D5AC LD HL,$CE8B ; } $D5AF LD ($5BCB),HL ; temp storage ; Routine at D5B2 ; ; Used by the routines at #R$D61C and #R$D62C. @label=wipe_next_object c$D5B2 LD HL,($5BCB) ; $D5B5 LD A,(HL) ; object index $D5B6 INC HL ; next list entry $D5B7 LD ($5BCB),HL ; store $D5BA CP $FF ; end of list? $D5BC JP Z,$D653 ; {yes, skip $D5BF CALL $D3B5 ; $D5C2 PUSH HL ; $D5C3 POP IX ; } $D5C5 BIT 5,(IX+$07) ; wipe flag? $D5C9 JR Z,$D5B2 ; no, go $D5CB RES 5,(IX+$07) ; clear wipe flag $D5CF LD A,(IX+$1A) ; pixel X $D5D2 SUB (IX+$1E) ; old pixel X $D5D5 JP C,$D649 ; $D5D8 LD C,(IX+$1E) ; old pixel X ; old pixel X ; ; Used by the routine at #R$D649. @label=loc_D5DB c$D5DB LD A,(IX+$1E) ; $D5DE RRCA ; $D5DF RRCA ; $D5E0 RRCA ; $D5E1 AND $1F ; old pixel X byte address $D5E3 ADD A,(IX+$1C) ; old data width (bytes) $D5E6 LD E,A ; $D5E7 LD A,(IX+$1A) ; pixel X $D5EA RRCA ; $D5EB RRCA ; $D5EC RRCA ; $D5ED AND $1F ; pixel X byte address $D5EF ADD A,(IX+$18) ; data width (bytes) $D5F2 CP E ; $D5F3 JR C,$D5F6 ; $D5F5 LD E,A ; ; Routine at D5F6 ; ; Used by the routine at #R$D5DB. @label=loc_D5F6 c$D5F6 LD A,C ; $D5F7 RRCA ; $D5F8 RRCA ; $D5F9 RRCA ; $D5FA AND $1F ; old/pixel X byte address $D5FC LD B,A ; $D5FD LD A,E ; $D5FE SUB B ; $D5FF LD H,A ; H=number of bytes to wipe $D600 LD A,(IX+$1B) ; pixel Y $D603 SUB (IX+$1F) ; pixel Y < old pixel Y? $D606 JR C,$D64E ; yes, go $D608 LD B,(IX+$1F) ; old pixel Y ; old pixel Y ; ; Used by the routine at #R$D64E. @label=loc_D60B c$D60B LD A,(IX+$1F) ; $D60E ADD A,(IX+$1D) ; old data height (lines) $D611 LD E,A ; $D612 LD A,(IX+$1B) ; pixel Y $D615 ADD A,(IX+$19) ; data height (lines) $D618 CP E ; $D619 JR NC,$D61C ; $D61B LD A,E ; ; Routine at D61C ; ; Used by the routine at #R$D60B. @label=loc_D61C c$D61C SUB B ; $D61D LD L,A ; $D61E LD A,B ; $D61F CP $C0 ; off bottom of screen? $D621 JR NC,$D5B2 ; {yes, go $D623 ADD A,L ; $D624 SUB $C0 ; $D626 JR C,$D62C ; $D628 NEG ; $D62A ADD A,L ; $D62B LD L,A ; } ; Routine at D62C ; ; Used by the routine at #R$D61C. @label=loc_D62C c$D62C CALL $D826 ; $D62F CALL $D811 ; {in BC $D632 LD A,L ; $D633 LD L,C ; $D634 LD C,A ; $D635 LD A,H ; $D636 LD H,B ; } $D637 LD B,A ; swap HL & BC $D638 LD A,($5BA8) ; $D63B INC A ; $D63C LD ($5BA8),A ; $D63F PUSH BC ; $D640 PUSH DE ; $D641 PUSH HL ; screen buffer address $D642 XOR A ; wipe sprite $D643 CALL $C515 ; $D646 JP $D5B2 ; ; pixel X ; ; Used by the routine at #R$D5B2. @label=loc_D649 c$D649 LD C,(IX+$1A) ; $D64C JR $D5DB ; ; pixel Y ; ; Used by the routine at #R$D5F6. @label=loc_D64E c$D64E LD B,(IX+$1B) ; $D651 JR $D60B ; ; Routine at D653 ; ; Used by the routines at #R$D59F and #R$D5B2. @label=loc_D653 c$D653 CALL $CEBB ; $D656 CALL $C397 ; $D659 CALL $BF45 ; $D65C LD HL,$5BA8 ; $D65F LD A,($5BBE) ; $D662 ADD A,(HL) ; add the number of wipes $D663 LD ($5BBE),A ; ; Routine at D666 @label=loc_D666 c$D666 LD HL,$5BA8 ; $D669 LD A,(HL) ; $D66A AND A ; done all wipes? $D66B JR Z,$D679 ; {yes, exit $D66D DEC (HL) ; } $D66E POP HL ; source $D66F POP DE ; destination $D670 POP BC ; $D671 LD A,B ; $D672 LD B,C ; lines $D673 LD C,A ; bytes/line $D674 CALL $D67C ; $D677 JR $D666 ; loop ; Routine at D679 ; ; Used by the routine at #R$D666. @label=loc_D679 c$D679 POP IX ; $D67B RET ; ; Blit to Screen ; ; Input:HL source DE destination B lines C bytes/line @label=blit_to_screen c$D67C PUSH BC ; $D67D PUSH DE ; $D67E PUSH HL ; $D67F LD B,$00 ; $D681 LDIR ; $D683 POP HL ; $D684 LD DE,$0020 ; $D687 ADD HL,DE ; next line $D688 POP DE ; $D689 DEC D ; $D68A LD A,D ; $D68B CPL ; $D68C AND $07 ; $D68E JR NZ,$D69A ; $D690 LD A,E ; $D691 SUB $20 ; $D693 LD E,A ; $D694 JR C,$D69A ; $D696 LD A,D ; $D697 ADD A,$08 ; $D699 LD D,A ; ; done all lines? ; ; Used by the routine at #R$D67C. @label=loc_D69A c$D69A POP BC ; $D69B DJNZ $D67C ; {no, loop $D69D RET ; } ; Build a look-up table of values shifted left 1-7 bits $F200-$FFFF ; ; Used by the routine at #R$AF88. @label=build_lookup_tbls c$D69E LD L,$00 ; ; Routine at D6A0 ; ; Used by the routine at #R$D6A7. @label=loc_D6A0 c$D6A0 LD D,$00 ; $D6A2 LD E,L ; $D6A3 LD H,$FF ; $D6A5 LD B,$07 ; ; Routine at D6A7 @label=loc_D6A7 c$D6A7 SLA E ; $D6A9 RL D ; $D6AB LD A,E ; $D6AC CPL ; $D6AD LD (HL),A ; $D6AE DEC H ; $D6AF LD A,D ; $D6B0 CPL ; $D6B1 LD (HL),A ; $D6B2 DEC H ; $D6B3 DJNZ $D6A7 ; $D6B5 INC L ; $D6B6 JR NZ,$D6A0 ; ; Build a look-up table of bit-reversed bytes $D6B8 LD HL,$F100 ; ; byte offset from $F100 ; ; Used by the routine at #R$D6BE. @label=loc_D6BB c$D6BB LD D,L ; $D6BC LD B,$08 ; 8 bits ; Routine at D6BE @label=loc_D6BE c$D6BE SRL D ; $D6C0 RL E ; reverse bits $D6C2 DJNZ $D6BE ; loop all bits $D6C4 LD (HL),E ; store $D6C5 INC L ; next index/location $D6C6 JR NZ,$D6BB ; {loop 256 bytes $D6C8 RET ; } ; Routine at D6C9 ; ; Used by the routines at #R$C0DD, #R$CD33 and #R$D710. @label=calc_pixel_XY c$D6C9 LD A,(IX+$01) ; X $D6CC ADD A,(IX+$02) ; add Y $D6CF SUB $80 ; $D6D1 ADD A,(IX+$12) ; add pixel_x_adj $D6D4 LD (IX+$1A),A ; pixel X $D6D7 LD A,(IX+$02) ; Y $D6DA SUB (IX+$01) ; subtract X $D6DD ADD A,$80 ; $D6DF SRL A ; $D6E1 ADD A,(IX+$03) ; Z $D6E4 SUB $68 ; $D6E6 ADD A,(IX+$13) ; pixel_y_adj $D6E9 LD (IX+$1B),A ; pixel Y $D6EC CP $C0 ; bottom line of screen? $D6EE RET ; ; Flips sprite data (H,V) if required in-place ; ; Used by the routines at #R$CD33 and #R$D718. @label=flip_sprite c$D6EF LD L,(IX+$00) ; sprite index $D6F2 LD H,$00 ; $D6F4 ADD HL,HL ; word offset $D6F5 LD BC,$7112 ; $D6F8 ADD HL,BC ; sprite table entry $D6F9 LD E,(HL) ; $D6FA INC HL ; $D6FB LD D,(HL) ; DE = sprite address $D6FC LD A,(DE) ; width $D6FD AND A ; null sprite? $D6FE JP NZ,$D865 ; {no, skip $D701 INC SP ; } $D702 INC SP ; exit from caller $D703 RET ; ; Routine at D704 ; ; Used by the routine at #R$D003. @label=calc_pixel_XY_and_render c$D704 LD A,(IX+$00) ; graphic no. $D707 CP $01 ; flagged as ??? $D709 JR NZ,$D710 ; no, continue $D70B LD (IX+$00),$00 ; set to null $D70F RET ; ; flag don't draw ; ; Used by the routine at #R$D704. @label=loc_D710 c$D710 RES 4,(IX+$07) ; $D714 CALL $D6C9 ; $D717 RET NC ; off bottom of screen, skip ; Routine at D718 ; ; Used by the routines at #R$BC7A, #R$BEE4, #R$BF59, #R$C3C3 and #R$D24C. @label=print_sprite c$D718 CALL $D6EF ; $D71B LD A,(IX+$1A) ; pixel X $D71E AND $07 ; bit offset? $D720 JR Z,$D76F ; {no, skip $D722 RLCA ; $D723 AND $0E ; $D725 OR $F0 ; $D727 LD H,A ; $D728 LD A,(DE) ; $D729 INC DE ; $D72A AND $07 ; $D72C INC A ; $D72D LD B,A ; } $D72E LD (IX+$18),A ; width_bytes $D731 DEC A ; $D732 AND $07 ; $D734 ADD A,A ; $D735 ADD A,A ; $D736 ADD A,A ; $D737 ADD A,A ; $D738 NEG ; $D73A ADD A,$50 ; ; self-modifying code ; ; Used by the routine at #R$D76F. @label=loc_D73C c$D73C LD ($D7AD),A ; $D73F LD A,B ; $D740 CPL ; $D741 ADD A,$22 ; $D743 LD ($D801),A ; $D746 LD A,(DE) ; $D747 INC DE ; $D748 LD (IX+$19),A ; height_lines $D74B ADD A,(IX+$1B) ; $D74E SUB $C0 ; off bottom of screen? $D750 JR C,$D75A ; {no, skip $D752 NEG ; } $D754 ADD A,(IX+$19) ; +height_lines $D757 LD (IX+$19),A ; store height_lines ; pixel X ; ; Used by the routine at #R$D73C. @label=loc_D75A c$D75A LD C,(IX+$1A) ; $D75D LD B,(IX+$1B) ; pixel Y $D760 CALL $D811 ; $D763 LD ($5BA9),SP ; $D767 EX DE,HL ; $D768 LD SP,HL ; $D769 EX DE,HL ; $D76A LD A,(IX+$19) ; height_lines $D76D JR $D7AA ; ; Routine at D76F ; ; Used by the routine at #R$D718. @label=loc_D76F c$D76F LD A,(DE) ; $D770 INC DE ; $D771 AND $0F ; $D773 LD (IX+$18),A ; width_bytes $D776 LD B,A ; $D777 ADD A,A ; $D778 ADD A,A ; $D779 ADD A,A ; $D77A NEG ; $D77C SUB $06 ; $D77E JR $D73C ; $D780 POP DE ; $D781 LD A,(BC) ; $D782 CPL ; $D783 OR E ; $D784 CPL ; $D785 OR D ; $D786 LD (BC),A ; $D787 INC BC ; $D788 POP DE ; $D789 LD A,(BC) ; $D78A CPL ; $D78B OR E ; $D78C CPL ; $D78D OR D ; $D78E LD (BC),A ; $D78F INC BC ; ; Routine at D790 ; ; Used by the routine at #R$D7AC. @label=loc_D790 c$D790 POP DE ; $D791 LD A,(BC) ; $D792 CPL ; $D793 OR E ; $D794 CPL ; $D795 OR D ; $D796 LD (BC),A ; $D797 INC BC ; $D798 POP DE ; $D799 LD A,(BC) ; $D79A CPL ; $D79B OR E ; $D79C CPL ; $D79D OR D ; $D79E LD (BC),A ; $D79F INC BC ; $D7A0 POP DE ; $D7A1 LD A,(BC) ; $D7A2 CPL ; $D7A3 OR E ; $D7A4 CPL ; $D7A5 OR D ; $D7A6 LD (BC),A ; $D7A7 JP $D7FF ; ; Routine at D7AA ; ; Used by the routines at #R$D75A and #R$D800. @label=loc_D7AA c$D7AA EX AF,AF' ; $D7AB LD A,(BC) ; ; patched @label=loc_D7AC c$D7AC JR $D790 ; $D7AE POP DE ; $D7AF LD L,E ; $D7B0 AND (HL) ; $D7B1 LD L,D ; $D7B2 XOR (HL) ; $D7B3 CPL ; $D7B4 LD (BC),A ; $D7B5 INC BC ; $D7B6 INC H ; $D7B7 LD L,E ; $D7B8 LD A,(BC) ; $D7B9 AND (HL) ; $D7BA LD L,D ; $D7BB XOR (HL) ; $D7BC CPL ; $D7BD DEC H ; $D7BE POP DE ; $D7BF LD L,E ; $D7C0 AND (HL) ; $D7C1 LD L,D ; $D7C2 XOR (HL) ; $D7C3 CPL ; $D7C4 LD (BC),A ; $D7C5 INC BC ; $D7C6 INC H ; $D7C7 LD L,E ; $D7C8 LD A,(BC) ; $D7C9 AND (HL) ; $D7CA LD L,D ; $D7CB XOR (HL) ; $D7CC CPL ; $D7CD DEC H ; $D7CE POP DE ; $D7CF LD L,E ; $D7D0 AND (HL) ; $D7D1 LD L,D ; $D7D2 XOR (HL) ; $D7D3 CPL ; $D7D4 LD (BC),A ; $D7D5 INC BC ; $D7D6 INC H ; $D7D7 LD L,E ; $D7D8 LD A,(BC) ; $D7D9 AND (HL) ; $D7DA LD L,D ; $D7DB XOR (HL) ; $D7DC CPL ; $D7DD DEC H ; $D7DE POP DE ; $D7DF LD L,E ; $D7E0 AND (HL) ; $D7E1 LD L,D ; $D7E2 XOR (HL) ; $D7E3 CPL ; $D7E4 LD (BC),A ; $D7E5 INC BC ; $D7E6 INC H ; $D7E7 LD L,E ; $D7E8 LD A,(BC) ; $D7E9 AND (HL) ; $D7EA LD L,D ; $D7EB XOR (HL) ; $D7EC CPL ; $D7ED DEC H ; $D7EE POP DE ; $D7EF LD L,E ; $D7F0 AND (HL) ; $D7F1 LD L,D ; $D7F2 XOR (HL) ; $D7F3 CPL ; $D7F4 LD (BC),A ; $D7F5 INC BC ; $D7F6 INC H ; $D7F7 LD L,E ; $D7F8 LD A,(BC) ; $D7F9 AND (HL) ; $D7FA LD L,D ; $D7FB XOR (HL) ; $D7FC CPL ; $D7FD DEC H ; $D7FE LD (BC),A ; ; Routine at D7FF ; ; Used by the routine at #R$D790. @label=loc_D7FF c$D7FF LD A,C ; ; patched @label=loc_D800 c$D800 ADD A,$1E ; $D802 LD C,A ; $D803 LD A,B ; $D804 ADC A,$00 ; $D806 LD B,A ; $D807 EX AF,AF' ; $D808 DEC A ; $D809 JP NZ,$D7AA ; $D80C LD SP,($5BA9) ; $D810 RET ; ; Routine at D811 ; ; Used by the routines at #R$BE31, #R$BE4C, #R$BF59, #R$BF91, #R$C432, #R$D62C and #R$D75A. @label=calc_vidbuf_addr c$D811 PUSH HL ; $D812 SRL B ; $D814 RR C ; $D816 SRL B ; $D818 RR C ; $D81A SRL B ; $D81C RR C ; $D81E LD HL,$D8F3 ; bitmap buffer $D821 ADD HL,BC ; calculate bitmap memory address $D822 LD C,L ; $D823 LD B,H ; BC = bitmap memory address $D824 POP HL ; $D825 RET ; ; Routine at D826 ; ; Used by the routines at #R$BF91, #R$C432 and #R$D62C. @label=calc_vram_addr c$D826 LD A,C ; $D827 RRCA ; $D828 RRCA ; $D829 RRCA ; $D82A AND $1F ; $D82C LD E,A ; $D82D LD A,B ; $D82E CPL ; $D82F AND $07 ; $D831 EX AF,AF' ; $D832 LD A,B ; $D833 CPL ; $D834 RLCA ; $D835 RLCA ; $D836 AND $E0 ; $D838 OR E ; $D839 LD E,A ; $D83A LD A,B ; $D83B CPL ; $D83C RRCA ; $D83D RRCA ; $D83E RRCA ; $D83F AND $18 ; $D841 LD D,A ; $D842 EX AF,AF' ; $D843 OR D ; $D844 ADD A,$38 ; $D846 LD D,A ; $D847 RET ; ; Routine at D848 ; ; Used by the routines at #R$BE56 and #R$BF91. @label=calc_attrib_addr c$D848 PUSH HL ; $D849 LD A,H ; $D84A CPL ; $D84B LD H,A ; $D84C SRL H ; $D84E SRL H ; $D850 SRL H ; $D852 SRL H ; $D854 RR L ; $D856 SRL H ; $D858 RR L ; $D85A SRL H ; $D85C RR L ; $D85E LD DE,$5700 ; $D861 ADD HL,DE ; $D862 EX DE,HL ; $D863 POP HL ; $D864 RET ; ; flip sprite ; ; Input:DE sprite data address @label=vflip_sprite_data c$D865 PUSH DE ; $D866 LD A,(DE) ; width $D867 XOR (IX+$07) ; same Vflip as stored? $D86A AND $80 ; $D86C JR Z,$D8A2 ; yes, skip $D86E LD A,(DE) ; width $D86F XOR $80 ; toggle Vflip $D871 LD (DE),A ; store updated flag $D872 RLCA ; *2 $D873 AND $1E ; $D875 LD B,A ; B = width x 2 (data+mask) $D876 INC DE ; $D877 LD A,(DE) ; height $D878 LD C,A ; $D879 INC DE ; sprite data $D87A PUSH DE ; $D87B LD E,B ; $D87C LD D,$00 ; DE = width x 2 $D87E CALL $D4F9 ; HL = width x 2 x height $D881 POP DE ; sprite data $D882 ADD HL,DE ; skip sprite data (including mask bytes) $D883 EX DE,HL ; DE=end of sprite data, HL=sprite data $D884 LD A,B ; width x 2 $D885 CALL $D4F2 ; HL=sprite data + width x 2 $D888 DEC DE ; last byte of sprite data $D889 DEC HL ; (height+1) x width x 2 - 1 $D88A SRL C ; height / 2 ; B=widthx2, C=height/2 ; ; Used by the routine at #R$D88D. @label=loc_D88C c$D88C PUSH BC ; ; sprite data byte from end @label=vflip_sprite_line_pair c$D88D LD A,(DE) ; $D88E LD C,(HL) ; sprite data from start $D88F LD (HL),A ; store end data at start $D890 LD A,C ; $D891 LD (DE),A ; store start data at end $D892 DEC HL ; next start byte $D893 DEC DE ; next end byte $D894 DJNZ $D88D ; {flip sprite and mask data for line pair $D896 POP BC ; $D897 LD A,B ; $D898 CALL $D4F2 ; $D89B LD A,B ; } $D89C CALL $D4F2 ; next line $D89F DEC C ; done all lines? $D8A0 JR NZ,$D88C ; no, loop ; sprite data address ; ; Used by the routine at #R$D865. @label=loc_D8A2 c$D8A2 POP DE ; $D8A3 PUSH DE ; $D8A4 LD A,(DE) ; width (bytes) $D8A5 XOR (IX+$07) ; same Hflip as stored? $D8A8 AND $40 ; $D8AA JR Z,$D8DC ; yes, skip $D8AC LD A,(DE) ; width $D8AD XOR $40 ; toggle Hflip flag $D8AF LD (DE),A ; store updated flag $D8B0 AND $0F ; width $D8B2 LD B,A ; $D8B3 LD C,A ; $D8B4 INC DE ; $D8B5 LD A,(DE) ; height $D8B6 EX AF,AF' ; $D8B7 INC DE ; sprite data $D8B8 EX DE,HL ; HL=sprite data $D8B9 PUSH HL ; $D8BA EXX ; $D8BB POP HL ; HL'=sprite data $D8BC LD B,$F1 ; $D8BE EXX ; ; Routine at D8BF ; ; Used by the routine at #R$D8CD. @label=loc_D8BF c$D8BF EXX ; $D8C0 LD C,(HL) ; sprite data byte $D8C1 LD A,(BC) ; $D8C2 LD E,A ; $D8C3 INC HL ; $D8C4 LD C,(HL) ; $D8C5 LD A,(BC) ; $D8C6 LD D,A ; $D8C7 INC HL ; $D8C8 PUSH DE ; $D8C9 EXX ; $D8CA DJNZ $D8BF ; $D8CC LD B,C ; ; Routine at D8CD @label=loc_D8CD c$D8CD POP DE ; $D8CE LD (HL),E ; $D8CF INC HL ; $D8D0 LD (HL),D ; $D8D1 INC HL ; $D8D2 DJNZ $D8CD ; $D8D4 EX AF,AF' ; $D8D5 DEC A ; $D8D6 JR Z,$D8DC ; $D8D8 EX AF,AF' ; $D8D9 LD B,C ; $D8DA JR $D8BF ; ; Routine at D8DC ; ; Used by the routines at #R$D8A2 and #R$D8CD. @label=loc_D8DC c$D8DC POP DE ; $D8DD RET ; ; Data block at D8DE @label=aCopyright1984A_c_g_ b$D8DE DEFM "COPYRIGHT 1984 A.C.G." @label=vidbuf i$D8F3 ; Unused i$F0F3 @label=bits_lookup_table i$F100 ; Data block at FFFF b$FFFF DEFB $01