zx stuff → jumping test
controls: p = right, o = left, space = jump
Loading ZX Spectrum...

source code bellow can be loaded into SPIN emulator:
  ; ============================================================
  ;  Hero sprite animation & main game loop
  ; ============================================================
  ;  IYL  - animation frame counter
  ;  IX   - points to current sprite frame data
  ; ============================================================

org 33000

  ; ----------------------------------------------------------
  ;  Constants
  ; ----------------------------------------------------------
hero_color EQU %01000101  ; flash-no, bright-on, black paper, cyan ink
anim_frames EQU 8  ; total frames of animation for hero
sprite_attrs EQU 44000  ; memory location for sprite attribute byte

  ; ----------------------------------------------------------
  ;  Initialisation
  ; ----------------------------------------------------------

          ; --- Load full-screen background art ---
        ld hl, background  ; source: background data
        ld de, 16384  ; dest:   screen memory
        ld bc, 6912  ; length: pixel + attribute bytes
        ldir

          ; --- Set up hero sprite ---
        ld ix, sprite  ; point to first animation frame

        ld a, %00001001  ; sprite attributes:
                                ;   bit 0-2: animation frame (unused)
                                ;   bit 3:   direction (0=left, 1=right)
                                ;   bit 4:   moving
                                ;   bit 5:   in-air
        ld (sprite_attrs), a

        ld iyl, anim_frames  ; initialise frame counter

        call reverse_hero_sprites  ; generate mirror-image frames

          ; --- Set starting coordinates ---
        ld b, 144  ; y-coordinate (pixels)
        ld c, 3  ; x-coordinate (pixels)

        ld a, b
        ld (sprite_y), a
        ld a, c
        ld (sprite_x), a

          ; --- Save background under hero, then draw ---
        call Get_Pix_Address_DE  ; compute screen address from x,y
        call save_sprite_bg  ; store background pixels to buffer
        call draw_sprite  ; render hero
        dec iyl

  ; ----------------------------------------------------------
  ;  Main loop
  ; ----------------------------------------------------------
main 
        call gravity
        call key_scan

          ; --- Redraw? (moving horizontally OR y changed) ---
        ld a, (sprite_attrs)
        bit 4, a
        jp nz, do_draw
        ld a, (sprite_attrs)
        bit 5, a
        jp z, no_move  ; grounded & not moving › skip draw

do_draw 
        call save_sprite_bg
        call draw_sprite
        halt

          ; --- Animate only if walking (bit 4), not just airborne ---
        ld a, (sprite_attrs)
        bit 4, a
        jp z, skip_anim

        res 4, a  ; clear "moving" flag
        ld (sprite_attrs), a

        dec iyl
        call z, reset_sprite  ; wrap to frame 0 if underflow
        jp no_move

  ; --- Stationary: point to correct idle frame by direction ---
skip_anim 
        ld a, (sprite_attrs)
        bit 3, a
        jp nz, skip_right

        ld ix, sprite + 576 + 72  ; 3rd frame, left direction
        jp skip_done

skip_right 
        ld ix, sprite + 72  ; 3rd frame, right direction

skip_done 
        res 4, a
        ld (sprite_attrs), a

no_move 
        jp main

  ; ----------------------------------------------------------
  ;  Unreachable return (kept for completeness)
  ; ----------------------------------------------------------
ret

  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;;;;;;;;;;;;   routines below  ;;;;;;;;;;;;;
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

gravity 

    ld a, (44000)
    bit 5, a  ; in-air?
    jp z, no_jump

    ld a, (45000)  ; load jump timer
    cp 0
    jp z, land_jump

    cp 26  ; >26 = going up, <=26 = coming down
    jp nc, jump_up

jump_down 

    call clr_sprite
    call restore_sprite_bg

    ld a, (sprite_y)
    inc a  ; y++ (move down)
    ld (sprite_y), a
    ld a, (45000)
    dec a  ; timer--
    jp store_jump_vel

jump_up 

    call clr_sprite
    call restore_sprite_bg

    ld a, (sprite_y)
    dec a  ; y-- (move up)
    ld (sprite_y), a
    ld a, (45000)
    dec a  ; timer--
    jp store_jump_vel

store_jump_vel 

    ld (45000), a
    jp no_jump

land_jump 

    ld a, (44000)
    res 5, a  ; clear in-air flag
    ld (44000), a

no_jump 
    ret

key_scan 
  ;now we scan the keyboard for 'space' 'P' and 'O' keys

scan_space 
    ld a, (44000)
    bit 5, a
    jp nz, scan_p  ; already in-air, ignore

    ld bc, 0x7FFE  ; B=0xDF (Row 5), C=0xFE (Port)

    in a, (c)  ; Read column states
    and %00000001  ; Mask bit 2 ONLY (Column 2 = I key)
    jp nz, scan_p  ; Jump if space is pressed (bit is 0)
      ; i_pressed
    jp space_pressed

scan_p 
    ld bc, 0xDFFE  ; detect P

    in a, (c)
    and 1
    jp nz, scan_o
      ;p_pressed
    jp p_pressed

scan_o 
    ld bc, 0xDFFE  ; detect O
    in a, (c)
    and 2
    jp nz, end_key_scan
      ; o_pressed
    jp o_pressed

space_pressed 

    call clr_sprite
    call restore_sprite_bg

    ld a, (44000)
    bit 5, a
    jp nz, end_key_scan  ; already in-air, ignore
    set 5, a
    ld (44000), a
    ld a, 50  ;height of jump
    ld (45000), a
    jp end_key_scan

end_key_scan 
  ;update x and y coordinates
ret

p_pressed 
    ld a, (44000)
    bit 5, a
    jp nz, p_skip_erase

    call clr_sprite
    call restore_sprite_bg

p_skip_erase 
      ; was facing left? need to turn
    ld a, (44000)
    bit 3, a
    jp nz, no_turn_r

turn_right 
    ld a, iyl
    cp 3
    jp z, right_turn_adjustX
    cp 4
    jp z, right_turn_adjustX
    cp 5
    jp z, right_turn_adjustX
    jp right_turn_no_adjustX

right_turn_adjustX 
    ld a, (sprite_x)
    inc a
    inc a
    inc a
    inc a
    ld (sprite_x), a
    jp right_turn_no_adjustX

right_turn_no_adjustX 
    ld iyl, 1
    ld a, (sprite_x)
    add a, 7
    and %11111000
    sub 7
    ld (sprite_x), a

      ; set direction to right
    ld a, (44000)
    set 3, a
    ld (44000), a
    jp p_done

no_turn_r 
p_done 
    ld a, (sprite_x)
    inc a
    ld (sprite_x), a
    ld a, (44000)
    set 4, a
    ld (44000), a
    jp scan_o

o_pressed 
    ld a, (44000)
    bit 5, a
    jp nz, o_skip_erase  ; in-air: gravity already erased

    call clr_sprite
    call restore_sprite_bg

o_skip_erase 
      ; was facing right? need to turn
    ld a, (44000)
    bit 3, a
    jp z, no_turn_l

turn_left 
      ; certain frames require x-coordinate adjustment
    ld a, iyl
    cp 3
    jp z, left_turn_adjustX
    cp 4
    jp z, left_turn_adjustX
    cp 5
    jp z, left_turn_adjustX
    jp left_turn_no_adjustX

left_turn_adjustX 
    ld a, (sprite_x)
    dec a
    dec a
    dec a
    dec a
    ld (sprite_x), a
    jp left_turn_no_adjustX

left_turn_no_adjustX 
      ; align to x-grid
    ld a, (sprite_x)
    add a, 8
    ld (sprite_x), a
    ld iyl, 1
    ld a, (sprite_x)
    sub 6
    and %11111000
    add a, 6
    ld (sprite_x), a

      ; set direction to left
    ld a, (44000)
    res 3, a
    ld (44000), a
    jp o_done

no_turn_l 
o_done 
    ld a, (sprite_x)
    dec a
    ld (sprite_x), a
    ld a, (44000)
    set 4, a
    ld (44000), a

    jp end_key_scan


draw_sprite 
    ld a, (44000)
    bit 3, a
    jp nz, use_right

ld a, iyl
jp z, frame_offset

    ld ix, sprite + 576
    jp frame_offset

use_right 

frame_offset 
    ld a, iyl
    add a, a  ; multiply by 2 (defw entries are 2 bytes)
    ld hl, frame_off
    add a, l
    ld l, a
    inc a
    jp c, no_carry
    inc h
no_carry 
    ld e, (hl)
    inc h
    ld d, (hl)
    add ix, de

    ld a, (sprite_y)
    ld b, a
    ld a, (sprite_x)
    ld c, a
    ld h, 8

    ld a, (44000)
    bit 3, a
    jp nz, draw_right

    call loop_24x24_reverse
    call apply_attributes
    inc d
    ld h, 8
    call loop_24x24_reverse
    call apply_attributes
    inc d
    ld h, 8
    call loop_24x24_reverse
    call apply_attributes

    jp rows_done

draw_right 

    call loop_24x24
    call apply_attributes
    inc d
    ld h, 8
    call loop_24x24
    call apply_attributes

    inc d
    ld h, 8

    call loop_24x24
    call apply_attributes

    jp rows_done

rows_done 
    ret

reset_sprite 
    ld a, $10  ; beeper ON
    out (254), a
    ld b, 80  ; duration

beep_d 
    djnz beep_d
    ld a, 0  ; beeper OFF
    out (254), a

    ld a, (44000)
    bit 3, a
    jp nz, reset_right
    ld ix, sprite + 576
    jp reset_done
reset_right 
    ld ix, sprite

reset_done 
    ld iyl, anim_frames
    ret

loop_24x24 
    call Get_Pix_Address_DE
    push hl
    push bc
    ex de, hl  ; for masking we must use HL instead of DE

      ; --- first column bytes ---
    ld a, (ix+0)
    sla a
    cpl
    and (hl)
    ld (hl), a

    ld a, (ix+0)
    sra a
    cpl
    and (hl)
    ld (hl), a

    ld a, (ix+0)
    or (hl)
    ld (hl), a
    inc l

      ; --- second column bytes ---
    ld a, (ix+1)
    sla a
    cpl
    and (hl)
    ld (hl), a

    ld a, (ix+1)
    sra a
    cpl
    and (hl)
    ld (hl), a

    ld a, (ix+1)
    or (hl)
    ld (hl), a
    inc l

      ; --- third column bytes ---
    ld a, (ix+2)
    sla a
    cpl
    and (hl)
    ld (hl), a

    ld a, (ix+2)
    sra a
    cpl
    and (hl)
    ld (hl), a

    ld a, (ix+2)
    or (hl)
    ld (hl), a
    inc l

      ; --- Advance IX ---
    inc ix
    inc ix
    inc ix
    pop bc
    inc b
    pop hl
    dec h
    jp nz, loop_24x24

    ret


