;*****************************************************************************
; PACMAN4K source code - released first in HUGI diskmag issue #20
; 8th at ASM2K on 03/08/2000 - all code by KOZMIK/NEXTEMPIRE
; "A fully playable pacMan level in 4089 bytes"
; TASM  /la /kh1024   PACMAN4K.ASM
; TLINK /3 /m3 PACMAN4K.OBJ
; APACK   -ST  PACMAN4K.EXE
; MOVE         OUT.EXE PACMAN4K.COM
; DEL          PACMAN4K.EXE
; DEL          PACMAN4K.MAP
; DEL          PACMAN4K.OBJ
; DIR          PACMAN4K.COM
;-----------------------------------------------------------------------------
; Assembler directives
;-----------------------------------------------------------------------------
486P
;-----------------------------------------------------------------------------
; Structures
;-----------------------------------------------------------------------------
Descriptor       STRUC
Seg_limit       DW  4*(4*1+2*2)       ;segment limit
Base_A15_A00    DW  ?                 ;A00..A15 of base address
Base_A23_A16    DB  ?                 ;A16..A23 of base address
Access_rights   DB  ?                 ;segment access rights
GDLimit_A19_A16 DB  ?                 ;granularity, Op-size, Limit A16..A19
Base_A31_A24    DB  ?                 ;A24..A31 of base address
Descriptor       ENDS
;-----------------------------------------------------------------------------
; Equates & macros
;-----------------------------------------------------------------------------
MAZEHEIGHT       EQU 31
MAZEWIDTH        EQU 28
SPRIHEIGHT       EQU 12
SPRIWIDTH        EQU 24
CHARMAX          EQU 05
;164=3000/18.207 3khz sound
NEWRATE          EQU 164;  280;  140;365;120;240;80                ; number of times to increase
SPEED            EQU  4
G1               EQU 800*32
BPTR             EQU BYTE  PTR
WPTR             EQU WORD  PTR
DPTR             EQU DWORD PTR
QPTR             EQU QWORD PTR
;-----------------------------------------------------------------------------
; .DAT
;-----------------------------------------------------------------------------
_DATA   SEGMENT PARA PUBLIC USE16 'DATA'
GDT386  Descriptor <>
SELCS4G equ        $-GDT386
GDTCS4G Descriptor <-1,,,9bh,8fh,>         ; CS Descriptor
SELDS4G equ        $-GDT386
GDTDS4G Descriptor <-1h,0,0h,93h,8fh,0h>   ; 4G Descriptor
SELSS4G equ        $-GDT386
GDTSS4G Descriptor <-1h,0,0h,93h,8fh,0h>   ; 4G Descriptor
GDTSIZ  equ        ($-GDT386) - 1


marqueecol      dw       1
lifecnt         dw       4
               dw      12
               dw      -2
               dw      14
ADPCMTTL        DB      10000000B
               DB      01000000B
               DB      00100000B
               DB      00010000B
               DB      00001000B
               DB      00000100B
               DB      00000010B
               DB      00000001B
               DB      00000000B
ghostnum        dd      0    ; blue ghost number eaten
ghosttime       dd      0    ; blue ghost countdown timer
ghoststate      dd      0    ; blue ghost flag
cherrytime      dd      0    ; cherrycountdown timer
cherrystate     dd      0    ; cherry state
democount       dw      0
bytecnt         dw      0
bitcnt          dw      0
oneeveryfour    dd      0                                               ;
score_num       dd      0
pillstate       dw      0
score_str2      db      0
score_str3      db      15 dup (0)
countdown       dw      0; NEWRATE    ; countdown timer
INT08H          DD      0           ;INT08H=ROMFONTS-BANKINFSIZ
BANKINFSIZ EQU ($-offset INT08H)
romfonts        DD      0     ;+000; #5. 8x8 ROM fonts ptr (0-128-255)
               DD      0     ;+004; #4. 8x8 ROM fonts ptr (0-255)
               DD      0     ;+008; #3. 8x14 ROM fonts ptr (0-255)
               DD      0     ;+012; #2. int 43h ptr
               DD      0     ;+016; #1. int 1fh ptr
PHYSCR          DD      0
LOGSCR          DD      0
SAMPNUM         DD      1     ;PHYSCR=SOUND1-SAMPINFSIZ
SAMPINFSIZ EQU ($-offset PHYSCR)
;         bank beg  size
;----     ---- ---- ----
;         +000 +004 +008

SOUND1 DD 0002,0355,0050 ; back
SOUND2 DD 0002,0355-13,0050 ; ghost back
SOUND3 DD 0002,0355-13,0050 ; dot
SOUND4 DD 0002,0355-13-13,0050 ; ghost dot


;SOUND1 DD 0001,0355,0050 ; back
;SOUND2 DD 0001,0355,0050 ; ghost back
;SOUND3 DD 0001,0655,0054 ; dot
;SOUND4 DD 0001,0355,0050 ; ghost dot


;SOUND5 DD 0005,0620,0055 ; ghost dot           done nodots
;SOUND6 DD 0002,0655,0055 ; ghost eat
;SOUND7 DD 0002,0655,0055 ; prize               done
;SOUND8 DD 0002,0655,0055 ; death






pal_state1 DB  8,255,255,255;powerpill white
          DB 11,191,  0,  0;ghost #1  red
          DB  4,  0,250,255;ghost #2  turquoise
          DB  9,255, 79,191;ghost #3  pink
          DB 13, 63, 47, 15;ghost #4  orange
          DB  7,255,255,255;dots      white
          DB  8,  0,  0,  0;powerpill black
pal_state2 DB  8,255,255,255;powerpill white
          DB 11,  0,  0,255;ghost #1  blue
          DB  4,  0,  0,255;ghost #2  blue
          DB 13,  0,  0,255;ghost #3  blue
          DB  9,  0,  0,255;ghost #4  blue
          DB  7,255,255,255;dots      white
          DB  8,  0,  0,  0;powerpill black

pal_state3 DB  8,255,255,255;powerpill white
          DB 11,255,255,255;ghost #1  blue
          DB  4,255,255,255;ghost #2  blue
          DB 13,255,255,255;ghost #3  blue
          DB  9,255,255,255;ghost #4  blue
          DB  7,255,255,255;dots      white
          DB  8,  0,  0,  0;powerpill black



pacpal     db       14 ; PACMAN ;index 14
          db       11 ; GHOST1
          db        4 ; GHOST2
          db       13 ; GHOST3
          db        9 ; GHOST4
          db       12 ; CHERRY


;below are fixed indexed "strucs" per character to be addressed through ebp
;
;-------------- character 0 = pacman -----------------------------------;----
paccordx        dd      (800*(35+24*16)+160+14*16+8-800*60-176)+800*2+6-4 ;+000
pacmazex        dd      ((MAZEWIDTH/02)*1)                              ;+004
pacmazey        dd      ((MAZEWIDTH*23)*1);24                           ;+008
pacstart        dd      OFFSET S3          ; base offset of pacindex    ;+012
pacstartprev    dd      0                                               ;+016
paccount        dd      0          ; pacindex count                     ;+020
pacoldkey       dd      0                                               ;+024
pacflag         dd      1                                               ;+028
packeytab       dd      offset KEYTAB                                   ;+032
pacresoff       dd      0                                               ;+036
pactile         dd      0                                               ;+040
pacprevcoord    dd      0                                               ;+044
pacprevtile     dd      0                                               ;+048
charstructsiz   equ     ($-offset paccordx)
;-------------- character 1 = ghost1 -----------------------------------;----
paccordx1       dd      (800*(35+12*16)+160+14*16+8-800*60-176)+800*2+6-4 ;+000
pacmazex1       dd      ((MAZEWIDTH/02)*1)                              ;+004
pacmazey1       dd      ((MAZEWIDTH*11)*1);24                           ;+008
pacstart1       dd      OFFSET T3          ; base offset of pacindex    ;+012
pacstartprev1   dd      0                                               ;+016
paccount1       dd      0          ; pacindex count                     ;+020
pacoldkey1      dd      0                                               ;+024
pacflag1        dd      0     ; 0 =cpu 1=usr                            ;+028
packeytab1      dd      offset KEYTAB1                                  ;+032
pacresoff1      dd      0                                               ;+036
pactile1        dd      0                                               ;+040
pacprevcoord1   dd      0                                               ;+044
pacprevtile1    dd      0                                               ;+048
;-------------- character 2 = ghost2 -----------------------------------;----
paccordx2       dd      (800*(35+12*16)+160+14*16+8-800*60-176)+800*2+6-4 ;+000
pacmazex2       dd      ((MAZEWIDTH/02)*1)                              ;+004
pacmazey2       dd      ((MAZEWIDTH*11)*1);24                           ;+008
pacstart2       dd      OFFSET U2          ; base offset of pacindex    ;+012
pacstartprev2   dd      0                                               ;+016
paccount2       dd      0          ; pacindex count                     ;+020
pacoldkey2      dd      0                                               ;+024
pacflag2        dd      0     ; 0 =cpu 1=usr                            ;+028
packeytab2      dd      offset KEYTAB2                                  ;+032
pacresoff2      dd      0                                               ;+036
pactile2        dd      0                                               ;+040
pacprevcoord2   dd      0                                               ;+044
pacprevtile2    dd      0                                               ;+048
;-------------- character 3 = ghost3 -----------------------------------;----
paccordx3       dd      (800*(35+12*16)+160+14*16+8-800*60-176)+800*2+6-4 ;+000
pacmazex3       dd      ((MAZEWIDTH/02)*1)                              ;+004
pacmazey3       dd      ((MAZEWIDTH*11)*1);24                           ;+008
pacstart3       dd      OFFSET V3          ; base offset of pacindex    ;+012
pacstartprev3   dd      0                                               ;+016
paccount3       dd      0          ; pacindex count                     ;+020
pacoldkey3      dd      0                                               ;+024
pacflag3        dd      0     ; 0 =cpu 1=usr                            ;+028
packeytab3      dd      offset KEYTAB3                                  ;+032
pacresoff3      dd      0                                               ;+036
pactile3        dd      0                                               ;+040
pacprevcoord3   dd      0                                               ;+044
pacprevtile3    dd      0                                               ;+048
;-------------- character 4 = ghost4 -----------------------------------;----
paccordx4       dd      (800*(35+14*16)+160+14*16+8-800*60-176)+800*2+6-4 ;+000
pacmazex4       dd      ((MAZEWIDTH/02)*1)                              ;+004
pacmazey4       dd      ((MAZEWIDTH*13)*1);24                           ;+008
pacstart4       dd      OFFSET W4          ; base offset of pacindex    ;+012
pacstartprev4   dd      0                                               ;+016
paccount4       dd      0          ; pacindex count                     ;+020
pacoldkey4      dd      0                                               ;+024
pacflag4        dd      0     ; 0 =cpu 1=usr                            ;+028
packeytab4      dd      offset KEYTAB4                                  ;+032
pacresoff4      dd      0                                               ;+036
pactile4        dd      0                                               ;+040
pacprevcoord4   dd      0                                               ;+044
pacprevtile4    dd      0                                               ;+048
;-------------- usr key table-------------------------------------------;----
KEYTAB          DB      72,0
               DD      OFFSET S1  ;up
               DB      80,0
               DD      OFFSET S2  ;down
               DB      75,0
               DD      OFFSET S3  ;left
               DB      77,0
               DD      OFFSET S4  ;right
;-------------- cpu key table-1-----------------------------------------;----
KEYTAB1         DB      0,1
               DD      OFFSET T1  ;up
               DB      1,0
               DD      OFFSET T2  ;down
               DB      2,3
               DD      OFFSET T3  ;left
               DB      3,2
               DD      OFFSET T4  ;right
