felixnardella

At The Station

Oct 19th, 2025 (edited)
2,298
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
6502 TASM/64TASS 52.98 KB | Source Code | 0 0
  1. ; ================================================================
  2. ; AT THE STATION - Commodore 64 One File Demo
  3. ; ================================================================
  4. ; FlashParty 2025 - 3rd Place in "Mixed Demo" Category
  5. ; https://flashparty.rebelion.digital/
  6. ;
  7. ; Credits:
  8. ;   Code & Graphics: Kimono (Felice Nardella)
  9. ;   Music: Manganoid (Zack Maxis) - SID: "Beli_Jablane"
  10. ;   Group: Hokuto Force
  11. ;
  12. ; Assembly: 64tass (https://sourceforge.net/projects/tass64/)
  13. ; Compile: 64tass -a atthestation.asm -o atthestation.prg
  14. ; Download: https://csdb.dk/release/?id=256787
  15. ;
  16. ; Description:
  17. ;   A demo featuring a spiral intro animation, text messages,
  18. ;   animated escalator effect with sprites, and horizontal
  19. ;   scrolling synchronized with raster interrupts.
  20. ;
  21. ; Note:
  22. ;   The horizontal text scrolling routine is based on
  23. ;   Attilio Capuozzo's original code and ideas.
  24. ; ================================================================
  25.  
  26.  
  27. * = $c000
  28.  
  29. ; ================================================================
  30. ; CONSTANTS
  31. ; ================================================================
  32. VIC_BASE = $d000              ; VIC-II Base Address (53248)
  33.  
  34. SPR_PTR = $07f8               ; Sprite 0 pointer address (2040)
  35. SPR_PTR1 = $07f9              ; Sprite 1 pointer address (2041)
  36. SPR_PTR2 = $07fa              ; Sprite 2 pointer address (2042)
  37. SPR_PTR3 = $07fb              ; Sprite 3 pointer address (2043)
  38. SPR_PTR4 = $07fc              ; Sprite 4 pointer address (2044)
  39. SPR_PTR5 = $07fd              ; Sprite 5 pointer address (2045)
  40. SPR_PTR6 = $07fe              ; Sprite 6 pointer address (2046)
  41.  
  42. NMIRoutine = $fec1            ; Address of default NMI Handler last instruction (RTI)
  43.  
  44. ; Raster line variables
  45. rast_1 = $80                  ; First raster interrupt line
  46. rast_2 = $bc                  ; Second raster interrupt line (188)
  47.  
  48. ; Pointer variables
  49. src_ptr = $02                 ; Pointer to source table
  50. dest_ptr = $2a                ; Pointer to screen destination
  51.  
  52. ; ================================================================
  53. ; SPIRAL INTRO ANIMATION
  54. ; ================================================================
  55.  
  56.         ; Initialize b, w, z variables
  57.         lda #39
  58.         sta $50         ; b = 39 (right boundary)
  59.         lda #0
  60.         sta $51         ; w = 0 (top boundary)
  61.         lda #24
  62.         sta $52         ; z = 24 (bottom boundary)
  63.  
  64.         ; Set border color to black
  65.         lda #0
  66.         sta $d020
  67.  
  68.         ; Initialize loop counter a = 0
  69.         lda #0
  70.         sta $53
  71.  
  72. ; --------------------------------------------------------
  73. ; Main loop: for a = 0 to 12
  74. ; --------------------------------------------------------
  75. loop_a:
  76.         lda $53
  77.         cmp #13
  78.         bcs done_a
  79.  
  80.         ; --- Loop 1: r = w; for c = a to b
  81.         ; Draw horizontal line across top
  82.         lda $51
  83.         sta $54         ; r = w
  84.         lda $53
  85.         sta $55         ; c = a
  86.  
  87. loop_c1:
  88.         jsr poke_char
  89.         jsr delay_frame
  90.         lda $55
  91.         cmp $50         ; Compare c with b
  92.         beq after_c1
  93.         inc $55
  94.         jmp loop_c1
  95. after_c1:
  96.  
  97.         ; --- Loop 2: c = b; for r = w to z
  98.         ; Draw vertical line down right side
  99.         lda $50
  100.         sta $55         ; c = b
  101.         lda $51
  102.         sta $54         ; r = w
  103.  
  104. loop_r2:
  105.         jsr poke_char
  106.         jsr delay_frame
  107.         lda $54
  108.         cmp $52         ; Compare r with z
  109.         beq after_r2
  110.         inc $54
  111.         jmp loop_r2
  112. after_r2:
  113.  
  114.         ; --- Loop 3: r = z; for c = b down to a
  115.         ; Draw horizontal line across bottom (right to left)
  116.         lda $52
  117.         sta $54         ; r = z
  118.         lda $50
  119.         sta $55         ; c = b
  120.  
  121. loop_c3:
  122.         jsr poke_char
  123.         jsr delay_frame
  124.         lda $55
  125.         cmp $53         ; Compare c with a
  126.         beq after_c3
  127.         dec $55
  128.         jmp loop_c3
  129. after_c3:
  130.  
  131.         ; --- Loop 4: c = a; for r = z down to w
  132.         ; Draw vertical line up left side
  133.         lda $53
  134.         sta $55         ; c = a
  135.         lda $52
  136.         sta $54         ; r = z
  137.  
  138. loop_r4:
  139.         jsr poke_char
  140.         jsr delay_frame
  141.         lda $54
  142.         cmp $51         ; Compare r with w
  143.         beq after_r4
  144.         dec $54
  145.         jmp loop_r4
  146. after_r4:
  147.  
  148.         ; Update boundaries for next spiral iteration
  149.         dec $50         ; b--
  150.         inc $51         ; w++
  151.         dec $52         ; z--
  152.         inc $53         ; a++
  153.         jmp loop_a
  154.  
  155. done_a:
  156.  
  157.         ; Set final color effects
  158.         lda #0  
  159.         sta $d021       ; Background color = black
  160.        
  161.         ; Set character color to light green
  162.     lda #13
  163.         sta $0286
  164.  
  165. ; ========================
  166. ; CLEAR SCREEN
  167. ; ========================
  168.         jsr clearscreen
  169.  
  170. ; ========================
  171. ; WRITE "trapped between nowhere and forever..."
  172. ; ========================
  173.         ; Initialize cursor position
  174.         lda #12
  175.         sta $54         ; row = 12
  176.         lda #1
  177.         sta $55         ; column = 1
  178.  
  179.         ldx #0
  180. nextchar1:
  181.         lda text1,x
  182.         beq wait1_label ; If zero terminator, exit loop
  183.         jsr writechar
  184.         jsr beep        ; Sound effect
  185.         inx
  186.         jsr delay_frame
  187.         jsr delay_frame
  188.         jsr delay_frame
  189.         jsr delay_frame
  190.         jsr delay_frame
  191.         bne nextchar1
  192.  
  193. wait1_label:
  194.         ; Wait for effect
  195.         ldy #$ff
  196. waitloop1:
  197.         jsr delay_frame
  198.         dey
  199.         bne waitloop1
  200. waitloop2:
  201.         jsr delay_frame
  202.         dey
  203.         bne waitloop2
  204.  
  205.  
  206. ; ========================
  207. ; CLEAR SCREEN
  208. ; ========================
  209.         jsr clearscreen
  210.  
  211. ; ========================
  212. ; WRITE "with no escape."
  213. ; ========================
  214.         ; Initialize position for second text
  215.         lda #12
  216.         sta $54         ; row = 12
  217.         lda #13
  218.         sta $55         ; column = 13
  219.  
  220.         ldx #0
  221. nextchar2:
  222.         lda text2,x
  223.         beq wait2_label
  224.         jsr writechar
  225.         jsr beep        ; Sound effect
  226.         inx
  227.         jsr delay_frame
  228.         jsr delay_frame
  229.         jsr delay_frame
  230.         jsr delay_frame
  231.         jsr delay_frame
  232.         bne nextchar2
  233.  
  234. wait2_label:
  235.         ; Wait for effect
  236.         ldy #$ff
  237. waitloop3:
  238.         jsr delay_frame
  239.         dey
  240.         bne waitloop3
  241.  
  242.         ; Final color flash effects
  243.         lda #1
  244.         sta $d020       ; Border = white
  245.         sta $d021       ; Background = white
  246.  
  247.         jsr delay_frame
  248.         jsr delay_frame
  249.         jsr delay_frame
  250.         jsr delay_frame
  251.         jsr delay_frame
  252.  
  253.         lda #7
  254.         sta $d020       ; Border = yellow
  255.         sta $d021       ; Background = yellow
  256.  
  257.         jsr delay_frame
  258.         jsr delay_frame
  259.         jsr delay_frame
  260.         jsr delay_frame
  261.         jsr delay_frame
  262.  
  263.         lda #0
  264.         sta $d020       ; Border = black
  265.         sta $d021       ; Background = black
  266.  
  267. done:
  268.         jmp start
  269.  
  270. ; ================================================================
  271. ; SUBROUTINE: delay_frame
  272. ; Simple delay routine (preserves all registers)
  273. ; ================================================================
  274. delay_frame:
  275.         pha
  276.         txa
  277.         pha
  278.         tya
  279.         pha
  280.        
  281.         ldx #$15
  282. delay_outer:
  283.         ldy #$30
  284. delay_inner:
  285.         dey
  286.         bne delay_inner
  287.         dex
  288.         bne delay_outer
  289.        
  290.         pla
  291.         tay
  292.         pla
  293.         tax
  294.         pla
  295.         rts
  296.  
  297. ; ================================================================
  298. ; SUBROUTINE: poke_char
  299. ; Writes a character to screen at position (r,c) stored in $54,$55
  300. ; Also sets color to black at that position
  301. ; ================================================================
  302. poke_char:
  303.         pha
  304.         txa
  305.         pha
  306.         tya
  307.         pha
  308.  
  309.         ; Initialize multiplication result
  310.         lda #0
  311.         sta $57         ; Low byte of result
  312.         sta $58         ; High byte of result
  313.  
  314.         lda $54
  315.         sta $59         ; Copy row to counter
  316.  
  317.         ; Multiply row by 40 (screen width)
  318. pc_mul_loop:
  319.         lda $59
  320.         beq pc_mul_done
  321.  
  322.         lda $57
  323.         clc
  324.         adc #40
  325.         sta $57
  326.         lda $58
  327.         adc #0
  328.         sta $58
  329.  
  330.         dec $59
  331.         jmp pc_mul_loop
  332. pc_mul_done:
  333.  
  334.         ; Add column offset
  335.         lda $57
  336.         clc
  337.         adc $55
  338.         sta $57
  339.         lda $58
  340.         adc #0
  341.         sta $58
  342.  
  343.         ; Calculate screen memory address ($0400 + offset)
  344.         lda #$00
  345.         clc
  346.         adc $57
  347.         sta $5a         ; Low byte of pointer
  348.  
  349.         lda #$04
  350.         adc $58
  351.         sta $5b         ; High byte of pointer
  352.  
  353.         ; Write space character ($a0) to screen
  354.         lda #$a0
  355.         ldy #0
  356.         sta ($5a),y
  357.  
  358.         ; Calculate color RAM address ($d800 + offset)
  359.         lda #$00
  360.         clc
  361.         adc $57
  362.         sta $5a
  363.  
  364.         lda #$d8
  365.         adc $58
  366.         sta $5b
  367.  
  368.         ; Write black color (0)
  369.         lda #0
  370.         ldy #0
  371.         sta ($5a),y
  372.  
  373.         pla
  374.         tay
  375.         pla
  376.         tax
  377.         pla
  378.         rts
  379.  
  380. ; ================================================================
  381. ; SUBROUTINE: writechar
  382. ; Writes character in A to screen at position ($54,$55)
  383. ; Sets color to white and increments column
  384. ; ================================================================
  385. writechar:
  386.         pha
  387.         txa
  388.         pha
  389.         tya
  390.         pha
  391.        
  392.         ; Calculate address = $0400 + row*40 + column
  393.         lda #0
  394.         sta $57
  395.         sta $58
  396.        
  397.         lda $54
  398.         beq write_calc_done
  399.        
  400.         lda #0
  401.         sta $59
  402.        
  403.         ; Multiply row by 40
  404. write_mul_loop:
  405.         lda $57
  406.         clc
  407.         adc #40
  408.         sta $57
  409.        
  410.         lda $58
  411.         adc #0
  412.         sta $58
  413.        
  414.         inc $59
  415.         lda $59
  416.         cmp $54
  417.         bcc write_mul_loop
  418.        
  419. write_calc_done:
  420.         ; Add column
  421.         lda $57
  422.         clc
  423.         adc $55
  424.         sta $57
  425.        
  426.         lda $58
  427.         adc #0
  428.         sta $58
  429.        
  430.         ; Build screen memory pointer
  431.         lda #$00
  432.         clc
  433.         adc $57
  434.         sta $5a
  435.        
  436.         lda #$04
  437.         adc $58
  438.         sta $5b
  439.        
  440.         ; Write character to screen
  441.         pla
  442.         tay
  443.         pla
  444.         tax
  445.         pla
  446.        
  447.         ; Save A in temporary location
  448.         sta $5e
  449.        
  450.         ldy #0
  451.         lda $5e
  452.         sta ($5a), y
  453.        
  454.         ; Write white color to color RAM
  455.         lda $57
  456.         sta $5a
  457.        
  458.         lda #$d8
  459.         sta $5b
  460.        
  461.         ldy #0
  462.         lda #1          ; White color
  463.         sta ($5a), y
  464.        
  465.         ; Increment column
  466.         inc $55
  467.        
  468.         rts
  469.  
  470. ; ================================================================
  471. ; SUBROUTINE: clearscreen
  472. ; Clears the screen using KERNAL routine
  473. ; ================================================================
  474. clearscreen:
  475.         lda #$93        ; Clear screen code
  476.         jsr $ffd2       ; KERNAL CHROUT
  477.         rts
  478.  
  479. ; ================================================================
  480. ; SUBROUTINE: beep
  481. ; Produces a short beep sound using SID chip
  482. ; ================================================================
  483. beep:  
  484.         lda #$0f        ; Maximum volume
  485.         sta $d418       ; SID volume register
  486.  
  487.         lda #$00        ; Frequency low byte
  488.         sta $d400
  489.         lda #$a0        ; Frequency high byte
  490.         sta $d401
  491.  
  492.         lda #$00        ; Pulse width low
  493.         sta $d402
  494.         lda #$08        ; Pulse width high
  495.         sta $d403
  496.  
  497.         lda #$09        ; Attack=0, Decay=9
  498.         sta $d405
  499.         lda #$F0        ; Sustain=15, Release=0
  500.         sta $d406
  501.  
  502.         lda #$11        ; Gate on + pulse waveform
  503.         sta $d404       ; Voice 1 control
  504.  
  505.         ldy #$ff        ; Delay to hear the sound
  506. beepl1:
  507.         dey
  508.         bne beepl1
  509.  
  510.         lda #$10        ; Gate off, pulse on (stop sound)
  511.         sta $d404
  512.        
  513.         rts
  514.  
  515. ; ================================================================
  516. ; MAIN PROGRAM START
  517. ; ================================================================
  518. start:
  519.  
  520.         ; Border and background colors are set later in sprite setup
  521.  
  522. ; Copy sprite data to memory
  523.         jsr LoadSprites
  524.  
  525. ; Sprite settings
  526.  
  527. ; MSB Sprite (for X coordinates > 255)
  528.         lda #1
  529.         sta VIC_BASE+16 ; Enable MSB for sprite 0 (flag)
  530.  
  531. ; Position sprite 0 (flag)
  532.         lda #47         ; x0 = 255 + 47 = 302
  533.         sta VIC_BASE
  534.         lda #121        ; y0 = 121
  535.         sta VIC_BASE+1
  536.  
  537. ; Position sprites 1-3 (standing person)
  538.         lda #105        ; x1 = 105
  539.         sta VIC_BASE+2
  540.         lda #145        ; y1 = 145
  541.         sta VIC_BASE+3
  542.  
  543.         lda #105        ; x2 = 105
  544.         sta VIC_BASE+4
  545.         lda #145        ; y2 = 145
  546.         sta VIC_BASE+5
  547.  
  548.         lda #105        ; x3 = 105
  549.         sta VIC_BASE+6
  550.         lda #145        ; y3 = 145
  551.         sta VIC_BASE+7
  552.  
  553. ; Position sprites 4-6 (sitting person)
  554.         lda #217        ; x4 = 217
  555.         sta VIC_BASE+8
  556.         lda #164        ; y4 = 164
  557.         sta VIC_BASE+9
  558.  
  559.         lda #217        ; x5 = 217
  560.         sta VIC_BASE+10
  561.         lda #164        ; y5 = 164
  562.         sta VIC_BASE+11
  563.  
  564.         lda #217        ; x6 = 217
  565.         sta VIC_BASE+12
  566.         lda #164        ; y6 = 164
  567.         sta VIC_BASE+13
  568.  
  569. ; Enable sprites 0-6
  570.         lda #$7f
  571.         sta VIC_BASE+21 ; Enable 7 sprites
  572.  
  573. ; Sprite 0 colors (flag - multicolor)
  574.         lda #1
  575.         sta VIC_BASE+28 ; Multicolor mode for sprite 0
  576.         lda #9
  577.         sta VIC_BASE+37 ; Multicolor 0 = orange (53285)
  578.         lda #3
  579.         sta VIC_BASE+38 ; Multicolor 1 = cyan (53286)
  580.         lda #5
  581.         sta VIC_BASE+39 ; Sprite 0 color = green
  582.  
  583. ; Sprites 1-3 colors (standing person)
  584.         lda #8
  585.         sta VIC_BASE+40 ; Sprite 1 color = orange
  586.         lda #10
  587.         sta VIC_BASE+41 ; Sprite 2 color = light red
  588.         lda #5
  589.         sta VIC_BASE+42 ; Sprite 3 color = green
  590.  
  591. ; Sprites 4-6 colors (sitting person)
  592.         lda #7
  593.         sta VIC_BASE+43 ; Sprite 4 color = yellow
  594.         lda #10
  595.         sta VIC_BASE+44 ; Sprite 5 color = light red
  596.         lda #6
  597.         sta VIC_BASE+45 ; Sprite 6 color = blue
  598.  
  599. ; Sprite pointers
  600.         lda #226
  601.         sta SPR_PTR1    ; Write to $07F9 (sprite 1 pointer)
  602.         lda #227
  603.         sta SPR_PTR2    ; Write to $07FA (sprite 2 pointer)
  604.         lda #228
  605.         sta SPR_PTR3    ; Write to $07FB (sprite 3 pointer)
  606.         lda #229
  607.         sta SPR_PTR4    ; Write to $07FC (sprite 4 pointer)
  608.         lda #230
  609.         sta SPR_PTR5    ; Write to $07FD (sprite 5 pointer)
  610.         lda #231
  611.         sta SPR_PTR6    ; Write to $07FE (sprite 6 pointer)
  612.  
  613. ; Draw and color background screen
  614.         ldx #$0
  615. loop1:
  616.         lda chars,x
  617.         sta $0400,x
  618.  
  619.         lda colors,x
  620.         sta $d800,x
  621.  
  622.     lda chars+200,x
  623.         sta $0400+200,x
  624.  
  625.         lda colors+200,x
  626.         sta $d800+200,x
  627.  
  628.     lda chars+400,x
  629.         sta $0400+400,x
  630.  
  631.         lda colors+400,x
  632.         sta $d800+400,x
  633.  
  634.     lda chars+600,x
  635.         sta $0400+600,x
  636.  
  637.         lda colors+600,x
  638.         sta $d800+600,x
  639.  
  640.     lda chars+800,x
  641.         sta $0400+800,x
  642.  
  643.         lda colors+800,x
  644.         sta $d800+800,x
  645.  
  646.         inx
  647.         cpx #200        
  648.         bne loop1
  649.  
  650. ; ================================================================
  651. ; SETUP IRQ INTERRUPT SYSTEM
  652. ; ================================================================
  653.         sei                   ; Set Interrupt Disable Flag (disable IRQ)
  654.        
  655.         ; Set custom IRQ vector
  656.         lda #<IRQRoutine
  657.         sta $0314
  658.         lda #>IRQRoutine
  659.         sta $0315
  660.  
  661.         lda #$7f              ; 127 = %01111111 (binary mask to clear MSB)
  662.         sta $dc0d             ; Disable CIA 1 IRQ interrupts (timer A system interrupt)
  663.         sta $dd0d             ; Disable CIA 2 NMI interrupts
  664.        
  665.         lda $dc0d             ; Clear any pending IRQ from CIA 1 (reading clears)
  666.         lda $dd0d             ; Clear any pending NMI from CIA 2 (reading clears)
  667.  
  668.         lda #$00              ; First raster interrupt at line 0
  669.         sta $d012             ; Load value into raster register
  670.         sta $fb               ; Horizontal scroll counter variable (page 0)
  671.        
  672.         lda #$1b              ; 27 decimal = %00011011
  673.         sta $d011             ; Clear MSB of raster (bit 8 of $d012-$d011)
  674.        
  675.         lda #$01
  676.         sta $d01a             ; Enable raster interrupt
  677.  
  678. ; ================================================================
  679. ; INITIALIZE SID MUSIC
  680. ; ================================================================
  681.         lda #$00              ; Clear A register
  682.         jsr $1000             ; Initialize music at $1000
  683.  
  684.         cli                   ; Clear Interrupt Disable Flag (enable IRQ)
  685.  
  686.         ; Setup NMI vector to disable RESTORE key
  687.         ldx #<NMIRoutine      ; Load address $fec1 into NMINV vector ($0318-$0319)
  688.         ldy #>NMIRoutine      ; This points to RTI instruction of default NMI handler
  689.         stx $0318             ; This trick effectively disables RUN STOP + RESTORE
  690.         sty $0319             ; preventing user from exiting the program
  691.  
  692. ; ================================================================
  693. ; MAIN ANIMATION LOOP
  694. ; ================================================================
  695. MainLoop:
  696.         ldx #0  
  697. animation_loop:
  698.         ; Copy table 1 (escalator_1)
  699.         lda #<escalator_1     ; Load address of first table
  700.         sta src_ptr
  701.         lda #>escalator_1
  702.         sta src_ptr+1
  703.  
  704.         lda s_table,x         ; Get sprite pointer from table
  705.         sta SPR_PTR           ; Write to $07F8 (sprite 0 pointer)
  706.         inx
  707.    
  708.         jsr copy_table        ; Copy the table
  709.         jsr wait              ; Wait for timing
  710.        
  711.         ; Copy table 2 (escalator_2)
  712.         lda #<escalator_2
  713.         sta src_ptr
  714.         lda #>escalator_2
  715.         sta src_ptr+1
  716.  
  717.         lda s_table,x
  718.         sta SPR_PTR
  719.         inx
  720.      
  721.         jsr copy_table
  722.         jsr wait
  723.  
  724.         ; Copy table 3 (escalator_3)
  725.         lda #<escalator_3
  726.         sta src_ptr
  727.         lda #>escalator_3
  728.         sta src_ptr+1
  729.  
  730.         lda s_table,x
  731.         sta SPR_PTR
  732.         inx
  733.    
  734.         jsr copy_table
  735.         jsr wait
  736.  
  737.         ; Copy table 4 (escalator_4)
  738.         lda #<escalator_4
  739.         sta src_ptr
  740.         lda #>escalator_4
  741.         sta src_ptr+1
  742.  
  743.         lda s_table,x
  744.         sta SPR_PTR
  745.         inx
  746.  
  747.         jsr copy_table
  748.         jsr wait
  749.  
  750.         ; Copy table 5 (escalator_5)
  751.         lda #<escalator_5
  752.         sta src_ptr
  753.         lda #>escalator_5
  754.         sta src_ptr+1
  755.  
  756.         lda s_table,x
  757.         sta SPR_PTR
  758.         inx
  759.        
  760.         jsr copy_table
  761.         jsr wait
  762.  
  763.         ; Copy table 6 (escalator_6)
  764.         lda #<escalator_6
  765.         sta src_ptr
  766.         lda #>escalator_6
  767.         sta src_ptr+1
  768.  
  769.         lda s_table,x
  770.         sta SPR_PTR
  771.         inx
  772.        
  773.         jsr copy_table
  774.         jsr wait
  775.  
  776.         ; Copy table 7 (escalator_7)
  777.         lda #<escalator_7
  778.         sta src_ptr
  779.         lda #>escalator_7
  780.         sta src_ptr+1
  781.  
  782.         lda s_table,x
  783.         sta SPR_PTR
  784.         inx
  785.    
  786.         jsr copy_table
  787.         jsr wait
  788.  
  789.         ; Copy table 8 (escalator_8)
  790.         lda #<escalator_8
  791.         sta src_ptr
  792.         lda #>escalator_8
  793.         sta src_ptr+1
  794.  
  795.         lda s_table,x
  796.         sta SPR_PTR
  797.         inx
  798.          
  799.         jsr copy_table
  800.         jsr wait
  801.  
  802.         ; Copy table 9 (escalator_9)
  803.         lda #<escalator_9
  804.         sta src_ptr
  805.         lda #>escalator_9
  806.         sta src_ptr+1
  807.  
  808.         lda s_table,x
  809.         sta SPR_PTR
  810.         inx
  811.          
  812.         jsr copy_table
  813.         jsr wait
  814.  
  815.         ; Copy table 10 (escalator_10)
  816.         lda #<escalator_10
  817.         sta src_ptr
  818.         lda #>escalator_10
  819.         sta src_ptr+1
  820.  
  821.         lda s_table,x
  822.         sta SPR_PTR
  823.         inx
  824.          
  825.         jsr copy_table
  826.         jsr wait
  827.  
  828.         jmp MainLoop          ; Loop forever
  829.        
  830.  
  831. ; ================================================================
  832. ; SUBROUTINE: copy_table
  833. ; Copies a 13x13 table to the escalator area on screen
  834. ; (color RAM at row 12, column 1)
  835. ; ================================================================
  836. copy_table:
  837.         txa                   ; Save X
  838.         pha
  839.         tya                   ; Save Y
  840.         pha
  841.  
  842.         ; Calculate screen address for row 13, column 1
  843.         lda #<($d800+12*40)   ; Low byte of color RAM address
  844.         sta dest_ptr
  845.         lda #>($d800+12*40)   ; High byte of color RAM address
  846.         sta dest_ptr+1
  847.        
  848.         ldx #0                ; Row counter (0-12)
  849.        
  850. row_loop:
  851.         ldy #0                ; Column counter (0-12)
  852.        
  853. col_loop:
  854.         ; Copy one byte from table to color RAM
  855.         lda (src_ptr),y       ; Read from table
  856.         sta (dest_ptr),y      ; Write to color RAM
  857.        
  858.         iny                   ; Next column
  859.         cpy #13               ; Check if we've reached 13 columns
  860.         bne col_loop
  861.        
  862.         ; Advance to next row in table
  863.         clc
  864.         lda src_ptr           ; Add 13 to source pointer
  865.         adc #13
  866.         sta src_ptr
  867.         lda src_ptr+1
  868.         adc #0
  869.         sta src_ptr+1
  870.        
  871.         ; Advance to next row on screen
  872.         clc
  873.         lda dest_ptr          ; Add 40 to destination pointer
  874.         adc #40               ; (screen row width)
  875.         sta dest_ptr
  876.         lda dest_ptr+1
  877.         adc #0
  878.         sta dest_ptr+1
  879.        
  880.         inx                   ; Next row
  881.         cpx #13               ; Check if we've reached 13 rows
  882.         bne row_loop  
  883.  
  884.         pla                   ; Restore Y
  885.         tay
  886.         pla                   ; Restore X
  887.         tax
  888.         rts
  889.  
  890. ; ================================================================
  891. ; SUBROUTINE: wait
  892. ; Delay routine for animation timing
  893. ; ================================================================
  894. wait:
  895.         txa                   ; Save X
  896.         pha
  897.         tya                   ; Save Y
  898.         pha
  899.  
  900.         ldy #50
  901. Delay1: ldx #0
  902. Delay2: dex
  903.         bne Delay2
  904.         dey
  905.         bne Delay1
  906.  
  907.         pla                   ; Restore Y
  908.         tay
  909.         pla                   ; Restore X
  910.         tax
  911.         rts
  912.  
  913. ; ================================================================
  914. ; SUBROUTINE: LoadSprites
  915. ; Copies sprite data from ROM to sprite memory locations
  916. ; ================================================================
  917. LoadSprites:
  918.         ldx #0
  919. LoadLoop:
  920.         ; Flag sprites (0-9)
  921.         lda sprite0_data,x
  922.         sta $02C0,x     ; $02C0 = 704 (sprite pointer 11)
  923.  
  924.         lda sprite1_data,x
  925.         sta $0340,x     ; $0340 = 832 (sprite pointer 13)
  926.  
  927.         lda sprite2_data,x
  928.         sta $0380,x     ; $0380 = 896 (sprite pointer 14)
  929.  
  930.         lda sprite3_data,x
  931.         sta $03C0,x     ; $03C0 = 960 (sprite pointer 15)
  932.  
  933.         lda sprite4_data,x
  934.         sta $3700,x     ; $3700 = 14080 (sprite pointer 220)
  935.  
  936.         lda sprite5_data,x
  937.         sta $3740,x     ; $3740 = 14144 (sprite pointer 221)
  938.  
  939.         lda sprite6_data,x
  940.         sta $3780,x     ; $3780 = 14208 (sprite pointer 222)
  941.  
  942.         lda sprite7_data,x
  943.         sta $37c0,x     ; $37c0 = 14272 (sprite pointer 223)
  944.  
  945.         lda sprite8_data,x
  946.         sta $3800,x     ; $3800 = 14336 (sprite pointer 224)
  947.  
  948.         lda sprite9_data,x
  949.         sta $3840,x     ; $3840 = 14400 (sprite pointer 225)
  950.  
  951.         ; Standing person sprites (10-12)
  952.         lda sprite10_data,x
  953.         sta $3880,x     ; $3880 = 14464 (sprite pointer 226)
  954.  
  955.         lda sprite11_data,x
  956.         sta $38c0,x     ; $38c0 = 14528 (sprite pointer 227)
  957.  
  958.         lda sprite12_data,x
  959.         sta $3900,x     ; $3900 = 14592 (sprite pointer 228)
  960.  
  961.         ; Sitting person sprites (13-15)
  962.         lda sprite13_data,x
  963.         sta $3940,x     ; $3940 = 14656 (sprite pointer 229)
  964.  
  965.         lda sprite14_data,x
  966.         sta $3980,x     ; $3980 = 14720 (sprite pointer 230)
  967.  
  968.         lda sprite15_data,x
  969.         sta $39c0,x     ; $39c0 = 14784 (sprite pointer 231)
  970.  
  971.         inx
  972.         cpx #63
  973.         bne LoadLoop
  974.         rts
  975.  
  976. ; ================================================================
  977. ; IRQ ROUTINE - Main raster interrupt handler
  978. ; ================================================================
  979. IRQRoutine:
  980.         asl $d019             ; Acknowledge raster IRQ
  981.  
  982. ; Modified with 3 separate IRQ handlers:
  983. ; IRQ1: Handles horizontal scroll (changes only $D016)
  984. ; IRQ2: Resets scroll at bottom of scroll area
  985. ; IRQ3: Called during vertical blank to move characters
  986.  
  987.         lda $d012             ; Current raster line
  988.         cmp #$00
  989.         beq RasterTop         ; Top raster - scroll area
  990.         cmp #rast_1
  991.         beq RasterBottom      ; Bottom raster - reset scroll
  992.         cmp #rast_2
  993.         beq DoMoveChars       ; Move characters raster
  994.  
  995.         jmp testTimerAInterrupt
  996.  
  997.  
  998. ; Top of screen - apply horizontal scroll
  999. RasterTop:
  1000.         ldx $fb               ; Load scroll counter
  1001.         inx                   ; Increment counter
  1002.         cpx #$08              ; Reached 8? (8 pixels = full character)
  1003.         bne scrolling         ; If not at end, continue scrolling
  1004.         ldx #$00              ; Reset counter if at end
  1005. scrolling:
  1006.         lda scrollValue,x     ; Read scroll value from table
  1007.         sta $d016             ; Set horizontal scroll (bits 0-2 of $d016)
  1008.         stx $fb               ; Save counter
  1009.  
  1010.         lda #rast_1       ; Next IRQ at line rast_1
  1011.         sta $d012
  1012.         jmp testTimerAInterrupt
  1013.  
  1014.  
  1015. ; Bottom of scroll area - reset to no scroll
  1016. RasterBottom:
  1017.         lda #$00              ; %00000000 (38 column mode)
  1018.         sta $d016             ; Reset to default (no horizontal scroll)
  1019.  
  1020.         lda #rast_2           ; Next IRQ at line rast_2
  1021.         sta $d012
  1022.         jmp testTimerAInterrupt
  1023.  
  1024. ; Move characters horizontally
  1025. DoMoveChars:
  1026.         jsr moveCharacters    ; Shift characters
  1027.  
  1028.         lda #$00              ; Next IRQ at line 0
  1029.         sta $d012
  1030.         jmp testTimerAInterrupt
  1031.  
  1032.  
  1033. ; Check for system timer interrupt and call music player
  1034. testTimerAInterrupt:
  1035.         lda $dc0d             ; Check if CIA 1 Timer A interrupt occurred
  1036.         and #$01              ; Check if bit 0 (LSB) is set
  1037.         beq exitPullStack     ; If no Timer A interrupt, exit normally
  1038.  
  1039. ; Call SID music player
  1040.         jsr $1003             ; Call music playback routine at $1003
  1041.         jmp $ea31             ; Jump to system IRQ handler for keyboard scan, etc.
  1042.        
  1043. exitPullStack:
  1044.         pla                   ; These 6 instructions are equivalent to
  1045.         tay                   ; JMP $ea81 or JMP $febc
  1046.         pla                   ; Pull registers Y, X, A from stack + RTI
  1047.         tax                   ; Push of the 3 data registers is done by
  1048.         pla                   ; the IRQ main routine at ROM $ff48
  1049.         rti                   ; Return from interrupt
  1050.  
  1051.  
  1052.  
  1053. ; ================================================================
  1054. ; SUBROUTINE: moveCharacters
  1055. ; Shifts characters one position to the right (circular shift)
  1056. ; Only moves the first 10 rows of the screen
  1057. ; ================================================================
  1058. moveCharacters:
  1059.         ; Save A and X
  1060.         pha
  1061.         txa
  1062.         pha
  1063.        
  1064.         ; Move only first 10 rows
  1065.         ldx #$00        ; Row 0
  1066.        
  1067. moveRow:
  1068.         ; Get base address of row from precomputed table
  1069.         lda screenAddrLo,x
  1070.         sta $fd
  1071.         lda screenAddrHi,x
  1072.         sta $fe
  1073.        
  1074.         ; Save character at last position (column 39)
  1075.         ldy #39
  1076.         lda ($fd),y
  1077.         pha
  1078.        
  1079.         ; Shift characters from right to left
  1080. shiftLoop:
  1081.         dey
  1082.         lda ($fd),y
  1083.         iny
  1084.         sta ($fd),y
  1085.         dey
  1086.         bpl shiftLoop
  1087.        
  1088.         ; Put saved character in first position
  1089.         pla
  1090.         ldy #$00
  1091.         sta ($fd),y
  1092.  
  1093.  
  1094. ; Process color RAM the same way
  1095.         lda colorAddrLo,x
  1096.         sta $fd
  1097.         lda colorAddrHi,x
  1098.         sta $fe
  1099.  
  1100.         ldy #39
  1101.         lda ($fd),y
  1102.         pha
  1103. shiftLoopCol:
  1104.         dey
  1105.         lda ($fd),y
  1106.         iny
  1107.         sta ($fd),y
  1108.         dey
  1109.         bpl shiftLoopCol
  1110.  
  1111.         pla
  1112.         ldy #0
  1113.         sta ($fd),y
  1114.        
  1115.         ; Next row
  1116.         inx
  1117.         cpx #10         ; Only first 10 rows
  1118.         bne moveRow
  1119.        
  1120.         ; Restore registers
  1121.         pla
  1122.         tax
  1123.         pla
  1124.         rts
  1125.  
  1126. ; ================================================================
  1127. ; DATA SECTION
  1128. ; ================================================================
  1129.  
  1130. ; Precomputed addresses for screen memory rows
  1131. screenAddrLo:
  1132.         .byte <($0400+0*40), <($0400+1*40), <($0400+2*40), <($0400+3*40)
  1133.         .byte <($0400+4*40), <($0400+5*40), <($0400+6*40), <($0400+7*40)
  1134.         .byte <($0400+8*40), <($0400+9*40)
  1135.  
  1136. screenAddrHi:
  1137.         .byte >($0400+0*40), >($0400+1*40), >($0400+2*40), >($0400+3*40)
  1138.         .byte >($0400+4*40), >($0400+5*40), >($0400+6*40), >($0400+7*40)
  1139.         .byte >($0400+8*40), >($0400+9*40)
  1140.  
  1141. ; Precomputed addresses for color RAM rows
  1142. colorAddrLo:
  1143.         .byte <($d800+0*40), <($d800+1*40), <($d800+2*40), <($d800+3*40)
  1144.         .byte <($d800+4*40), <($d800+5*40), <($d800+6*40), <($d800+7*40)
  1145.         .byte <($d800+8*40), <($d800+9*40)
  1146.  
  1147. colorAddrHi:
  1148.         .byte >($d800+0*40), >($d800+1*40), >($d800+2*40), >($d800+3*40)
  1149.         .byte >($d800+4*40), >($d800+5*40), >($d800+6*40), >($d800+7*40)
  1150.         .byte >($d800+8*40), >($d800+9*40)
  1151.  
  1152. ; Table of scroll values for pixel scrolling (0 to 7, rightward movement)
  1153. scrollValue:
  1154.         .byte 0,1,2,3,4,5,6,7
  1155.  
  1156. ; Sprite pointer table (values for escalator animation frames)
  1157. s_table:
  1158.         .byte 11,13,14,15,220,221,222,223,224,225
  1159.  
  1160. ; Text strings in PETSCII format
  1161. Text1:
  1162.         ; "trapped between nowhere and forever..."
  1163.         .byte $14   ; t
  1164.         .byte $12   ; r
  1165.         .byte $01   ; a
  1166.         .byte $10   ; p
  1167.         .byte $10   ; p
  1168.         .byte $05   ; e
  1169.         .byte $04   ; d
  1170.         .byte 32    ; space
  1171.         .byte $02   ; b
  1172.         .byte $05   ; e
  1173.         .byte $14   ; t
  1174.         .byte $17   ; w
  1175.         .byte $05   ; e
  1176.         .byte $05   ; e
  1177.         .byte $0E   ; n
  1178.         .byte 32    ; space
  1179.         .byte $0E   ; n
  1180.         .byte $0F   ; o
  1181.         .byte $17   ; w
  1182.         .byte $08   ; h
  1183.         .byte $05   ; e
  1184.         .byte $12   ; r
  1185.         .byte $05   ; e
  1186.         .byte 32    ; space
  1187.         .byte $01   ; a
  1188.         .byte $0E   ; n
  1189.         .byte $04   ; d
  1190.         .byte 32    ; space
  1191.         .byte $06   ; f
  1192.         .byte $0F   ; o
  1193.         .byte $12   ; r
  1194.         .byte $05   ; e
  1195.         .byte $16   ; v
  1196.         .byte $05   ; e
  1197.         .byte $12   ; r
  1198.         .byte 46    ; .
  1199.         .byte 46    ; .
  1200.         .byte 46    ; .
  1201.         .byte 0     ; String terminator
  1202.  
  1203. Text2:
  1204.         ; "with no escape."
  1205.         .byte $17   ; w
  1206.         .byte $09   ; i
  1207.         .byte $14   ; t
  1208.         .byte $08   ; h
  1209.         .byte 32    ; space
  1210.         .byte $0E   ; n
  1211.         .byte $0F   ; o
  1212.         .byte 32    ; space
  1213.         .byte $05   ; e
  1214.         .byte $13   ; s
  1215.         .byte $03   ; c
  1216.         .byte $01   ; a
  1217.         .byte $10   ; p
  1218.         .byte $05   ; e
  1219.         .byte 46    ; .
  1220.         .byte 0     ; String terminator
  1221.  
  1222.  
  1223. ; ================================================================
  1224. ; DATA LOADED FROM $1000 ONWARDS
  1225. ; ================================================================
  1226. * = $1000
  1227.  
  1228. ; SID music data (binary SID file with header stripped)
  1229.          .binary "Beli_jablane_FINAL.sid", $7e  ; Load music data at $1000, skip $7e byte header
  1230.    
  1231. ; Background screen character data (1000 bytes)
  1232. chars:
  1233.     .byte $6f,$6f,$6f,$6f,$6f,$e3,$f7,$f8,$62,$79,$6f,$6f,$6f,$6f,$6f,$6f
  1234.     .byte $6f,$6f,$6f,$6f,$6f,$6f,$6f,$6f,$6f,$6f,$6f,$6f,$6f,$6f,$6f,$6f
  1235.     .byte $6f,$6f,$6f,$6f,$6f,$6f,$20,$6f,$e4,$e4,$e4,$e4,$e4,$e4,$e4,$e4
  1236.     .byte $e4,$e4,$e4,$e4,$e4,$e4,$e4,$e4,$e4,$e4,$e4,$e4,$e4,$e4,$e4,$e4
  1237.     .byte $e4,$e4,$e4,$e4,$e4,$e4,$e4,$e4,$e4,$e4,$e4,$e4,$e4,$e4,$20,$a0
  1238.     .byte $e4,$e4,$e4,$e4,$e4,$e4,$e4,$e4,$e4,$e4,$e4,$e4,$e4,$e4,$e4,$e4
  1239.     .byte $e4,$e4,$e4,$e4,$e4,$e4,$e4,$e4,$e4,$e4,$e4,$e4,$e4,$e4,$e4,$e4
  1240.     .byte $e4,$e4,$e4,$e4,$e4,$e4,$20,$e4,$a0,$dd,$a0,$dd,$a0,$dd,$dd,$e3
  1241.     .byte $dd,$dd,$a0,$dd,$dd,$a0,$dd,$dd,$a0,$dd,$c2,$a0,$dd,$dd,$a0,$dd
  1242.     .byte $dd,$a0,$c2,$dd,$a0,$dd,$dd,$62,$dd,$a0,$a0,$dd,$a0,$dd,$bd,$dd
  1243.     .byte $af,$dd,$a0,$ca,$c3,$cb,$ca,$c3,$cb,$ca,$c3,$cb,$ca,$c3,$cb,$ca
  1244.     .byte $c3,$cb,$ca,$c3,$cb,$ca,$c3,$cb,$ca,$c3,$cb,$ca,$c3,$cb,$ca,$c3
  1245.     .byte $cb,$a0,$a0,$dd,$af,$dd,$bd,$dd,$e3,$dd,$a0,$a0,$a0,$a0,$a0,$a0
  1246.     .byte $a0,$a0,$a0,$a0,$a0,$88,$8f,$8b,$95,$94,$8f,$a0,$86,$8f,$92,$83
  1247.     .byte $85,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$dd,$e3,$dd,$bd,$dd
  1248.     .byte $af,$dd,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0
  1249.     .byte $a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0
  1250.     .byte $a0,$a0,$a0,$dd,$af,$dd,$bd,$dd,$c3,$cb,$a0,$a0,$a0,$a0,$a0,$a0
  1251.     .byte $a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0
  1252.     .byte $a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$ca,$c3,$cb,$62,$ca
  1253.     .byte $e2,$e2,$e2,$57,$e2,$e2,$57,$e2,$e2,$e2,$e2,$e2,$e2,$e2,$e2,$e2
  1254.     .byte $e2,$e2,$e2,$e2,$e2,$e2,$e2,$e2,$e2,$e2,$e2,$e2,$e2,$e2,$57,$e2
  1255.     .byte $e2,$57,$e2,$e2,$e2,$e2,$20,$e2,$c4,$c4,$c4,$c4,$c4,$c4,$c4,$c4
  1256.     .byte $c4,$c4,$c4,$c4,$c4,$c4,$c4,$c4,$c4,$c4,$c4,$c4,$c4,$c4,$c4,$c4
  1257.     .byte $c4,$c4,$c4,$c4,$c4,$c4,$c4,$c4,$c4,$c4,$c4,$c4,$c4,$c4,$c4,$c4
  1258.     .byte $df,$ce,$ce,$ce,$ce,$ce,$ce,$ce,$ce,$ce,$ce,$ce,$ce,$ce,$ce,$ce
  1259.     .byte $ce,$ce,$ce,$ce,$ce,$ce,$ce,$ce,$ce,$ce,$ce,$ce,$ce,$ce,$ce,$ce
  1260.     .byte $ce,$ce,$ce,$ce,$ce,$ce,$ce,$ce,$cd,$df,$20,$20,$20,$20,$20,$20
  1261.     .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20
  1262.     .byte $20,$20,$20,$20,$20,$20,$20,$20,$62,$62,$62,$62,$62,$62,$62,$20
  1263.     .byte $62,$cd,$df,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20
  1264.     .byte $20,$20,$20,$20,$f0,$c0,$ee,$20,$20,$20,$20,$20,$20,$20,$20,$20
  1265.     .byte $94,$89,$83,$8b,$85,$94,$93,$20,$62,$62,$cd,$df,$20,$20,$20,$20
  1266.     .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$dd,$bd,$dd,$20
  1267.     .byte $20,$20,$20,$20,$20,$20,$20,$20,$f5,$f4,$a0,$a0,$a0,$ea,$f6,$20
  1268.     .byte $62,$62,$62,$cd,$df,$20,$20,$20,$20,$20,$20,$20,$20,$20,$f8,$f8
  1269.     .byte $f8,$f8,$f8,$20,$dd,$bd,$dd,$20,$f8,$f8,$f8,$f8,$f8,$20,$20,$20
  1270.     .byte $f5,$f4,$20,$79,$20,$ea,$f6,$20,$62,$62,$62,$62,$cd,$df,$20,$20
  1271.     .byte $20,$20,$20,$20,$20,$6c,$c6,$c6,$c6,$c6,$c6,$7b,$ed,$c0,$fd,$6c
  1272.     .byte $c6,$c6,$c6,$c6,$c6,$7b,$20,$20,$f5,$f4,$20,$a2,$20,$ea,$f6,$20
  1273.     .byte $62,$62,$62,$62,$62,$cd,$df,$20,$20,$20,$20,$20,$20,$76,$63,$63
  1274.     .byte $63,$63,$63,$75,$20,$42,$20,$76,$63,$63,$63,$63,$63,$75,$20,$20
  1275.     .byte $f5,$f4,$cf,$e3,$d0,$ea,$f6,$20,$a0,$62,$62,$62,$62,$62,$cd,$df
  1276.     .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$71,$20,$20
  1277.     .byte $20,$20,$20,$20,$20,$20,$20,$20,$f5,$f4,$f4,$a0,$e7,$ea,$f6,$20
  1278.     .byte $cd,$a0,$62,$62,$62,$62,$62,$cd,$df,$20,$20,$20,$20,$20,$20,$20
  1279.     .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20
  1280.     .byte $f5,$f4,$f4,$a0,$e7,$e7,$f6,$20,$a0,$cd,$a0,$62,$62,$62,$62,$62
  1281.     .byte $cd,$df,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20
  1282.     .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20
  1283.     .byte $a0,$a0,$cd,$a0,$62,$62,$62,$62,$62,$cd,$df,$20,$20,$20,$20,$20
  1284.     .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20
  1285.     .byte $20,$20,$20,$20,$20,$20,$20,$20,$5f,$a0,$a0,$cd,$a0,$62,$62,$62
  1286.     .byte $62,$62,$cd,$df,$20,$20,$e9,$20,$e9,$20,$e9,$20,$e9,$20,$e9,$20
  1287.     .byte $e9,$20,$e9,$20,$e9,$20,$20,$20,$20,$20,$20,$79,$79,$20,$20,$20
  1288.     .byte $20,$5f,$a0,$a0,$cd,$a0,$62,$62,$62,$62,$62,$cd,$df,$20,$a0,$dd
  1289.     .byte $fb,$dd,$a0,$dd,$fb,$dd,$a0,$dd,$fb,$dd,$a0,$dd,$fb,$20,$20,$20
  1290.     .byte $20,$20,$20,$a0,$d1,$20,$20,$20,$20,$20,$5f,$a0,$a0,$cd,$a0,$62
  1291.     .byte $62,$62,$62,$62,$cd,$df,$a0,$dd,$a0,$dd,$a0,$dd,$a0,$dd,$a0,$dd
  1292.     .byte $a0,$dd,$a0,$dd,$a0,$20,$20,$20,$20,$20,$20,$a0,$a0,$20,$20,$20
  1293.     .byte $20,$20,$20,$5f,$a0,$a0,$cd,$a0,$62,$62,$62,$62,$62,$cd,$a0,$20
  1294.     .byte $a0,$20,$a0,$20,$a0,$20,$a0,$20,$a0,$20,$a0,$20,$a0,$20,$20,$20
  1295.     .byte $20,$20,$20,$e1,$61,$20,$20,$20
  1296.  
  1297. ; Background screen color data (1000 bytes)
  1298. colors:
  1299.     .byte $0b,$0b,$0b,$0b,$0b,$0b,$0b,$0b,$0b,$0b,$0b,$0b,$0b,$0b,$0b,$0b
  1300.     .byte $0b,$0b,$0b,$0b,$0b,$0b,$0b,$0b,$0b,$0b,$0b,$0b,$0b,$0b,$0b,$0b
  1301.     .byte $0b,$0b,$0b,$0b,$0b,$0b,$0b,$0b,$02,$02,$02,$02,$02,$02,$02,$02
  1302.     .byte $02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02
  1303.     .byte $02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02
  1304.     .byte $02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02
  1305.     .byte $02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02
  1306.     .byte $02,$02,$02,$02,$02,$02,$02,$02,$0c,$02,$02,$02,$07,$02,$02,$0c
  1307.     .byte $02,$02,$07,$02,$02,$07,$02,$02,$0c,$02,$02,$07,$02,$02,$07,$02
  1308.     .byte $02,$07,$02,$02,$07,$02,$02,$0c,$02,$02,$02,$02,$0c,$02,$0b,$02
  1309.     .byte $0c,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02
  1310.     .byte $02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02
  1311.     .byte $02,$02,$02,$02,$0c,$02,$0b,$02,$0c,$02,$02,$02,$02,$02,$02,$02
  1312.     .byte $02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02
  1313.     .byte $02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$0c,$02,$0b,$02
  1314.     .byte $0c,$02,$0b,$0b,$0b,$0b,$0b,$0b,$0b,$0b,$0b,$0b,$02,$02,$02,$02
  1315.     .byte $02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$0b,$0b,$0b,$0b,$0b,$0b
  1316.     .byte $0b,$0b,$0b,$02,$0c,$02,$0b,$02,$02,$02,$06,$06,$06,$06,$06,$06
  1317.     .byte $06,$06,$06,$06,$06,$06,$06,$06,$06,$06,$06,$06,$06,$06,$06,$06
  1318.     .byte $06,$06,$06,$06,$06,$06,$06,$06,$06,$06,$06,$02,$02,$02,$0c,$02
  1319.     .byte $06,$06,$0b,$0b,$0b,$0b,$0b,$0b,$06,$06,$06,$06,$06,$06,$06,$06
  1320.     .byte $06,$06,$06,$06,$06,$06,$06,$06,$06,$06,$06,$06,$06,$0b,$0b,$0b
  1321.     .byte $0b,$0b,$0b,$06,$06,$06,$02,$06,$0b,$0b,$0b,$0b,$0b,$0b,$0b,$0b
  1322.     .byte $0b,$0b,$0b,$0b,$0b,$0b,$0b,$0b,$0b,$0b,$0b,$0b,$0b,$0b,$0b,$0b
  1323.     .byte $0b,$0b,$0b,$0b,$0b,$0b,$0b,$0b,$0b,$0b,$0b,$0b,$0b,$0b,$0b,$0b
  1324.     .byte $06,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07
  1325.     .byte $07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07
  1326.     .byte $07,$07,$07,$07,$07,$07,$07,$07,$06,$06,$0d,$0d,$0d,$0d,$0d,$0d
  1327.     .byte $0d,$0d,$0d,$0d,$0d,$0d,$0d,$0d,$0d,$0d,$0d,$0d,$0d,$0d,$0d,$0d
  1328.     .byte $0d,$0d,$0d,$0d,$0d,$0d,$0d,$0d,$0c,$0c,$0c,$0c,$0c,$0c,$0c,$0f
  1329.     .byte $03,$06,$06,$0d,$0b,$0b,$0b,$0b,$04,$04,$04,$04,$04,$0b,$0b,$0b
  1330.     .byte $0b,$0b,$0b,$0b,$0b,$0c,$0f,$0d,$0d,$0d,$0d,$0d,$0d,$0d,$0d,$0d
  1331.     .byte $0d,$0d,$0d,$0d,$0d,$0d,$0d,$0f,$07,$07,$06,$06,$0d,$0b,$0b,$0b
  1332.     .byte $04,$04,$04,$04,$04,$0b,$0b,$0b,$0b,$0b,$0b,$0d,$0b,$01,$0f,$0d
  1333.     .byte $0d,$0d,$0d,$0d,$0d,$0d,$0d,$0d,$03,$03,$03,$03,$03,$03,$03,$0f
  1334.     .byte $05,$05,$05,$06,$06,$0d,$0b,$0b,$0b,$04,$04,$04,$0b,$0b,$08,$08
  1335.     .byte $08,$08,$08,$0d,$0b,$01,$0f,$0d,$08,$08,$08,$08,$08,$0d,$0d,$0d
  1336.     .byte $03,$03,$0d,$06,$0d,$03,$03,$0f,$04,$04,$04,$04,$06,$06,$0d,$0b
  1337.     .byte $0b,$04,$04,$04,$0b,$08,$08,$08,$08,$08,$08,$08,$0b,$0c,$0f,$08
  1338.     .byte $08,$08,$08,$08,$08,$08,$0d,$0d,$03,$03,$0d,$0a,$0d,$03,$03,$0f
  1339.     .byte $02,$02,$02,$02,$02,$06,$06,$0d,$0b,$04,$04,$0b,$0b,$09,$09,$09
  1340.     .byte $09,$09,$09,$09,$0b,$0b,$0b,$09,$09,$09,$09,$09,$09,$09,$0d,$0d
  1341.     .byte $0c,$0c,$0c,$0c,$0c,$0c,$0c,$0f,$06,$01,$01,$01,$01,$01,$06,$06
  1342.     .byte $0d,$0b,$04,$0b,$0b,$08,$08,$08,$08,$08,$08,$0b,$0b,$0b,$0b,$08
  1343.     .byte $08,$08,$08,$08,$08,$08,$0d,$0d,$0c,$0c,$0c,$0c,$0c,$0c,$0c,$0f
  1344.     .byte $06,$06,$08,$08,$08,$08,$08,$06,$06,$0d,$0b,$0b,$0b,$08,$08,$08
  1345.     .byte $08,$08,$08,$0b,$0b,$0c,$0c,$08,$08,$08,$08,$08,$08,$08,$08,$0f
  1346.     .byte $0c,$0c,$0c,$0c,$0c,$0c,$0c,$0f,$06,$06,$06,$09,$09,$09,$09,$09
  1347.     .byte $06,$06,$0d,$0b,$0b,$08,$08,$08,$08,$08,$08,$0d,$0b,$0c,$0c,$08
  1348.     .byte $08,$08,$08,$08,$08,$08,$0f,$0f,$0f,$0f,$0f,$09,$09,$09,$0d,$0d
  1349.     .byte $06,$06,$06,$06,$0a,$0a,$0a,$0a,$0a,$06,$06,$0d,$0b,$0f,$0f,$0f
  1350.     .byte $0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$08,$0f
  1351.     .byte $0f,$0f,$0d,$09,$09,$09,$0d,$0d,$06,$06,$06,$06,$06,$0d,$0d,$0d
  1352.     .byte $0d,$0d,$06,$06,$0b,$09,$0c,$03,$0f,$0f,$0c,$0f,$0f,$0f,$0c,$0f
  1353.     .byte $0f,$0f,$0c,$0f,$0f,$0f,$08,$08,$08,$08,$0f,$09,$08,$06,$0d,$0d
  1354.     .byte $04,$06,$06,$06,$06,$06,$0e,$0e,$0e,$0e,$0e,$06,$06,$09,$0f,$03
  1355.     .byte $0f,$03,$0f,$03,$0f,$03,$0f,$03,$0f,$03,$0f,$03,$0f,$0f,$08,$08
  1356.     .byte $08,$08,$0d,$0b,$0c,$06,$0d,$0d,$04,$04,$06,$06,$06,$06,$06,$0f
  1357.     .byte $0f,$0f,$0f,$0f,$06,$06,$0f,$03,$0f,$03,$0f,$03,$0f,$03,$0f,$03
  1358.     .byte $0f,$03,$0f,$03,$0f,$0f,$08,$08,$08,$08,$0d,$0b,$0c,$06,$0d,$0d
  1359.     .byte $04,$04,$04,$06,$06,$06,$06,$06,$0c,$0c,$0c,$0c,$0c,$06,$0f,$0f
  1360.     .byte $0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$08,$08
  1361.     .byte $08,$08,$0d,$0b,$0f,$06,$0d,$0d
  1362.  
  1363. escalator_1:
  1364.         .byte $03,$06,$06,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
  1365.         .byte $07,$07,$06,$06,$00,$00,$00,$00,$00,$00,$00,$00,$00
  1366.         .byte $05,$05,$05,$06,$06,$00,$00,$00,$00,$00,$00,$00,$00
  1367.         .byte $04,$04,$04,$04,$06,$06,$00,$00,$00,$00,$00,$00,$00
  1368.         .byte $02,$02,$02,$02,$02,$06,$06,$00,$00,$00,$00,$00,$00
  1369.         .byte $06,$01,$01,$01,$01,$01,$06,$06,$00,$00,$00,$00,$00
  1370.         .byte $06,$06,$08,$08,$08,$08,$08,$06,$06,$00,$00,$00,$00
  1371.         .byte $06,$06,$06,$09,$09,$09,$09,$09,$06,$06,$00,$00,$00
  1372.         .byte $06,$06,$06,$06,$0a,$0a,$0a,$0a,$0a,$06,$06,$00,$00
  1373.         .byte $06,$06,$06,$06,$06,$0d,$0d,$0d,$0d,$0d,$06,$06,$00
  1374.         .byte $00,$06,$06,$06,$06,$06,$0e,$0e,$0e,$0e,$0e,$06,$06
  1375.         .byte $00,$00,$06,$06,$06,$06,$06,$0f,$0f,$0f,$0f,$0f,$06
  1376.         .byte $00,$00,$00,$06,$06,$06,$06,$06,$0c,$0c,$0c,$0c,$0c
  1377.  
  1378. escalator_2:
  1379.         .byte $0c,$06,$06,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
  1380.         .byte $03,$03,$06,$06,$00,$00,$00,$00,$00,$00,$00,$00,$00
  1381.         .byte $07,$07,$07,$06,$06,$00,$00,$00,$00,$00,$00,$00,$00
  1382.         .byte $05,$05,$05,$05,$06,$06,$00,$00,$00,$00,$00,$00,$00
  1383.         .byte $04,$04,$04,$04,$04,$06,$06,$00,$00,$00,$00,$00,$00
  1384.         .byte $06,$02,$02,$02,$02,$02,$06,$06,$00,$00,$00,$00,$00
  1385.         .byte $06,$06,$01,$01,$01,$01,$01,$06,$06,$00,$00,$00,$00
  1386.         .byte $06,$06,$06,$08,$08,$08,$08,$08,$06,$06,$00,$00,$00
  1387.         .byte $06,$06,$06,$06,$09,$09,$09,$09,$09,$06,$06,$00,$00
  1388.         .byte $06,$06,$06,$06,$06,$0a,$0a,$0a,$0a,$0a,$06,$06,$00
  1389.         .byte $00,$06,$06,$06,$06,$06,$0d,$0d,$0d,$0d,$0d,$06,$06
  1390.         .byte $00,$00,$06,$06,$06,$06,$06,$0e,$0e,$0e,$0e,$0e,$06
  1391.         .byte $00,$00,$00,$06,$06,$06,$06,$06,$0f,$0f,$0f,$0f,$0f
  1392.  
  1393. escalator_3:
  1394.         .byte $0f,$06,$06,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
  1395.         .byte $0c,$0c,$06,$06,$00,$00,$00,$00,$00,$00,$00,$00,$00
  1396.         .byte $03,$03,$03,$06,$06,$00,$00,$00,$00,$00,$00,$00,$00
  1397.         .byte $07,$07,$07,$07,$06,$06,$00,$00,$00,$00,$00,$00,$00
  1398.         .byte $05,$05,$05,$05,$05,$06,$06,$00,$00,$00,$00,$00,$00
  1399.         .byte $06,$04,$04,$04,$04,$04,$06,$06,$00,$00,$00,$00,$00
  1400.         .byte $06,$06,$02,$02,$02,$02,$02,$06,$06,$00,$00,$00,$00
  1401.         .byte $06,$06,$06,$01,$01,$01,$01,$01,$06,$06,$00,$00,$00
  1402.         .byte $06,$06,$06,$06,$08,$08,$08,$08,$08,$06,$06,$00,$00
  1403.         .byte $06,$06,$06,$06,$06,$09,$09,$09,$09,$09,$06,$06,$00
  1404.         .byte $00,$06,$06,$06,$06,$06,$0a,$0a,$0a,$0a,$0a,$06,$06
  1405.         .byte $00,$00,$06,$06,$06,$06,$06,$0d,$0d,$0d,$0d,$0d,$06
  1406.         .byte $00,$00,$00,$06,$06,$06,$06,$06,$0e,$0e,$0e,$0e,$0e
  1407.  
  1408. escalator_4:
  1409.         .byte $0e,$06,$06,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
  1410.         .byte $0f,$0f,$06,$06,$00,$00,$00,$00,$00,$00,$00,$00,$00
  1411.         .byte $0c,$0c,$0c,$06,$06,$00,$00,$00,$00,$00,$00,$00,$00
  1412.         .byte $03,$03,$03,$03,$06,$06,$00,$00,$00,$00,$00,$00,$00
  1413.         .byte $07,$07,$07,$07,$07,$06,$06,$00,$00,$00,$00,$00,$00
  1414.         .byte $06,$05,$05,$05,$05,$05,$06,$06,$00,$00,$00,$00,$00
  1415.         .byte $06,$06,$04,$04,$04,$04,$04,$06,$06,$00,$00,$00,$00
  1416.         .byte $06,$06,$06,$02,$02,$02,$02,$02,$06,$06,$00,$00,$00
  1417.         .byte $06,$06,$06,$06,$01,$01,$01,$01,$01,$06,$06,$00,$00
  1418.         .byte $06,$06,$06,$06,$06,$08,$08,$08,$08,$08,$06,$06,$00
  1419.         .byte $00,$06,$06,$06,$06,$06,$09,$09,$09,$09,$09,$06,$06
  1420.         .byte $00,$00,$06,$06,$06,$06,$06,$0a,$0a,$0a,$0a,$0a,$06
  1421.         .byte $00,$00,$00,$06,$06,$06,$06,$06,$0d,$0d,$0d,$0d,$0d
  1422.  
  1423. escalator_5:
  1424.         .byte $0d,$06,$06,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
  1425.         .byte $0e,$0e,$06,$06,$00,$00,$00,$00,$00,$00,$00,$00,$00
  1426.         .byte $0f,$0f,$0f,$06,$06,$00,$00,$00,$00,$00,$00,$00,$00
  1427.         .byte $0c,$0c,$0c,$0c,$06,$06,$00,$00,$00,$00,$00,$00,$00
  1428.         .byte $03,$03,$03,$03,$03,$06,$06,$00,$00,$00,$00,$00,$00
  1429.         .byte $06,$07,$07,$07,$07,$07,$06,$06,$00,$00,$00,$00,$00
  1430.         .byte $06,$06,$05,$05,$05,$05,$05,$06,$06,$00,$00,$00,$00
  1431.         .byte $06,$06,$06,$04,$04,$04,$04,$04,$06,$06,$00,$00,$00
  1432.         .byte $06,$06,$06,$06,$02,$02,$02,$02,$02,$06,$06,$00,$00
  1433.         .byte $06,$06,$06,$06,$06,$01,$01,$01,$01,$01,$06,$06,$00
  1434.         .byte $00,$06,$06,$06,$06,$06,$08,$08,$08,$08,$08,$06,$06
  1435.         .byte $00,$00,$06,$06,$06,$06,$06,$09,$09,$09,$09,$09,$06
  1436.         .byte $00,$00,$00,$06,$06,$06,$06,$06,$0a,$0a,$0a,$0a,$0a
  1437.  
  1438. escalator_6:
  1439.         .byte $0a,$06,$06,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
  1440.         .byte $0d,$0d,$06,$06,$00,$00,$00,$00,$00,$00,$00,$00,$00
  1441.         .byte $0e,$0e,$0e,$06,$06,$00,$00,$00,$00,$00,$00,$00,$00
  1442.         .byte $0f,$0f,$0f,$0f,$06,$06,$00,$00,$00,$00,$00,$00,$00
  1443.         .byte $0c,$0c,$0c,$0c,$0c,$06,$06,$00,$00,$00,$00,$00,$00
  1444.         .byte $06,$03,$03,$03,$03,$03,$06,$06,$00,$00,$00,$00,$00
  1445.         .byte $06,$06,$07,$07,$07,$07,$07,$06,$06,$00,$00,$00,$00
  1446.         .byte $06,$06,$06,$05,$05,$05,$05,$05,$06,$06,$00,$00,$00
  1447.         .byte $06,$06,$06,$06,$04,$04,$04,$04,$04,$06,$06,$00,$00
  1448.         .byte $06,$06,$06,$06,$06,$02,$02,$02,$02,$02,$06,$06,$00
  1449.         .byte $00,$06,$06,$06,$06,$06,$01,$01,$01,$01,$01,$06,$06
  1450.         .byte $00,$00,$06,$06,$06,$06,$06,$08,$08,$08,$08,$08,$06
  1451.         .byte $00,$00,$00,$06,$06,$06,$06,$06,$09,$09,$09,$09,$09
  1452.  
  1453. escalator_7:
  1454.         .byte $09,$06,$06,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
  1455.         .byte $0a,$0a,$06,$06,$00,$00,$00,$00,$00,$00,$00,$00,$00
  1456.         .byte $0d,$0d,$0d,$06,$06,$00,$00,$00,$00,$00,$00,$00,$00
  1457.         .byte $0e,$0e,$0e,$0e,$06,$06,$00,$00,$00,$00,$00,$00,$00
  1458.         .byte $0f,$0f,$0f,$0f,$0f,$06,$06,$00,$00,$00,$00,$00,$00
  1459.         .byte $06,$0c,$0c,$0c,$0c,$0c,$06,$06,$00,$00,$00,$00,$00
  1460.         .byte $06,$06,$03,$03,$03,$03,$03,$06,$06,$00,$00,$00,$00
  1461.         .byte $06,$06,$06,$07,$07,$07,$07,$07,$06,$06,$00,$00,$00
  1462.         .byte $06,$06,$06,$06,$05,$05,$05,$05,$05,$06,$06,$00,$00
  1463.         .byte $06,$06,$06,$06,$06,$04,$04,$04,$04,$04,$06,$06,$00
  1464.         .byte $00,$06,$06,$06,$06,$06,$02,$02,$02,$02,$02,$06,$06
  1465.         .byte $00,$00,$06,$06,$06,$06,$06,$01,$01,$01,$01,$01,$06
  1466.         .byte $00,$00,$00,$06,$06,$06,$06,$06,$08,$08,$08,$08,$08
  1467.  
  1468. escalator_8:
  1469.         .byte $08,$06,$06,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
  1470.         .byte $09,$09,$06,$06,$00,$00,$00,$00,$00,$00,$00,$00,$00
  1471.         .byte $0a,$0a,$0a,$06,$06,$00,$00,$00,$00,$00,$00,$00,$00
  1472.         .byte $0d,$0d,$0d,$0d,$06,$06,$00,$00,$00,$00,$00,$00,$00
  1473.         .byte $0e,$0e,$0e,$0e,$0e,$06,$06,$00,$00,$00,$00,$00,$00
  1474.         .byte $06,$0f,$0f,$0f,$0f,$0f,$06,$06,$00,$00,$00,$00,$00
  1475.         .byte $06,$06,$0c,$0c,$0c,$0c,$0c,$06,$06,$00,$00,$00,$00
  1476.         .byte $06,$06,$06,$03,$03,$03,$03,$03,$06,$06,$00,$00,$00
  1477.         .byte $06,$06,$06,$06,$07,$07,$07,$07,$07,$06,$06,$00,$00
  1478.         .byte $06,$06,$06,$06,$06,$05,$05,$05,$05,$05,$06,$06,$00
  1479.         .byte $00,$06,$06,$06,$06,$06,$04,$04,$04,$04,$04,$06,$06
  1480.         .byte $00,$00,$06,$06,$06,$06,$06,$02,$02,$02,$02,$02,$06
  1481.         .byte $00,$00,$00,$06,$06,$06,$06,$06,$01,$01,$01,$01,$01
  1482.  
  1483. escalator_9:
  1484.         .byte $01,$06,$06,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
  1485.         .byte $08,$08,$06,$06,$00,$00,$00,$00,$00,$00,$00,$00,$00
  1486.         .byte $09,$09,$09,$06,$06,$00,$00,$00,$00,$00,$00,$00,$00
  1487.         .byte $0a,$0a,$0a,$0a,$06,$06,$00,$00,$00,$00,$00,$00,$00
  1488.         .byte $0d,$0d,$0d,$0d,$0d,$06,$06,$00,$00,$00,$00,$00,$00
  1489.         .byte $06,$0e,$0e,$0e,$0e,$0e,$06,$06,$00,$00,$00,$00,$00
  1490.         .byte $06,$06,$0f,$0f,$0f,$0f,$0f,$06,$06,$00,$00,$00,$00
  1491.         .byte $06,$06,$06,$0c,$0c,$0c,$0c,$0c,$06,$06,$00,$00,$00
  1492.         .byte $06,$06,$06,$06,$03,$03,$03,$03,$03,$06,$06,$00,$00
  1493.         .byte $06,$06,$06,$06,$06,$07,$07,$07,$07,$07,$06,$06,$00
  1494.         .byte $00,$06,$06,$06,$06,$06,$05,$05,$05,$05,$05,$06,$06
  1495.         .byte $00,$00,$06,$06,$06,$06,$06,$04,$04,$04,$04,$04,$06
  1496.         .byte $00,$00,$00,$06,$06,$06,$06,$06,$02,$02,$02,$02,$02
  1497.  
  1498. escalator_10:
  1499.         .byte $02,$06,$06,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
  1500.         .byte $01,$01,$06,$06,$00,$00,$00,$00,$00,$00,$00,$00,$00
  1501.         .byte $08,$08,$08,$06,$06,$00,$00,$00,$00,$00,$00,$00,$00
  1502.         .byte $09,$09,$09,$09,$06,$06,$00,$00,$00,$00,$00,$00,$00
  1503.         .byte $0a,$0a,$0a,$0a,$0a,$06,$06,$00,$00,$00,$00,$00,$00
  1504.         .byte $06,$0d,$0d,$0d,$0d,$0d,$06,$06,$00,$00,$00,$00,$00
  1505.         .byte $06,$06,$0e,$0e,$0e,$0e,$0e,$06,$06,$00,$00,$00,$00
  1506.         .byte $06,$06,$06,$0f,$0f,$0f,$0f,$0f,$06,$06,$00,$00,$00
  1507.         .byte $06,$06,$06,$06,$0c,$0c,$0c,$0c,$0c,$06,$06,$00,$00
  1508.         .byte $06,$06,$06,$06,$06,$03,$03,$03,$03,$03,$06,$06,$00
  1509.         .byte $00,$06,$06,$06,$06,$06,$07,$07,$07,$07,$07,$06,$06
  1510.         .byte $00,$00,$06,$06,$06,$06,$06,$05,$05,$05,$05,$05,$06
  1511.         .byte $00,$00,$00,$06,$06,$06,$06,$06,$04,$04,$04,$04,$04
  1512.  
  1513.  
  1514. ; Sprite data (63 bytes)
  1515. ; flag
  1516. sprite0_data:
  1517.         .byte 0,0,0,0,0,0,0,0,0,8,0,0,10,0,32,11
  1518.         .byte 128,160,11,170,160,11,170,160,10,170,160,10,170,160,10,170
  1519.         .byte 160,10,170,160,6,170,160,4,170,128,4,42,0,4,0,0
  1520.         .byte 4,0,0,4,0,0,4,0,0,4,0,0,4,0,0
  1521.  
  1522. sprite1_data:
  1523.         .byte 0,0,0,0,0,0,0,0,0,10,0,0,10,128,0,10
  1524.         .byte 224,32,10,234,160,10,234,160,10,234,160,10,170,160,10,170
  1525.         .byte 160,10,170,160,4,170,160,4,42,160,4,10,128,4,0,0
  1526.         .byte 4,0,0,4,0,0,4,0,0,4,0,0,4,0,0
  1527.  
  1528. sprite2_data:
  1529.         .byte 0,0,0,0,0,0,0,0,0,10,128,0,10,176,0,10
  1530.         .byte 248,0,10,250,160,10,250,160,10,186,160,10,170,160,10,170
  1531.         .byte 160,10,170,160,4,42,160,4,10,160,4,2,160,4,0,0
  1532.         .byte 4,0,0,4,0,0,4,0,0,4,0,0,4,0,0
  1533.  
  1534. sprite3_data:
  1535.         .byte 0,0,0,0,0,0,2,160,0,10,188,0,10,190,0,10
  1536.         .byte 190,160,10,190,160,10,186,160,10,170,160,10,170,160,10,170
  1537.         .byte 160,8,10,160,4,2,160,4,0,160,4,0,0,4,0,0
  1538.         .byte 4,0,0,4,0,0,4,0,0,4,0,0,4,0,0
  1539.  
  1540. sprite4_data:
  1541.         .byte 0,0,0,0,168,0,2,174,0,10,190,128,10,190,160,10
  1542.         .byte 190,160,10,190,160,10,174,160,10,170,160,10,170,160,10,2
  1543.         .byte 160,8,0,160,4,0,32,4,0,0,4,0,0,4,0,0
  1544.         .byte 4,0,0,4,0,0,4,0,0,4,0,0,4,0,0
  1545.  
  1546. sprite5_data:
  1547.         .byte 0,42,0,0,175,128,2,175,160,10,175,160,10,175,160,10
  1548.         .byte 175,160,10,175,160,10,171,160,10,170,160,10,128,160,10,0
  1549.         .byte 32,8,0,0,4,0,0,4,0,0,4,0,0,4,0,0
  1550.         .byte 4,0,0,4,0,0,4,0,0,4,0,0,4,0,0
  1551.  
  1552. sprite6_data:
  1553.         .byte 0,10,128,0,42,224,0,170,224,10,170,224,10,170,224,10
  1554.         .byte 170,224,10,170,160,10,170,160,10,170,160,10,160,32,10,128
  1555.         .byte 0,10,0,0,4,0,0,4,0,0,4,0,0,4,0,0
  1556.         .byte 4,0,0,4,0,0,4,0,0,4,0,0,4,0,0
  1557.  
  1558. sprite7_data:
  1559.         .byte 0,2,160,0,10,160,0,42,160,10,170,160,10,170,160,10
  1560.         .byte 170,160,10,170,160,10,170,160,10,170,160,10,168,0,10,160
  1561.         .byte 0,10,128,0,4,0,0,4,0,0,4,0,0,4,0,0
  1562.         .byte 4,0,0,4,0,0,4,0,0,4,0,0,4,0,0
  1563.  
  1564. sprite8_data:
  1565.         .byte 0,0,0,0,0,160,0,2,160,8,10,160,10,170,160,10
  1566.         .byte 170,160,10,170,160,10,170,160,10,170,160,10,170,160,10,170
  1567.         .byte 0,10,168,0,6,160,0,4,0,0,4,0,0,4,0,0
  1568.         .byte 4,0,0,4,0,0,4,0,0,4,0,0,4,0,0
  1569.  
  1570. sprite9_data:
  1571.         .byte 0,0,0,0,0,0,0,0,32,8,0,160,10,2,160,10
  1572.         .byte 170,160,10,170,160,10,170,160,10,170,160,10,170,160,10,170
  1573.         .byte 160,10,170,128,6,170,0,4,168,0,4,0,0,4,0,0
  1574.         .byte 4,0,0,4,0,0,4,0,0,4,0,0,4,0,0
  1575.  
  1576.  
  1577.  
  1578. ; standing person
  1579. sprite10_data:
  1580.         .byte 0,60,0,0,126,0,0,126,0,0,126,0,0,60,0,0
  1581.         .byte 0,0,0,255,0,1,255,128,1,255,128,1,255,128,0,126
  1582.         .byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  1583.         .byte 0,231,0,0,0,0,0,0,0,0,0,0,0,0,0
  1584.  
  1585. sprite11_data:
  1586.         .byte 0,0,0,0,0,0,0,0,0,0,0,0,0,66,0,0
  1587.         .byte 60,0,0,0,0,0,0,0,0,0,0,0,0,0,1,129
  1588.         .byte 128,1,129,128,0,0,0,0,0,0,0,0,0,0,0,0
  1589.         .byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  1590.  
  1591. sprite12_data:
  1592.         .byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  1593.         .byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  1594.         .byte 0,0,126,0,0,126,0,0,102,0,0,102,0,0,102,0
  1595.         .byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  1596.  
  1597. ; sitting person
  1598. sprite13_data:
  1599.         .byte 0,60,0,0,126,0,0,66,0,0,66,0,0,0,0,0
  1600.         .byte 0,0,0,255,0,1,255,128,1,255,128,1,189,128,1,189
  1601.         .byte 128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  1602.         .byte 1,195,128,0,0,0,0,0,0,0,0,0,0,0,0
  1603.  
  1604. sprite14_data:
  1605.         .byte 0,0,0,0,0,0,0,24,0,0,60,0,0,126,0,0
  1606.         .byte 60,0,0,0,0,0,0,0,0,0,0,0,66,0,0,66
  1607.         .byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  1608.         .byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  1609.  
  1610. sprite15_data:
  1611.         .byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  1612.         .byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  1613.         .byte 0,0,255,0,0,255,0,0,195,0,0,195,0,0,195,0
  1614.         .byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  1615.  
Advertisement
Add Comment
Please, Sign In to add comment