loop_24x24_reverse 
    call Get_Pix_Address_DE
    push hl
    push bc
    ex de, hl

      ; --- first column (ix+2) ---
    ld a, (ix+2)
    sla a
    cpl
    and (hl)
    ld (hl), a

    ld a, (ix+2)
    sra a
    cpl
    and (hl)
    ld (hl), a

    ld a, (ix+2)
    or (hl)
    ld (hl), a
    inc l

      ; --- second column (ix+1) ---
    ld a, (ix+1)
    sla a
    cpl
    and (hl)
    ld (hl), a

    ld a, (ix+1)
    sra a
    cpl
    and (hl)
    ld (hl), a

    ld a, (ix+1)
    or (hl)
    ld (hl), a
    inc l

      ; --- third column (ix+0) ---
    ld a, (ix+0)
    sla a
    cpl
    and (hl)
    ld (hl), a

    ld a, (ix+0)
    sra a
    cpl
    and (hl)
    ld (hl), a

    ld a, (ix+0)
    or (hl)
    ld (hl), a
    inc l

      ; --- Advance IX ---
    inc ix
    inc ix
    inc ix
    pop bc
    inc b
    pop hl
    dec h

    jp nz, loop_24x24_reverse

    ret


apply_attributes  ; per row for character
    push de
    push hl
    push bc

    call get_attr_addr

    pop bc

      ; --- load characters with attribute values ---
    ld a, hero_color

    ld (de), a  ; first 8x8 of row
    inc e
    ld (de), a  ; second 8x8 of row
    inc e
    ld (de), a  ; third 8x8 of row

    pop hl  ; restore HL
    pop de

    ret


clr_sprite
    ld a, (sprite_y)
    ld b, a
    ld a, (sprite_x)
    ld c, a

    ld h, 8  ; set counter
    call loop_clr
    inc d
    ld h, 8  ; set counter
    call loop_clr
    inc d
    ld h, 8  ; set counter
    call loop_clr

    ret


loop_clr
    call Get_Pix_Address_DE
    ld a, 0
    ld (de), a
    inc e
    ld (de), a
    inc e
    ld (de), a
    inc b
    dec h

    jp nz, loop_clr

    ret

save_sprite_bg 
    ld a, (sprite_y)
    ld b, a
    ld a, (sprite_x)
    ld c, a

    push bc
    push ix
    ld ix, sprite_bg_addr
    ld h, 8
    call save_sprite_bg_loop

    ld h, 8
    inc d
    dec e
    dec e
    dec e
    call save_sprite_bg_loop

    ld h, 8
    inc d
    dec e
    dec e
    dec e
    call save_sprite_bg_loop

      ; --- save sprite background attributes ---
    push bc
    push hl

    ld a, b
    sub 16
    ld b, a

    call get_attr_addr

    ld hl, 37000

      ; --- row 1 ---
    ld a, (de)  ; save 1st row
    ld (hl), a
    inc e
    inc l
    ld a, (de)
    ld (hl), a
    inc e
    inc l
    ld a, (de)
    ld (hl), a

    inc l
    ld a, e
    add a, 30  ; jump to 2nd row
    ld e, a

      ; --- row 2 ---
    ld a, (de)  ; save 2nd row
    ld (hl), a
    inc l
    inc e
    ld a, (de)
    ld (hl), a
    inc l
    inc e
    ld a, (de)
    ld (hl), a

    inc l
    ld a, e
    add a, 30  ; jump to 3rd row
    ld e, a

      ; --- row 3 ---
    ld a, (de)  ; save
    ld (hl), a
    inc l
    inc e
    ld a, (de)
    ld (hl), a
    inc l
    inc e
    ld a, (de)
    ld (hl), a

    inc l
    ld a, e
    add a, 30  ; jump to 4th row
    ld e, a

      ; --- row 4 ---
    ld a, (de)  ; save
    ld (hl), a
    inc l
    inc e
    ld a, (de)
    ld (hl), a
    inc l
    inc e
    ld a, (de)
    ld (hl), a

    pop hl
    pop bc

    pop ix
    pop bc
    ret


save_sprite_bg_loop 
    call Get_Pix_Address_DE
    ld a, (de)
    ld (ix+0), a
    inc e
    ld a, (de)
    ld (ix+1), a
    inc e
    ld a, (de)
    ld (ix+2), a
    inc b
    inc ixl
    inc ixl
    inc ixl
    dec h
    jp nz, save_sprite_bg_loop
    ret


restore_sprite_bg 
    ld a, (sprite_y)
    ld b, a
    ld a, (sprite_x)
    ld c, a

    push bc
    push ix  ; preserve sprite data addr
    ld ix, sprite_bg_addr
    ld h, 8
    call restore_sprite_bg_loop

    inc d
    dec e
    dec e
    dec e
    ld h, 8
    call restore_sprite_bg_loop

    inc d
    dec e
    dec e
    dec e
    ld h, 8
    call restore_sprite_bg_loop

      ; --- restore sprite background attributes ---
    push de
    push hl

    ld a, b
    sub 16
    ld b, a

    call get_attr_addr  ; for restoring
    ld hl, 37000

      ; --- row 1 ---
    ld a, (hl)
    ld (de), a
    inc l
    inc e
    ld a, (hl)
    ld (de), a
    inc l
    inc e
    ld a, (hl)
    ld (de), a

    dec e
    dec e
    inc l

    ld a, e
    add a, 32  ; jump to 2nd row
    ld e, a

      ; --- row 2 ---
    ld a, (hl)  ; restore
    ld (de), a
    inc e
    inc l
    ld a, (hl)
    ld (de), a
    inc e
    inc l
    ld a, (hl)
    ld (de), a

    dec e
    dec e
    inc l

    ld a, e
    add a, 32  ; jump to 3rd row
    ld e, a

      ; --- row 3 ---
    ld a, (hl)  ; restore
    ld (de), a
    inc e
    inc l
    ld a, (hl)
    ld (de), a
    inc e
    inc l
    ld a, (hl)
    ld (de), a

    dec e
    dec e
    inc l

    ld a, e
    add a, 32  ; jump to 4th row
    ld e, a

      ; --- row 4 ---
    ld a, (hl)  ; restore
    ld (de), a
    inc e
    inc l
    ld a, (hl)
    ld (de), a
    inc e
    inc l
    ld a, (hl)
    ld (de), a

    pop hl
    pop de

    pop ix
    pop bc
    ret


restore_sprite_bg_loop 
    call Get_Pix_Address_DE
    ld a, (ix+0)
    ld (de), a
    inc e

    ld a, (ix+1)
    ld (de), a
    inc e

    ld a, (ix+2)
    ld (de), a
    inc b
    dec h
    inc ix
    inc ix
    inc ix
    jp nz, restore_sprite_bg_loop
    ret


get_attr_addr 
  ; attr address = 22528 + (INT(Y / 8) × 32) + INT(X / 8)

    ld h, 0  ; clear H
    ld l, 0
    ld a, b
    sub 8  ; back to original y (B)
    ld b, a
    ld a, b
    srl a
    srl a
    srl a
    ld l, a
    add hl, hl
    add hl, hl
    add hl, hl
    add hl, hl
    add hl, hl
    ld de, 22528
    add hl, de
    ex de, hl

    ld h, 0
    ld l, 0
    ld a, c
    srl a
    srl a
    srl a
    ld l, a
    add hl, de
    ex de, hl
    ret


delay 
    push af
delay_loop 
    dec bc
    ld a, b
    or c
    jp nz, delay_loop
    pop af
    ret


Get_Pix_Address_DE 
    ld a, b  ; Y coordinate
    and %00000111  ; Y2, Y1, Y0
    or %01000000  ; base &4000
    ld d, a  ; store in D

    ld a, b  ; Y7, Y6
    rra
    rra
    rra
    and %00011000
    or d  ; OR with Y2, Y1, Y0
    ld d, a  ; final D

    ld a, b  ; Y5, Y4, Y3
    rla
    rla
    and %11100000
    ld e, a  ; store in E

    ld a, c  ; X4, X3, X2, X1, X0
    rra
    rra
    rra
    and %00011111
    or e  ; OR with Y5, Y4, Y3
    ld e, a  ; final E

    ret  ; address in DE
reverse_hero_sprites 
  ; we will now take our 8-frames of 24x24 sprites from
  ; memory location labeled 'sprite', reverse them -
  ; and load them into memory location at 'sprite_reversed'
    ld bc, 576  ; setting our counter 72 x 8 frames
    ld hl, sprite  ; load 'hl' with source address
    ld de, sprite_reversed  ; load 'de' with destination address

sprite_reverse_loop 
    ld a, (hl)  ; load 'a' byte by byte
    call reverse_a  ; we call the routine to reverse the bits in 'a'
    ld (de), a  ; we load it into the destination memory address
    inc hl  ; increment for next source memory address
    inc de  ; increment for next destination address
    ld a, c  ; check to see where our counter is at
    or b  ; have we reached 0? if yes the Z-flag will be set
    dec bc  ; decrement our counter
    jp nz, sprite_reverse_loop  ; if Z is not set, continue
    ret


reverse_a 
  ; routine to mirror bits. we are 'pre-rendering' with it to avoid slowdown
    push bc
    ld b, a
    rrca
    rrca
    xor b
    and %10101010
    xor b
    ld b, a
    rrca
    rrca
    rrca
    rlc b
    xor b
    and %00110011
    xor b
    rlca
    rlca
    pop bc
    ret