;-------------- cpu key table-2-----------------------------------------;----
KEYTAB2         DB      0,1
               DD      OFFSET U1  ;up
               DB      1,0
               DD      OFFSET U2  ;down
               DB      2,3
               DD      OFFSET U3  ;left
               DB      3,2
               DD      OFFSET U4  ;right
;-------------- cpu key table-3-----------------------------------------;----
KEYTAB3         DB      0,1
               DD      OFFSET V1  ;up
               DB      1,0
               DD      OFFSET V2  ;down
               DB      2,3
               DD      OFFSET V3  ;left
               DB      3,2
               DD      OFFSET V4  ;right
;-------------- cpu key table-4-----------------------------------------;----
KEYTAB4         DB      0,1
               DD      OFFSET W1  ;up
               DB      1,0
               DD      OFFSET W2  ;down
               DB      2,3
               DD      OFFSET W3  ;left
               DB      3,2
               DD      OFFSET W4  ;right





charnum         dd      0

DOTNUMS         db      0
;S1=up S2=down S3=left S4=right
;         sprite#1/4         ;sprite#2/4         ;sprite#3/4         ;sprite#4/4         ;phy. off. ;log. x;log. y
;         +00                ;+04                ;+08                ;+12                ;+16       ;+20   ;+24
;------------- PACMAN
S1     DD 448+96*0+32*2+2+800+G1*0,448+96*2+32*0+2+800+G1*0,448+96*2+32*1+2+800+G1*0,448+96*2+32*0+2+800+G1*0,-800*SPEED,     0,-(MAZEWIDTH*1)
S2     DD 448+96*0+32*2+2+800+G1*0,448+96*3+32*0+2+800+G1*0,448+96*3+32*1+2+800+G1*0,448+96*3+32*0+2+800+G1*0,+800*SPEED,     0,+(MAZEWIDTH*1)
S3     DD 448+96*0+32*2+2+800+G1*0,448+96*1+32*0+2+800+G1*0,448+96*1+32*1+2+800+G1*0,448+96*1+32*0+2+800+G1*0,-001*SPEED,    -1,     0
S4     DD 448+96*0+32*2+2+800+G1*0,448+96*0+32*0+2+800+G1*0,448+96*0+32*1+2+800+G1*0,448+96*0+32*0+2+800+G1*0,+001*SPEED,    +1,     0
;------------- GHOST1
T1     DD 448+96*0+32*2+2+800+G1*1,448+96*2+32*0+2+800+G1*1,448+96*2+32*1+2+800+G1*1,448+96*2+32*0+2+800+G1*1,-800*SPEED,     0,-(MAZEWIDTH*1)
T2     DD 448+96*0+32*2+2+800+G1*1,448+96*3+32*0+2+800+G1*1,448+96*3+32*1+2+800+G1*1,448+96*3+32*0+2+800+G1*1,+800*SPEED,     0,+(MAZEWIDTH*1)
T3     DD 448+96*0+32*2+2+800+G1*1,448+96*1+32*0+2+800+G1*1,448+96*1+32*1+2+800+G1*1,448+96*1+32*0+2+800+G1*1,-001*SPEED,    -1,     0
T4     DD 448+96*0+32*2+2+800+G1*1,448+96*0+32*0+2+800+G1*1,448+96*0+32*1+2+800+G1*1,448+96*0+32*0+2+800+G1*1,+001*SPEED,    +1,     0
;------------- GHOST2
U1     DD 448+96*0+32*2+2+800+G1*2,448+96*2+32*0+2+800+G1*2,448+96*2+32*1+2+800+G1*2,448+96*2+32*0+2+800+G1*2,-800*SPEED,     0,-(MAZEWIDTH*1)
U2     DD 448+96*0+32*2+2+800+G1*2,448+96*3+32*0+2+800+G1*2,448+96*3+32*1+2+800+G1*2,448+96*3+32*0+2+800+G1*2,+800*SPEED,     0,+(MAZEWIDTH*1)
U3     DD 448+96*0+32*2+2+800+G1*2,448+96*1+32*0+2+800+G1*2,448+96*1+32*1+2+800+G1*2,448+96*1+32*0+2+800+G1*2,-001*SPEED,    -1,     0
U4     DD 448+96*0+32*2+2+800+G1*2,448+96*0+32*0+2+800+G1*2,448+96*0+32*1+2+800+G1*2,448+96*0+32*0+2+800+G1*2,+001*SPEED,    +1,     0
;------------- GHOST3
V1     DD 448+96*0+32*2+2+800+G1*3,448+96*2+32*0+2+800+G1*3,448+96*2+32*1+2+800+G1*3,448+96*2+32*0+2+800+G1*3,-800*SPEED,     0,-(MAZEWIDTH*1)
V2     DD 448+96*0+32*2+2+800+G1*3,448+96*3+32*0+2+800+G1*3,448+96*3+32*1+2+800+G1*3,448+96*3+32*0+2+800+G1*3,+800*SPEED,     0,+(MAZEWIDTH*1)
V3     DD 448+96*0+32*2+2+800+G1*3,448+96*1+32*0+2+800+G1*3,448+96*1+32*1+2+800+G1*3,448+96*1+32*0+2+800+G1*3,-001*SPEED,    -1,     0
V4     DD 448+96*0+32*2+2+800+G1*3,448+96*0+32*0+2+800+G1*3,448+96*0+32*1+2+800+G1*3,448+96*0+32*0+2+800+G1*3,+001*SPEED,    +1,     0
;------------- GHOST4
W1     DD 448+96*0+32*2+2+800+G1*4,448+96*2+32*0+2+800+G1*4,448+96*2+32*1+2+800+G1*4,448+96*2+32*0+2+800+G1*4,-800*SPEED,     0,-(MAZEWIDTH*1)
W2     DD 448+96*0+32*2+2+800+G1*4,448+96*3+32*0+2+800+G1*4,448+96*3+32*1+2+800+G1*4,448+96*3+32*0+2+800+G1*4,+800*SPEED,     0,+(MAZEWIDTH*1)
W3     DD 448+96*0+32*2+2+800+G1*4,448+96*1+32*0+2+800+G1*4,448+96*1+32*1+2+800+G1*4,448+96*1+32*0+2+800+G1*4,-001*SPEED,    -1,     0
W4     DD 448+96*0+32*2+2+800+G1*4,448+96*0+32*0+2+800+G1*4,448+96*0+32*1+2+800+G1*4,448+96*0+32*0+2+800+G1*4,+001*SPEED,    +1,     0

credits          db      13,10
                db      " PACMAN 4 KILOBYTES";                                               PLAYER 1  ",13,10;CRLF$
                db      47 dup (' ')
                db      "PLAYER 1  ",13,10," a NEXTEMPIRE intro"
                db      13,10
                db      " ASM'2000 demoparty",13,10,13,10
                DB      "                      0   1   2   3   4   5   6   7   8   9   00",24h

;maze actual WIDTH=28
MAZE DB 001H,002H,002H,002H,002H,002H,002H,002H,002H,002H,002H,002H,002H,003H,01DH,002H,002H,002H,002H,002H,002H,002H,002H,002H,002H,002H,002H,01EH
TTL_PRIZE     DB 004H,0C5H,085H,085H,085H,085H,0C5H,085H,085H,085H,085H,085H,0C5H,006H,00BH,0C5H,085H,085H,085H,085H,085H,0C5H,085H,085H,085H,085H,0C5H,018H
    DB 004H,085H,007H,008H,008H,009H,085H,007H,008H,008H,008H,009H,085H,006H,00BH,085H,007H,008H,008H,008H,009H,085H,007H,008H,008H,009H,085H,018H
    DB 004H,08AH,006H,000H,000H,00BH,085H,006H,000H,000H,000H,00BH,085H,006H,00BH,085H,006H,000H,000H,000H,00BH,085H,006H,000H,000H,00BH,08AH,018H
    DB 004H,085H,00CH,00DH,00DH,00EH,085H,00CH,00DH,00DH,00DH,00EH,085H,00CH,00EH,085H,00CH,00DH,00DH,00DH,00EH,085H,00CH,00DH,00DH,00EH,085H,018H
    DB 004H,0C5H,085H,085H,085H,085H,0C5H,085H,085H,0C5H,085H,085H,0C5H,085H,085H,0C5H,085H,085H,0C5H,085H,085H,0C5H,085H,085H,085H,085H,0C5H,018H
    DB 004H,085H,007H,008H,008H,009H,085H,007H,009H,085H,007H,008H,008H,008H,008H,008H,008H,009H,085H,007H,009H,085H,007H,008H,008H,009H,085H,018H
    DB 004H,085H,00CH,00DH,00DH,00EH,085H,006H,00BH,085H,00CH,00DH,00DH,00FH,014H,00DH,00DH,00EH,085H,006H,00BH,085H,00CH,00DH,00DH,00EH,085H,018H
    DB 004H,0C5H,085H,085H,085H,085H,0C5H,006H,00BH,0C5H,085H,085H,0C5H,006H,00BH,0C5H,085H,085H,0C5H,006H,00BH,0C5H,085H,085H,085H,085H,0C5H,018H
    DB 010H,011H,011H,011H,011H,009H,085H,006H,013H,008H,008H,009H,000H,006H,00BH,000H,007H,008H,008H,01CH,00BH,085H,007H,011H,011H,011H,011H,020H
    DB 000H,000H,000H,000H,000H,004H,085H,006H,014H,00DH,00DH,00EH,000H,00CH,00EH,000H,00CH,00DH,00DH,00FH,00BH,085H,018H,000H,000H,000H,000H,000H
    DB 000H,000H,000H,000H,000H,004H,085H,006H,00BH,040H,000H,000H,040H,000H,000H,040H,000H,000H,040H,006H,00BH,085H,018H,000H,000H,000H,000H,000H
    DB 000H,000H,000H,000H,000H,004H,085H,006H,00BH,000H,015H,011H,016H,097H,097H,021H,011H,022H,000H,006H,00BH,085H,018H,000H,000H,000H,000H,000H

;     DB 002H,002H,002H,002H,002H,00EH,085H,00CH,00EH,000H,018H,000H,000H,000H,000H,000H,000H,004H,000H,00CH,00EH,085H,00CH,002H,002H,002H,002H,002H

;     DB 000H,000H,000H,000H,000H,000H,0C5H,000H,000H,040H,018H,000H,000H,040H,040H,000H,000H,004H,040H,000H,000H,0C5H,000H,000H,000H,000H,000H,000H

;     DB 011H,011H,011H,011H,011H,009H,085H,007H,009H,000H,018H,000H,000H,000H,000H,000H,000H,004H,000H,007H,009H,085H,007H,011H,011H,011H,011H,011H



    DB 002H,002H,002H,002H,002H,00EH,085H,00CH,00EH,000H,018H,038H,038H,000H,000H,038H,038H,004H,000H,00CH,00EH,085H,00CH,002H,002H,002H,002H,002H
    DB 000H,000H,000H,000H,000H,000H,0C5H,000H,000H,040H,018H,038H,000H,040H,040H,000H,038H,004H,040H,000H,000H,0C5H,000H,000H,000H,000H,000H,000H
    DB 011H,011H,011H,011H,011H,009H,085H,007H,009H,000H,018H,038H,038H,038H,038H,038H,038H,004H,000H,007H,009H,085H,007H,011H,011H,011H,011H,011H


    DB 000H,000H,000H,000H,000H,004H,085H,006H,00BH,000H,019H,002H,002H,002H,002H,002H,002H,023H,000H,006H,00BH,085H,018H,000H,000H,000H,000H,000H
    DB 000H,000H,000H,000H,000H,004H,085H,006H,00BH,040H,000H,000H,000H,000H,000H,000H,000H,000H,040H,006H,00BH,085H,018H,000H,000H,000H,000H,000H
    DB 000H,000H,000H,000H,000H,004H,085H,006H,00BH,000H,007H,008H,008H,008H,008H,008H,008H,009H,000H,006H,00BH,085H,018H,000H,000H,000H,000H,000H
    DB 001H,002H,002H,002H,002H,00EH,085H,00CH,00EH,000H,00CH,00DH,00DH,00FH,014H,00DH,00DH,00EH,000H,00CH,00EH,085H,00CH,002H,002H,002H,002H,01EH
    DB 004H,0C5H,085H,085H,085H,085H,0C5H,085H,085H,0C5H,085H,085H,0C5H,006H,00BH,0C5H,085H,085H,0C5H,085H,085H,0C5H,085H,085H,085H,085H,0C5H,018H
    DB 004H,085H,007H,008H,008H,009H,085H,007H,008H,008H,008H,009H,085H,006H,00BH,085H,007H,008H,008H,008H,009H,085H,007H,008H,008H,009H,085H,018H
    DB 004H,085H,00CH,00DH,00FH,00BH,085H,00CH,00DH,00DH,00DH,00EH,085H,00CH,00EH,085H,00CH,00DH,00DH,00DH,00EH,085H,006H,014H,00DH,00EH,085H,018H
    DB 004H,0CAH,085H,0C5H,006H,00BH,0C5H,085H,085H,0C5H,085H,085H,0C5H,000H,000H,0C5H,085H,085H,0C5H,085H,085H,0C5H,006H,00BH,0C5H,085H,0CAH,018H
    DB 01AH,008H,009H,085H,006H,00BH,085H,007H,009H,085H,007H,008H,008H,008H,008H,008H,008H,009H,085H,007H,009H,085H,006H,00BH,085H,007H,008H,024H
    DB 01BH,00DH,00EH,085H,00CH,00EH,085H,006H,00BH,085H,00CH,00DH,00DH,00FH,014H,00DH,00DH,00EH,085H,006H,00BH,085H,00CH,00EH,085H,00CH,00DH,025H
    DB 004H,0C5H,085H,0C5H,085H,085H,0C5H,006H,00BH,0C5H,085H,085H,0C5H,006H,00BH,0C5H,085H,085H,0C5H,006H,00BH,0C5H,085H,085H,0C5H,085H,0C5H,018H
    DB 004H,085H,007H,008H,008H,008H,008H,01CH,013H,008H,008H,009H,085H,006H,00BH,085H,007H,008H,008H,01CH,013H,008H,008H,008H,008H,009H,085H,018H
    DB 004H,085H,00CH,00DH,00DH,00DH,00DH,00DH,00DH,00DH,00DH,00EH,085H,00CH,00EH,085H,00CH,00DH,00DH,00DH,00DH,00DH,00DH,00DH,00DH,00EH,085H,018H
    DB 004H,0C5H,085H,085H,085H,085H,085H,085H,085H,085H,085H,085H,0C5H,085H,085H,0C5H,085H,085H,085H,085H,085H,085H,085H,085H,085H,085H,0C5H,018H
    DB 010H,011H,011H,011H,011H,011H,011H,011H,011H,011H,011H,011H,011H,011H,011H,011H,011H,011H,011H,011H,011H,011H,011H,011H,011H,011H,011H,020H







;38 16x16 tiles = 38 * 256 = 9728 bytes uncompressed

tiles001_raw DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,001H,001H,001H,001H,001H,001H
 DB 001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H
 DB 001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H
 DB 001H,001H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,001H,001H,001H,001H,001H,001H,001H,001H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 001H,001H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 001H,001H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,001H,001H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 001H,001H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 001H,001H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 001H,001H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 001H,001H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 001H,001H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 001H,001H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,001H,001H,000H,000H,000H,000H,000H,000H,001H,001H,001H,001H,001H,001H
 DB 001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H
 DB 001H,001H,001H,001H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 001H,001H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,001H,001H,001H,001H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 001H,001H,001H,001H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 001H,001H,000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H
 DB 001H,001H,000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,001H,001H,001H,001H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 001H,001H,000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 001H,001H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,001H,001H,001H,001H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,001H,001H
 DB 001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,001H,001H,001H,001H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,001H,001H,001H,001H,001H,001H
 DB 001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 001H,001H,000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,001H,001H,001H,001H
 DB 001H,001H,000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 001H,001H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H
 DB 001H,001H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H,001H
 DB 001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 001H,001H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 001H,001H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 001H,001H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H
 DB 001H,001H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H,001H
 DB 001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 001H,001H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 001H,001H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 001H,001H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H
 DB 001H,001H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,001H,001H,001H,001H,001H,001H,001H,001H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,001H,001H
 DB 001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H,001H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 001H,001H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 001H,001H,000H,000H,000H,000H,001H,001H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H

sprites_raw  DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H

;sprites_raw db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
;  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
;  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
;  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
;  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
;  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
;  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
;  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
;  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
;  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
;  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h

 db 000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
 db 000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,000h,000h
 db 001h,001h,001h,001h,001h,001h,001h,001h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,001h,001h,001h,001h
 db 000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
 db 000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,000h,000h,001h,001h
 db 001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,001h,001h,001h,001h,001h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,001h,001h,001h,001h,001h
 db 001h,001h,001h,001h,001h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,001h,001h,001h,001h,001h
 db 001h,001h,001h,001h,001h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h
 db 000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
 db 000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,001h,001h,001h,001h,000h,000h,000h,000h
 db 000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,000h,000h,001h,001h
 db 001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h
 db 000h,000h,000h,000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h
 db 001h,001h,001h,001h,001h,001h,001h,001h,001h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h
 db 001h,001h,001h,001h,001h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,001h,001h,001h,001h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
 db 000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
 db 000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,000h,000h,001h,001h
 db 001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
 db 000h,000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
 db 001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
 db 001h,001h,001h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
 db 000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
 db 000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 001h,001h,001h,001h,000h,000h,001h,001h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,001h,001h
 db 001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
 db 000h,000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
 db 001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
 db 001h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
 db 000h,000h,001h,001h,001h,001h,000h,000h,001h,001h,001h,001h,001h,001h,000h,000h
 db 000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,000h,000h,001h,001h,001h,001h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,001h,001h
 db 000h,000h,000h,000h,000h,000h,001h,001h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 001h,001h,001h,001h,001h,001h,001h,001h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
 db 000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
 db 001h,001h,001h,001h,001h,001h,001h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,001h,001h,001h,001h,001h
 db 000h,000h,000h,001h,001h,001h,001h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,001h,001h,001h,001h,001h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,001h,001h,001h,001h,001h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
 db 000h,000h,001h,001h,000h,000h,000h,000h,000h,000h,001h,001h,001h,001h,000h,000h
 db 000h,000h,000h,000h,001h,001h,001h,001h,000h,000h,000h,000h,000h,000h,001h,001h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,000h,000h
 db 000h,000h,000h,000h,001h,001h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
 db 000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
 db 001h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,001h,001h,001h,001h,001h,001h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
 db 000h,000h,001h,001h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h
 db 000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,001h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,001h,001h,001h,001h,001h,001h,001h,001h,001h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
SAVESTRUCT  db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
ModeInfoBlockPtr db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
 db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h

;width=24 tiles height=12 tiles high
SPRT DB 001H,015H,002H,003H,004H,005H,001H,015H,01CH,01DH,02FH,030H,001H,015H,006H,020H,008H,022H,001H,015H,024H,025H,028H,029H
    DB 016H,017H,018H,019H,01AH,01BH,016H,017H,01EH,01FH,031H,023H,016H,017H,007H,021H,009H,023H,016H,017H,026H,027H,02AH,02BH
    DB 00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH
    DB 00BH,02DH,00CH,02EH,00BH,02DH,00CH,02EH,00BH,02DH,00CH,02EH,00BH,02DH,00CH,02EH,00BH,02DH,00CH,02EH,00BH,02DH,00CH,02EH
    DB 00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH
    DB 00BH,02DH,00CH,02EH,00BH,02DH,00CH,02EH,00BH,02DH,00CH,02EH,00BH,02DH,00CH,02EH,00BH,02DH,00CH,02EH,00BH,02DH,00CH,02EH
    DB 00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH
    DB 00BH,02DH,00CH,02EH,00BH,02DH,00CH,02EH,00BH,02DH,00CH,02EH,00BH,02DH,00CH,02EH,00BH,02DH,00CH,02EH,00BH,02DH,00CH,02EH
    DB 00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH,00AH,02CH
    DB 00BH,02DH,00CH,02EH,00BH,02DH,00CH,02EH,00BH,02DH,00CH,02EH,00BH,02DH,00CH,02EH,00BH,02DH,00CH,02EH,00BH,02DH,00CH,02EH
    DB 00DH,00EH,011H,012H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
    DB 00FH,010H,013H,014H,000H,000H,000H,000H,000H,000H

SPRI DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
    DB 00DH,000H,000H,000H,000H,000H,000H,001H,041H,016H,042H,043H
    DB 044H,045H,003H,002H,019H,018H,006H,007H,008H,009H,047H,024H
    DB 046H,026H,049H,028H,048H,02AH,00AH,00BH,00CH,005H,004H,01BH


;49*16 tiles=784*16