sprite 
  ; hero animation frames

  ; --- frame 1 - top ---
    defb %00010000, %00000000, %00000000
    defb %00011111, %10000000, %00000000
    defb %00001111, %11111000, %00000000
    defb %00000011, %11111110, %00000000
    defb %00000001, %11111111, %00000000
    defb %00000000, %11111111, %10000000
    defb %00000000, %01111111, %11000000
    defb %00000000, %00111111, %11000000

  ; --- frame 1 - middle ---
    defb %00000000, %00011111, %11100000
    defb %00000000, %00111111, %11000000
    defb %00000000, %00111111, %10000000
    defb %00000000, %00000111, %00000000
    defb %00000000, %00000010, %00000000
    defb %00000000, %00001111, %00000000
    defb %00000000, %00011111, %10000000
    defb %00000000, %00111111, %11000000


  ; --- frame 1 - bottom ---
    defb %00000000, %01101111, %01110000
    defb %00000000, %11001111, %00110000
    defb %00000000, %11001111, %00000000
    defb %00000000, %00000111, %10000000
    defb %00000000, %00000100, %11000000
    defb %00000000, %00011000, %01100000
    defb %00000000, %00010010, %00101000
    defb %00000000, %00011110, %00111000


  ; --- frame 2 - top ---
    defb %00001100, %00000000, %00000000
    defb %00001111, %11100000, %00000000
    defb %00000111, %11111000, %00000000
    defb %00000011, %11111111, %00000000
    defb %00000000, %01111111, %11000000
    defb %00000000, %01111111, %11000000
    defb %00000000, %00111111, %11000000
    defb %00000000, %00001111, %11100000

  ; --- frame 2 - middle ---
    defb %00000000, %00001111, %11110000
    defb %00000000, %00011111, %11110000
    defb %00000000, %00011111, %11000000
    defb %00000000, %00000011, %11000000
    defb %00000000, %00000001, %00000000
    defb %00000000, %00000111, %11000000
    defb %00000000, %00000111, %11000000
    defb %00000000, %00001111, %11000000

  ; --- frame 2 - bottom ---
    defb %00000000, %00110111, %11000000
    defb %00000000, %00110111, %11000000
    defb %00000000, %00000110, %00000000
    defb %00000000, %00000110, %00000000
    defb %00000000, %00000110, %00000000
    defb %00000000, %00000110, %00000000
    defb %00000000, %00000111, %01000000
    defb %00000000, %00000111, %11000000

  ; --- frame 3 - top ---
    defb %00000001, %10000000, %00000000
    defb %00000000, %11111100, %00000000
    defb %00000000, %01111110, %00000000
    defb %00000000, %01111111, %11000000
    defb %00000000, %00111111, %11100000
    defb %00000000, %00011111, %11110000
    defb %00000000, %00011111, %11111000
    defb %00000000, %00000111, %11111100

  ; --- frame 3 - middle ---
    defb %00000000, %00000111, %11111000
    defb %00000000, %00001111, %11110000
    defb %00000000, %00001111, %11110000
    defb %00000000, %00000000, %01000000
    defb %00000000, %00000000, %11110000
    defb %00000000, %00000001, %11110000
    defb %00000000, %00000001, %11110110
    defb %00000000, %00000001, %11111110


  ; --- frame 3 - bottom ---
    defb %00000000, %00000011, %11100000
    defb %00000000, %00001111, %11100000
    defb %00000000, %00001101, %11000000
    defb %00000000, %00000001, %00110100
    defb %00000000, %00000001, %00111100
    defb %00000000, %00000111, %00000000
    defb %00000000, %00001110, %00000000
    defb %00000000, %00001111, %00000000
  ; --- frame 4 - top ---
    defb %00000001, %10000000, %00000000
    defb %00000001, %11111100, %00000000
    defb %00000001, %11111110, %00000000
    defb %00000000, %00111111, %11100000
    defb %00000000, %00011111, %11111000
    defb %00000000, %00011111, %11111100
    defb %00000000, %00000111, %11111110
    defb %00000000, %00000011, %11111111

  ; --- frame 4 - middle ---
    defb %00000000, %00000001, %11111100
    defb %00000000, %00000111, %11111100
    defb %00000000, %00000111, %11111000
    defb %00000000, %00000000, %11111000
    defb %00000000, %00000000, %00100000
    defb %00000000, %00000000, %01111000
    defb %00000000, %00000000, %11111000
    defb %00000000, %00000000, %11111000

  ; --- frame 4 - bottom ---
    defb %00000000, %00000001, %11111100
    defb %00000000, %00000011, %11111111
    defb %00000000, %00000110, %00100011
    defb %00000000, %00000000, %11111000
    defb %00000000, %00000000, %11111010
    defb %00000000, %00000111, %00011110
    defb %00000000, %00000110, %00000110
    defb %00000000, %00000111, %00000000


  ; --- frame 5 - top ---
    defb %00000000, %00110000, %00000000
    defb %00000000, %00011110, %00000000
    defb %00000000, %00011111, %10000000
    defb %00000000, %00000111, %11110000
    defb %00000000, %00000111, %11111000
    defb %00000000, %00000011, %11111100
    defb %00000000, %00000001, %11111100
    defb %00000000, %00000000, %11111110

  ; --- frame 5 - middle ---
    defb %00000000, %00000000, %11111111
    defb %00000000, %00000001, %11111110
    defb %00000000, %00000001, %11111100
    defb %00000000, %00000000, %00111000
    defb %00000000, %00000000, %00011000
    defb %00000000, %00000000, %00111100
    defb %00000000, %00000000, %00111100
    defb %00000000, %00000000, %00111100

  ; --- frame 5 - bottom ---
    defb %00000000, %00000000, %11111111
    defb %00000000, %00000000, %11111111
    defb %00000000, %00000000, %11011011
    defb %00000000, %00000000, %00011000
    defb %00000000, %00000000, %00011000
    defb %00000000, %00000000, %11100100
    defb %00000000, %00000000, %00000111
    defb %00000000, %00000000, %00000011


  ; --- frame 6 - top ---
    defb %00011000, %00000000, %00000000
    defb %00001111, %10000000, %00000000
    defb %00000111, %10000000, %00000000
    defb %00000011, %11110000, %00000000
    defb %00000011, %11111000, %00000000
    defb %00000001, %11111110, %00000000
    defb %00000001, %11111111, %00000000
    defb %00000001, %11111111, %10000000

  ; --- frame 6 - middle ---
    defb %00000000, %11111110, %00000000
    defb %00000000, %11111110, %00000000
    defb %00000001, %11111110, %00000000
    defb %00000001, %10111100, %00000000
    defb %00000000, %00001000, %00000000
    defb %00000000, %00111100, %00000000
    defb %00000000, %00111110, %00000000
    defb %00000000, %00111110, %00000000

  ; --- frame 6 - bottom ---
    defb %00000000, %00111111, %00000000
    defb %00000000, %00101100, %00000000
    defb %00000000, %00011110, %00000000
    defb %00000000, %00101010, %00000000
    defb %00000000, %00111011, %00000000
    defb %00000001, %11100011, %00000000
    defb %00000001, %10000011, %01000000
    defb %00000001, %11000011, %10000000


  ; --- frame 7 - top ---
    defb %01100000, %00000000, %00000000
    defb %00011110, %00000000, %00000000
    defb %00011110, %00000000, %00000000
    defb %00001111, %11110000, %00000000
    defb %00000011, %11111110, %00000000
    defb %00000011, %11111110, %00000000
    defb %00000001, %11111111, %00000000
    defb %00000000, %01111111, %00000000

  ; --- frame 7 - middle ---
    defb %00000000, %01111111, %00000000
    defb %00000000, %11111110, %00000000
    defb %00000000, %11111110, %00000000
    defb %00000000, %00111110, %00000000
    defb %00000000, %00001000, %00000000
    defb %00000000, %00011100, %00000000
    defb %00000000, %00111100, %00000000
    defb %00000000, %01111110, %00000000

  ; --- frame 7 - bottom ---
    defb %00000000, %01111110, %00000000
    defb %00000000, %01111110, %00000000
    defb %00000000, %00111110, %00000000
    defb %00000000, %00111000, %00000000
    defb %00000000, %00111000, %00000000
    defb %00000000, %01001100, %00000000
    defb %00000000, %01100101, %00000000
    defb %00000000, %01110111, %00000000


  ; --- frame 8 - top ---
    defb %00111000, %00000000, %00000000
    defb %00011111, %10000000, %00000000
    defb %00000111, %11110000, %00000000
    defb %00000011, %11111000, %00000000
    defb %00000001, %11111110, %00000000
    defb %00000000, %11111110, %00000000
    defb %00000000, %01111111, %10000000
    defb %00000000, %01111111, %11000000

  ; --- frame 8 - middle ---
    defb %00000000, %00111111, %00000000
    defb %00000000, %01111111, %00000000
    defb %00000000, %00111111, %00000000
    defb %00000000, %00001110, %00000000
    defb %00000000, %00000100, %00000000
    defb %00000000, %00011110, %00000000
    defb %00000000, %00011110, %00000000
    defb %00000000, %00011111, %10000000

  ; --- frame 8 - bottom ---
    defb %00000000, %01101110, %11000000
    defb %00000000, %01101110, %11000000
    defb %00000000, %00001110, %00000000
    defb %00000000, %00001110, %00000000
    defb %00000000, %00001110, %10000000
    defb %00000000, %01110000, %11000000
    defb %00000000, %01000100, %01010000
    defb %00000000, %01100000, %01110000

sprite_reversed   ; pre-flipped bytes go here

org 39000
frame_off 
defw 0, 72, 144, 216, 288, 360, 432, 504

org 40000
sprite_y defb 0
sprite_x defb 0

org 41000
sprite_bg_addr   ; location for saving background behind sprite