; 7-bit encoding format for compressed tiles
; bit 7 6 5 4 3 2 1 0
;     | X x x x x x x
;     | | -----------
;     | |     |
;     | |      ---> tile number 0...31 (max referring tile is #24)
;     |  ---------> 0=horizontal symetry        4=vertical symetry
;      -----------> unused (counting on compression...)
;note tiles 18 and 31 are redundant to tile 0
TILE DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,007H,000H,006H,047H
    DB 048H,049H,000H,041H,000H,000H,000H,00FH,000H,000H,000H,004H,055H
    DB 000H,000H,013H,003H,001H,000H,010H,016H,015H,019H,01AH,01BH




;SPRI DB 000H ; tile 00
;        000H ; tile 01
;        000H ; tile 02
;        000H ; tile 03
;        000H ; tile 04
;        000H ; tile 05
;        000H ; tile 06
;        000H ; tile 07
;        000H ; tile 08
;        000H ; tile 09
;        000H ; tile 0A
;        000H ; tile 0B
;        000H ; tile 0C
;        000H ; tile 0D
;        00DH ; tile 0E
;        000H ; tile 0F
;        000H ; tile 10
;        000H ; tile 11
;        000H ; tile 12
;        000H ; tile 13
;        000H ; tile 14
;        001H ; tile 15
;        041H ; tile 16
;        010H ; tile 17
;        042H ; tile 18
;        043H ; tile 19
;        044H ; tile 1A
;        045H ; tile 1B
;        003H ; tile 1C
;        002H ; tile 1D
;        019H ; tile 1E
;        018H ; tile 1F
;        006H ; tile 20
;        007H ; tile 21
;        008H ; tile 22
;        009H ; tile 23
;        047H ; tile 24
;        024H ; tile 25
;        046H ; tile 26
;        026H ; tile 27
;        049H ; tile 28
;        028H ; tile 29
;        048H ; tile 2A
;        02AH ; tile 2B
;        00AH ; tile 2C
;        00BH ; tile 2D
;        00CH ; tile 2E

;        005H ; tile 2F
;        004H ; tile 30
;        01BH ; tile 31


 db 050h,0c3h,001h,000h,008h,000h,004h,004h,000h,000h,00eh,000h,000h,000h,028h,000h
 db 000h,000h,0e0h,000h,000h,000h,023h,000h,000h,000h,001h,000h,001h,000h,000h,000h
 db 000h,000h,0d4h,003h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,002h,000h
 db 000h,000h,002h,000h,000h,000h,000h,000h,000h,000h,0ffh,0ffh,0ffh,000h,0ffh,0ffh
 db 0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0c0h
 db 007h,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,000h,000h,000h,01fh,0c0h,000h
 db 000h,000h,000h,07eh,000h,000h,000h,007h,0ffh,0ffh,0ffh,000h,0e1h,0f0h,000h,000h
 db 000h,000h,01fh,0fch,000h,07fh,000h,000h,000h,01fh,0e0h,000h,000h,000h,000h,0feh
 db 000h,000h,000h,007h,0ffh,0ffh,0feh,03fh,0bfh,078h,000h,000h,000h,000h,03fh,0fch
 db 000h,07fh,03fh,0ffh,0ffh,0ffh,0f1h,0ffh,0ffh,0ffh,0ffh,0feh,07fh,0ffh,0ffh,0ffh
 db 0ffh,0ffh,0f8h,070h,001h,0fch,07fh,0ffh,0ffh,0ffh,0ffh,0fch,0ffh,0ffh,020h,000h
 db 000h,000h,0f1h,000h,000h,000h,000h,01eh,040h,000h,000h,000h,07fh,0ffh,0f0h,0c0h
 db 000h,07ch,040h,000h,000h,000h,007h,0fch,080h,007h,020h,000h,000h,000h,0f9h,080h
 db 000h,000h,000h,03eh,040h,000h,000h,000h,07fh,0ffh,0e3h,080h,000h,03eh,060h,000h
 db 000h,000h,00fh,0fch,080h,007h,020h,000h,000h,000h,09ch,0c0h,000h,000h,000h,062h
 db 040h,000h,000h,000h,04fh,0ffh,0e6h,000h,000h,00fh,030h,000h,000h,000h,018h,0fch
 db 080h,004h,020h,000h,000h,000h,09ch,040h,000h,000h,000h,046h,040h,000h,000h,000h
 db 04fh,0ffh,0c4h,000h,000h,007h,010h,000h,000h,000h,011h,0fch,080h,004h,020h,000h
 db 000h,000h,09eh,060h,000h,000h,000h,0ceh,040h,000h,000h,000h,04fh,0ffh,08ch,000h
 db 000h,007h,098h,000h,000h,000h,033h,0fch,080h,004h,020h,000h,000h,000h,09fh,030h
 db 000h,000h,001h,08eh,040h,000h,000h,000h,04fh,0ffh,0f8h,000h,000h,003h,0cch,000h
 db 000h,000h,063h,0fch,080h,004h,020h,000h,000h,000h,09fh,010h,000h,000h,001h,01eh
 db 040h,000h,000h,000h,04fh,0ffh,0f0h,000h,000h,001h,044h,000h,000h,000h,047h,0fch
 db 080h,004h,020h,000h,000h,000h,09fh,098h,000h,000h,003h,03eh,040h,000h,000h,000h
 db 04ch,00fh,0fch,000h,000h,001h,0e6h,000h,000h,000h,0cfh,0fch,080h,004h,020h,000h
 db 000h,000h,09fh,0cch,000h,060h,006h,03eh,040h,000h,000h,000h,04ch,00fh,0ffh,000h
 db 000h,000h,0f3h,000h,018h,001h,08eh,000h,080h,004h,020h,000h,000h,000h,09fh,0c4h
 db 000h,0f0h,004h,07eh,040h,000h,000h,000h,04ch,0ffh,0ffh,0c0h,000h,000h,0b1h,000h
 db 03ch,001h,018h,000h,080h,004h,020h,000h,000h,000h,09fh,0e6h,000h,0f0h,00ch,0feh
 db 040h,000h,000h,000h,04ch,081h,0ffh,0f0h,000h,000h,099h,080h,03ch,003h,031h,0ffh
 db 080h,004h,020h,000h,000h,000h,09fh,0f3h,000h,060h,018h,0feh,040h,000h,000h,000h
 db 04fh,081h,0ffh,0fch,000h,000h,09ch,0c0h,018h,006h,023h,080h,000h,004h,020h,000h
 db 080h,000h,09fh,0f1h,000h,000h,011h,0feh,040h,000h,040h,000h,04fh,081h,0ffh,0fbh
 db 000h,000h,0dch,040h,000h,004h,04eh,000h,000h,004h,020h,000h,0c0h,000h,09fh,0f9h
 db 080h,000h,033h,0feh,040h,000h,0e0h,000h,04fh,081h,03fh,0e1h,0c0h,000h,05eh,060h
 db 000h,00ch,0cch,000h,000h,004h,020h,000h,0e0h,000h,09fh,0fch,0c0h,000h,063h,0feh
 db 040h,001h,0b0h,000h,04fh,0ffh,03fh,087h,000h,000h,0dfh,030h,000h,018h,098h,000h
 db 000h,004h,020h,000h,0b0h,000h,09fh,0fch,040h,000h,047h,0feh,040h,003h,098h,000h
 db 04fh,0e0h,03eh,01ch,000h,000h,08fh,010h,000h,011h,098h,000h,000h,004h,020h,000h
 db 098h,000h,09fh,0feh,060h,000h,0cfh,0feh,040h,006h,04ch,000h,04fh,0e0h,038h,070h
 db 000h,000h,09fh,098h,000h,033h,090h,000h,000h,004h,020h,000h,0cch,000h,09fh,0ffh
 db 030h,001h,08fh,0feh,040h,00ch,0e6h,000h,04fh,0ffh,0e1h,0c0h,000h,000h,09fh,0cch
 db 000h,063h,090h,000h,0c0h,004h,020h,000h,0a6h,000h,09fh,0ffh,010h,001h,01fh,0feh
 db 040h,019h,0f3h,000h,04fh,0ffh,0f7h,000h,000h,000h,09fh,0c4h,000h,047h,090h,001h
 db 0e0h,004h,020h,000h,093h,000h,09fh,0ffh,098h,003h,03fh,0feh,040h,033h,0f9h,080h
 db 04fh,0ffh,0fch,000h,000h,001h,09fh,0e6h,000h,0cfh,090h,001h,0e0h,004h,020h,000h
 db 099h,080h,09fh,0ffh,0c8h,002h,03fh,0feh,040h,067h,0fch,0c0h,04fh,0ffh,0f0h,000h
 db 000h,001h,01fh,0f2h,000h,08fh,090h,000h,0c0h,004h,020h,000h,09ch,0c0h,09fh,0ffh
 db 0cch,006h,07fh,0feh,040h,0cfh,0feh,060h,04fh,0ffh,0f8h,000h,000h,003h,03fh,0f3h
 db 001h,09fh,0d0h,000h,000h,004h,020h,000h,09eh,060h,09fh,0ffh,0e6h,00ch,07fh,0feh
 db 041h,09fh,0ffh,030h,04fh,0ffh,0fch,000h,000h,006h,03fh,0f9h,083h,01fh,0d8h,000h
 db 000h,004h,020h,000h,09fh,030h,09fh,0ffh,0f6h,008h,0ffh,0feh,043h,03fh,0ffh,098h
 db 04fh,0ffh,0fch,000h,000h,004h,07fh,0fdh,082h,03fh,0e8h,000h,000h,004h,020h,000h
 db 09fh,098h,09fh,0ffh,0f7h,019h,0ffh,0feh,046h,07fh,0ffh,0cch,04fh,0ffh,0feh,000h
 db 000h,00ch,0ffh,0fdh,0c6h,07fh,0fch,000h,000h,004h,0e0h,000h,09fh,0dch,09fh,0ffh
 db 0ffh,0b1h,0ffh,0feh,04ch,0ffh,0ffh,0e6h,04fh,0ffh,0ffh,080h,000h,038h,0ffh,0ffh
 db 0ech,07fh,0feh,000h,000h,004h,0e0h,000h,09fh,0feh,09fh,0ffh,0ffh,0b3h,0ffh,0feh
 db 0d9h,0ffh,0ffh,0f7h,04fh,0ffh,0ffh,0c0h,000h,063h,0ffh,0ffh,0ech,0ffh,0ffh,080h
 db 000h,004h,0ffh,0ffh,09fh,0ffh,09fh,0ffh,0ffh,0f7h,0ffh,0ffh,0f3h,0ffh,0ffh,0ffh
 db 0cfh,0ffh,0ffh,0f0h,001h,0c3h,0ffh,0ffh,0fdh,0ffh,0ffh,0ffh,0ffh,0fch,0f8h,000h
 db 01fh,0ffh,0dfh,0ffh,0ffh,0f7h,0ffh,0ffh,0f7h,0ffh,0ffh,0ffh,0efh,0ffh,0ffh,0ffh
 db 0bfh,00fh,0ffh,0ffh,0fdh,0ffh,0ffh,0e0h,000h
 marquee db 000h





_DATA   ENDS
;-----------------------------------------------------------------------------
; .COD (REAL MODE)
;-----------------------------------------------------------------------------
_TEXT   SEGMENT PARA PUBLIC USE16 'CODE'
ASSUME  CS:_TEXT, DS:_DATA, ES:_DATA, SS:_TEXT, FS:0

start:  MOV     SP,OFFSET _STACK       ; 1 byte smaller
       mov     eax,ds                 ; make pointer to GDT table
                                      ; note above line can be stripped but
                                      ;then it will only work once
       shl     eax,4             ; have physical address of segment
       add     eax,offset GDT386      ; now have physical addr of table
       mov     GDT386.Base_A15_A00,ax
       shr     eax,10h                 ; get other address bits
       mov     GDT386.Base_A23_A16,al
       mov     GDT386.Access_rights,ah

       mov     eax,cs                  ; get CS
       shl     eax,4                   ; now have physical address
       mov     GDTCS4G.Base_A15_A00,ax
       shr     eax,10h                 ; get other address bits
       mov     GDTCS4G.Base_A23_A16,al
       mov     GDTCS4G.Base_A31_A24,ah
       mov     eax,ds                  ; get DS
       shl     eax,4                   ; now have physical address
       mov     GDTDS4G.Base_A15_A00,ax
       shr     eax,10h                 ; get other address bits
       mov     GDTDS4G.Base_A23_A16,al
       mov     GDTDS4G.Base_A31_A24,ah
       mov     eax,ss                  ; get SS
       shl     eax,4                   ; now have physical address
       mov     GDTSS4G.Base_A15_A00,ax
       shr     eax,10h                 ; get other address bits
       mov     GDTSS4G.Base_A23_A16,al
       mov     GDTSS4G.Base_A31_A24,ah

       lgdt    GDT386
       mov     eax,cr0                 ; get control register
       or      ax,1
       mov     cr0,eax

       push    cs                      ;push return selector on stack
       push    offset PMRET            ;set return offset
       DB      0EAH                    ;jmp instruction
       DW      OFFSET $+2              ;jumpfar offset word
       DW      SELCS4G                 ;jumpfar segment selector word
       mov     ax,SELDS4G              ;set all selectors to 4GB limits
       mov     ds,ax
       mov     es,ax
       mov     ax,SELSS4G
       mov     ss,ax
       mov     ebx,cr0                 ;get 386 control register
       and     ebx,not 80000001h       ;clear paging bit
       mov     cr0,ebx                 ;and store in CR0
       retf                            ;return to caller
;-----------------------------------------------------------------------------
; .COD (UNREAL MODE)
;-----------------------------------------------------------------------------
PMRET:    MOV   AX,SEG _DATA
         MOV   DS,AX
         MOV   ES,AX
         MOV   GS,AX
         MOV   SS,AX
;-UNCOMPRESS-DATA----------------------;--------------------------------------
         CALL  UNCTIL000              ;uncompress maze   tiles passes 1 and 2
         CALL  UNCTIL000              ;uncompress maze   tiles passes 3 and 4
         CALL  UNCTIL001              ;uncompress sprite tiles passes 1 and 2
         CALL  UNCTIL001              ;uncompress sprite tiles passes 3 and 4
;**************************************;**************************************
; INTRO STARTS HERE
;**************************************;**************************************
;-INITIALIZE-HIRES-VIDEO-MODE----------;--------------------------------------
         MOV   AX,4F01H               ;get vesa vbe 2.0 mode information
         MOV   CX,100H                ;size of vbe information is 256 bytes
         MOV   DI,OFFSET ModeInfoBlockPtr;es:di points to buffer
         INT   10H                    ;bios video system call
         MOV   AX,4F02H               ;set vesa vbe 2.0 mode
         MOV   BX,0C103H              ;mode 800x600x08 (256 colors)
         INT   10H                    ;bios video system call
;-DRAW-MAZEBOARD-----------------------;--------------------------------------
         MOV   EDI,DWORD PTR ES:DI[28H];ModeInfoBlock[28h] = 'PhysBasePtr'
         XOR   AX,AX                  ;ax=0
         MOV   GS,AX                  ;gs=0
         MOV   ES,AX                  ;es:edi=1st add.of 256KB video buffer
         MOV   DS:[PHYSCR],EDI        ;save start of physical screen
         MOV   ECX,240000             ;240000=800*600/2
         REP   STOS WPTR ES:[EDI]     ;clear 256kb video buffer
         MOV   DS:[LOGSCR],EDI        ;save start of logical screen
         ADD   EDI,448-32             ;edi=offset of sprites in logical scr.
         MOV   ESI,OFFSET SPRT        ;esi=offset of map
         MOV   EBX,OFFSET sprites_raw ;ebx=offset of tiles
         MOV   ECX,SPRIHEIGHT         ;ecx=map height
         MOV   EDX,SPRIWIDTH          ;edx=map width       ;12416=800*16
         MOV   EAX,800*16-SPRIWIDTH*16;eax=column alignment
         MOV   EBP,((49-1)*16)        ;ebp=tilemap alignment
         CALL  SETMAZ000              ;draw maze in logical screen
;-INITIALIZE-GFX-FONTS-----------------;--------------------------------------
         MOV   DX,OFFSET CREDITS      ;dx=offset of credits+digit string
         MOV   AH,9                   ;print message
         INT   21H                    ;call dos
         MOV   ESI,DS:[PHYSCR]        ;esi=offset of physical screen
         ADD   ESI,800*(64-4-4)+176   ;esi=offset of printed digit string
         MOV   EDI,DS:[LOGSCR]        ;edi=offset of logical screen
         ADD   EDI,800*500            ;edi=offset of score fonts
         MOV   CX,10                  ;10=0....9 sprites
NUMERIC:  CALL  PUTSPRITE              ;put prize on screen
         ADD   ESI,32                 ;align on shl5 boundaries
         ADD   EDI,32                 ;align on shl5 boundaries
         LOOP  NUMERIC                ;repeat for all digits
;-DO-EYES------------------------------;--------------------------------------
;         SUB   ESI,800*4              ;esi points to ->"00"
         MOV   EDI,DS:[LOGSCR]        ;address of logical screen
         ADD   EDI,455+800*22         ;sub edi,356665
         MOV   BX,4                   ;number of ghosts
EYES1:    MOV   CX,11                  ;11=0....10 sprites
EYES2:    CALL  PUTSPRITE2             ;put prize on screen
         ADD   EDI,32                 ;align on shl5 boundaries
         LOOP  EYES2                  ;repeat for all moves of 1 ghost
         ADD   EDI,25248              ;25248=800*32-32*11
         DEC   BX                     ;decrement number of ghosts left
         JNZ   EYES1                  ;repeat for all ghosts
;-INITIALIZE-RTC-----------------------;--------------------------------------
         PUSH  ES                     ;save es register
         PUSH  DS                     ;save ds register
         MOV   AX,3508H               ;read rtc vector in ivt
         INT   21H                    ;dos call (raw ivt fails)
         MOV   AX,2508H               ;read rtc vector in ivt
         MOV   WPTR DS:[INT08H+00],BX ;save    handler offset
         MOV   WPTR DS:[INT08H+02],ES ;restore handler offset
         PUSH  CS                     ;set new handler segment
         POP   DS                     ;set new handler segment
         MOV   DX,OFFSET SNDDRV000    ;set new handler offset
         INT   21H                    ;dos call (raw ivt fails)
         POP   DS                     ;restore ds register
         MOV   BX,65532/NEWRATE       ;new frequency
         CALL  SETHTZ000              ;set new frequency
;-INITIALIZE-CONSTANTS-----------------;--------------------------------------
         MOV   ESI,OFFSET PACCORDX    ;here we save the original structures
         MOV   EDI,OFFSET SAVESTRUCT  ;because contrary to start of code we
         CALL  COPYBLK                ;will need them again
;-INITIALIZE-SOUNDS--------------------;--------------------------------------
         MOV   ECX,5                  ;random data of sound (5 banks)
         MOV   EDI,OFFSET ROMFONTS    ;store in array sequentially
GETDATA:  MOV   AX,1130H               ;"return font pointer" bios call
         MOV   BH,CL                  ;bh=font number requested
         PUSH  CX                     ;save cx register
         INT   10H                    ;video bios call
         POP   CX                     ;restore cx register
         MOV   WPTR DS:[DI+2],ES      ;es=segment of requested font
         MOV   WPTR DS:[DI+0],BP      ;bp=offset of requested font
         ADD   DI,4                   ;add fontinfo array entry size
         LOOP  GETDATA                ;repeat for all fonts (aka sound banks)
         POP   ES                     ;restore es register
;-DISPLAY-UPPER-BAR--------------------;--------------------------------------
         mov   cx,3                   ;
         MOV   EDI,DS:[PHYSCR]        ;edi=offset of screen
         mov   ebx,offset marqueecol  ;
tricol:   mov   dx,wptr ds:[ebx]       ;
         pushad                       ;
         MOV   ESI,OFFSET MARQUEE     ;  ;length =984 bytes
         add   edi,288+800*13         ;
         mov   ecx,33                 ;height in pixel
marquee0: push  cx                     ;
         mov   ecx,28                 ;
marquee1: mov   ax,ds:[esi]            ;
         mov   bx,8                   ;
marquee2: test  al,BPTR DS:[ADPCMTTL+BX-1]
         jz    marquee3               ;
         jmp   short marquee4         ;
marquee3: mov   bptr es:[edi],dl       ;
marquee4: inc   edi                    ;
         DEC   bx                     ;
         jnz    marquee2              ;
         dec   esi                    ;
         loop  marquee1               ;
         pop   cx                     ;
         add   edi,576                ;
         loop  marquee0               ;
         popad                        ;
         add   di,wptr ds:[ebx+2]     ;
         add   ebx,4                  ;
         loop  tricol                 ;
;-ONE-LIFE-----------------------------;--------------------------------------
; everytime a player loses a life we   ;
; come back here, which redraws the    ;
; whole maze                           ;
;-ONE-LIFE-----------------------------;--------------------------------------
ONELIFE:  MOV   EDI,DS:[LOGSCR]        ;edi=offset of screen
         MOV   ESI,OFFSET MAZE        ;esi=offset of map
         MOV   EBX,OFFSET TILES001_RAW;ebx=offset of tiles
         MOV   ECX,MAZEHEIGHT         ;ecx=map height
         MOV   EDX,MAZEWIDTH          ;edx=map width
         MOV   EAX,800*16-MAZEWIDTH*16;eax=column alignment
         MOV   EBP,((38-1)*16)        ;ebp=tilemap alignment
         CALL  SETMAZ000              ;draw maze in logical screen
         CALL  SETPAL000              ;color tiles
;-- SAVE A DOT AND A POWERPIL          ;we copy a dot and a power
         MOV   CX,2                   ;since only tiles need play restoring
         MOV   ESI,DS:[LOGSCR]        ;esi=offset of screen
         ADD   ESI,(23*16-7)*800+10   ;esi=offset of src powerpill-dot
         MOV   EDI,DS:[LOGSCR]        ;edi=offset of screen
         ADD   EDI,(159*800+448+32)+32;esi=offset of dst powerpill-dot
DOBOTH:   CALL  PUTSPRITE              ;put prize on screen
         ADD   ESI,32                 ;add size of tile
         ADD   EDI,32                 ;add size of tile
         LOOP  DOBOTH                 ;repeat for all tiles
;-DISPLAY-LOWER-BAR--------------------;--------------------------------------
;display bottom status bar ie : LIVES qnd FRUIT level
         MOV   ESI,DS:[LOGSCR]        ;edi=offset of screen
         ADD   ESI,(175*800+448+32-800*16-32)
         MOV   EDI,DS:[PHYSCR]        ;edi=offset of screen
         ADD   EDI,800*560+592
         CALL  PUTSPRITE              ;put prize on screen
         DEC   WPTR DS:[lifecnt]
         JZ    GAMEEXIT
;show lives
         MOV   ESI,DS:[LOGSCR]        ;edi=offset of screen
         ADD   ESI,448+96*1+32*0+2+800+G1*0
         MOV   CX,WPTR DS:[lifecnt]
         MOV   EDI,DS:[PHYSCR]        ;edi=offset of screen
         ADD   EDI,800*560+176+32*2
ONELIFEL: CALL  PUTSPRITE              ;put prize on screen
         SUB   EDI,32
         LOOP  ONELIFEL
; clear the taken life away at bottom
         MOV   ESI,(175*800+448+32-800*16)+96   ; we CLEAR it
         ADD   ESI,DS:[LOGSCR]        ;edi=offset of screen
         MOV   EDI,DS:[PHYSCR]        ;edi=offset of screen
         MOV   DX,32
         MOV   CX,WPTR DS:[lifecnt]
         sub   cx,2
         shl   dx,cl
         add   edi,800*560+176+32*2
         sub   EDi,edx
         CALL  PUTSPRITE              ;put prize on screen
         MOV   ESI,OFFSET SAVESTRUCT    ;base of all CSTs
         MOV   EDI,OFFSET PACCORDX
         CALL  COPYBLK
ghoststd1:MOV   EDI,OFFSET pal_state1  ;
         CALL  SETSTATE               ;
         mov   dptr ds:[ghoststate],0
;-----------------------------------------------------------------------------
; INTRO ENDS HERE
;-----------------------------------------------------------------------------
ALIGN 4                                ;align for fastest branching
GAMELOOP: test  dptr ds:[ghoststate],1
         jz    ghoststd2
         CMP   dptr ds:[ghosttime],16
         JNC   NOFLASH
         MOV   EDI,OFFSET pal_state3  ;
         TEST  dptr ds:[ghosttime],2
         JZ    WHITE
         MOV   EDI,OFFSET pal_state2  ;
WHITE:    CALL  SETSTATE               ;
NOFLASH:  dec   dptr ds:[ghosttime]
         jnz   ghoststd2
         jmp   short ghoststd1
ghoststd2:CALL  SWPSCR000              ;copy logical to physical screen
         MOV   EBP,OFFSET PACCORDX4   ;process ghost number 4
         CALL  GETKBD000              ;read keyboard
         MOV   EBP,OFFSET PACCORDX3   ;process ghost number 3
         CALL  GETKBD000              ;read keyboard
         MOV   EBP,OFFSET PACCORDX2   ;process ghost number 2
         CALL  GETKBD000              ;read keyboard
         MOV   EBP,OFFSET PACCORDX1   ;process ghost number 1
         CALL  GETKBD000              ;read keyboard
         MOV   EBP,OFFSET PACCORDX    ;process ghost number
         CALL  GETKBD000              ;read keyboard
         CMP   DS:[DOTNUMS],244       ;if board cleared
         JZ    GAMEEXIT               ;continue gameloop
         CMP   AX,011BH               ;if esc key not pressed
;         CMP   AL,1BH                 ;if esc key not pressed
         JNZ   GAMELOOP               ;continue gameloop
;**************************************;***********************************************
; GAME EXIT
;**************************************;***********************************************
GAMEEXIT: MOV   AX,2508H               ;write rtc vector in ivt
         MOV   DX,WPTR DS:[INT08H+00] ;set old handler offset
         PUSH  WPTR DS:[INT08H+02]    ;set old handler segment
         POP   DS                     ;set old handler segment
         INT   21H                    ;dos call (raw ivt fails)
         MOV   BX,65532               ;old frequency
         CALL  SETHTZ000              ;set old frequency
         IN    AL,61H                 ;read speaker state
         AND   AX,0FCH                ;set speaker off
         OUT   61H,AL                 ;output command
         MOV   AX,3                   ;else set tty mode co80
         INT   10H                    ;bios video system call
         MOV   AX,4C00H               ;set error code
         INT   21H                    ;return to dos shell
;**************************************;***********************************************
;SET COLORS
;**************************************;***********************************************
SETPAL000:MOV   ESI,DS:[LOGSCR]        ;edi=offset of screen
         add   esi,mazewidth*16
         mov   bx,offset pacpal
         mov   cx,6
dobands:  push  cx
         mov   cx,32
         mov   ah,bptr ds:[bx]
SETPAL001:push  cx
         mov   cx,176*2;800-592;((38-1)*16)        ;ebp=tilemap alignment
setpal002:mov   al,bptr es:[esi]
         test  al,al
         jz    setpal003
         mov   bptr es:[esi],ah
setpal003:inc   esi
         loop  setpal002
         add   esi,(800-176*2);592
         pop   cx
         loop  setpal001
         inc   bx
         pop   cx
         loop  dobands
         RET                          ;return to caller
;--------------------------------------;--------------------------------------
;                                      ;
; Do maze collision test (part #1)     ;out: a) DS:[EBP+36] is displacement
;                                      ;     b) a!=0 =>EDX=ydelta ECX=xdelta
;                                      ;     c) a!=0 =>AL=tile value
;                                      ;
;--------------------------------------;--------------------------------------
TSTCOLXXX:MOV   EDI,DS:[EBP+12]        ;start of pac index
         MOV   EAX,DS:[EBP+04]        ;refresh pacman maze x position
         MOV   EBX,DS:[EBP+08]        ;refresh pacman maze y position
         MOV   EDX,DS:[EDI+24]        ;pacman maze position y delta
         MOV   ECX,DS:[EDI+20]        ;pacman maze position x delta
         ADD   EBX,EDX                ;absolute maze index
         ADD   EAX,ECX                ;absolute maze index
         ADD   EBX,EAX                ;absolute maze index
         MOV   AL,BPTR DS:[MAZE+EBX]  ;dl=read tile value
         RET                          ;return to caller
TSTCOL000:CALL  TSTCOLXXX              ;get current maze tile value
         MOV   EDI,DS:[EDI+16]        ;potential screen offset diplacement
         TEST  AL,AL                  ;test if empty previously dot tile
         JZ    TSTCOL555              ;if so validate move
         TEST  AL,0C0H                ;test if dot/energizer or intersection
         JNZ   TSTCOL555              ;if so validate move
         XOR   EDI,EDI                ;else displacement is zero
TSTCOL555:CMP   DPTR DS:[EBP+04],27    ;test if tunnel right
         JNZ   TSTCOL666              ;else test if tunnel left
         CMP   BPTR DS:[EBP+24],77    ;and test if key right
         JNZ   TSTCOL666              ;else test if tunnel left
         CALL  CLRBLK000              ;clear block at this postion
         MOV   DPTR DS:[EBP+04],0     ;refresh pacman maze x position
         SUB   DPTR DS:[EBP+00],2*(176+32+8)     ;refresh pacman maze x position
         JMP   SHORT TSTCOL999        ;exit
TSTCOL666:CMP   DPTR DS:[EBP+04],0     ;test if tunnel left
         JNZ   TSTCOL999              ;else exit
         CMP   BPTR DS:[EBP+24],75    ;and test if key left
         JNZ   TSTCOL999              ;else test if tunnel left
         CALL  CLRBLK000              ;clear block at this postion
         MOV   DPTR DS:[EBP+04],27     ;refresh pacman maze x position
         ADD   DPTR DS:[EBP+00],2*(176+32+8)     ;refresh pacman maze x position