org 42000
background   ; data for full screen artwork
    defb 0, 1, 119, 127, 127, 113, 16, 7, 119, 87, 87, 119, 119, 119, 119, 119
    defb 119, 119, 119, 127, 85, 5, 119, 119, 68, 5, 0, 84, 17, 0, 0, 0
    defb 81, 85, 16, 5, 87, 84, 65, 4, 0, 23, 119, 87, 119, 119, 119, 119
    defb 119, 119, 125, 84, 65, 1, 127, 119, 127, 0, 7, 119, 119, 64, 85, 80
    defb 5, 0, 16, 21, 80, 4, 0, 0, 87, 119, 119, 67, 119, 119, 119, 119
    defb 119, 119, 119, 117, 85, 1, 95, 85, 80, 0, 0, 16, 84, 21, 80, 0
    defb 0, 4, 0, 4, 65, 21, 85, 0, 0, 5, 117, 65, 127, 119, 119, 87
    defb 119, 117, 85, 16, 1, 0, 65, 127, 116, 17, 1, 85, 85, 85, 80, 0
    defb 0, 0, 23, 85, 1, 1, 0, 0, 23, 119, 213, 16, 65, 119, 125, 68
    defb 127, 127, 119, 85, 0, 0, 21, 85, 17, 17, 1, 1, 16, 16, 0, 0
    defb 16, 17, 16, 5, 85, 85, 16, 0, 23, 80, 0, 21, 19, 119, 84, 0
    defb 80, 1, 85, 80, 1, 85, 80, 119, 117, 0, 0, 85, 64, 16, 0, 0
    defb 0, 0, 1, 0, 0, 1, 5, 0, 0, 1, 17, 80, 87, 81, 64, 21
    defb 17, 0, 0, 0, 1, 85, 65, 85, 17, 0, 0, 0, 85, 85, 0, 0
    defb 0, 0, 0, 0, 4, 16, 0, 0, 0, 85, 81, 80, 0, 80, 16, 85
    defb 21, 84, 0, 1, 65, 85, 80, 1, 0, 0, 81, 20, 85, 85, 1, 64
    defb 40, 0, 255, 255, 255, 251, 170, 15, 255, 255, 255, 255, 255, 255, 255, 255
    defb 255, 255, 255, 255, 186, 171, 255, 255, 251, 34, 15, 251, 176, 0, 128, 0
    defb 170, 191, 186, 162, 63, 168, 128, 0, 0, 255, 255, 239, 255, 255, 255, 255
    defb 255, 255, 251, 186, 2, 138, 191, 255, 254, 42, 15, 255, 250, 162, 171, 168
    defb 2, 34, 42, 42, 42, 250, 40, 0, 63, 255, 255, 171, 255, 255, 255, 255
    defb 255, 255, 255, 251, 186, 0, 191, 251, 160, 8, 136, 34, 186, 191, 170, 160
    defb 0, 2, 2, 7, 187, 170, 171, 128, 0, 35, 251, 163, 255, 255, 255, 175
    defb 255, 255, 186, 166, 10, 160, 35, 191, 187, 186, 163, 251, 187, 187, 160, 160
    defb 0, 0, 11, 254, 170, 11, 160, 2, 159, 191, 254, 170, 15, 255, 255, 170
    defb 31, 255, 255, 186, 42, 0, 170, 42, 42, 168, 38, 2, 40, 32, 0, 2
    defb 170, 56, 170, 2, 123, 187, 186, 0, 59, 123, 224, 168, 131, 191, 254, 0
    defb 176, 8, 167, 130, 15, 186, 240, 127, 250, 160, 0, 62, 192, 8, 40, 0
    defb 40, 130, 10, 162, 32, 50, 42, 128, 0, 2, 58, 170, 191, 251, 136, 0
    defb 170, 128, 0, 32, 32, 46, 0, 168, 184, 162, 32, 34, 42, 186, 34, 0
    defb 2, 0, 0, 0, 8, 162, 138, 0, 0, 62, 34, 10, 10, 160, 2, 170
    defb 170, 58, 0, 0, 128, 186, 170, 42, 0, 2, 170, 187, 170, 186, 170, 128
    defb 16, 0, 21, 255, 255, 213, 84, 0, 255, 221, 221, 223, 223, 255, 255, 255
    defb 223, 223, 223, 253, 84, 71, 223, 223, 209, 0, 71, 85, 0, 1, 0, 0
    defb 81, 85, 84, 80, 85, 64, 0, 0, 0, 31, 221, 199, 223, 223, 223, 255
    defb 223, 223, 245, 20, 197, 0, 95, 255, 253, 84, 65, 221, 220, 4, 84, 0
    defb 0, 16, 68, 5, 0, 112, 68, 0, 13, 223, 253, 81, 223, 221, 223, 255
    defb 255, 223, 223, 85, 85, 4, 87, 245, 64, 64, 4, 84, 85, 85, 84, 0
    defb 0, 2, 4, 5, 21, 17, 85, 64, 0, 21, 85, 81, 127, 223, 255, 215
    defb 255, 221, 212, 68, 0, 16, 0, 255, 85, 84, 85, 85, 85, 85, 0, 64
    defb 5, 64, 5, 253, 220, 21, 64, 1, 95, 213, 213, 20, 7, 223, 249, 197
    defb 15, 255, 253, 84, 68, 0, 69, 92, 1, 0, 4, 1, 80, 0, 0, 16
    defb 20, 16, 84, 0, 5, 85, 80, 0, 0, 85, 192, 4, 65, 31, 212, 4
    defb 24, 4, 4, 4, 5, 0, 64, 93, 197, 4, 64, 4, 64, 64, 0, 0
    defb 5, 64, 17, 5, 0, 0, 1, 0, 0, 0, 65, 85, 29, 197, 1, 0
    defb 65, 0, 0, 1, 1, 85, 65, 84, 81, 0, 64, 1, 68, 84, 0, 64
    defb 0, 0, 0, 0, 4, 69, 69, 68, 0, 20, 0, 69, 1, 64, 64, 85
    defb 69, 21, 0, 1, 65, 93, 1, 29, 0, 1, 85, 85, 85, 85, 69, 0
    defb 128, 0, 15, 255, 251, 238, 170, 0, 255, 255, 255, 255, 255, 255, 255, 255
    defb 255, 255, 255, 239, 254, 175, 255, 255, 239, 226, 11, 254, 136, 2, 0, 136
    defb 238, 143, 170, 42, 42, 168, 128, 0, 40, 255, 255, 239, 255, 255, 255, 255
    defb 255, 255, 254, 239, 128, 2, 175, 255, 254, 174, 160, 63, 254, 170, 170, 170
    defb 0, 136, 36, 2, 128, 238, 238, 10, 143, 255, 255, 170, 255, 255, 255, 255
    defb 255, 255, 255, 254, 236, 170, 191, 255, 169, 160, 2, 168, 175, 255, 234, 160
    defb 0, 3, 14, 232, 190, 44, 238, 224, 8, 15, 254, 170, 255, 255, 255, 235
    defb 255, 255, 248, 138, 0, 10, 10, 191, 174, 174, 174, 254, 254, 238, 0, 160
    defb 142, 160, 11, 255, 250, 238, 128, 3, 239, 255, 254, 238, 159, 255, 251, 134
    defb 131, 255, 254, 234, 170, 128, 10, 185, 8, 0, 43, 2, 0, 8, 0, 0
    defb 170, 14, 174, 170, 8, 234, 186, 138, 42, 255, 140, 34, 0, 63, 170, 98
    defb 44, 2, 40, 168, 0, 0, 0, 63, 250, 170, 162, 136, 34, 168, 168, 8
    defb 160, 8, 2, 136, 8, 0, 8, 160, 0, 0, 46, 174, 175, 238, 170, 10
    defb 168, 160, 0, 10, 138, 171, 130, 170, 162, 160, 128, 4, 168, 238, 42, 160
    defb 0, 0, 0, 8, 14, 162, 142, 160, 130, 8, 160, 130, 162, 160, 168, 142
    defb 170, 15, 128, 8, 8, 238, 168, 130, 0, 10, 191, 174, 255, 250, 138, 0
    defb 16, 0, 23, 119, 245, 85, 81, 0, 23, 119, 119, 119, 119, 119, 119, 119
    defb 119, 119, 119, 245, 21, 83, 119, 119, 243, 128, 17, 116, 21, 64, 1, 0
    defb 85, 85, 84, 20, 20, 19, 0, 0, 0, 119, 119, 87, 119, 119, 119, 119
    defb 119, 119, 245, 215, 1, 5, 23, 119, 117, 85, 16, 23, 113, 81, 65, 0
    defb 0, 0, 0, 0, 16, 213, 68, 0, 1, 119, 245, 64, 119, 119, 119, 119
    defb 119, 119, 117, 84, 81, 0, 23, 247, 81, 0, 5, 64, 85, 85, 80, 4
    defb 0, 0, 1, 84, 16, 64, 85, 80, 5, 1, 84, 84, 119, 119, 119, 101
    defb 119, 119, 212, 0, 0, 1, 0, 81, 85, 84, 0, 85, 84, 68, 0, 64
    defb 5, 64, 1, 117, 117, 84, 64, 3, 119, 85, 85, 85, 87, 119, 245, 5
    defb 1, 127, 81, 85, 84, 5, 0, 87, 48, 0, 0, 4, 80, 0, 0, 0
    defb 16, 20, 69, 17, 0, 21, 20, 80, 0, 21, 84, 0, 0, 55, 80, 80
    defb 20, 0, 0, 0, 0, 0, 0, 21, 85, 16, 0, 0, 21, 64, 64, 0
    defb 0, 0, 0, 0, 4, 0, 4, 16, 0, 16, 20, 85, 21, 84, 4, 0
    defb 65, 0, 0, 5, 17, 85, 0, 0, 64, 64, 0, 5, 64, 85, 16, 0
    defb 0, 0, 16, 0, 21, 1, 5, 16, 0, 4, 64, 0, 5, 0, 1, 85
    defb 85, 1, 64, 0, 1, 85, 64, 20, 0, 0, 16, 85, 85, 85, 20, 0
    defb 162, 138, 0, 19, 251, 186, 170, 32, 1, 255, 255, 255, 255, 255, 255, 255
    defb 255, 255, 255, 251, 187, 187, 255, 255, 255, 136, 59, 255, 255, 208, 10, 0
    defb 170, 171, 186, 170, 186, 2, 128, 2, 142, 255, 255, 239, 255, 255, 255, 255
    defb 255, 255, 255, 254, 138, 130, 191, 255, 170, 170, 42, 175, 234, 170, 170, 34
    defb 0, 128, 0, 0, 191, 186, 170, 8, 131, 255, 255, 179, 255, 255, 255, 255
    defb 255, 255, 255, 234, 162, 162, 170, 254, 238, 128, 10, 170, 191, 255, 170, 32
    defb 0, 0, 51, 254, 136, 136, 136, 176, 1, 139, 186, 138, 191, 255, 255, 233
    defb 255, 255, 191, 160, 128, 2, 11, 186, 186, 138, 170, 187, 186, 152, 0, 32
    defb 10, 170, 2, 191, 255, 250, 136, 3, 255, 187, 251, 186, 63, 255, 255, 131
    defb 130, 127, 171, 250, 184, 27, 130, 62, 228, 32, 0, 184, 128, 32, 0, 0
    defb 168, 14, 171, 171, 162, 43, 186, 162, 138, 59, 176, 160, 160, 191, 160, 168
    defb 138, 0, 0, 0, 0, 2, 128, 30, 170, 42, 40, 2, 163, 136, 168, 40
    defb 2, 0, 8, 0, 42, 0, 0, 0, 34, 2, 186, 186, 171, 186, 40, 0
    defb 42, 176, 0, 10, 170, 187, 160, 40, 162, 0, 0, 10, 130, 251, 170, 160
    defb 0, 0, 0, 32, 58, 138, 162, 186, 40, 34, 3, 128, 11, 128, 42, 255
    defb 251, 162, 160, 0, 1, 239, 128, 10, 128, 34, 136, 187, 187, 186, 42, 0
    defb 80, 69, 64, 69, 253, 81, 0, 0, 1, 221, 221, 253, 253, 255, 255, 255
    defb 255, 255, 255, 213, 85, 20, 255, 255, 255, 64, 28, 93, 253, 192, 21, 64
    defb 5, 85, 84, 84, 0, 0, 0, 1, 247, 255, 253, 87, 253, 253, 255, 255
    defb 255, 255, 255, 252, 68, 1, 223, 253, 197, 69, 4, 21, 85, 69, 85, 0
    defb 0, 0, 0, 0, 28, 212, 69, 0, 0, 85, 253, 85, 253, 253, 255, 255
    defb 255, 253, 212, 85, 64, 17, 1, 127, 117, 0, 0, 21, 29, 93, 208, 64
    defb 0, 0, 113, 245, 0, 0, 16, 80, 4, 215, 213, 65, 69, 255, 252, 68
    defb 255, 253, 255, 65, 64, 0, 21, 213, 85, 68, 16, 85, 85, 16, 0, 0
    defb 0, 20, 64, 125, 221, 85, 68, 1, 253, 197, 197, 85, 7, 255, 245, 1
    defb 64, 21, 85, 212, 80, 85, 64, 29, 196, 0, 0, 81, 1, 64, 0, 0
    defb 84, 4, 69, 21, 0, 69, 21, 64, 69, 5, 212, 84, 69, 84, 192, 16
    defb 5, 0, 0, 0, 0, 0, 0, 21, 68, 0, 0, 0, 85, 4, 64, 0
    defb 0, 0, 4, 0, 68, 0, 0, 0, 5, 0, 84, 85, 64, 28, 4, 4
    defb 20, 80, 4, 5, 80, 81, 64, 0, 0, 1, 0, 21, 5, 85, 68, 0
    defb 0, 0, 0, 64, 84, 4, 69, 80, 4, 0, 1, 0, 21, 0, 5, 85
    defb 212, 68, 80, 0, 1, 213, 68, 1, 64, 64, 5, 84, 85, 85, 4, 0
    defb 226, 170, 128, 43, 255, 238, 32, 8, 130, 191, 255, 255, 255, 255, 255, 255
    defb 255, 255, 255, 254, 234, 142, 255, 255, 255, 136, 255, 255, 255, 232, 42, 168
    defb 42, 234, 250, 170, 160, 134, 168, 0, 255, 255, 255, 239, 255, 255, 255, 255
    defb 255, 255, 255, 254, 170, 130, 255, 254, 233, 42, 136, 46, 174, 126, 190, 136
    defb 32, 8, 0, 32, 137, 238, 238, 232, 42, 143, 254, 235, 255, 255, 255, 255
    defb 255, 255, 254, 186, 8, 168, 202, 255, 254, 170, 2, 170, 191, 255, 234, 160
    defb 8, 128, 63, 254, 224, 128, 136, 224, 160, 255, 234, 168, 207, 255, 254, 238
    defb 255, 255, 255, 198, 168, 128, 175, 250, 170, 162, 2, 224, 184, 48, 0, 8
    defb 136, 42, 168, 63, 255, 254, 232, 8, 127, 238, 188, 254, 175, 255, 238, 0
    defb 224, 142, 235, 248, 168, 255, 224, 159, 254, 8, 0, 251, 224, 16, 40, 0
    defb 40, 130, 42, 206, 128, 139, 42, 34, 32, 170, 232, 168, 227, 255, 224, 170
    defb 142, 128, 0, 32, 40, 168, 128, 234, 170, 168, 128, 0, 46, 174, 136, 160
    defb 2, 0, 2, 0, 138, 8, 8, 0, 0, 254, 168, 234, 130, 248, 168, 170
    defb 138, 184, 0, 2, 232, 234, 128, 168, 32, 2, 168, 174, 186, 250, 238, 128
    defb 0, 136, 8, 136, 238, 138, 34, 184, 162, 170, 136, 0, 30, 0, 46, 255
    defb 254, 42, 232, 0, 0, 239, 232, 8, 128, 160, 171, 250, 235, 174, 40, 0
    defb 0, 4, 0, 0, 21, 4, 0, 80, 1, 1, 0, 0, 84, 0, 5, 5
    defb 85, 21, 20, 0, 0, 85, 65, 0, 1, 1, 5, 69, 21, 0, 0, 0
    defb 0, 21, 85, 21, 85, 80, 0, 0, 0, 0, 1, 84, 0, 5, 17, 21
    defb 17, 85, 84, 84, 0, 1, 64, 20, 0, 1, 0, 16, 16, 64, 0, 0
    defb 0, 1, 0, 0, 4, 0, 0, 0, 0, 1, 81, 0, 16, 85, 5, 87
    defb 65, 85, 80, 16, 20, 0, 1, 0, 0, 0, 0, 0, 0, 0, 17, 0
    defb 0, 0, 0, 0, 0, 81, 0, 16, 21, 0, 0, 1, 85, 87, 0, 0
    defb 5, 119, 87, 81, 69, 5, 0, 0, 0, 0, 4, 17, 69, 65, 0, 0
    defb 64, 0, 17, 1, 16, 0, 5, 64, 0, 21, 1, 21, 85, 85, 87, 85
    defb 85, 85, 85, 85, 85, 64, 21, 80, 0, 0, 80, 1, 85, 0, 1, 64
    defb 0, 0, 0, 0, 0, 84, 0, 1, 1, 85, 85, 87, 85, 85, 85, 85
    defb 87, 87, 85, 119, 85, 85, 0, 0, 1, 0, 0, 16, 16, 16, 0, 0
    defb 0, 80, 0, 0, 64, 1, 65, 65, 1, 85, 81, 1, 0, 17, 87, 85
    defb 71, 64, 0, 1, 7, 23, 0, 21, 0, 0, 0, 0, 1, 0, 0, 0
    defb 0, 0, 20, 21, 81, 5, 16, 0, 5, 119, 0, 21, 21, 81, 7, 87
    defb 0, 0, 1, 16, 3, 5, 65, 16, 16, 0, 17, 80, 64, 0, 0, 0
    defb 2, 8, 0, 0, 42, 10, 34, 136, 34, 128, 8, 0, 184, 0, 170, 171
    defb 255, 154, 190, 8, 0, 255, 168, 10, 40, 175, 187, 171, 162, 168, 2, 0
    defb 170, 43, 190, 170, 187, 168, 0, 0, 2, 2, 1, 248, 168, 170, 168, 8
    defb 11, 250, 170, 58, 0, 43, 40, 170, 42, 2, 0, 34, 32, 136, 0, 0
    defb 0, 160, 34, 128, 42, 2, 0, 130, 0, 11, 162, 128, 2, 42, 163, 170
    defb 171, 255, 186, 174, 139, 128, 2, 2, 0, 0, 8, 32, 0, 2, 170, 128
    defb 0, 0, 0, 0, 2, 170, 170, 42, 43, 42, 2, 42, 171, 255, 42, 162
    defb 43, 191, 255, 186, 162, 35, 168, 2, 0, 0, 32, 43, 175, 162, 34, 160
    defb 136, 0, 24, 160, 32, 0, 10, 128, 160, 171, 170, 171, 255, 251, 255, 255
    defb 255, 255, 255, 255, 255, 170, 42, 186, 0, 130, 162, 170, 171, 162, 138, 128
    defb 128, 0, 0, 0, 2, 122, 32, 0, 11, 171, 191, 255, 251, 175, 251, 255
    defb 191, 255, 170, 191, 255, 255, 8, 10, 34, 0, 0, 56, 34, 10, 0, 0
    defb 0, 40, 136, 1, 160, 179, 170, 163, 139, 187, 186, 170, 168, 163, 191, 255
    defb 138, 128, 0, 0, 171, 191, 184, 2, 8, 32, 40, 40, 2, 128, 0, 2
    defb 32, 2, 8, 11, 170, 42, 168, 0, 27, 254, 162, 42, 170, 168, 43, 255
    defb 2, 160, 170, 138, 170, 139, 160, 50, 32, 168, 42, 170, 40, 0, 32, 0
    defb 4, 4, 0, 4, 20, 0, 64, 84, 5, 64, 0, 1, 64, 64, 21, 85
    defb 221, 77, 77, 0, 0, 17, 68, 4, 85, 85, 85, 93, 65, 4, 0, 0
    defb 64, 5, 85, 85, 69, 80, 0, 0, 1, 4, 1, 64, 80, 85, 0, 0
    defb 1, 213, 69, 21, 0, 21, 1, 4, 64, 0, 0, 64, 0, 0, 64, 0
    defb 0, 0, 16, 0, 0, 0, 0, 0, 0, 21, 4, 5, 21, 85, 69, 80
    defb 65, 221, 93, 84, 5, 64, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64
    defb 0, 0, 0, 0, 0, 17, 68, 17, 84, 0, 5, 5, 85, 93, 197, 85
    defb 71, 223, 213, 84, 80, 65, 80, 0, 0, 1, 21, 85, 85, 64, 1, 64
    defb 0, 4, 4, 64, 68, 0, 21, 0, 4, 85, 0, 69, 221, 85, 93, 93
    defb 93, 221, 221, 85, 85, 85, 84, 4, 64, 0, 0, 69, 85, 1, 5, 68
    defb 0, 0, 0, 0, 0, 80, 0, 0, 5, 85, 21, 68, 69, 80, 85, 93
    defb 93, 221, 69, 85, 221, 220, 0, 0, 64, 0, 0, 0, 20, 4, 0, 0
    defb 0, 84, 68, 1, 64, 81, 0, 69, 69, 92, 0, 0, 0, 4, 29, 221
    defb 196, 0, 0, 0, 5, 20, 84, 1, 16, 0, 0, 68, 0, 0, 0, 1
    defb 64, 0, 0, 21, 84, 1, 0, 1, 69, 221, 0, 0, 64, 80, 7, 85
    defb 5, 0, 0, 0, 69, 5, 1, 16, 5, 84, 84, 80, 0, 0, 0, 0
    defb 10, 138, 170, 8, 40, 8, 32, 12, 40, 32, 0, 6, 224, 162, 170, 0
    defb 255, 238, 239, 136, 8, 175, 128, 168, 170, 15, 234, 235, 138, 32, 128, 128
    defb 160, 139, 175, 143, 168, 8, 0, 0, 0, 8, 15, 224, 226, 255, 130, 0
    defb 3, 254, 238, 143, 136, 138, 192, 10, 162, 2, 0, 130, 2, 128, 128, 0
    defb 128, 32, 128, 0, 2, 0, 128, 42, 128, 46, 138, 10, 170, 175, 195, 238
    defb 235, 255, 254, 234, 163, 224, 0, 160, 0, 0, 0, 0, 10, 162, 170, 160
    defb 0, 2, 32, 130, 0, 42, 162, 174, 162, 160, 42, 170, 254, 255, 255, 255
    defb 255, 255, 255, 255, 234, 40, 248, 136, 0, 0, 234, 174, 254, 232, 130, 168
    defb 2, 10, 40, 168, 172, 0, 234, 10, 10, 238, 170, 174, 255, 254, 239, 239
    defb 239, 239, 255, 239, 255, 254, 174, 7, 128, 160, 138, 43, 250, 130, 170, 136
    defb 128, 0, 0, 0, 42, 166, 0, 0, 10, 175, 174, 234, 170, 138, 238, 255
    defb 255, 234, 168, 174, 255, 254, 168, 0, 168, 0, 0, 32, 42, 168, 0, 0
    defb 160, 44, 130, 2, 226, 104, 138, 170, 195, 254, 170, 63, 175, 234, 175, 255
    defb 230, 160, 0, 0, 174, 174, 168, 32, 10, 32, 34, 170, 10, 8, 0, 34
    defb 40, 8, 136, 14, 232, 2, 136, 2, 143, 254, 130, 46, 175, 232, 47, 255
    defb 234, 128, 138, 136, 173, 190, 226, 50, 42, 162, 250, 170, 168, 0, 162, 0
    defb 16, 5, 16, 16, 16, 0, 16, 0, 0, 16, 0, 5, 64, 65, 64, 1
    defb 87, 81, 81, 64, 1, 117, 64, 17, 17, 69, 17, 85, 1, 5, 0, 0
    defb 0, 17, 65, 65, 80, 0, 0, 0, 0, 0, 21, 0, 65, 85, 1, 5
    defb 65, 85, 81, 1, 0, 0, 0, 1, 1, 16, 1, 0, 0, 1, 0, 0
    defb 0, 0, 0, 0, 0, 0, 0, 1, 0, 80, 16, 21, 85, 87, 87, 85
    defb 65, 119, 119, 85, 16, 80, 0, 0, 0, 0, 0, 0, 16, 65, 0, 0
    defb 0, 0, 0, 17, 0, 1, 0, 21, 64, 0, 1, 17, 85, 85, 119, 85
    defb 119, 119, 119, 117, 85, 0, 20, 64, 0, 65, 85, 85, 85, 80, 1, 80
    defb 0, 0, 4, 0, 0, 0, 80, 0, 1, 85, 21, 87, 119, 117, 85, 117
    defb 85, 85, 85, 85, 85, 85, 81, 0, 80, 0, 0, 21, 16, 0, 17, 0
    defb 0, 0, 0, 0, 0, 0, 0, 0, 21, 85, 65, 64, 16, 16, 85, 85
    defb 85, 84, 0, 1, 21, 117, 80, 0, 0, 0, 0, 1, 16, 64, 0, 0
    defb 0, 20, 17, 5, 64, 81, 0, 4, 1, 117, 0, 85, 21, 80, 5, 118
    defb 17, 0, 0, 0, 4, 20, 17, 16, 16, 80, 1, 16, 0, 0, 0, 0
    defb 64, 0, 0, 1, 84, 0, 0, 5, 69, 85, 0, 21, 87, 80, 5, 117
    defb 85, 16, 0, 16, 5, 85, 81, 16, 16, 17, 80, 16, 0, 0, 0, 0
    defb 34, 171, 138, 42, 32, 0, 128, 128, 2, 8, 0, 26, 128, 130, 128, 42
    defb 187, 171, 171, 160, 0, 171, 192, 170, 170, 186, 34, 170, 138, 1, 8, 0
    defb 32, 130, 163, 162, 56, 0, 32, 32, 0, 2, 58, 11, 162, 251, 135, 170
    defb 227, 255, 171, 160, 160, 0, 0, 34, 32, 8, 2, 0, 0, 0, 0, 0
    defb 0, 0, 0, 0, 0, 128, 168, 32, 128, 240, 168, 43, 170, 191, 195, 235
    defb 235, 255, 255, 186, 170, 184, 0, 34, 32, 32, 0, 10, 234, 186, 162, 160
    defb 34, 2, 160, 42, 130, 10, 160, 58, 130, 2, 42, 170, 187, 186, 255, 186
    defb 175, 255, 255, 255, 250, 138, 14, 170, 160, 171, 163, 186, 187, 226, 2, 170
    defb 0, 0, 2, 8, 136, 11, 162, 0, 10, 251, 187, 255, 255, 255, 255, 255
    defb 255, 251, 255, 255, 255, 255, 128, 0, 58, 2, 32, 171, 168, 8, 32, 0
    defb 128, 32, 0, 34, 34, 160, 0, 0, 59, 255, 242, 170, 170, 162, 191, 255
    defb 255, 168, 32, 8, 191, 254, 232, 168, 0, 0, 2, 0, 32, 160, 0, 0
    defb 128, 40, 168, 3, 160, 186, 170, 162, 131, 254, 170, 63, 255, 234, 47, 254
    defb 43, 32, 10, 136, 136, 158, 168, 58, 10, 40, 34, 168, 0, 0, 2, 0
    defb 32, 0, 42, 138, 170, 42, 162, 3, 163, 190, 170, 46, 191, 170, 47, 187
    defb 255, 130, 130, 136, 175, 254, 170, 50, 10, 162, 186, 34, 130, 0, 0, 0
    defb 4, 85, 69, 85, 1, 0, 0, 0, 0, 0, 0, 21, 0, 1, 68, 4
    defb 69, 213, 212, 80, 0, 87, 193, 69, 84, 4, 64, 21, 4, 0, 16, 0
    defb 0, 1, 65, 64, 5, 0, 64, 0, 0, 0, 84, 65, 69, 213, 69, 85
    defb 193, 253, 212, 64, 80, 0, 64, 64, 0, 0, 4, 0, 0, 0, 0, 0
    defb 0, 0, 0, 0, 0, 69, 0, 84, 69, 192, 16, 85, 85, 85, 85, 213
    defb 193, 85, 213, 213, 84, 84, 0, 0, 0, 0, 0, 1, 5, 85, 0, 0
    defb 64, 0, 84, 20, 69, 0, 0, 80, 4, 4, 85, 85, 93, 85, 213, 85
    defb 213, 85, 85, 85, 213, 68, 69, 80, 0, 84, 21, 81, 85, 64, 5, 68
    defb 0, 4, 0, 0, 0, 21, 64, 0, 5, 85, 93, 223, 213, 85, 93, 213
    defb 85, 221, 213, 213, 221, 213, 64, 0, 21, 64, 0, 5, 16, 16, 4, 0
    defb 0, 16, 64, 0, 0, 64, 16, 64, 21, 95, 213, 69, 85, 1, 93, 255
    defb 223, 208, 5, 65, 23, 221, 80, 4, 0, 0, 4, 1, 0, 64, 0, 0
    defb 64, 0, 16, 1, 80, 85, 68, 0, 5, 253, 0, 93, 95, 208, 5, 255
    defb 5, 0, 0, 0, 1, 69, 65, 16, 4, 84, 17, 64, 0, 0, 0, 0
    defb 80, 0, 4, 4, 84, 20, 84, 5, 69, 85, 0, 29, 93, 208, 5, 213
    defb 253, 0, 0, 64, 13, 253, 80, 84, 84, 64, 20, 68, 0, 21, 64, 0
    defb 162, 174, 254, 234, 254, 128, 128, 128, 128, 0, 0, 254, 8, 42, 162, 170
    defb 234, 254, 238, 248, 0, 235, 136, 174, 170, 18, 160, 234, 138, 4, 160, 0
    defb 128, 42, 170, 224, 170, 136, 10, 168, 0, 136, 250, 168, 174, 255, 207, 239
    defb 235, 255, 254, 40, 234, 0, 0, 168, 160, 128, 0, 2, 0, 0, 40, 0
    defb 0, 0, 0, 0, 14, 186, 168, 42, 175, 162, 128, 170, 170, 255, 207, 239
    defb 235, 255, 255, 254, 154, 174, 2, 2, 128, 160, 0, 62, 170, 238, 168, 160
    defb 192, 0, 170, 32, 250, 10, 0, 232, 0, 10, 238, 170, 255, 255, 255, 255
    defb 255, 255, 255, 255, 255, 170, 171, 238, 128, 234, 238, 170, 255, 168, 138, 138
    defb 128, 0, 0, 128, 0, 46, 168, 0, 0, 239, 191, 255, 255, 255, 254, 255
    defb 239, 255, 255, 238, 239, 254, 128, 32, 175, 234, 2, 14, 40, 2, 160, 0
    defb 128, 120, 128, 136, 234, 170, 234, 168, 63, 255, 248, 42, 168, 130, 255, 255
    defb 223, 162, 168, 168, 175, 191, 232, 168, 136, 42, 136, 0, 0, 128, 0, 2
    defb 128, 40, 40, 6, 232, 170, 170, 128, 143, 254, 170, 127, 255, 232, 46, 254
    defb 128, 128, 168, 138, 172, 15, 130, 58, 40, 168, 50, 136, 32, 8, 8, 0
    defb 96, 8, 34, 8, 232, 14, 34, 2, 227, 254, 170, 42, 238, 234, 175, 255
    defb 255, 130, 138, 138, 175, 238, 234, 242, 42, 234, 14, 170, 136, 138, 160, 1
    defb 16, 0, 0, 17, 80, 0, 0, 1, 69, 87, 1, 1, 85, 16, 7, 119
    defb 117, 0, 0, 0, 5, 85, 81, 119, 80, 80, 21, 64, 0, 84, 0, 1
    defb 20, 0, 0, 85, 0, 0, 0, 81, 17, 21, 0, 69, 1, 20, 71, 127
    defb 71, 0, 0, 1, 23, 85, 5, 80, 80, 0, 0, 16, 21, 85, 0, 20
    defb 81, 64, 4, 17, 1, 0, 1, 80, 85, 16, 0, 0, 0, 64, 1, 17
    defb 4, 1, 0, 1, 21, 81, 0, 0, 0, 0, 1, 0, 84, 85, 0, 64
    defb 17, 21, 80, 20, 17, 5, 5, 81, 1, 20, 17, 16, 0, 5, 1, 85
    defb 64, 0, 0, 0, 1, 85, 80, 0, 0, 0, 0, 17, 85, 85, 84, 16
    defb 21, 85, 17, 84, 23, 81, 85, 85, 85, 84, 21, 17, 81, 17, 17, 17
    defb 85, 5, 85, 65, 21, 85, 85, 85, 85, 21, 85, 64, 81, 21, 85, 0
    defb 85, 5, 1, 84, 85, 16, 17, 85, 119, 85, 85, 85, 85, 85, 87, 85
    defb 85, 85, 85, 85, 85, 85, 87, 85, 85, 85, 117, 84, 0, 53, 84, 1
    defb 20, 1, 0, 21, 85, 0, 16, 17, 85, 21, 85, 85, 85, 85, 85, 85
    defb 85, 85, 85, 87, 85, 85, 85, 85, 117, 84, 85, 85, 81, 1, 5, 16
    defb 0, 1, 4, 85, 0, 0, 0, 16, 21, 85, 85, 87, 87, 85, 85, 87
    defb 85, 85, 85, 85, 85, 85, 117, 81, 80, 16, 1, 0, 16, 16, 0, 0
    defb 40, 0, 0, 171, 170, 0, 0, 0, 163, 254, 170, 47, 191, 232, 43, 251
    defb 187, 130, 170, 168, 175, 254, 170, 251, 170, 170, 10, 168, 163, 170, 0, 9
    defb 40, 0, 0, 175, 184, 128, 0, 162, 35, 186, 154, 34, 42, 136, 35, 251
    defb 171, 130, 170, 128, 175, 190, 3, 170, 34, 0, 2, 42, 162, 186, 128, 10
    defb 39, 160, 8, 130, 138, 0, 11, 186, 190, 170, 130, 42, 170, 226, 171, 162
    defb 10, 2, 170, 136, 170, 190, 128, 40, 130, 32, 2, 40, 186, 170, 162, 160
    defb 170, 42, 170, 187, 186, 170, 190, 170, 170, 3, 178, 2, 10, 130, 42, 170
    defb 163, 186, 255, 255, 187, 187, 32, 0, 0, 2, 2, 170, 170, 186, 190, 162
    defb 170, 186, 162, 186, 171, 170, 191, 186, 170, 170, 170, 170, 170, 170, 186, 170
    defb 171, 255, 255, 162, 170, 170, 171, 255, 187, 171, 190, 170, 154, 171, 138, 168
    defb 171, 168, 42, 175, 170, 170, 171, 255, 255, 255, 187, 191, 255, 255, 255, 255
    defb 187, 170, 187, 187, 175, 42, 187, 187, 255, 186, 187, 170, 32, 62, 168, 0
    defb 2, 34, 170, 171, 187, 0, 160, 11, 186, 191, 255, 255, 255, 255, 255, 255
    defb 255, 191, 187, 255, 191, 191, 251, 255, 251, 250, 234, 170, 168, 42, 136, 170
    defb 136, 162, 40, 32, 162, 170, 128, 2, 10, 63, 170, 255, 255, 255, 255, 255
    defb 255, 191, 255, 255, 191, 171, 186, 170, 42, 34, 170, 170, 32, 130, 32, 128
    defb 80, 4, 0, 85, 85, 0, 0, 0, 5, 93, 0, 15, 223, 208, 5, 93
    defb 223, 0, 0, 0, 29, 252, 64, 85, 80, 16, 69, 64, 65, 85, 64, 5
    defb 84, 0, 5, 93, 0, 0, 0, 81, 65, 84, 0, 0, 4, 17, 65, 253
    defb 5, 20, 0, 64, 21, 221, 5, 85, 81, 0, 4, 4, 1, 84, 0, 68
    defb 85, 64, 0, 64, 4, 64, 5, 84, 85, 4, 85, 68, 84, 81, 69, 5
    defb 64, 0, 0, 0, 17, 16, 0, 64, 0, 0, 0, 0, 85, 68, 69, 64
    defb 85, 85, 85, 85, 84, 21, 84, 20, 4, 17, 64, 4, 4, 4, 69, 85
    defb 65, 85, 85, 93, 84, 81, 64, 0, 0, 0, 1, 68, 213, 20, 85, 80
    defb 84, 28, 69, 85, 85, 69, 93, 85, 93, 85, 85, 85, 85, 69, 85, 85
    defb 85, 93, 85, 93, 69, 85, 85, 93, 85, 85, 93, 64, 64, 85, 64, 64
    defb 5, 64, 21, 213, 84, 0, 77, 85, 221, 93, 221, 93, 93, 221, 221, 221
    defb 213, 85, 85, 85, 85, 85, 85, 84, 85, 85, 221, 68, 0, 117, 80, 0
    defb 0, 4, 4, 17, 93, 1, 64, 69, 84, 21, 93, 221, 213, 93, 221, 221
    defb 221, 85, 85, 85, 85, 85, 93, 221, 213, 84, 85, 85, 4, 81, 5, 20
    defb 68, 5, 0, 0, 0, 21, 0, 64, 20, 85, 65, 221, 221, 221, 93, 221
    defb 213, 85, 93, 221, 85, 85, 85, 84, 20, 20, 65, 4, 0, 65, 64, 0
    defb 104, 10, 0, 191, 170, 128, 8, 0, 15, 254, 168, 47, 255, 232, 47, 255
    defb 255, 128, 42, 168, 175, 255, 162, 239, 40, 168, 138, 168, 138, 234, 168, 13
    defb 106, 0, 10, 255, 170, 160, 6, 232, 162, 186, 130, 136, 138, 12, 165, 254
    defb 138, 162, 170, 138, 175, 250, 175, 234, 168, 10, 0, 138, 139, 238, 138, 98
    defb 238, 224, 0, 0, 10, 128, 59, 250, 250, 170, 254, 191, 186, 175, 238, 186
    defb 130, 160, 170, 170, 40, 200, 128, 160, 128, 0, 0, 0, 47, 238, 174, 234
    defb 235, 174, 238, 238, 175, 42, 255, 138, 136, 138, 0, 160, 138, 2, 168, 138
    defb 130, 136, 174, 168, 40, 232, 160, 8, 8, 138, 170, 170, 238, 190, 238, 224
    defb 170, 254, 46, 234, 234, 128, 191, 239, 255, 238, 238, 239, 255, 239, 255, 238
    defb 238, 255, 175, 255, 175, 238, 238, 255, 254, 238, 255, 232, 168, 174, 142, 160
    defb 170, 128, 14, 254, 138, 160, 131, 255, 255, 255, 255, 255, 255, 255, 255, 255
    defb 255, 254, 239, 255, 174, 255, 255, 238, 255, 238, 255, 248, 170, 191, 234, 136
    defb 128, 136, 170, 238, 238, 130, 168, 170, 238, 255, 255, 255, 255, 255, 255, 255
    defb 255, 255, 255, 255, 239, 255, 251, 255, 255, 174, 234, 238, 170, 168, 42, 40
    defb 34, 32, 2, 10, 138, 238, 2, 170, 226, 126, 174, 255, 255, 255, 255, 255
    defb 255, 255, 255, 255, 239, 234, 170, 168, 138, 14, 160, 34, 42, 168, 32, 0
    defb 20, 0, 0, 85, 84, 0, 0, 64, 5, 117, 1, 7, 215, 80, 7, 117
    defb 119, 16, 1, 0, 23, 116, 68, 85, 16, 80, 5, 80, 0, 80, 0, 21
    defb 80, 0, 1, 85, 1, 0, 5, 80, 5, 80, 0, 80, 16, 80, 64, 117
    defb 64, 16, 0, 1, 21, 85, 69, 80, 1, 0, 0, 0, 5, 85, 17, 16
    defb 85, 64, 0, 0, 4, 0, 21, 17, 85, 5, 84, 17, 85, 85, 5, 81
    defb 0, 16, 0, 0, 16, 16, 64, 0, 0, 0, 0, 0, 85, 85, 5, 64
    defb 81, 69, 85, 85, 17, 65, 81, 4, 0, 16, 68, 0, 0, 0, 64, 0
    defb 5, 85, 87, 85, 80, 64, 0, 0, 0, 1, 21, 85, 85, 21, 85, 64
    defb 21, 17, 5, 81, 81, 64, 85, 85, 117, 85, 85, 85, 85, 85, 85, 85
    defb 85, 17, 21, 117, 85, 85, 85, 85, 81, 21, 85, 84, 0, 21, 16, 64
    defb 80, 0, 20, 69, 80, 0, 16, 85, 85, 85, 85, 85, 85, 117, 117, 117
    defb 85, 85, 85, 85, 85, 85, 85, 85, 85, 84, 85, 80, 16, 21, 84, 16
    defb 1, 0, 16, 80, 85, 0, 0, 17, 17, 85, 85, 117, 85, 85, 117, 85
    defb 85, 85, 85, 85, 85, 85, 81, 87, 112, 17, 85, 21, 5, 0, 0, 64
    defb 65, 20, 16, 0, 1, 0, 0, 64, 84, 85, 85, 85, 85, 119, 119, 119
    defb 117, 85, 85, 117, 85, 85, 84, 80, 0, 16, 0, 16, 0, 0, 0, 0
    defb 40, 2, 0, 170, 34, 160, 0, 32, 227, 254, 170, 47, 255, 224, 47, 255
    defb 255, 160, 42, 162, 175, 250, 162, 167, 170, 130, 42, 168, 34, 170, 32, 25
    defb 34, 0, 42, 235, 161, 128, 3, 162, 2, 160, 0, 34, 130, 2, 0, 250
    defb 170, 34, 42, 136, 190, 186, 171, 170, 8, 162, 128, 2, 163, 170, 160, 168
    defb 175, 184, 0, 0, 18, 8, 42, 186, 184, 138, 186, 171, 186, 42, 171, 186
    defb 160, 162, 170, 170, 34, 232, 128, 0, 0, 0, 0, 0, 58, 239, 170, 170
    defb 186, 171, 234, 186, 235, 162, 170, 10, 164, 10, 0, 0, 40, 32, 10, 136
    defb 11, 186, 191, 251, 184, 32, 42, 0, 42, 170, 170, 190, 186, 170, 186, 162
    defb 43, 170, 43, 234, 170, 130, 235, 187, 255, 255, 191, 255, 251, 255, 255, 186
    defb 250, 186, 63, 250, 191, 250, 255, 255, 190, 191, 255, 186, 160, 186, 162, 162
    defb 170, 0, 40, 126, 162, 160, 170, 171, 255, 255, 255, 255, 255, 255, 255, 255
    defb 255, 255, 255, 255, 255, 187, 255, 187, 251, 186, 187, 170, 10, 174, 42, 162
    defb 130, 32, 171, 170, 234, 10, 160, 168, 186, 191, 255, 255, 191, 255, 255, 255
    defb 255, 255, 251, 255, 187, 187, 234, 174, 234, 168, 174, 138, 170, 168, 40, 138
    defb 162, 0, 32, 42, 162, 168, 0, 40, 168, 186, 47, 235, 255, 255, 255, 255
    defb 255, 251, 255, 254, 170, 255, 170, 162, 34, 42, 128, 10, 162, 170, 0, 2
    defb 84, 0, 0, 17, 81, 64, 0, 65, 65, 85, 0, 69, 213, 80, 5, 221
    defb 221, 16, 0, 0, 29, 81, 4, 5, 81, 0, 5, 68, 0, 84, 0, 4
    defb 64, 64, 5, 85, 1, 0, 1, 69, 21, 64, 1, 64, 0, 0, 4, 196
    defb 84, 64, 64, 1, 21, 85, 69, 0, 4, 69, 0, 0, 21, 85, 0, 84
    defb 85, 80, 0, 0, 16, 16, 5, 85, 1, 5, 84, 80, 21, 68, 65, 85
    defb 68, 80, 84, 80, 21, 85, 80, 0, 0, 0, 0, 0, 85, 85, 20, 64
    defb 85, 21, 85, 85, 116, 84, 84, 0, 69, 64, 80, 0, 4, 0, 80, 0
    defb 0, 0, 5, 64, 1, 68, 80, 4, 85, 85, 69, 85, 85, 85, 21, 64
    defb 4, 65, 85, 213, 85, 17, 5, 85, 221, 221, 85, 85, 85, 85, 213, 85
    defb 221, 85, 85, 197, 93, 213, 221, 93, 84, 85, 253, 68, 0, 21, 80, 64
    defb 64, 0, 0, 85, 84, 64, 20, 85, 221, 85, 221, 221, 221, 221, 213, 221
    defb 221, 213, 221, 221, 85, 85, 93, 213, 221, 84, 93, 64, 68, 5, 4, 0
    defb 1, 64, 5, 84, 68, 64, 80, 21, 21, 221, 221, 93, 213, 221, 221, 221
    defb 221, 213, 213, 213, 85, 85, 85, 197, 84, 68, 84, 84, 84, 20, 64, 0
    defb 0, 0, 0, 0, 64, 0, 0, 68, 4, 85, 85, 85, 93, 221, 221, 221
    defb 221, 85, 221, 93, 84, 85, 84, 68, 0, 0, 0, 1, 65, 64, 0, 0
    defb 40, 0, 2, 14, 168, 136, 0, 226, 227, 254, 42, 226, 238, 168, 47, 255
    defb 239, 162, 170, 168, 175, 250, 130, 191, 194, 160, 34, 170, 234, 174, 40, 46
    defb 40, 192, 6, 238, 130, 128, 2, 170, 254, 234, 168, 42, 170, 160, 41, 250
    defb 170, 130, 170, 136, 186, 174, 162, 168, 130, 170, 128, 169, 238, 234, 129, 168
    defb 174, 224, 170, 170, 46, 130, 162, 234, 170, 166, 186, 170, 170, 138, 238, 238
    defb 136, 128, 170, 170, 143, 250, 232, 8, 0, 2, 0, 32, 191, 254, 174, 128
    defb 174, 174, 238, 255, 175, 234, 238, 170, 170, 168, 168, 2, 130, 42, 170, 170
    defb 47, 232, 255, 128, 170, 203, 234, 170, 239, 254, 234, 234, 250, 170, 238, 162
    defb 174, 235, 238, 250, 237, 170, 139, 255, 255, 255, 255, 255, 255, 255, 255, 255
    defb 255, 254, 238, 170, 255, 235, 255, 255, 254, 255, 255, 250, 160, 58, 184, 136
    defb 32, 128, 170, 174, 170, 0, 170, 175, 255, 255, 255, 255, 255, 255, 255, 255
    defb 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 255, 234, 226, 174, 142, 138
    defb 138, 162, 46, 186, 238, 42, 168, 232, 10, 250, 250, 255, 255, 255, 255, 255
    defb 255, 255, 255, 255, 254, 186, 238, 170, 238, 226, 162, 234, 170, 170, 32, 34
    defb 138, 128, 10, 130, 128, 168, 136, 160, 42, 250, 175, 238, 255, 255, 255, 255
    defb 255, 255, 254, 254, 234, 254, 174, 170, 160, 136, 0, 8, 162, 170, 128, 0
      ;background attribute data
    defb 69, 69, 69, 69, 69, 69, 69, 69, 69, 77, 77, 77, 77, 77, 77, 77
    defb 77, 77, 77, 69, 69, 5, 77, 77, 69, 69, 69, 77, 69, 69, 69, 69
    defb 69, 5, 69, 68, 69, 69, 69, 69, 69, 69, 77, 69, 77, 77, 77, 77
    defb 77, 77, 69, 69, 69, 69, 69, 77, 69, 69, 69, 69, 69, 69, 5, 69
    defb 68, 69, 69, 68, 69, 69, 69, 69, 69, 77, 69, 69, 77, 77, 77, 77
    defb 77, 77, 77, 69, 69, 69, 69, 69, 69, 69, 69, 69, 5, 69, 69, 68
    defb 65, 65, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 77, 77, 69
    defb 77, 77, 69, 69, 69, 65, 69, 69, 69, 69, 69, 5, 69, 69, 69, 68
    defb 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 5, 5, 69, 77, 69, 69
    defb 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 65, 68, 65
    defb 68, 69, 68, 68, 69, 69, 69, 69, 69, 69, 69, 69, 69, 77, 69, 65
    defb 69, 65, 69, 69, 69, 69, 69, 69, 69, 69, 65, 69, 69, 69, 68, 69
    defb 69, 68, 68, 68, 69, 69, 69, 68, 65, 69, 69, 5, 69, 69, 65, 65
    defb 69, 69, 65, 69, 69, 5, 69, 69, 69, 69, 65, 69, 69, 5, 69, 65
    defb 68, 68, 68, 65, 69, 69, 69, 69, 69, 69, 65, 69, 69, 69, 65, 1
    defb 5, 69, 69, 69, 69, 5, 65, 65, 65, 69, 69, 69, 5, 5, 69, 65
    defb 69, 69, 69, 69, 69, 65, 69, 69, 69, 69, 65, 69, 69, 65, 65, 69
    defb 5, 5, 5, 69, 65, 1, 65, 69, 69, 69, 69, 5, 68, 69, 69, 69
    defb 69, 69, 69, 69, 69, 69, 68, 68, 69, 65, 69, 65, 65, 1, 65, 69
    defb 69, 69, 65, 69, 69, 65, 65, 69, 69, 68, 69, 69, 69, 69, 69, 64
    defb 65, 69, 69, 65, 69, 65, 69, 69, 69, 69, 69, 65, 13, 13, 69, 77
    defb 69, 69, 69, 5, 69, 69, 65, 65, 65, 65, 65, 69, 69, 69, 69, 65
    defb 65, 65, 65, 65, 65, 69, 69, 69, 69, 65, 65, 13, 13, 69, 69, 69
    defb 69, 69, 69, 69, 5, 69, 69, 65, 65, 69, 69, 69, 69, 69, 65, 65
    defb 65, 65, 65, 65, 65, 69, 69, 65, 65, 1, 13, 69, 69, 69, 69, 69
    defb 69, 69, 69, 69, 69, 5, 65, 69, 69, 65, 68, 69, 69, 69, 65, 65
    defb 65, 65, 65, 65, 65, 65, 69, 69, 65, 5, 69, 69, 69, 69, 69, 69
    defb 69, 69, 69, 69, 69, 69, 69, 65, 69, 65, 65, 65, 69, 69, 64, 65
    defb 65, 65, 65, 69, 69, 5, 68, 68, 69, 69, 69, 65, 65, 65, 69, 69
    defb 69, 69, 69, 69, 69, 69, 69, 65, 69, 69, 65, 65, 69, 65, 69, 65
    defb 69, 65, 65, 69, 69, 69, 68, 69, 69, 69, 69, 77, 77, 69, 69, 77
    defb 69, 69, 69, 69, 69, 69, 69, 65, 69, 69, 69, 65, 65, 69, 69, 65
    defb 69, 65, 69, 69, 69, 65, 68, 69, 69, 69, 69, 13, 5, 69, 69, 77
    defb 69, 69, 69, 69, 69, 69, 69, 1, 65, 69, 69, 69, 65, 69, 65, 69
    defb 69, 69, 68, 5, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69
    defb 69, 69, 69, 69, 69, 69, 65, 69, 65, 65, 69, 69, 68, 5, 69, 69
    defb 5, 69, 68, 69, 69, 69, 69, 69, 5, 69, 69, 69, 69, 69, 69, 69
    defb 69, 69, 69, 69, 69, 69, 69, 69, 69, 65, 68, 65, 5, 5, 69, 69
    defb 69, 69, 5, 5, 5, 68, 5, 69, 69, 69, 69, 69, 69, 69, 69, 69
    defb 69, 69, 5, 69, 69, 69, 69, 69, 69, 69, 69, 69, 5, 69, 5, 65
    defb 65, 5, 69, 5, 5, 68, 5, 69, 69, 69, 69, 69, 69, 69, 69, 69
    defb 5, 69, 69, 69, 69, 69, 69, 5, 69, 69, 5, 69, 65, 5, 65, 65
    defb 65, 65, 69, 5, 68, 68, 68, 69, 5, 69, 69, 69, 69, 69, 69, 69
    defb 69, 69, 5, 5, 69, 69, 5, 69, 5, 69, 5, 69, 69, 1, 65, 65
    defb 65, 65, 65, 65, 1, 65, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69
    defb 69, 69, 69, 5, 69, 69, 69, 69, 5, 69, 5, 5, 65, 65, 65, 65
    defb 65, 65, 65, 65, 65, 65, 69, 69, 69, 5, 69, 69, 69, 69, 69, 69
    defb 69, 69, 69, 69, 69, 5, 5, 68, 69, 69, 65, 65, 65, 65, 65, 65