TSTCOL999:MOV   DPTR DS:[EBP+36],EDI   ;save *this* potential screen offset
;--------------------------------------;--------------------------------------
;CLEAR BLOCK                           ;
;--------------------------------------;--------------------------------------
CLRBLK000:PUSH  EDI
         PUSH  DPTR DS:[EBP+00]
         POP   DPTR DS:[EBP+44]
         MOV   ESI,(175*800+448+32-800*16)+96 ;else is pill
         CALL  RESTX
         POP   EDI
         RET
;--------------------------------------;--------------------------------------
;                                      ;
;SWAP SCREEN                           ;
;                                      ;
;--------------------------------------;--------------------------------------
ALIGN 4                                ;align for fastest branching
SWPSCR000:MOV   EBP,OFFSET paccordx    ;base of all CSTs
;-FOR-EACH-CHARACTER-------------------;-BEGIN--------------------------------
         PUSHAD                       ;save all registers
         MOV   DPTR DS:[CHARNUM],CHARMAX    ;start with character 0
onecharx: CALL  TSTCOL000              ;test collision
         TEST  DPTR DS:[EBP+36],0FFFFH;test if displacement granted
         JZ    BADMOVE                ;if not then do not test for events
;################ DIFFERENCIATES PACMAN FROM OTHER CHARACTERS
         TEST  DPTR DS:[EBP+28],1     ;1=user (key) 0=computer (auto)
         JZ    AUTOCHAR               ;if user then querry keyboard
;################ PACMAN TESTS EXCLUSIVELY
         PUSHAD
         PUSH  EBP
         MOV   EAX,DS:[EBP+0004]       ;EAX= pacman maze x position
         MOV   EBX,DS:[EBP+0008]       ;EBX= pacman maze y position
;--------- begin CHERRY TEST-----------;--------------------------------------
         CMP   DPTR DS:[CHERRYSTATE],1
         JZ    SHOWIT
         CMP   DPTR DS:[CHERRYSTATE],0
         JZ    DONEIT
TIMEIT:   DEC   DPTR DS:[CHERRYTIME]   ;else CHERRYSTATE= 2
         JNZ   SHOWIT
         MOV   ESI,(175*800+448+32-800*16)+96   ; we CLEAR it
         MOV   DPTR DS:[CHERRYSTATE],0
         JMP   SHORT WIPEIT
SHOWIT:   MOV   ESI,(175*800+448+32-800*16-32)   ; we SHOW it
WIPEIT:   ADD   ESI,DS:[LOGSCR]        ;edi=offset of screen
         MOV   EDI,DS:[LOGSCR]        ;edi=offset of screen
         ADD   EDI,(800*(35+24*16)+160+14*16-170-800*(60+64+32))
         CALL  PUTSPRITE              ;put prize on screen
TESTIT:   CMP   EAX,((MAZEWIDTH/02)*1)
         JNZ   NOCHERRY
         CMP   EBX,((MAZEWIDTH*17)*1)
         JNZ   NOCHERRY
         ADD   DS:[SCORE_NUM],10      ;add 100 for cherry
         MOV   DPTR DS:[CHERRYSTATE],0
NOCHERRY:
DONEIT:
;--------- begin GHOSTs TEST-----------;--------------------------------------
         MOV  ECX,4
NOGHOSTS: ADD  EBP,CHARSTRUCTSIZ
         CMP  EAX,DS:[EBP+0004]      ;refresh pacman maze x position
         JNZ  NOGHOST
         CMP  EBX,DS:[EBP+0008]      ;refresh pacman maze y position
         JNZ  NOGHOST
;-------------- ghost collision
         TEST DPTR DS:[GHOSTSTATE],1
         JNZ  BLUESTATE
;-------------- pac dies
NOPSEC000:XOR   DX,DX                  ;number of milliseconds=0 5 DONTCARE
         MOV   AH,86H                 ;function wait
         INT   15H                    ;bios function call
         POP   EBP
         POPAD
         JMP   ONELIFE
BLUESTATE:INC   dptr ds:[ghostnum]      ;increment number of eaten ghosts
         mov   ebx,10                  ;1=200 2=400 3=800 4=1600 pts
         mov   ecx,dptr ds:[ghostnum]  ;ghostnum is at least 1 therefore
         shl   ebx,cl                  ;cl=1=200 cl=2=400 cl=3=800 cl=4=1600
         ADD   dptr DS:[SCORE_NUM],ebx ;update player's score
         MOV   DPTR DS:[EBP+0000],(800*(35+14*16)+160+14*16+8-800*60-176)+800*2+6-4      ;refresh pacman maze phy offset
         MOV   DPTR DS:[EBP+0004],((MAZEWIDTH/02)*1)      ;refresh pacman maze x position
         MOV   DPTR DS:[EBP+0008],((MAZEWIDTH*13)*1)      ;refresh pacman maze y position
NOGHOST:  LOOP  NOGHOSTS
GHOSTSEND:POP   EBP
         POPAD
;--------- begin DOTs TEST-------------;--------------------------------------
         MOV   WPTR DS:[SAMPNUM],1    ;default back sound
         test  WPTR DS:[ghoststate],1
         jz    sound1ok
         INC   WPTR DS:[SAMPNUM]      ;ghost back sound
sound1ok: TEST  AL,080H                ;test if dot/powerpill present
         JZ    AUTOCHAR               ;if not then do not test for events
         MOV   WPTR DS:[SAMPNUM],3    ;dot chomp sound
         test  WPTR DS:[ghoststate],1
         jz    sound2ok
         INC   WPTR DS:[SAMPNUM]      ;ghost dot chomp sound
sound2ok: INC   DS:[DOTNUMS]
         INC   DS:[SCORE_NUM]         ;add 10 to score per dot
         CMP   DS:[DOTNUMS],70        ;test if 70 dots passed
         JNZ   NOCHERRY0
         JMP   SHORT CHERRY3
NOCHERRY0:CMP   DS:[DOTNUMS],170        ;test if 70 dots passed
         JNZ   CHERRY0
CHERRY3:  MOV   DPTR DS:[CHERRYSTATE],2
         MOV   DPTR DS:[CHERRYTIME],50
CHERRY0:  CMP   BPTR DS:[MAZE+EBX],08AH;test if powepill
         JNZ   yof
         jmp   SHORT yaf
yof:      CMP   BPTR DS:[MAZE+EBX],0CAH;test if powepill
         JNZ   NOPOWER
yaf:      ADD   DS:[SCORE_NUM],4       ;add 40 to score per dot so total = 50
         MOV   EDI,OFFSET pal_state2  ;
         pushad
         CALL  SETSTATE               ;
         popad
         mov   dptr ds:[ghostnum],0   ;reset number of eaten ghosts
         mov   dptr ds:[ghosttime],50 ;set time of counter-attack
         mov   dptr ds:[ghoststate],1 ;set state of ghost to blue
NOPOWER:  AND   BPTR DS:[MAZE+EBX],40H ;dl=clear tile value
;-UPDATE-MAZE-POS----------------------;--------------------------------------
AUTOCHAR: ADD   DS:[EBP+0004],ECX      ;we end up here if not pacman
         ADD   DS:[EBP+0008],EDX      ;refresh pacman maze x & y positions
         PUSH  DPTR DS:[EBP+0040]
         POP   DPTR DS:[EBP+0048]
         MOV   DS:[EBP+0040],EAX      ;save- the tile to restore
         PUSH  DPTR DS:[EBP+0000]     ;get base offset of tile
         POP   DPTR DS:[EBP+0044]     ;save- the offset where to restore tile
BADMOVE:  ADD   EBP,CHARSTRUCTSIZ        ;we end  up here if displacement was refused
         dec   DPTR DS:[CHARNUM]      ;next character data off is+=structsiz
         JNZ   onecharx               ;repeat for all characters
         POPAD                        ;restore all registers
;-FOR-EACH-ANIM-FRAME------------------;--------------------------------------
         MOV   EBP,OFFSET paccordx    ;base of all CSTs
         MOV   DS:[oneeveryfour],4    ;repeat for all 4 comp pac anim frames
onemove:PUSHAD                       ;save all registers
;-FOR-EACH-CHARACTER-------------------;-BEGIN--------------------------------
         MOV   DPTR DS:[CHARNUM],CHARMAX    ;start with character 0
;-CLEAR-PREVIOUS-POS-BLOCK-------------;--------------------------------------
onechar:  CMP  DPTR DS:[CHARNUM],CHARMAX ;start with character 0
         JZ    NORESTORE
;-RESTORE-BACKGROUND-OF-OLD-SPRITE-----;--------------------------------------
         MOV   EAX,DPTR DS:[EBP+0048] ;get old tile number
REST1:    CMP   AL,85H                 ;is it dot
         JNZ   REST2
         JMP   SHORT REST3
REST2:    CMP   AL,0C5H                 ;is it dot
         JNZ   REST4
REST3:    MOV   ESI,(175*800+448+32-800*16)+64
         JMP   SHORT REST9
REST4:    CMP   AL,8AH                 ;is it dot
         JNZ   REST5
         JMP   SHORT REST6
REST5:    CMP   AL,0CAH                 ;is it dot
         JNZ   REST7
REST6:    MOV   ESI,(175*800+448+32-800*16)+32 ;else is pill
         JMP   SHORT REST9
REST7:    MOV   ESI,(175*800+448+32-800*16)
REST9:    call  restx
         JMP   SHORT RESTORED
NORESTORE:MOV   ESI,(175*800+448+32-800*16)+96 ;else is pill
         call  restx
;-LOAD-THIS-INSTANCE'S-VALS-AND-ALIGN--;--------------------------------------
RESTORED: MOV   EDI,DS:[EBP+12]        ;start of pac index
         MOV   EAX,DS:[EBP+36]        ;pacman screen position pixel delta
         ADD   EDI,DS:[EBP+20]        ;get animated pac sprite number value
         MOV   ESI,DS:[LOGSCR]        ;edi=offset of screen
         ADD   ESI,DS:[EDI]           ;get animated pac sprite offset value
         MOV   EDI,DS:[LOGSCR]        ;edi=offset of screen
;-UPDATE-SPRITE-POS-AND-DOUBLE-BUFFER--;--------------------------------------
         ADD   DS:[EBP+00],EAX        ;update sprite position
         ADD   EDI,DS:[EBP+00]        ;also set new position this frame
         CALL  PUTSPRITE              ;put character on screen
;-TEST-ANIM-OVERLAP--------------------;--------------------------------------
         ADD   WPTR DS:[EBP+20],4     ;get next of four chomp positions
         TEST  WPTR DS:[EBP+20],0FFF0H;test if less than 4 position
         JZ    getnexta               ;if so keep going
         MOV   WPTR DS:[EBP+20],0     ;else reset count to position 0
;-SET-SCORE----------------------------;--------------------------------------
         xor     dx,dx
         mov     ax,wptr ds:[score_num]
         add     ax,10000             ;artificial align digits
         mov     di,offset score_str2
         mov     si,dx                ;Save high word in SI as well
         mov     bx,10                ;Divisor
         mov     cx,sp                ;Remember stack location
         STC
SETSCO001:div     bx                   ;Divide, result stays in AX, remainder in DX
         push    dx                   ;Save remainder
         xor     dx,dx                ;Prepare for next round
         test    ax,ax                ;Any more digits?
         jnz     SETSCO001
store:    POP     WPTR DS:[DI]
         INC     DI
         cmp     cx,sp
         jne     store
         MOV     ESI,DS:[LOGSCR]        ;edi=offset of screen
         add     ESI,509*800
         MOV     EDI,DS:[PHYSCR]        ;edi=offset of screen
         ADD     EDI,800*29+448+104-8-8
         MOV     eCX,5
         MOV     EBX,offset score_str3
PUTDIGITS:MOV     AL,BPTR DS:[EBX]
         AND     EAX,0FFH
         SHL     EAX,5
         ADD     ESI,EAX
         CALL    PUTSPRITE              ;put prize on screen
         ADD     EDI,8
         INC     EBX
         SUB     ESI,EAX
         LOOP    PUTDIGITS
;-FOR-EACH-CHARACTER-------------------;-END----------------------------------
getnexta: ADD   EBP,CHARSTRUCTSIZ      ;next character data off is+=structsiz
         dec   DPTR DS:[CHARNUM]      ;start with character 0
         JNZ   onechar                ;repeat for all characters
;-BLIT-SCREEN--------------------------;--------------------------------------
         MOV   EDI,DS:[PHYSCR]        ;set physical screen as destination
         MOV   ESI,DS:[LOGSCR]        ;set logical screen as source
         ADD   EDI,176+800*60         ;
         MOV   BX,495                 ;
swpscr00x:MOV   CX,112                 ;112=448/4
SWPSCR001:LODS  DPTR ES:[ESI]          ;read 4 bytes from source
         STOS  DPTR ES:[EDI]          ;write 4 pixels to destination
         LOOP  SWPSCR001              ;repeat n times
         ADD   ESI,800-448            ;
         ADD   EDI,800-448            ;
         DEC   BX                     ;decrement counter
         JNZ   SWPSCR00x              ;repeat n times
;-FOR-EACH-ANIM-FRAME------------------;-END----------------------------------
         POPAD                        ;restore al registers
         DEC   DS:[oneeveryfour]      ;decrement  anim count
         JNZ   onemove                ;repeat for all 4 positions
         RET                          ;return to caller
;**************************************;***********************************************
;GENERIC 32x32 PUTSPRITE
;**************************************;***********************************************
PUTSPRITE:pushAd
         MOV   BX,28                 ;
swpscr00y:MOV   CX,7                 ;112=448/4
SWPSCR00z:LODS  DPTR ES:[ESI]          ;read 4 bytes from source
         STOS  DPTR ES:[EDI]          ;write 4 pixels to destination
         LOOP  SWPSCR00z              ;repeat n times
         ADD   ESI,800-28            ;
         ADD   EDI,800-28            ;
         DEC   BX                     ;decrement counter
         JNZ   SWPSCR00y              ;repeat n times
         popAd
         RET                          ;return to caller

PUTSPRITE2:pushAd
         MOV   BX,28                  ;
swpscr01y:MOV   CX,7                  ;112=448/4
SWPSCR01z:LODS  DPTR ES:[ESI]          ;read 4 bytes from source
         OR    EAX,DPTR ES:[EDI]
         STOS  DPTR ES:[EDI]          ;write 4 pixels to destination
         LOOP  SWPSCR01z              ;repeat n times
         ADD   ESI,800-28            ;
         ADD   EDI,800-28            ;
         DEC   BX                     ;decrement counter
         JNZ   SWPSCR01y              ;repeat n times
         popAd
         RET                          ;return to caller

;**************************************;***********************************************
;GENERIC TILE DECOMPRESSION
;UNCOMPRESS TILES
;**************************************;***********************************************
UNCTIL000:                             ;decompresses maze tiles
;first we do HORIZONTAL PASS
         MOV   ESI,(38-1)*16          ;reposition line or column source
         MOV   EDI,OFFSET tiles001_raw+(16-1);get ptr to raw pixel data
         MOV   EDX,-1                 ;pixel destination position delta
         MOV   EBP,(38+1)*16          ;line destination position delta
         MOV   EAX,OFFSET tiles001_raw;data source offset
         MOV   EBX,OFFSET TILE        ;get ptr to decompressing table
         MOV   ECX,0F000026H          ;ecx = 00 15 00 38 d =# 8x8 tiles
         PUSHAD                       ;save ebx ecx registers
         CALL  UNCTIL002              ;uncompress tiles horizontally
;second we do HORIZONTAL PASS
         POPAD                        ;restore ebx ecx registers
         MOV   EDI,OFFSET tiles001_raw+38*16*14;
trythis:  NEG   EDX                    ;pixel destination position delta
         NEG   EBP                    ;column destination position delta
         CALL  UNCTIL002              ;uncompress tiles vertically
         RET
;- - - - - - - - - - - - - - - - - -
UNCTIL001:;decompresses sprite tiles
;first we do HORIZONTAL PASS
         MOV   ESI,(49-1)*16          ;reposition line or column source
         MOV   EDI,OFFSET sprites_raw+(16-1);get ptr to raw pixel data
         MOV   EDX,-1                 ;pixel destination position delta
         MOV   EBP,(49+1)*16          ;line destination position delta
         MOV   EAX,OFFSET sprites_raw;data source offset
         MOV   EBX,OFFSET SPRI        ;get ptr to decompressing table
         MOV   ECX,10000031H          ;ecx = 00 16 00 49 d =# 8x8 tiles
         PUSHAD                       ;save ebx ecx registers
         CALL  UNCTIL002              ;uncompress tiles horizontally
;second we do HORIZONTAL PASS
         POPAD                        ;restore ebx ecx registers
         MOV   EDI,OFFSET sprites_raw+49*16*15
         call  trythis
         RET                          ;return to caller
UNCTIL002:PUSHAD                       ;save number of 8x8 tiles to decompress
         MOV   BL,BYTE PTR DS:[EBX]   ;read tile
         TEST  BL,BL                  ;is this still uncompressed already
         JZ    UNCTIL999              ;if so then skip uncompressing
         TEST  BL,40H                 ;test for horizontal code
         JZ    UNCTIL003              ;if so the process horizontally
         TEST  EBP,80000000H          ;test for vertical decompression pass
         JNZ   UNCTIL004              ;if so process this tile
         JMP   SHORT UNCTIL999        ;else skip this tile
UNCTIL003:TEST  EBP,80000000H          ;test for vertical decompression pass
         JNZ   UNCTIL999              ;if not then skip this tile
UNCTIL004:AND   EBX,0000003FH          ;get source tile number
         SHL   BX,4                   ;get source offset
         ADD   eBX,EAX                ;tasm warning vs. saves one byte
         bswap ecx
UNCTIL005:PUSH  CX                     ;save number of colums or lines
         MOV   CX,16                  ;number of pixels per colums or lines
UNCTIL006:MOV   AL,BYTE PTR DS:[EBX]   ;get source pixel value
         MOV   BYTE PTR DS:[EDI],AL   ;set destination pixel value
         INC   EBX                    ;inc source
         ADD   EDI,EDX                ;reposition pixel destination
         LOOP  UNCTIL006              ;process next pixel
         ADD   EBX,ESI                ;reposition line or column source
         ADD   EDI,EBP                ;reposition line or column destination
         POP   CX                     ;restore number of colums or lines
         LOOP  UNCTIL005              ;process next line or column
UNCTIL999:POPAD                        ;restore bx cx edi
         INC    eBX                   ;point to next tile in uncompress table
         ADD    EDI,16                ;keep edi=ebx*16
         LOOP   UNCTIL002             ;process next tile
         RET                          ;return to caller
;**************************************;***********************************************
;GENERIC  TILEMAPPING (tiles are 8x8)  ;
;1.draws  the maze tilemap             ;
;2.draws  the sprites tilemap          ;
;INPUT:   ESI=offset of map            ;
;         EDI=offset of screen         ;
;         EBX=offset of tiles          ;
;         ECX=map height(ie:MAZEHEIGHT);
;         EDX=map width (ie:MAZEWIDTH) ;
;         EAX=edi add  (12352)
;         EBP=innerloop ADD ESI,592 (tilemap width)
;         16 is constant 784=800-16 is constant 48176
;**************************************;***********************************************
SETMAZ000:
DOROWS:   PUSH  CX                    ;save number or rows
         MOV   ECX,EDX                ;get mapwidth
DO1ROW:   PUSHAD                       ;push esi/push edi/push ecx
READTILE: XOR   EAX,EAX                ;clear ah
         PUSHAD                       ;push esi/push edi/push ecx
         LODSB                        ;al=ds:[esi]
         MOV   DX,AX                  ;mov dl,al
         AND   AL,3FH                 ;remove 3rd color mask
         MOV   ESI,EBX                ;esi=offset of tiles
         SHL   EAX,4                  ;get indexed tile displacement
         ADD   ESI,EAX                ;get raw tile offset
         MOV   CX,16                 ;tileheight rows
COPYBITMAP:PUSH CX                    ;save number of rows
         MOV   CX,16                  ;mov cl,16 tilewidth columns
copypix:  LODSB                        ;load value
         TEST  AL,AL                  ;test if visible
         JZ    nocolortst             ;if not skip
         TEST  DL,80h;DL                  ;test if NOT 3rd color case
         JZ    nocolortst             ;if so skip
         MOV   AL,7                   ;else 3rd color=7 (pale white)
         TEST  DL,0AH                 ;test if power pill
         JZ    nocolortst             ;if not keep palette index 7
         INC   AL                     ;if so asign palette index 8
nocolortst:STOS BPTR ES:[EDI]          ;write color byte to screen
         LOOP  copypix                ;repeat for all the tilewidth columns
         ADD   ESI,EBP                ;realign src with next data column
         ADD   EDI,(800-16)           ;realign dst with next screen column
         POP   CX                    ;restore number of rows
         LOOP  COPYBITMAP             ;repeat for mapheight rows
         POPAD                        ;pop ecx/pop edi/pop esi
         LOOP  READTILE               ;repeat for number of tiles
         POPAD                        ;pop ecx/pop edi/pop esi
         INC   ESI                    ;esi++
         ADD   EDI,16                 ;edi=edi+16
         LOOP  DO1ROW                 ;and do one mapcolumns
         ADD   EDI,EAX                ;edi=edi+maprow sourcewidth in pixel
         POP   CX                    ;restore number of maprows
         LOOP  DOROWS                 ;repeat for mapheight rows
         RET                          ;return to caller
;**************************************;***********************************************
;INSTALL SOUND DRIVER                  ;
;**************************************;***********************************************
;    at frequency higher than the normal 18 times a second, by
;    speeding up system timer 0.  In this example, interrupts
;    occur at 50 times normal, or 910 times per second.
SETHTZ000:
;         CLI                          ;disable interrupts
         MOV   AL,36H                 ;command for 16-bit,
         OUT   43H,AL                 ;mode 3, binary operation
;         JMP   $+2                    ;hardware wait
;         JMP   $+2                    ;hardware wait
         MOV   AX,BX                  ;counter value
         OUT   40H,AL                 ;load timer 0 count LSB
;         JMP   $+2                    ;hardware wait
;         JMP   $+2                    ;hardware wait
         MOV   AL,AH                  ;get most significant byte
         OUT   40H,AL                 ;load timer 0 count MSB
;         STI                          ;enable interrupts
         RET                          ;return to caller
;**************************************;***********************************************
;PLAY SOUND                            ;
;**************************************;***********************************************
SNDDRV000:cli
         PUSHFd
         pushad
;xor ecx,ecx
         MOV     CX,WPTR DS:[SAMPNUM]
;and cx,7
         MOV     ESI,OFFSET PHYSCR;   ;load off. of snd. data
GETSAMP:  ADD     ESI,SAMPINFSIZ    ;PHYSCR=SOUND1-SAMPINFSIZ
         LOOP    GETSAMP              ;repeat till selected sample
         MOV     EBX,OFFSET INT08H    ;load off.of bank data
         MOV     ECX,DPTR DS:[ESI+0]  ;load bank num.
GETBANK:  ADD     EBX,BANKINFSIZ       ;INT08H=ROMFONTS-BANKINFSIZ
         LOOP    GETBANK
         LGS     DI,DPTR DS:[EBX]     ;load seg./off. of bank
         ADD     EDI,DPTR DS:[ESI+4]  ;load beg. off. of sample
         CALL    SNDSPK000            ;play sample
         popad
         DEC   DS:[countdown]
         JNZ   int8_exit
         MOV   DS:[countdown],NEWRATE ; reload counter
         POPFd
         jmp   dword ptr DS:[INT08H+0]     ; process old interrupt 8
int8_exit:CLI                        ; disable interrupts
         PUSH  AX
         MOV   AL,20H            ; end-of-interrupt command
         OUT   20H,AL            ; issue command to controller
         POP   AX
         POPFd
         IRET
;**************************************;***********************************************
;SOUND SPEAKER                         ; 1BIT TTL LOGIC ADPCM
;**************************************;***********************************************
SNDSPK000:MOV   BX,WPTR DS:[BITCNT]
         INC   WPTR DS:[BITCNT]
         MOV   CL,BPTR DS:[ADPCMTTL+BX]
         TEST  CL,CL
         JNZ   BITOK
         MOV   WPTR DS:[BITCNT],0
         MOV   CL,128
         INC   WPTR DS:[BYTECNT]
         MOV   EDX,DPTR DS:[ESI+8]    ; Load siz. of sample
         CMP   WPTR DS:[BYTECNT],DX
         JC    BITOK
         MOV   WPTR DS:[BYTECNT],0
BITOK:    MOV   BX,WPTR DS:[BYTECNT]
         IN    AL,61H                 ;read speaker state
         TEST  BPTR GS:[DI+BX],CL        ;EDI=SOUND
         JZ    SPKOFF
         OR    AL,3                   ;set speaker on BRUIT
         JMP   SHORT SPKOK
SPKOFF:   AND   AL,0FCH                ;set speaker off
SPKOK:    OUT   61H,AL                 ;set speaker state
         INC   DS:[democount]
         CMP   wptr DS:[democount],182*(NEWRATE/10) ; 1 second elapsed ?
         JB    demo3              ; jump if not
         MOV   DS:[democount],0  ; reset democount
;;******** end code that executes every second
demo3:    RET
;**************************************;***********************************************
;READ KEYBOARD GAME CONTROL ADAPTER    ; -> GCAI holds commands
;**************************************;***********************************************
GETKBD000: push  dptr DS:[EBP+12]      ;push pacstart
          pop   dptr DS:[EBP+16]      ;restore pacstart as pacstartprev
;-CPU-OR-USER-?------------------------;--------------------------------------
GETKBDXXX:TEST  DPTR DS:[EBP+28],1     ;1=user (key) 0=computer (auto)
         JNZ   GETKBDYYY              ;if user then querry keyboard
;-------- only executed for ghosts
         CALL  TSTCOLXXX
         TEST  AL,40H
         JnZ   aga2
         MOV   EBX,DS:[EBP+32]        ;get key table values as base (KEYTABs)
         db    0fh,31h                ;Reqd time Stamp Counter opcode
         bswap edx
         xor   eax,edx
;agan:    dec   ah
;         AND   AH,3                   ;normalize to [0...3] for index
;         CMP   AH,BPTR DS:[EBX+01]
;         JZ    agan
;         mov   BPTR DS:[EBX+01],ah
         mov   al,1
         cmp   dptr ds:[pacmazey],((MAZEWIDTH*23)*1)
         jc    agan
         neg   al
         test  dptr ds:[ghoststate],0ffh
         jz    agan
         neg   al
agan:     sub   ah,al
         AND   AH,3                   ;normalize to [0...3] for index
         mov   BPTR DS:[EBX+01],ah
;----------- only executed for ghosts
         JMP   SHORT aga              ;and skip keyboard querry
GETKBDYYY:MOV   AH,1                   ;non blocking read keyboard function
         INT   16H                    ;bios kbd call
         JNZ   qhoq                   ;if new key in buffer then retrieve it
aga2:     MOV   AH,BPTR DS:[EBP+24]    ;else key <= old key
         JMP   SHORT aga              ;and skip kbd new key retrieval
qhoq:     XOR   AX,AX                  ;blocking read keyboard function
         INT   16H                    ;bios kbd call
aga:      MOV   BPTR DS:[EBP+24],AH    ;save oldkey <= this key
         MOV   ECX,4                  ;4 directions/keys to test in all
         MOV   EBX,DS:[EBP+32]        ;get key table values as base (KEYTABs)
GETKBDBBB:PUSHAD                       ;save all registers
         CALL  GETKBDAAA              ;test all keys
         POPAD                        ;restore all registers
         mov   edx,dptr DS:[EBP+16]
         cmp   edx,dptr DS:[EBP+12]
         jnz   GETKBD999
         ADD   EBX,6                  ;entries are 6 bytes per call in tab
         LOOP  GETKBDBBB              ;repeat for all four key/directions
GETKBD999:RET                          ;return to caller
;--------------------------------------;--------------------------------------
GETKBDAAA:CMP   AH,DS:[EBX+00]         ;test if this direction key pressed
         JNZ   GETKBDqqq              ;cycle comparaison with all cases
         MOV   EDX,DS:[EBX+02]        ;else get anim offset in tab
         MOV   DS:[EBP+12],EDX        ;get that sequence as base
GETKBDOOO:CALL  TSTCOLXXX              ;do collision detection
         TEST  AL,AL                  ;test if empty previous dotted element
         JZ    GETKBD999              ;if so then keep pactstart value
         TEST  AL,0C0H                ;test if dotted or intersection element
         JNZ   GETKBD999              ;if so then keep pactstart value
         push  dptr DS:[EBP+16]       ;push pacstart prev
         pop   dptr DS:[EBP+12]       ;restore as pacstart
GETKBDQQQ:RET                          ;return to caller
;--------------------------------------;--------------------------------------
;----------------------------------------------------------------------------
COPYBLK:  MOV   CX,CHARMAX*charstructsiz            ;for each characters
xetstruct:LODS  BPTR DS:[ESI]          ;read 4 bytes from source
         MOV   BPTR DS:[EDI],AL
         INC   EDI
         LOOP  xetstruct
         RET
;----------------------------------------------------------------------------
; set palette to palette pointed by edi
;----------------------------------------------------------------------------
SETSTATE: test  word ptr DS:[pillstate],1
         jz    SETSTATE1
         add   edi,4
SETSTATE1:mov   cx,6
palloop0: mov   dx,3C8H
         mov   ax,wptr ds:[di+0]
         out   dx,ax
         inc   dx
         mov   ax,wptr ds:[di+2]
         out   dx,al
         mov   al,ah
         out   dx,al
         add   di,4
         loop  palloop0
         ret
RESTX:    ADD   ESI,DS:[LOGSCR]        ;edi=offset of screen
         MOV   EDI,DS:[LOGSCR]        ;edi=offset of screen
         ADD   EDI,DPTR DS:[EBP+0044]
         CALL  PUTSPRITE              ;put prize on screen
         RET
;**************************************;***********************************************
;ORG       2043                         ;high score 0-->2047-4=2043
;HIGHSCOR  LABEL WORD                   ;saved in last dword of compressed file
;-----------------------------------------------------------------------------
; .STACK
;-----------------------------------------------------------------------------
;ORG       0FFFCH                       ; 1 byte smaller
;_STACK    LABEL WORD                   ; 1 byte smaller
_STACK   EQU   0FFFCH
;-----------------------------------------------------------------------------
_TEXT     ENDS                         ;end of code segment
;-----------------------------------------------------------------------------
; PROGRAM END
;-----------------------------------------------------------------------------
         END   START                  ;end of program