diff --git a/pacMan/assembling.asm b/pacMan/assembling.asm new file mode 100644 index 0000000..3a5f198 --- /dev/null +++ b/pacMan/assembling.asm @@ -0,0 +1,1070 @@ +org 100h + +%include "sprite.asm" + +section .data +; pacman + ; initialisation + position dw 43751 + ; end initialisation + ; mouvement related + frame db 1 + + wantgoleft db 0 + wantgoright db 0 + wantgoup db 0 + wantgodown db 0 + + goleft db 0 + goright db 0 + goup db 0 + godown db 0 + + nbtestcoll db 4 + postestcoll dw 0 + ; end mouvement related +; end pacman + +; maze + ; maze array + maze db 26,22,22,22,22,22,22,22,22,22,22,22,22,30,31,22,22,22,22,22,22,22,22,22,22,22,22,27 + db 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,13,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,24 + db 25, 0,14,10,10,15, 0,14,10,10,10,15, 0,13,12, 0,14,10,10,10,15, 0,14,10,10,15, 0,24 + db 25, 0,13, 0, 0,12, 0,13, 0, 0, 0,12, 0,13,12, 0,13, 0, 0, 0,12, 0,13, 0, 0,12, 0,24 + db 25, 0,17,11,11,16, 0,17,11,11,11,16, 0,17,16, 0,17,11,11,11,16, 0,17,11,11,16, 0,24 + db 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,24 + db 25, 0,14,10,10,15, 0,14,15, 0,14,10,10,10,10,10,10,15, 0,14,15, 0,14,10,10,15, 0,24 + db 25, 0,17,11,11,16, 0,13,12, 0,17,11,11,19,18,11,11,16, 0,13,12, 0,17,11,11,16, 0,24 + db 25, 0, 0, 0, 0, 0, 0,13,12, 0, 0, 0, 0,13,12, 0, 0, 0, 0,13,12, 0, 0, 0, 0, 0, 0,24 + db 29,23,23,23,23,15, 0,13,21,10,10,15, 0,13,12, 0,14,10,10,20,12, 0,14,23,23,23,23,28 + db 0, 0, 0, 0, 0,25, 0,13,18,11,11,16, 0,17,16, 0,17,11,11,19,12, 0,24, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0,25, 0,13,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,13,12, 0,24, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0,25, 0,13,12, 0,38,23,36, 1, 1,37,23,39, 0,13,12, 0,24, 0, 0, 0, 0, 0 + db 22,22,22,22,22,16, 0,17,16, 0,24, 0, 0, 0, 0, 0, 0,25, 0,17,16, 0,17,22,22,22,22,22 + db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,24, 0, 0, 0, 0, 0, 0,25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + db 23,23,23,23,23,15, 0,14,15, 0,24, 0, 0, 0, 0, 0, 0,25, 0,14,15, 0,14,23,23,23,23,23 + db 0, 0, 0, 0, 0,25, 0,13,12, 0,41,22,22,22,22,22,22,40, 0,13,12, 0,24, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0,25, 0,13,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,13,12, 0,24, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0,25, 0,13,12, 0,14,10,10,10,10,10,10,15, 0,13,12, 0,24, 0, 0, 0, 0, 0 + db 26,22,22,22,22,16, 0,17,16, 0,17,11,11,19,18,11,11,16, 0,17,16, 0,17,22,22,22,22,27 + db 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,13,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,24 + db 25, 0,14,10,10,15, 0,14,10,10,10,15, 0,13,12, 0,14,10,10,10,15, 0,14,10,10,15, 0,24 + db 25, 0,17,11,19,12, 0,17,11,11,11,16, 0,17,16, 0,17,11,11,11,16, 0,13,18,11,16, 0,24 + db 25, 0, 0, 0,13,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,13,12, 0, 0, 0,24 + db 33,10,15, 0,13,12, 0,14,15, 0,14,10,10,10,10,10,10,15, 0,14,15, 0,13,12, 0,14,10,34 + db 32,11,16, 0,17,16, 0,13,12, 0,17,11,11,19,18,11,11,16, 0,13,12, 0,17,16, 0,17,11,35 + db 25, 0, 0, 0, 0, 0, 0,13,12, 0, 0, 0, 0,13,12, 0, 0, 0, 0,13,12, 0, 0, 0, 0, 0, 0,24 + db 25, 0,14,10,10,10,10,20,21,10,10,15, 0,13,12, 0,14,10,10,20,21,10,10,10,10,15, 0,24 + db 25, 0,17,11,11,11,11,11,11,11,11,16, 0,17,16, 0,17,11,11,11,11,11,11,11,11,16, 0,24 + db 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,24 + db 29,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,28 + ; --------------------------------------------------------------------- + Column dw 28 ; number of columns + Row dw 31 ; number of rows + nbpixel dw 2072 ; number of pixels in a row of tile +; end maze + +section .text + mov ah, 00h ;-------------------------------- + mov al, 13h ; set screen 320x200 256colours + int 10h ;-------------------------------- + + initGame: ; initialise the game + call clearScreen ; clear the screen before everything + call Maze + start: + jmp moveLeft + ;mov cx, 60000 + ;call waitLoop + ;mov ah, 00h + ;int 16h + ;cmp ah, 1Ch + ;jne start + ;jmp readyClear + + gameLoop: + ;jmp wantGoDirection + jmp actualDirection + keyCheck: + mov ah, 01h + int 16h + jnz return + mov ah, 00h + int 16h ; read the key + cmp ah, 4Bh ; left arrow key + je moveLeft + cmp ah, 4Dh ; right arrow key + je moveRight + cmp ah, 48h ; up arrow key + je moveUp + cmp ah, 50h ; down arrow key + je moveDown + return: + ret + +; MAZE ------------------------------------------------------------------- + ; DRAW WALL --------------------------- + drawWalls: ; draw 1 tile + mov dx, 6 ; number of row of a sprite + eachLineMaze: + mov cx, 6 ; number of column of a sprite + rep movsb ; draw the sprite + add di, 320-6 ; go to the next row + dec dx ; count the number of rows drawn + jnz eachLineMaze ; if the number of rows drawn is not zero, go to draw the next line + call nextColumn ; call the function to go to the next tile + inc bx ; setup for the next sprite to choose + ret + + nextColumn: + mov ax, [Column] ;------------------------------------------------------ + dec ax ; decrement Column to count the number of drawn column + mov [Column], ax ;------------------------------------------------------ + cmp ax, 0 ; look if he has finished the row + je nextRow ; if yes, call the function for the next row of tiles + sub di, 1914 ; go the the next column + ret + + nextRow: + mov ax, [Row] ;------------------------------------------------ + dec ax ; decrement Row to count the number of drawn row + mov [Row], ax ;------------------------------------------------ + cmp ax, 0 ; look if he has finished the every rows + je initPac ; if yes, finish + mov ax, 28 ; + mov [Column], ax ; setup the number of columns for the next row + mov ax, [nbpixel] + mov di, ax ; go to the next row of tile + add ax, 1920 ; save the number of pixel to go to the next line + mov [nbpixel], ax ; + ret + ; END DRAW WALL ---------------------- + ; WALL CHOICE ------------------------ + Maze: + mov di, 152 ; set the position + mov bx, maze ; put the maze array to a register to follow the maze pattern + wallchoice: + mov al, [bx] ; look wich sprite he has to put in a tile + cmp al, 0 ; then he call a function to draw the correct sprite + je DrawEmpty ; + cmp al, 1 + je DrawDoor + cmp al, 10 + je DrawSmplwall1 + cmp al, 11 + je DrawSmplwall2 + cmp al, 12 + je DrawSmplwall3 + cmp al, 13 + je DrawSmplwall4 + cmp al, 14 + je DrawSmplangle11 + cmp al, 15 + je DrawSmplangle12 + cmp al, 16 + je DrawSmplangle13 + cmp al, 17 + je DrawSmplangle14 + cmp al, 18 + je DrawSmplangle21 + cmp al, 19 + je DrawSmplangle22 + cmp al, 20 + je DrawSmplangle23 + cmp al, 21 + je DrawSmplangle24 + cmp al, 22 + je DrawDblwall1 + cmp al, 23 + je DrawDblwall2 + cmp al, 24 + je DrawDblwall3 + cmp al, 25 + je DrawDblwall4 + cmp al, 26 + je DrawDblangle1 + cmp al, 27 + je DrawDblangle2 + cmp al, 28 + je DrawDblangle3 + cmp al, 29 + je DrawDblangle4 + cmp al, 30 + je DrawDblwallangle1 + cmp al, 31 + je DrawDblwallangle2 + cmp al, 32 + je DrawDblwallangle3 + cmp al, 33 + je DrawDblwallangle4 + cmp al, 34 + je DrawDblwallangle5 + cmp al, 35 + je DrawDblwallangle6 + cmp al, 36 + je DrawDblstrgwall1 + cmp al, 37 + je DrawDblstrgwall2 + cmp al, 38 + je DrawDblstrgangle1 + cmp al, 39 + je DrawDblstrgangle2 + cmp al, 40 + je DrawDblstrgangle3 + cmp al, 41 + je DrawDblstrgangle4 + ret + ; END WALL CHOICE ----------------- + ; SET WALL ------------------------ + DrawEmpty: ; tell which sprite he want to draw + mov si, empty ; call the function to draw the tile + call drawWalls ; return to the function where he will look which sprite to use + jmp wallchoice ; does the same in the following functions for each sprite\ + + DrawDoor: + mov si, door + call drawWalls + jmp wallchoice + + DrawSmplwall1: + mov si, smplwall1 + call drawWalls + jmp wallchoice + + DrawSmplwall2: + mov si, smplwall2 + call drawWalls + jmp wallchoice + + DrawSmplwall3: + mov si, smplwall3 + call drawWalls + jmp wallchoice + + DrawSmplwall4: + mov si, smplwall4 + call drawWalls + jmp wallchoice + + DrawSmplangle11: + mov si, smplangle11 + call drawWalls + jmp wallchoice + + DrawSmplangle12: + mov si, smplangle12 + call drawWalls + jmp wallchoice + + DrawSmplangle13: + mov si, smplangle13 + call drawWalls + jmp wallchoice + + DrawSmplangle14: + mov si, smplangle14 + call drawWalls + jmp wallchoice + + DrawSmplangle21: + mov si, smplangle21 + call drawWalls + jmp wallchoice + + DrawSmplangle22: + mov si, smplangle22 + call drawWalls + jmp wallchoice + + DrawSmplangle23: + mov si, smplangle23 + call drawWalls + jmp wallchoice + + DrawSmplangle24: + mov si, smplangle24 + call drawWalls + jmp wallchoice + + DrawDblwall1: + mov si, dblwall1 + call drawWalls + jmp wallchoice + + DrawDblwall2: + mov si, dblwall2 + call drawWalls + jmp wallchoice + + DrawDblwall3: + mov si, dblwall3 + call drawWalls + jmp wallchoice + + DrawDblwall4: + mov si, dblwall4 + call drawWalls + jmp wallchoice + + DrawDblangle1: + mov si, dblangle1 + call drawWalls + jmp wallchoice + + DrawDblangle2: + mov si, dblangle2 + call drawWalls + jmp wallchoice + + DrawDblangle3: + mov si, dblangle3 + call drawWalls + jmp wallchoice + + DrawDblangle4: + mov si, dblangle4 + call drawWalls + jmp wallchoice + + DrawDblwallangle1: + mov si, dblwallangle1 + call drawWalls + jmp wallchoice + + DrawDblwallangle2: + mov si, dblwallangle2 + call drawWalls + jmp wallchoice + + DrawDblwallangle3: + mov si, dblwallangle3 + call drawWalls + jmp wallchoice + + DrawDblwallangle4: + mov si, dblwallangle4 + call drawWalls + jmp wallchoice + + DrawDblwallangle5: + mov si, dblwallangle5 + call drawWalls + jmp wallchoice + + DrawDblwallangle6: + mov si, dblwallangle6 + call drawWalls + jmp wallchoice + + DrawDblstrgwall1: + mov si, dblstrgwall1 + call drawWalls + jmp wallchoice + + DrawDblstrgwall2: + mov si, dblstrgwall2 + call drawWalls + jmp wallchoice + + DrawDblstrgangle1: + mov si, dblstrgangle1 + call drawWalls + jmp wallchoice + + DrawDblstrgangle2: + mov si, dblstrgangle2 + call drawWalls + jmp wallchoice + + DrawDblstrgangle3: + mov si, dblstrgangle3 + call drawWalls + jmp wallchoice + + DrawDblstrgangle4: + mov si, dblstrgangle4 + call drawWalls + jmp wallchoice + ; END SET WALL ------------------ + ; READY ------------------------- + readyDraw: + mov di, 32852 + mov si, ready + call drawReady + jmp start + + readyClear: + mov di, 32852 + mov si, clearready + call drawReady + jmp moveLeft + + drawReady: + mov dx, 7 + eachlineReady: + mov cx, 48 + rep movsb + add di, 320-48 + dec dx + jnz eachlineReady + ret + ; END READY --------------------- +; END MAZE ------------------------------------------------------------ + +; CLEAR SCREEN --------------------------------------------------------- + clearScreen: + mov ax, 0xA000 + mov es, ax + mov di, 0 + mov cx, 320*200 + rep stosb + ret +; END CLEAR SCREEN ----------------------------------------------------- + +; INITIALISATION PACMAN ------------------------------------------------ + initPac: + mov si, pacManWaka1L + call drawPac + jmp readyDraw + + drawPac: + mov di, [position] + mov dx, 10 + eachLinePac: + mov cx, 10 + rep movsb + add di, 320-10 ; Move to the next line + dec dx + jnz eachLinePac + ret +; END INITIALISATION PACMAN -------------------------------------------- + +; COLLISIONS ----------------------------------------------------------- + ; SIMPLE -------------------------- + wCollLeft: ; collision for straight direction to stop when seing a wall + mov ax, [position] + sub ax, 1 + mov cx, 320 ; nb of pixels in a row + div cx ; division to calculate the x and y position of the pixel where we test the collision + mov bx, ax ; save the quotient + mov ah, 0Dh ; int to read the pixel color + mov cx, dx ; remainder goes to x position + mov dx, bx ; quotient goes to y position + int 10h + cmp al, 0x10 ; test if the color is the same as the maze + je gameLoop + ret + + wCollRight: + mov ax, [position] + add ax, 10 + mov cx, 320 + div cx + mov bx, ax + mov ah, 0Dh + mov cx, dx + mov dx, bx + int 10h + cmp al, 0x10 + je gameLoop + ret + + wCollUp: + mov ax, [position] + sub ax, 320 + mov cx, 320 + div cx + mov bx, ax + mov ah, 0Dh + mov cx, dx + mov dx, bx + int 10h + cmp al, 0x10 + je gameLoop + ret + + wCollDown: + mov ax, [position] + add ax, 3200 + mov cx, 320 + div cx + mov bx, ax + mov ah, 0Dh + mov cx, dx + mov dx, bx + int 10h + cmp al, 0x10 + je gameLoop + ret + ; END SIMPLE ----------------------- + ; COMPLEX -------------------------- + ;beforeLeft: ; collision test before turning, if collision is detected, save the direction for when he can turn + ; mov ax, 1 + ; mov bx, 0 + ; mov [wantgoleft], ax + ; mov [wantgoright], bx + ; mov [wantgoup], bx + ; mov [wantgodown], bx + ; mov ax, [position] + ; sub ax, 1 + ; lineCollLeft: + ; mov [postestcoll], ax + ; mov cx, 320 + ; div cx + ; mov bx, ax + ; mov ah, 0Dh + ; mov cx, dx + ; mov dx, bx + ; int 10h + ; cmp al, 0x10 + ; je actualDirection + ; mov dx, [nbtestcoll] + ; sub dx, 1 + ; mov [nbtestcoll], dx + ; cmp dx, 0 + ; je moveLeft + ; mov ax, [postestcoll] + ; add ax, 960 + ; mov dx, 0 + ; jmp lineCollLeft +; + ;beforeRight: + ; mov ax, 1 + ; mov bx, 0 + ; mov [wantgoleft], bx + ; mov [wantgoright], ax + ; mov [wantgoup], bx + ; mov [wantgodown], bx + ; mov ax, [position] + ; add ax, 10 + ; lineCollRight: + ; mov [postestcoll], ax + ; mov cx, 320 + ; div cx + ; mov bx, ax + ; mov ah, 0Dh + ; mov cx, dx + ; mov dx, bx + ; int 10h + ; cmp al, 0x10 + ; je actualDirection + ; mov dx, [nbtestcoll] + ; sub dx, 1 + ; mov [nbtestcoll], dx + ; cmp dx, 0 + ; je moveRight + ; mov ax, [postestcoll] + ; add ax, 960 + ; mov dx, 0 + ; jmp lineCollRight +; + ;beforeUp: + ; mov ax, 1 + ; mov bx, 0 + ; mov [wantgoleft], bx + ; mov [wantgoright], bx + ; mov [wantgoup], ax + ; mov [wantgodown], bx + ; mov ax, [position] + ; sub ax, 320 + ; lineCollUp: + ; mov [postestcoll], ax + ; mov cx, 320 + ; div cx + ; mov bx, ax + ; mov ah, 0Dh + ; mov cx, dx + ; mov dx, bx + ; int 10h + ; cmp al, 0x10 + ; je actualDirection + ; mov dx, [nbtestcoll] + ; sub dx, 1 + ; mov [nbtestcoll], dx + ; cmp dx, 0 + ; je moveUp + ; mov ax, [postestcoll] + ; add ax, 3 + ; mov dx, 0 + ; jmp lineCollUp +; + ;beforeDown: + ; mov ax, 1 + ; mov bx, 0 + ; mov [wantgoleft], bx + ; mov [wantgoright], bx + ; mov [wantgoup], bx + ; mov [wantgodown], ax + ; mov ax, [position] + ; add ax, 3200 + ; lineCollDown: + ; mov [postestcoll], ax + ; mov cx, 320 + ; div cx + ; mov bx, ax + ; mov ah, 0Dh + ; mov cx, dx + ; mov dx, bx + ; int 10h + ; cmp al, 0x10 + ; je actualDirection + ; mov dx, [nbtestcoll] + ; sub dx, 1 + ; mov [nbtestcoll], dx + ; cmp dx, 0 + ; je moveDown + ; mov ax, [postestcoll] + ; add ax, 3 + ; mov dx, 0 + ; jmp lineCollDown + ;END COMPLEX ----------------------- +; END COLLISIONS ------------------------------------------------------- + +; ANIMATIONS ----------------------------------------------------------- + ; CHOICE ------------------------------ + animLeft: ; choose the right sprite to make the animation + mov bl, [frame] + inc bl + mov [frame], bl + cmp bl, 4 + jl pacLeft1 + cmp bl, 8 + jl pacLeft2 + mov bl, 1 + mov [frame], bl + jmp pacLeft1 + + animRight: + mov bl, [frame] + inc bl + mov [frame], bl + cmp bl, 4 + jl pacRight1 + cmp bl, 8 + jl pacRight2 + mov bl, 1 + mov [frame], bl + jmp pacRight1 + + animUp: + mov bl, [frame] + inc bl + mov [frame], bl + cmp bl, 4 + jl pacUp1 + cmp bl, 8 + jl pacUp2 + mov bl, 1 + mov [frame], bl + jmp pacUp1 + + animDown: + mov bl, [frame] + inc bl + mov [frame], bl + cmp bl, 4 + jl pacDown1 + cmp bl, 8 + jl pacDown2 + mov bl, 1 + mov [frame], bl + jmp pacDown1 + ; END CHOICE -------------------------- + ; SET ANIMATIONS ---------------------- + pacLeft1: + mov si, pacManWaka1L + call drawPac + jmp gameLoop + + pacLeft2: + mov si, pacManWaka2L + call drawPac + jmp gameLoop + + pacRight1: + mov si, pacManWaka1R + call drawPac + jmp gameLoop + + pacRight2: + mov si, pacManWaka2R + call drawPac + jmp gameLoop + + pacUp1: + mov si, pacManWaka1U + call drawPac + jmp gameLoop + + pacUp2: + mov si, pacManWaka2U + call drawPac + jmp gameLoop + + pacDown1: + mov si, pacManWaka1D + call drawPac + jmp gameLoop + + pacDown2: + mov si, pacManWaka2D + call drawPac + jmp gameLoop + ; END SET ANIMATIONS ------------------ +; END ANIMATIONS ------------------------------------------------------- + +; PACMAN MOVEMENTS ----------------------------------------------------- + ; ACTUAL DIRECTION -------------------- + actualDirection: ; test wich direction he is going + mov cx, [goleft] + cmp cx, 1 + je moveLeft + mov cx, [goright] + cmp cx, 1 + je moveRight + mov cx, [goup] + cmp cx, 1 + je moveUp + mov cx, [godown] + cmp cx, 1 + je moveDown + ; END ACTUAL DIRECTION ---------------- + ; ACTUAL MOVEMENT --------------------- + moveLeft: + call keyCheck + mov ax, 1 ; use to save wich direction he is going + mov bx, 0 ; + mov [goleft], ax ; + mov [goright], bx ; + mov [goup], bx ; + mov [godown], bx ; + mov dx, 4 + mov [nbtestcoll], dx + call wCollLeft + mov cx, 60000 + call waitLoop + call clearPac + sub word [position], 1 + jmp animLeft + + moveRight: + call keyCheck + mov ax, 1 + mov bx, 0 + mov [goleft], bx + mov [goright], ax + mov [goup], bx + mov [godown], bx + mov dx, 4 + mov [nbtestcoll], dx + call wCollRight + mov cx, 60000 + call waitLoop + call clearPac + add word [position], 1 + jmp animRight + + moveUp: + call keyCheck + mov ax, 1 + mov bx, 0 + mov [goleft], bx + mov [goright], bx + mov [goup], ax + mov [godown], bx + mov dx, 4 + mov [nbtestcoll], dx + call wCollUp + mov cx, 60000 + call waitLoop + call clearPac + sub word [position], 320 + jmp animUp + + moveDown: + call keyCheck + mov ax, 1 + mov bx, 0 + mov [goleft], bx + mov [goright], bx + mov [goup], bx + mov [godown], ax + mov dx, 4 + mov [nbtestcoll], dx + call wCollDown + mov cx, 60000 + call waitLoop + call clearPac + add word [position], 320 + jmp animDown + ; END ACTUAL MOVEMENT ---------------- + ; CHECK WANTED MOVEMENT ------------- + ;wantGoDirection: ; test wich direction he wants to go + ; mov cx, [wantgoleft] + ; cmp cx, 1 + ; je beforeLeft + ; mov cx, [wantgoright] + ; cmp cx, 1 + ; je beforeRight + ; mov cx, [wantgoup] + ; cmp cx, 1 + ; je beforeUp + ; mov cx, [wantgodown] + ; cmp cx, 1 + ; je beforeDown + ; ret + ; END CHECK WANTED MOVEMENT ---------- + clearPac: + mov si, clear + call drawPac + ret +; END PACMAN MOVEMENTS ----------------------------------------------- + waitLoop: + loop waitLoop + ret + + +; FlopY: +; mov bl, [frame] +; cmp bl, 4 +; jl setblinkyU +; cmp bl, 8 +; jl setAltU +; mov bl, 0 +; mov [frame], bl +; jmp FlopY +; FlopYret: +; call drawPac +; mov cx, 60000 +; call waitLoop +; jmp gameLoop +; +; noFlopY: +; mov bl, [frame] +; cmp bl, 4 +; jl setblinkyD +; cmp bl, 8 +; jl setAltD +; mov bl, 0 +; mov [frame], bl +; jmp noFlopY +; noFlopYret: +; call drawPac +; mov cx, 60000 +; call waitLoop +; jmp gameLoop +; +; FlopX: +; mov bl, [frame] +; cmp bl, 4 +; jl setblinkyR +; cmp bl, 8 +; jl setAltR +; mov bl, 0 +; mov [frame], bl +; jmp FlopX +; FlopXret: +; call drawPac +; mov cx, 60000 +; call waitLoop +; jmp gameLoop +; +; noFlopX: +; mov bl, [frame] +; cmp bl, 4 +; jl setblinkyL +; cmp bl, 8 +; jl setAltL +; mov bl, 0 +; mov [frame], bl +; jmp noFlopX +; noFlopXret: +; call drawPac +; mov cx, 60000 +; call waitLoop +; jmp gameLoop +; +; moveLeft: +; wCollisionLeft: +; mov ax, [position] ; get the position of the sprite +; sub ax, 1 ; where the collision is tested +; mov [postestcoll], ax +; mov bx, 4 +; lineLeft: +; mov [nbtestcoll], bx +; mov ax, [postestcoll] +; mov dx, 1 +; ;call drawPixel +; mov cx, 320 ; nb of pixels in a row +; div cx ; division to calculate the x and y position of the pixel where we test the collision +; mov bx, ax ; save the quotient +; mov ah, 0Dh ; int to read the pixel color +; mov cx, dx ; remainder goes to x position +; mov dx, bx ; quotient goes to y position +; int 10h +; cmp al, 0xFF ; test if the color is the same as the maze +; je stopPacLeft +; mov ax, [postestcoll] +; add ax, 960 +; mov [postestcoll], ax +; mov bx, [nbtestcoll] +; dec bx +; jnz lineLeft +; call clearPac +; sub word [position], 1 +; call noFlopX +; skipLeft: +; call gameLoop +; jmp moveLeft +; +; moveRight: +; wCollisionRight: +; mov ax, [position] +; add ax, 10 +; mov cx, 320 +; div cx +; mov bx, ax +; mov ah, 0Dh +; mov cx, dx +; mov dx, bx +; int 10h +; cmp al, 0xFF +; je stopPacRight +; call clearPac +; add word [position], 1 +; call FlopX +; skipRight: +; call gameLoop +; jmp moveRight +; +; moveUp: +; wCollisionUp: +; mov ax, [position] +; sub ax, 320 +; mov cx, 320 +; div cx +; mov bx, ax +; mov ah, 0Dh +; mov cx, dx +; mov dx, bx +; int 10h +; cmp al, 0xFF +; je stopPacUp +; call clearPac +; sub word [position], 320 +; call FlopY +; skipUp: +; call gameLoop +; jmp moveUp +; +; moveDown: +; wCollisionDown: +; mov ax, [position] +; add ax, 3200 +; mov cx, 320 +; div cx +; mov bx, ax +; mov ah, 0Dh +; mov cx, dx +; mov dx, bx +; int 10h +; cmp al, 0xFF +; je stopPacDown +; call clearPac +; add word [position], 320 +; call noFlopY +; skipDown: +; call gameLoop +; jmp moveDown +; +; setAltR: +; add bl, 1 +; mov [frame], bl +; mov si, pacManWaka1R +; jmp FlopXret +; +; setAltL: +; add bl, 1 +; mov [frame], bl +; mov si, pacManWaka1L +; jmp noFlopXret +; +; setAltU: +; add bl, 1 +; mov [frame], bl +; mov si, pacManWaka1U +; jmp FlopYret +; +; setAltD: +; add bl, 1 +; mov [frame], bl +; mov si, pacManWaka1D +; jmp noFlopYret +; +; setblinkyR: +; add bl, 1 +; mov [frame], bl +; mov si, pacManWaka2R +; jmp FlopXret +; +; setblinkyL: +; add bl, 1 +; mov [frame], bl +; mov si, pacManWaka2L +; jmp noFlopXret +; +; setblinkyU: +; add bl, 1 +; mov [frame], bl +; mov si, pacManWaka2U +; jmp FlopYret +; +; setblinkyD: +; add bl, 1 +; mov [frame], bl +; mov si, pacManWaka2D +; jmp noFlopYret +; +; clearPac: +; mov di, [position] +; mov si, clear +; call drawPac +; ret +; +; stopPacLeft: +; mov si, pacManWaka1L +; call drawPac +; jmp skipLeft +; +; stopPacRight: +; mov si, pacManWaka1R +; call drawPac +; jmp skipRight +; +; stopPacUp: +; mov si, pacManWaka1U +; call drawPac +; jmp skipUp +; +; stopPacDown: +; mov si, pacManWaka1D +; call drawPac +; jmp skipDown +; +; +; waitLoop: +; loop waitLoop +; ret + +; drawPixel: +; mov bx, 120 +; add bx, 1 +; mov di, bx +; mov si, pix +; mov dx, 1 +; mov cx, 1 +; rep movsb +; ret + + end: + int 21h \ No newline at end of file diff --git a/pacMan/bin/pacman.com b/pacMan/bin/pacman.com new file mode 100644 index 0000000..97c11f3 Binary files /dev/null and b/pacMan/bin/pacman.com differ diff --git a/pacMan/buildSprite.cmd b/pacMan/buildSprite.cmd new file mode 100644 index 0000000..cf80746 --- /dev/null +++ b/pacMan/buildSprite.cmd @@ -0,0 +1,18 @@ +@echo off +set "ROOT_DIR=%~dp0" +set "CONF=%ROOT_DIR%\conf" +set "NASM=%ROOT_DIR%\nasm\nasm" +set "BIN_DIR=%ROOT_DIR%\bin" +set "CONF_DOSBOX=%userprofile%\AppData\Local\DOSBox" +set "DOSBOX_BIN=%ProgramFiles(x86)%\DOSBox-0.74-3\DOSBox.exe" + +"%NASM%" "%ROOT_DIR%\assembling.asm" -f bin -o "%BIN_DIR%\pacman.com" + +"%DOSBOX_BIN%" -c "config -set 'sdl fullscreen=true'" , -c "config -writeconf conf\dosbox-0.74-3.conf" , -c "exit" + +cd\ +copy "%CONF%\dosbox-0.74-3.conf" "%CONF_DOSBOX%" + +"%DOSBOX_BIN%" -c keyb fr189 , -c "MOUNT c %BIN_DIR%" , -c c: , -c pacman.com + +exit diff --git a/pacMan/buildSprite.sh b/pacMan/buildSprite.sh new file mode 100755 index 0000000..a4dad80 --- /dev/null +++ b/pacMan/buildSprite.sh @@ -0,0 +1,17 @@ +ROOT_DIR="$(dirname "$(realpath "$0")")" +ROOT_DIR="$(dirname "$ROOT_DIR")" + +CONF="$ROOT_DIR/pacMan/conf/" +# NASM="$ROOT_DIR/code/nasm.exe" +NASM="/opt/homebrew/Cellar/nasm/2.16.01/bin/nasm" +BIN_DIR="$ROOT_DIR/pacMan/bin/" +CONF_DOSBOX="/Users/pierregorin/Library/Preferences/DOSBox 0.74-3 Preferences" +DOSBOX_BIN="/opt/homebrew/Cellar/dosbox/0.74-3_1/bin/dosbox" + +"$NASM" "$ROOT_DIR/pacMan/pacman.asm" -f bin -o "$BIN_DIR/pacman.com" + +# "$DOSBOX_BIN" -c "config -set 'sdl fullscreen=true'" -c "config -writeconf $CONF/dosbox-0.74-3.conf" -c "exit" + +# cp "$CONF/dosbox-0.74-3.conf" "$CONF_DOSBOX" + +"$DOSBOX_BIN" -c "keyb fr189" -c "MOUNT c $BIN_DIR" -c "c:" -c "pacman.com" \ No newline at end of file diff --git a/pacMan/collision.asm b/pacMan/collision.asm new file mode 100644 index 0000000..8ee1c84 --- /dev/null +++ b/pacMan/collision.asm @@ -0,0 +1,384 @@ +org 100h + +%include "sprite.asm" + +section .data + cPos db 0 + + xPos db 155 + yPos db 3 + ; maze array + maze db 26,22,22,22,22,22,22,22,22,22,22,22,22,30,31,22,22,22,22,22,22,22,22,22,22,22,22,27 + db 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,13,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,24 + db 25, 0,14,10,10,15, 0,14,10,10,10,15, 0,13,12, 0,14,10,10,10,15, 0,14,10,10,15, 0,24 + db 25, 0,13, 0, 0,12, 0,13, 0, 0, 0,12, 0,13,12, 0,13, 0, 0, 0,12, 0,13, 0, 0,12, 0,24 + db 25, 0,17,11,11,16, 0,17,11,11,11,16, 0,17,16, 0,17,11,11,11,16, 0,17,11,11,16, 0,24 + db 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,24 + db 25, 0,14,10,10,15, 0,14,15, 0,14,10,10,10,10,10,10,15, 0,14,15, 0,14,10,10,15, 0,24 + db 25, 0,17,11,11,16, 0,13,12, 0,17,11,11,19,18,11,11,16, 0,13,12, 0,17,11,11,16, 0,24 + db 25, 0, 0, 0, 0, 0, 0,13,12, 0, 0, 0, 0,13,12, 0, 0, 0, 0,13,12, 0, 0, 0, 0, 0, 0,24 + db 29,23,23,23,23,15, 0,13,21,10,10,15, 0,13,12, 0,14,10,10,20,12, 0,14,23,23,23,23,28 + db 0, 0, 0, 0, 0,25, 0,13,18,11,11,16, 0,17,16, 0,17,11,11,19,12, 0,24, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0,25, 0,13,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,13,12, 0,24, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0,25, 0,13,12, 0,38,23,36, 1, 1,37,23,39, 0,13,12, 0,24, 0, 0, 0, 0, 0 + db 22,22,22,22,22,16, 0,17,16, 0,24, 0, 0, 0, 0, 0, 0,25, 0,17,16, 0,17,22,22,22,22,22 + db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,24, 0, 0, 0, 0, 0, 0,25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + db 23,23,23,23,23,15, 0,14,15, 0,24, 0, 0, 0, 0, 0, 0,25, 0,14,15, 0,14,23,23,23,23,23 + db 0, 0, 0, 0, 0,25, 0,13,12, 0,41,22,22,22,22,22,22,40, 0,13,12, 0,24, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0,25, 0,13,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,13,12, 0,24, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0,25, 0,13,12, 0,14,10,10,10,10,10,10,15, 0,13,12, 0,24, 0, 0, 0, 0, 0 + db 26,22,22,22,22,16, 0,17,16, 0,17,11,11,19,18,11,11,16, 0,17,16, 0,17,22,22,22,22,27 + db 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,13,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,24 + db 25, 0,14,10,10,15, 0,14,10,10,10,15, 0,13,12, 0,14,10,10,10,15, 0,14,10,10,15, 0,24 + db 25, 0,17,11,19,12, 0,17,11,11,11,16, 0,17,16, 0,17,11,11,11,16, 0,13,18,11,16, 0,24 + db 25, 0, 0, 0,13,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,13,12, 0, 0, 0,24 + db 33,10,15, 0,13,12, 0,14,15, 0,14,10,10,10,10,10,10,15, 0,14,15, 0,13,12, 0,14,10,34 + db 32,11,16, 0,17,16, 0,13,12, 0,17,11,11,19,18,11,11,16, 0,13,12, 0,17,16, 0,17,11,35 + db 25, 0, 0, 0, 0, 0, 0,13,12, 0, 0, 0, 0,13,12, 0, 0, 0, 0,13,12, 0, 0, 0, 0, 0, 0,24 + db 25, 0,14,10,10,10,10,20,21,10,10,15, 0,13,12, 0,14,10,10,20,21,10,10,10,10,15, 0,24 + db 25, 0,17,11,11,11,11,11,11,11,11,16, 0,17,16, 0,17,11,11,11,11,11,11,11,11,16, 0,24 + db 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,24 + db 29,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,28 + ; --------------------------------------------------------------------- + Column dw 28 ; number of columns + Row dw 31 ; number of rows + nbpixel dw 2072 ; number of pixels in a row of tile + +section .text + mov ah, 00h ;-------------------------------- + mov al, 13h ; set screen 320x200 256colours + int 10h ;-------------------------------- + + call clearScreen ; clear the screen before everything + + call Maze ; display the maze + + gameLoop: + call pixel + call collision + +; MAZE ------------------------------------------------------------------- + drawWalls: + ; draw 1 tile + mov dx, 6 ; number of row of a sprite + .eachLine: + mov cx, 6 ; number of column of a sprite + rep movsb ; draw the sprite + add di, 320-6 ; go to the next row + dec dx ; count the number of rows drawn + jnz .eachLine ; if the number of rows drawn is not zero, go to draw the next line + call nextColumn ; call the function to go to the next tile + inc bx ; setup for the next sprite to choose + ret + + nextColumn: + ; go to the next column + mov ax, [Column] ;------------------------------------------------------ + dec ax ; decrement Column to count the number of drawn column + mov [Column], ax ;------------------------------------------------------ + cmp ax, 0 ; look if he has finished the row + je nextRow ; if yes, call the function for the next row of tiles + sub di, 1914 ; go the the next column + ret + + nextRow: + mov ax, [Row] ;------------------------------------------------ + dec ax ; decrement Row to count the number of drawn row + mov [Row], ax ;------------------------------------------------ + cmp ax, 0 ; look if he has finished the every rows + je gameLoop ; if yes, finish + mov ax, 28 ; + mov [Column], ax ; setup the number of columns for the next row + mov ax, [nbpixel] + mov di, ax ; go to the next row of tile + add ax, 1920 ; save the number of pixel to go to the next line + mov [nbpixel], ax ; + ret + + Maze: + mov di, 152 ; set the position + mov bx, maze ; put the maze array to a register to follow the maze pattern + wallchoice: + mov al, [bx] ; look wich sprite he has to put in a tile + cmp al, 0 ; then he call a function to draw the correct sprite + je DrawEmpty ; + cmp al, 1 + je DrawDoor + cmp al, 10 + je DrawSmplwall1 + cmp al, 11 + je DrawSmplwall2 + cmp al, 12 + je DrawSmplwall3 + cmp al, 13 + je DrawSmplwall4 + cmp al, 14 + je DrawSmplangle11 + cmp al, 15 + je DrawSmplangle12 + cmp al, 16 + je DrawSmplangle13 + cmp al, 17 + je DrawSmplangle14 + cmp al, 18 + je DrawSmplangle21 + cmp al, 19 + je DrawSmplangle22 + cmp al, 20 + je DrawSmplangle23 + cmp al, 21 + je DrawSmplangle24 + cmp al, 22 + je DrawDblwall1 + cmp al, 23 + je DrawDblwall2 + cmp al, 24 + je DrawDblwall3 + cmp al, 25 + je DrawDblwall4 + cmp al, 26 + je DrawDblangle1 + cmp al, 27 + je DrawDblangle2 + cmp al, 28 + je DrawDblangle3 + cmp al, 29 + je DrawDblangle4 + cmp al, 30 + je DrawDblwallangle1 + cmp al, 31 + je DrawDblwallangle2 + cmp al, 32 + je DrawDblwallangle3 + cmp al, 33 + je DrawDblwallangle4 + cmp al, 34 + je DrawDblwallangle5 + cmp al, 35 + je DrawDblwallangle6 + cmp al, 36 + je DrawDblstrgwall1 + cmp al, 37 + je DrawDblstrgwall2 + cmp al, 38 + je DrawDblstrgangle1 + cmp al, 39 + je DrawDblstrgangle2 + cmp al, 40 + je DrawDblstrgangle3 + cmp al, 41 + je DrawDblstrgangle4 + ret + + DrawEmpty: ; tell which sprite he want to draw + mov si, empty ; call the function to draw the tile + call drawWalls ; return to the function where he will look which sprite to use + jmp wallchoice ; does the same in the following functions for each sprite\ + + DrawDoor: + mov si, door + call drawWalls + jmp wallchoice + + DrawSmplwall1: + mov si, smplwall1 + call drawWalls + jmp wallchoice + + DrawSmplwall2: + mov si, smplwall2 + call drawWalls + jmp wallchoice + + DrawSmplwall3: + mov si, smplwall3 + call drawWalls + jmp wallchoice + + DrawSmplwall4: + mov si, smplwall4 + call drawWalls + jmp wallchoice + + DrawSmplangle11: + mov si, smplangle11 + call drawWalls + jmp wallchoice + + DrawSmplangle12: + mov si, smplangle12 + call drawWalls + jmp wallchoice + + DrawSmplangle13: + mov si, smplangle13 + call drawWalls + jmp wallchoice + + DrawSmplangle14: + mov si, smplangle14 + call drawWalls + jmp wallchoice + + DrawSmplangle21: + mov si, smplangle21 + call drawWalls + jmp wallchoice + + DrawSmplangle22: + mov si, smplangle22 + call drawWalls + jmp wallchoice + + DrawSmplangle23: + mov si, smplangle23 + call drawWalls + jmp wallchoice + + DrawSmplangle24: + mov si, smplangle24 + call drawWalls + jmp wallchoice + + DrawDblwall1: + mov si, dblwall1 + call drawWalls + jmp wallchoice + + DrawDblwall2: + mov si, dblwall2 + call drawWalls + jmp wallchoice + + DrawDblwall3: + mov si, dblwall3 + call drawWalls + jmp wallchoice + + DrawDblwall4: + mov si, dblwall4 + call drawWalls + jmp wallchoice + + DrawDblangle1: + mov si, dblangle1 + call drawWalls + jmp wallchoice + + DrawDblangle2: + mov si, dblangle2 + call drawWalls + jmp wallchoice + + DrawDblangle3: + mov si, dblangle3 + call drawWalls + jmp wallchoice + + DrawDblangle4: + mov si, dblangle4 + call drawWalls + jmp wallchoice + + DrawDblwallangle1: + mov si, dblwallangle1 + call drawWalls + jmp wallchoice + + DrawDblwallangle2: + mov si, dblwallangle2 + call drawWalls + jmp wallchoice + + DrawDblwallangle3: + mov si, dblwallangle3 + call drawWalls + jmp wallchoice + + DrawDblwallangle4: + mov si, dblwallangle4 + call drawWalls + jmp wallchoice + + DrawDblwallangle5: + mov si, dblwallangle5 + call drawWalls + jmp wallchoice + + DrawDblwallangle6: + mov si, dblwallangle6 + call drawWalls + jmp wallchoice + + DrawDblstrgwall1: + mov si, dblstrgwall1 + call drawWalls + jmp wallchoice + + DrawDblstrgwall2: + mov si, dblstrgwall2 + call drawWalls + jmp wallchoice + + DrawDblstrgangle1: + mov si, dblstrgangle1 + call drawWalls + jmp wallchoice + + DrawDblstrgangle2: + mov si, dblstrgangle2 + call drawWalls + jmp wallchoice + + DrawDblstrgangle3: + mov si, dblstrgangle3 + call drawWalls + jmp wallchoice + + DrawDblstrgangle4: + mov si, dblstrgangle4 + call drawWalls + jmp wallchoice +; END MAZE ------------------------------------------------------------ + +; TEST PIXEL ---------------------------------------------------------- + pixel: + mov ax, 1116 + mov [cPos], ax + mov di, [cPos] + mov si, pix + mov cx, 1 + rep movsd + ret +; END TEST PIXEL ------------------------------------------------------ + +; COLLISION ----------------------------------------------------------- + collision: + mov ax, [cPos] ; get the position of the sprite + ;sub ax, 1 the left ; where the collision is tested + ;sub ax, 320 the top ; depending on the direction + ;add ax, 1 the right ; + ;add ax, 320 the bottom ; + mov cx, 320 ; nb of pixels in a row + div cx ; division to calculate the x and y position of the pixel where we test the collision + mov bx, ax ; save the quotient + mov ah, 0Dh ; int to read the pixel color + mov cx, dx ; remainder goes to x position + mov dx, bx ; quotient goes to y position + int 10h + cmp al, 0x20 ; test if the color is the same as the maze + je clearScreen ; if yes, clear the screen (test purpose) + call end +; END COLLISION -------------------------------------------------------- + +; CLEAR SCREEN --------------------------------------------------------- + clearScreen: + mov ax, 0xA000 + mov es, ax + mov di, 0 + mov cx, 320*200 + rep stosb + ret +; END CLEAR SCREEN ----------------------------------------------------- + + end: diff --git a/pacMan/conf/dosbox-0.74-3.conf b/pacMan/conf/dosbox-0.74-3.conf new file mode 100644 index 0000000..ae5c510 --- /dev/null +++ b/pacMan/conf/dosbox-0.74-3.conf @@ -0,0 +1,250 @@ +# This is the configuration file for DOSBox 0.74-3. (Please use the latest version of DOSBox) +# Lines starting with a # are comment lines and are ignored by DOSBox. +# They are used to (briefly) document the effect of each option. + +[sdl] +# fullscreen: Start dosbox directly in fullscreen. (Press ALT-Enter to go back) +# fulldouble: Use double buffering in fullscreen. It can reduce screen flickering, but it can also result in a slow DOSBox. +# fullresolution: What resolution to use for fullscreen: original, desktop or fixed size (e.g. 1024x768). +# Using your monitor's native resolution (desktop) with aspect=true might give the best results. +# If you end up with small window on a large screen, try an output different from surface. +# On Windows 10 with display scaling (Scale and layout) set to a value above 100%, it is recommended +# to use a lower full/windowresolution, in order to avoid window size problems. +# windowresolution: Scale the window to this size IF the output device supports hardware scaling. +# (output=surface does not!) +# output: What video system to use for output. +# Possible values: surface, overlay, opengl, openglnb. +# autolock: Mouse will automatically lock, if you click on the screen. (Press CTRL-F10 to unlock) +# sensitivity: Mouse sensitivity. +# waitonerror: Wait before closing the console if dosbox has an error. +# priority: Priority levels for dosbox. Second entry behind the comma is for when dosbox is not focused/minimized. +# pause is only valid for the second entry. +# Possible values: lowest, lower, normal, higher, highest, pause. +# mapperfile: File used to load/save the key/event mappings from. Resetmapper only works with the defaul value. +# usescancodes: Avoid usage of symkeys, might not work on all operating systems. + +fullscreen=false +fulldouble=false +fullresolution=desktop +windowresolution=960x540 +output=opengl +autolock=true +sensitivity=100 +waitonerror=true +priority=higher,normal +mapperfile=mapper-0.74-3.map +usescancodes=true + +[dosbox] +# language: Select another language file. +# machine: The type of machine DOSBox tries to emulate. +# Possible values: hercules, cga, tandy, pcjr, ega, vgaonly, svga_s3, svga_et3000, svga_et4000, svga_paradise, vesa_nolfb, vesa_oldvbe. +# captures: Directory where things like wave, midi, screenshot get captured. +# memsize: Amount of memory DOSBox has in megabytes. +# This value is best left at its default to avoid problems with some games, +# though few games might require a higher value. +# There is generally no speed advantage when raising this value. + +language= +machine=svga_paradise +captures=capture +memsize=16 + +[render] +# frameskip: How many frames DOSBox skips before drawing one. +# aspect: Do aspect correction, if your output method doesn't support scaling this can slow things down! +# scaler: Scaler used to enlarge/enhance low resolution modes. If 'forced' is appended, +# then the scaler will be used even if the result might not be desired. +# To fit a scaler in the resolution used at full screen may require a border or side bars, +# to fill the screen entirely, depending on your hardware, a different scaler/fullresolution might work. +# Possible values: none, normal2x, normal3x, advmame2x, advmame3x, advinterp2x, advinterp3x, hq2x, hq3x, 2xsai, super2xsai, supereagle, tv2x, tv3x, rgb2x, rgb3x, scan2x, scan3x. + +frameskip=0 +aspect=true +scaler=none + +[cpu] +# core: CPU Core used in emulation. auto will switch to dynamic if available and +# appropriate. +# Possible values: auto, normal, simple. +# cputype: CPU Type used in emulation. auto is the fastest choice. +# Possible values: auto, 386, 386_slow, 486_slow, pentium_slow, 386_prefetch. +# cycles: Amount of instructions DOSBox tries to emulate each millisecond. +# Setting this value too high results in sound dropouts and lags. +# Cycles can be set in 3 ways: +# 'auto' tries to guess what a game needs. +# It usually works, but can fail for certain games. +# 'fixed #number' will set a fixed amount of cycles. This is what you usually +# need if 'auto' fails. (Example: fixed 4000). +# 'max' will allocate as much cycles as your computer is able to +# handle. +# Possible values: auto, fixed, max. +# cycleup: Amount of cycles to decrease/increase with keycombos.(CTRL-F11/CTRL-F12) +# cycledown: Setting it lower than 100 will be a percentage. + +core=auto +cputype=auto +cycles=auto +cycleup=10 +cycledown=20 + +[mixer] +# nosound: Enable silent mode, sound is still emulated though. +# rate: Mixer sample rate, setting any device's rate higher than this will probably lower their sound quality. +# Possible values: 44100, 48000, 32000, 22050, 16000, 11025, 8000, 49716. +# blocksize: Mixer block size, larger blocks might help sound stuttering but sound will also be more lagged. +# Possible values: 1024, 2048, 4096, 8192, 512, 256. +# prebuffer: How many milliseconds of data to keep on top of the blocksize. + +nosound=false +rate=44100 +blocksize=1024 +prebuffer=25 + +[midi] +# mpu401: Type of MPU-401 to emulate. +# Possible values: intelligent, uart, none. +# mididevice: Device that will receive the MIDI data from MPU-401. +# Possible values: default, win32, alsa, oss, coreaudio, coremidi, none. +# midiconfig: Special configuration options for the device driver. This is usually the id of the device you want to use +# (find the id with mixer/listmidi). +# Or in the case of coreaudio, you can specify a soundfont here. +# See the README/Manual for more details. + +mpu401=intelligent +mididevice=default +midiconfig= + +[sblaster] +# sbtype: Type of Soundblaster to emulate. gb is Gameblaster. +# Possible values: sb1, sb2, sbpro1, sbpro2, sb16, gb, none. +# sbbase: The IO address of the soundblaster. +# Possible values: 220, 240, 260, 280, 2a0, 2c0, 2e0, 300. +# irq: The IRQ number of the soundblaster. +# Possible values: 7, 5, 3, 9, 10, 11, 12. +# dma: The DMA number of the soundblaster. +# Possible values: 1, 5, 0, 3, 6, 7. +# hdma: The High DMA number of the soundblaster. +# Possible values: 1, 5, 0, 3, 6, 7. +# sbmixer: Allow the soundblaster mixer to modify the DOSBox mixer. +# oplmode: Type of OPL emulation. On 'auto' the mode is determined by sblaster type. All OPL modes are Adlib-compatible, except for 'cms'. +# Possible values: auto, cms, opl2, dualopl2, opl3, none. +# oplemu: Provider for the OPL emulation. compat might provide better quality (see oplrate as well). +# Possible values: default, compat, fast. +# oplrate: Sample rate of OPL music emulation. Use 49716 for highest quality (set the mixer rate accordingly). +# Possible values: 44100, 49716, 48000, 32000, 22050, 16000, 11025, 8000. + +sbtype=sb16 +sbbase=220 +irq=7 +dma=1 +hdma=5 +sbmixer=true +oplmode=auto +oplemu=default +oplrate=44100 + +[gus] +# gus: Enable the Gravis Ultrasound emulation. +# gusrate: Sample rate of Ultrasound emulation. +# Possible values: 44100, 48000, 32000, 22050, 16000, 11025, 8000, 49716. +# gusbase: The IO base address of the Gravis Ultrasound. +# Possible values: 240, 220, 260, 280, 2a0, 2c0, 2e0, 300. +# gusirq: The IRQ number of the Gravis Ultrasound. +# Possible values: 5, 3, 7, 9, 10, 11, 12. +# gusdma: The DMA channel of the Gravis Ultrasound. +# Possible values: 3, 0, 1, 5, 6, 7. +# ultradir: Path to Ultrasound directory. In this directory +# there should be a MIDI directory that contains +# the patch files for GUS playback. Patch sets used +# with Timidity should work fine. + +gus=false +gusrate=44100 +gusbase=240 +gusirq=5 +gusdma=3 +ultradir=C:\ULTRASND + +[speaker] +# pcspeaker: Enable PC-Speaker emulation. +# pcrate: Sample rate of the PC-Speaker sound generation. +# Possible values: 44100, 48000, 32000, 22050, 16000, 11025, 8000, 49716. +# tandy: Enable Tandy Sound System emulation. For 'auto', emulation is present only if machine is set to 'tandy'. +# Possible values: auto, on, off. +# tandyrate: Sample rate of the Tandy 3-Voice generation. +# Possible values: 44100, 48000, 32000, 22050, 16000, 11025, 8000, 49716. +# disney: Enable Disney Sound Source emulation. (Covox Voice Master and Speech Thing compatible). + +pcspeaker=true +pcrate=44100 +tandy=auto +tandyrate=44100 +disney=true + +[joystick] +# joysticktype: Type of joystick to emulate: auto (default), none, +# 2axis (supports two joysticks), +# 4axis (supports one joystick, first joystick used), +# 4axis_2 (supports one joystick, second joystick used), +# fcs (Thrustmaster), ch (CH Flightstick). +# none disables joystick emulation. +# auto chooses emulation depending on real joystick(s). +# (Remember to reset dosbox's mapperfile if you saved it earlier) +# Possible values: auto, 2axis, 4axis, 4axis_2, fcs, ch, none. +# timed: enable timed intervals for axis. Experiment with this option, if your joystick drifts (away). +# autofire: continuously fires as long as you keep the button pressed. +# swap34: swap the 3rd and the 4th axis. Can be useful for certain joysticks. +# buttonwrap: enable button wrapping at the number of emulated buttons. + +joysticktype=auto +timed=true +autofire=false +swap34=false +buttonwrap=false + +[serial] +# serial1: set type of device connected to com port. +# Can be disabled, dummy, modem, nullmodem, directserial. +# Additional parameters must be in the same line in the form of +# parameter:value. Parameter for all types is irq (optional). +# for directserial: realport (required), rxdelay (optional). +# (realport:COM1 realport:ttyS0). +# for modem: listenport (optional). +# for nullmodem: server, rxdelay, txdelay, telnet, usedtr, +# transparent, port, inhsocket (all optional). +# Example: serial1=modem listenport:5000 +# Possible values: dummy, disabled, modem, nullmodem, directserial. +# serial2: see serial1 +# Possible values: dummy, disabled, modem, nullmodem, directserial. +# serial3: see serial1 +# Possible values: dummy, disabled, modem, nullmodem, directserial. +# serial4: see serial1 +# Possible values: dummy, disabled, modem, nullmodem, directserial. + +serial1=dummy +serial2=dummy +serial3=disabled +serial4=disabled + +[dos] +# xms: Enable XMS support. +# ems: Enable EMS support. +# umb: Enable UMB support. +# keyboardlayout: Language code of the keyboard layout (or none). + +xms=true +ems=true +umb=true +keyboardlayout=auto + +[ipx] +# ipx: Enable ipx over UDP/IP emulation. + +ipx=false + +[autoexec] +# Lines in this section will be run at startup. +# You can put your MOUNT lines here. + + diff --git a/pacMan/launchDosbox.bash b/pacMan/launchDosbox.bash new file mode 100755 index 0000000..4ce07bd --- /dev/null +++ b/pacMan/launchDosbox.bash @@ -0,0 +1,7 @@ +ROOT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +BIN_DIR="$ROOT_DIR/bin" +DOSBOX_BIN="/opt/homebrew/Cellar/dosbox/0.74-3_1/bin/dosbox" # Replace with the actual path to DOSBox +CONFIG_LOC="$ROOT_DIR" + + +"$DOSBOX_BIN" -c "MOUNT c $BIN_DIR" -c "C:" -c "keyb fr120" \ No newline at end of file diff --git a/pacMan/pacman.asm b/pacMan/pacman.asm new file mode 100644 index 0000000..d619b19 --- /dev/null +++ b/pacMan/pacman.asm @@ -0,0 +1,855 @@ +org 100h + +%include "sprite.asm" + +section .data + cPos db 0 + + position dw 43751 + + blinkyPos dw 20711 + + inkyPos dw 26780 + + pinkyPos dw 26791 + + clydePos dw 26802 + + nbtestcoll db 4 + postestcoll dw 0 + + frame db 1 + ; maze array + maze db 26,22,22,22,22,22,22,22,22,22,22,22,22,30,31,22,22,22,22,22,22,22,22,22,22,22,22,27 + db 25, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,13,12, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,24 + db 25, 2,14,10,10,15, 2,14,10,10,10,15, 2,13,12, 2,14,10,10,10,15, 2,14,10,10,15, 2,24 + db 25, 3,13, 0, 0,12, 2,13, 0, 0, 0,12, 2,13,12, 2,13, 0, 0, 0,12, 2,13, 0, 0,12, 3,24 + db 25, 2,17,11,11,16, 2,17,11,11,11,16, 2,17,16, 2,17,11,11,11,16, 2,17,11,11,16, 2,24 + db 25, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,24 + db 25, 2,14,10,10,15, 2,14,15, 2,14,10,10,10,10,10,10,15, 2,14,15, 2,14,10,10,15, 2,24 + db 25, 2,17,11,11,16, 2,13,12, 2,17,11,11,19,18,11,11,16, 2,13,12, 2,17,11,11,16, 2,24 + db 25, 2, 2, 2, 2, 2, 2,13,12, 2, 2, 2, 2,13,12, 2, 2, 2, 2,13,12, 2, 2, 2, 2, 2, 2,24 + db 29,23,23,23,23,15, 2,13,21,10,10,15, 2,13,12, 2,14,10,10,20,12, 2,14,23,23,23,23,28 + db 0, 0, 0, 0, 0,25, 2,13,18,11,11,16, 0,17,16, 0,17,11,11,19,12, 2,24, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0,25, 2,13,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,13,12, 2,24, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0,25, 2,13,12, 0,38,23,36, 1, 1,37,23,39, 0,13,12, 2,24, 0, 0, 0, 0, 0 + db 22,22,22,22,22,16, 2,17,16, 0,24, 0, 0, 0, 0, 0, 0,25, 0,17,16, 2,17,22,22,22,22,22 + db 0, 0, 0, 0, 0, 0, 2, 0, 0, 0,24, 0, 0, 0, 0, 0, 0,25, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0 + db 23,23,23,23,23,15, 2,14,15, 0,24, 0, 0, 0, 0, 0, 0,25, 0,14,15, 2,14,23,23,23,23,23 + db 0, 0, 0, 0, 0,25, 2,13,12, 0,41,22,22,22,22,22,22,40, 0,13,12, 2,24, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0,25, 2,13,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,13,12, 2,24, 0, 0, 0, 0, 0 + db 0, 0, 0, 0, 0,25, 2,13,12, 0,14,10,10,10,10,10,10,15, 0,13,12, 2,24, 0, 0, 0, 0, 0 + db 26,22,22,22,22,16, 2,17,16, 0,17,11,11,19,18,11,11,16, 0,17,16, 2,17,22,22,22,22,27 + db 25, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,13,12, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,24 + db 25, 2,14,10,10,15, 2,14,10,10,10,15, 2,13,12, 2,14,10,10,10,15, 2,14,10,10,15, 2,24 + db 25, 2,17,11,19,12, 2,17,11,11,11,16, 2,17,16, 2,17,11,11,11,16, 2,13,18,11,16, 2,24 + db 25, 3, 2, 2,13,12, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,13,12, 2, 2, 3,24 + db 33,10,15, 2,13,12, 2,14,15, 2,14,10,10,10,10,10,10,15, 2,14,15, 2,13,12, 2,14,10,34 + db 32,11,16, 2,17,16, 2,13,12, 2,17,11,11,19,18,11,11,16, 2,13,12, 2,17,16, 2,17,11,35 + db 25, 2, 2, 2, 2, 2, 2,13,12, 2, 2, 2, 2,13,12, 2, 2, 2, 2,13,12, 2, 2, 2, 2, 2, 2,24 + db 25, 2,14,10,10,10,10,20,21,10,10,15, 2,13,12, 2,14,10,10,20,21,10,10,10,10,15, 2,24 + db 25, 2,17,11,11,11,11,11,11,11,11,16, 2,17,16, 2,17,11,11,11,11,11,11,11,11,16, 2,24 + db 25, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,24 + db 29,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,28 + ; --------------------------------------------------------------------- + Column dw 28 ; number of columns + Row dw 31 ; number of rows + nbpixel dw 2072 ; number of pixels in a row of tile + +section .text + mov ah, 00h ;-------------------------------- + mov al, 13h ; set screen 320x200 256colours + int 10h ;-------------------------------- + + call clearScreen ; clear the screen before everything + + call Maze ; display the maze + call initPac + call initBlinky + call initInky + call initPinky + call initClyde + call moveLeft + + gameLoop: + mov ah, 01h + int 16h + jz return ; If no key was pressed, jump back to the top of the loop + + mov ah, 00h + int 16h ; Read the key + cmp ah, 48h ; Up arrow key + je moveUp + cmp ah, 4Bh ; Left arrow key + je moveLeft + cmp ah, 4Dh ; Right arrow key + je moveRight + cmp ah, 50h ; Down arrow key + je moveDown + + return: + ret + +; MAZE ------------------------------------------------------------------- + ; DRAW WALL --------------------------- + drawWalls: + ; draw 1 tile + mov dx, 6 ; number of row of a sprite + .eachLine: + mov cx, 6 ; number of column of a sprite + rep movsb ; draw the sprite + add di, 320-6 ; go to the next row + dec dx ; count the number of rows drawn + jnz .eachLine ; if the number of rows drawn is not zero, go to draw the next line + call nextColumn ; call the function to go to the next tile + inc bx ; setup for the next sprite to choose + ret + + nextColumn: + mov ax, [Column] ;------------------------------------------------------ + dec ax ; decrement Column to count the number of drawn column + mov [Column], ax ;------------------------------------------------------ + cmp ax, 0 ; look if he has finished the row + je nextRow ; if yes, call the function for the next row of tiles + sub di, 1914 ; go the the next column + ret + + nextRow: + mov ax, [Row] ;------------------------------------------------ + dec ax ; decrement Row to count the number of drawn row + mov [Row], ax ;------------------------------------------------ + cmp ax, 0 ; look if he has finished the every rows + je gameLoop ; if yes, finish + mov ax, 28 ; + mov [Column], ax ; setup the number of columns for the next row + mov ax, [nbpixel] + mov di, ax ; go to the next row of tile + add ax, 1920 ; save the number of pixel to go to the next line + mov [nbpixel], ax ; + ret + ; END DRAW WALL ---------------------- + + ; WALL CHOICE ------------------------ + Maze: + mov di, 152 ; set the position + mov bx, maze ; put the maze array to a register to follow the maze pattern + wallchoice: + mov al, [bx] ; look wich sprite he has to put in a tile + cmp al, 0 ; then he call a function to draw the correct sprite + je DrawEmpty ; + cmp al, 1 + je DrawDoor + cmp al, 2 + je DrawGum + cmp al, 3 + je DrawSuperGum + cmp al, 10 + je DrawSmplwall1 + cmp al, 11 + je DrawSmplwall2 + cmp al, 12 + je DrawSmplwall3 + cmp al, 13 + je DrawSmplwall4 + cmp al, 14 + je DrawSmplangle11 + cmp al, 15 + je DrawSmplangle12 + cmp al, 16 + je DrawSmplangle13 + cmp al, 17 + je DrawSmplangle14 + cmp al, 18 + je DrawSmplangle21 + cmp al, 19 + je DrawSmplangle22 + cmp al, 20 + je DrawSmplangle23 + cmp al, 21 + je DrawSmplangle24 + cmp al, 22 + je DrawDblwall1 + cmp al, 23 + je DrawDblwall2 + cmp al, 24 + je DrawDblwall3 + cmp al, 25 + je DrawDblwall4 + cmp al, 26 + je DrawDblangle1 + cmp al, 27 + je DrawDblangle2 + cmp al, 28 + je DrawDblangle3 + cmp al, 29 + je DrawDblangle4 + cmp al, 30 + je DrawDblwallangle1 + cmp al, 31 + je DrawDblwallangle2 + cmp al, 32 + je DrawDblwallangle3 + cmp al, 33 + je DrawDblwallangle4 + cmp al, 34 + je DrawDblwallangle5 + cmp al, 35 + je DrawDblwallangle6 + cmp al, 36 + je DrawDblstrgwall1 + cmp al, 37 + je DrawDblstrgwall2 + cmp al, 38 + je DrawDblstrgangle1 + cmp al, 39 + je DrawDblstrgangle2 + cmp al, 40 + je DrawDblstrgangle3 + cmp al, 41 + je DrawDblstrgangle4 + ret + ; END WALL CHOICE ----------------- + + ; SET WALL ------------------------ + DrawGum: + mov si, gum + call drawWalls + jmp wallchoice + + DrawSuperGum: + mov si, superGum + call drawWalls + jmp wallchoice + + DrawEmpty: ; tell which sprite he want to draw + mov si, empty ; call the function to draw the tile + call drawWalls ; return to the function where he will look which sprite to use + jmp wallchoice ; does the same in the following functions for each sprite\ + + DrawDoor: + mov si, door + call drawWalls + jmp wallchoice + + DrawSmplwall1: + mov si, smplwall1 + call drawWalls + jmp wallchoice + + DrawSmplwall2: + mov si, smplwall2 + call drawWalls + jmp wallchoice + + DrawSmplwall3: + mov si, smplwall3 + call drawWalls + jmp wallchoice + + DrawSmplwall4: + mov si, smplwall4 + call drawWalls + jmp wallchoice + + DrawSmplangle11: + mov si, smplangle11 + call drawWalls + jmp wallchoice + + DrawSmplangle12: + mov si, smplangle12 + call drawWalls + jmp wallchoice + + DrawSmplangle13: + mov si, smplangle13 + call drawWalls + jmp wallchoice + + DrawSmplangle14: + mov si, smplangle14 + call drawWalls + jmp wallchoice + + DrawSmplangle21: + mov si, smplangle21 + call drawWalls + jmp wallchoice + + DrawSmplangle22: + mov si, smplangle22 + call drawWalls + jmp wallchoice + + DrawSmplangle23: + mov si, smplangle23 + call drawWalls + jmp wallchoice + + DrawSmplangle24: + mov si, smplangle24 + call drawWalls + jmp wallchoice + + DrawDblwall1: + mov si, dblwall1 + call drawWalls + jmp wallchoice + + DrawDblwall2: + mov si, dblwall2 + call drawWalls + jmp wallchoice + + DrawDblwall3: + mov si, dblwall3 + call drawWalls + jmp wallchoice + + DrawDblwall4: + mov si, dblwall4 + call drawWalls + jmp wallchoice + + DrawDblangle1: + mov si, dblangle1 + call drawWalls + jmp wallchoice + + DrawDblangle2: + mov si, dblangle2 + call drawWalls + jmp wallchoice + + DrawDblangle3: + mov si, dblangle3 + call drawWalls + jmp wallchoice + + DrawDblangle4: + mov si, dblangle4 + call drawWalls + jmp wallchoice + + DrawDblwallangle1: + mov si, dblwallangle1 + call drawWalls + jmp wallchoice + + DrawDblwallangle2: + mov si, dblwallangle2 + call drawWalls + jmp wallchoice + + DrawDblwallangle3: + mov si, dblwallangle3 + call drawWalls + jmp wallchoice + + DrawDblwallangle4: + mov si, dblwallangle4 + call drawWalls + jmp wallchoice + + DrawDblwallangle5: + mov si, dblwallangle5 + call drawWalls + jmp wallchoice + + DrawDblwallangle6: + mov si, dblwallangle6 + call drawWalls + jmp wallchoice + + DrawDblstrgwall1: + mov si, dblstrgwall1 + call drawWalls + jmp wallchoice + + DrawDblstrgwall2: + mov si, dblstrgwall2 + call drawWalls + jmp wallchoice + + DrawDblstrgangle1: + mov si, dblstrgangle1 + call drawWalls + jmp wallchoice + + DrawDblstrgangle2: + mov si, dblstrgangle2 + call drawWalls + jmp wallchoice + + DrawDblstrgangle3: + mov si, dblstrgangle3 + call drawWalls + jmp wallchoice + + DrawDblstrgangle4: + mov si, dblstrgangle4 + call drawWalls + jmp wallchoice + ; END SET WALL ------------------ +; END MAZE ------------------------------------------------------------ + +; CLEAR SCREEN --------------------------------------------------------- + clearScreen: + mov ax, 0xA000 + mov es, ax + mov di, 0 + mov cx, 320*200 + rep stosb + ret +; END CLEAR SCREEN ----------------------------------------------------- + +; INITIALISATION PACMAN ------------------------------------------------ + initPac: + mov si, pacManWaka1L + call drawPac + ret + + initBlinky: + mov si, blinky1L + mov di, [blinkyPos] + mov dx, 10 + call drawBlinky + ret + + initInky: + mov si, inky1U + mov di, [inkyPos] + mov dx, 10 + call drawInky + + ret + + initPinky: + mov si, pinky1D + mov di, [pinkyPos] + mov dx, 10 + call drawPinky + + ret + + initClyde: + mov si, clyde1U + mov di, [clydePos] + mov dx, 10 + call drawClyde + + drawPac: + mov di, [position] + mov dx, 10 + eachline: + mov cx, 10 + rep movsb + add di, 320-10 ; Move to the next line + dec dx + jnz eachline + ret + + +drawBlinky: + mov di, [blinkyPos] + mov dx, 10 + call eachline + ret + +drawInky: + mov di, [inkyPos] + mov dx, 10 + call eachline + ret + +drawPinky: + mov di, [pinkyPos] + mov dx, 10 + call eachline + ret + +drawClyde: + mov di, [clydePos] + mov dx, 10 + call eachline + ret + + + +; END INITIALISATION PACMAN -------------------------------------------- + +; COLLISIONS ----------------------------------------------------------- + +; END COLLISIONS ------------------------------------------------------- + +; PACMAN MOVEMENTS ----------------------------------------------------- + FlopY: + mov bl, [frame] + cmp bl, 4 + jl setblinkyU + cmp bl, 8 + jl setAltU + mov bl, 0 + mov [frame], bl + jmp FlopY + FlopYret: + call drawPac + mov cx, 60000 + call waitLoop + jmp gameLoop + + noFlopY: + mov bl, [frame] + cmp bl, 4 + jl setblinkyD + cmp bl, 8 + jl setAltD + mov bl, 0 + mov [frame], bl + jmp noFlopY + noFlopYret: + call drawPac + mov cx, 60000 + call waitLoop + jmp gameLoop + + FlopX: + mov bl, [frame] + cmp bl, 4 + jl setblinkyR + cmp bl, 8 + jl setAltR + mov bl, 0 + mov [frame], bl + jmp FlopX + FlopXret: + call drawPac + mov cx, 60000 + call waitLoop + jmp gameLoop + + noFlopX: + mov bl, [frame] + cmp bl, 4 + jl setblinkyL + cmp bl, 8 + jl setAltL + mov bl, 0 + mov [frame], bl + jmp noFlopX + noFlopXret: + call drawPac + mov cx, 60000 + call waitLoop + jmp gameLoop + + moveLeft: + wCollisionLeft: + mov ax, [position] ; get the position of the sprite + sub ax, 1 ; where the collision is tested + mov [postestcoll], ax + lineLeft: + mov dx, 1 + mov cx, 320 ; nb of pixels in a row + div cx ; division to calculate the x and y position of the pixel where we test the collision + mov bx, ax ; save the quotient + mov ah, 0Dh ; int to read the pixel color + mov cx, dx ; remainder goes to x position + mov dx, bx ; quotient goes to y position + int 10h + cmp al, 0x10 ; test if the color is the same as the maze + je stopPacLeft + + mov dx, 1 + mov ax, [postestcoll] + add ax, 2880 + mov [postestcoll], ax + mov cx, 320 ; nb of pixels in a row + div cx ; division to calculate the x and y position of the pixel where we test the collision + mov bx, ax ; save the quotient + mov ah, 0Dh ; int to read the pixel color + mov cx, dx ; remainder goes to x position + mov dx, bx ; quotient goes to y position + int 10h + cmp al, 0x10 ; test if the color is the same as the maze + je stopPacLeft + + mov dx, 1 + mov ax, [postestcoll] + sub ax, 960 + mov [postestcoll], ax + mov cx, 320 ; nb of pixels in a row + div cx ; division to calculate the x and y position of the pixel where we test the collision + mov bx, ax ; save the quotient + mov ah, 0Dh ; int to read the pixel color + mov cx, dx ; remainder goes to x position + mov dx, bx ; quotient goes to y position + int 10h + cmp al, 0x10 ; test if the color is the same as the maze + je stopPacLeft + ;mov ax, [postestcoll] + ;add ax, 960 + ;mov [postestcoll], ax + ;mov bx, [nbtestcoll] + ;dec bx + ;mov [nbtestcoll], bx + ;cmp bx, 0 + ;jg lineLeft + ;mov bx, 4 + ;mov [nbtestcoll], bx + call clearPac + sub word [position], 1 + call noFlopX + skipLeft: + call gameLoop + jmp moveLeft + + moveRight: + wCollisionRight: + mov ax, [position] + add ax, 10 + mov [postestcoll], ax + lineRight: + mov dx, 1 + mov cx, 320 ; nb of pixels in a row + div cx ; division to calculate the x and y position of the pixel where we test the collision + mov bx, ax ; save the quotient + mov ah, 0Dh ; int to read the pixel color + mov cx, dx ; remainder goes to x position + mov dx, bx ; quotient goes to y position + int 10h + cmp al, 0x10 ; test if the color is the same as the maze + je stopPacRight + + mov dx, 1 + mov ax, [postestcoll] + add ax, 2880 + mov [postestcoll], ax + mov cx, 320 ; nb of pixels in a row + div cx ; division to calculate the x and y position of the pixel where we test the collision + mov bx, ax ; save the quotient + mov ah, 0Dh ; int to read the pixel color + mov cx, dx ; remainder goes to x position + mov dx, bx ; quotient goes to y position + int 10h + cmp al, 0x10 ; test if the color is the same as the maze + je stopPacRight + + mov dx, 1 + mov ax, [postestcoll] + sub ax, 960 + mov [postestcoll], ax + mov cx, 320 ; nb of pixels in a row + div cx ; division to calculate the x and y position of the pixel where we test the collision + mov bx, ax ; save the quotient + mov ah, 0Dh ; int to read the pixel color + mov cx, dx ; remainder goes to x position + mov dx, bx ; quotient goes to y position + int 10h + cmp al, 0x10 ; test if the color is the same as the maze + je stopPacRight + call clearPac + add word [position], 1 + call FlopX + skipRight: + call gameLoop + jmp moveRight + + moveUp: + wCollisionUp: + mov ax, [position] + sub ax, 320 + mov [postestcoll], ax + lineUp: + mov dx, 1 + mov cx, 320 ; nb of pixels in a row + div cx ; division to calculate the x and y position of the pixel where we test the collision + mov bx, ax ; save the quotient + mov ah, 0Dh ; int to read the pixel color + mov cx, dx ; remainder goes to x position + mov dx, bx ; quotient goes to y position + int 10h + cmp al, 0x10 ; test if the color is the same as the maze + je stopPacUp + + mov dx, 1 + mov ax, [postestcoll] + add ax, 9 + mov [postestcoll], ax + mov cx, 320 ; nb of pixels in a row + div cx ; division to calculate the x and y position of the pixel where we test the collision + mov bx, ax ; save the quotient + mov ah, 0Dh ; int to read the pixel color + mov cx, dx ; remainder goes to x position + mov dx, bx ; quotient goes to y position + int 10h + cmp al, 0x10 ; test if the color is the same as the maze + je stopPacUp + + mov dx, 1 + mov ax, [postestcoll] + sub ax, 3 + mov [postestcoll], ax + mov cx, 320 ; nb of pixels in a row + div cx ; division to calculate the x and y position of the pixel where we test the collision + mov bx, ax ; save the quotient + mov ah, 0Dh ; int to read the pixel color + mov cx, dx ; remainder goes to x position + mov dx, bx ; quotient goes to y position + int 10h + cmp al, 0x10 ; test if the color is the same as the maze + je stopPacUp + call clearPac + sub word [position], 320 + call FlopY + skipUp: + call gameLoop + jmp moveUp + + moveDown: + wCollisionDown: + mov ax, [position] + add ax, 3200 + mov [postestcoll], ax + lineDown: + mov dx, 1 + mov cx, 320 ; nb of pixels in a row + div cx ; division to calculate the x and y position of the pixel where we test the collision + mov bx, ax ; save the quotient + mov ah, 0Dh ; int to read the pixel color + mov cx, dx ; remainder goes to x position + mov dx, bx ; quotient goes to y position + int 10h + cmp al, 0x10 ; test if the color is the same as the maze + je stopPacDown + + mov dx, 1 + mov ax, [postestcoll] + add ax, 9 + mov [postestcoll], ax + mov cx, 320 ; nb of pixels in a row + div cx ; division to calculate the x and y position of the pixel where we test the collision + mov bx, ax ; save the quotient + mov ah, 0Dh ; int to read the pixel color + mov cx, dx ; remainder goes to x position + mov dx, bx ; quotient goes to y position + int 10h + cmp al, 0x10 ; test if the color is the same as the maze + je stopPacDown + + mov dx, 1 + mov ax, [postestcoll] + sub ax, 3 + mov [postestcoll], ax + mov cx, 320 ; nb of pixels in a row + div cx ; division to calculate the x and y position of the pixel where we test the collision + mov bx, ax ; save the quotient + mov ah, 0Dh ; int to read the pixel color + mov cx, dx ; remainder goes to x position + mov dx, bx ; quotient goes to y position + int 10h + cmp al, 0x10 ; test if the color is the same as the maze + je stopPacDown + call clearPac + add word [position], 320 + call noFlopY + skipDown: + call gameLoop + jmp moveDown + + setAltR: + add bl, 1 + mov [frame], bl + mov si, pacManWaka1R + jmp FlopXret + + setAltL: + add bl, 1 + mov [frame], bl + mov si, pacManWaka1L + jmp noFlopXret + + setAltU: + add bl, 1 + mov [frame], bl + mov si, pacManWaka1U + jmp FlopYret + + setAltD: + add bl, 1 + mov [frame], bl + mov si, pacManWaka1D + jmp noFlopYret + + setblinkyR: + add bl, 1 + mov [frame], bl + mov si, pacManWaka2R + jmp FlopXret + + setblinkyL: + add bl, 1 + mov [frame], bl + mov si, pacManWaka2L + jmp noFlopXret + + setblinkyU: + add bl, 1 + mov [frame], bl + mov si, pacManWaka2U + jmp FlopYret + + setblinkyD: + add bl, 1 + mov [frame], bl + mov si, pacManWaka2D + jmp noFlopYret + + clearPac: + mov di, [position] + mov si, clear + call drawPac + ret + + stopPacLeft: + mov bx, 4 + mov [nbtestcoll], bx + mov si, pacManWaka1L + call drawPac + jmp skipLeft + + stopPacRight: + mov si, pacManWaka1R + call drawPac + jmp skipRight + + stopPacUp: + mov si, pacManWaka1U + call drawPac + jmp skipUp + + stopPacDown: + mov si, pacManWaka1D + call drawPac + jmp skipDown + + + waitLoop: + loop waitLoop + ret + + drawPixel: + mov bx, [postestcoll] + add bx, 1 + mov di, bx + mov si, pix + mov dx, 1 + mov cx, 1 + rep movsb + ret + + + end: + int 21h + + diff --git a/pacMan/sprite.asm b/pacMan/sprite.asm new file mode 100644 index 0000000..38f7b70 --- /dev/null +++ b/pacMan/sprite.asm @@ -0,0 +1,1396 @@ +org 100h + +section .data + pix db 0x2F +; ready sprites + ready db 0x00,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x00,0x00,0x00,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x00,0x00,0x00,0x2C,0x2C,0x2C,0x00,0x00,0x00,0x2C,0x2C,0x2C,0x2C,0x2C,0x00,0x00,0x00,0x00,0x2C,0x2C,0x00,0x00,0x2C,0x2C,0x00,0x00,0x00,0x00,0x2C,0x2C,0x2C,0x00 + db 0x00,0x2C,0x2C,0x00,0x00,0x00,0x2C,0x2C,0x00,0x00,0x2C,0x2C,0x00,0x00,0x00,0x00,0x00,0x00,0x2C,0x2C,0x00,0x2C,0x2C,0x00,0x00,0x2C,0x2C,0x00,0x00,0x2C,0x2C,0x00,0x00,0x00,0x2C,0x2C,0x00,0x00,0x2C,0x2C,0x00,0x00,0x00,0x00,0x2C,0x2C,0x2C,0x00 + db 0x00,0x2C,0x2C,0x00,0x00,0x00,0x2C,0x2C,0x00,0x00,0x2C,0x2C,0x00,0x00,0x00,0x00,0x00,0x2C,0x2C,0x00,0x00,0x00,0x2C,0x2C,0x00,0x2C,0x2C,0x00,0x00,0x00,0x2C,0x2C,0x00,0x00,0x2C,0x2C,0x00,0x00,0x2C,0x2C,0x00,0x00,0x00,0x2C,0x2C,0x2C,0x00,0x00 + db 0x00,0x2C,0x2C,0x00,0x00,0x2C,0x2C,0x2C,0x00,0x00,0x2C,0x2C,0x2C,0x2C,0x2C,0x00,0x00,0x2C,0x2C,0x00,0x00,0x00,0x2C,0x2C,0x00,0x2C,0x2C,0x00,0x00,0x00,0x2C,0x2C,0x00,0x00,0x00,0x2C,0x2C,0x2C,0x2C,0x00,0x00,0x00,0x00,0x2C,0x2C,0x00,0x00,0x00 + db 0x00,0x2C,0x2C,0x2C,0x2C,0x2C,0x00,0x00,0x00,0x00,0x2C,0x2C,0x00,0x00,0x00,0x00,0x00,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x00,0x2C,0x2C,0x00,0x00,0x00,0x2C,0x2C,0x00,0x00,0x00,0x00,0x2C,0x2C,0x00,0x00,0x00,0x00,0x00,0x2C,0x00,0x00,0x00,0x00 + db 0x00,0x2C,0x2C,0x00,0x2C,0x2C,0x2C,0x00,0x00,0x00,0x2C,0x2C,0x00,0x00,0x00,0x00,0x00,0x2C,0x2C,0x00,0x00,0x00,0x2C,0x2C,0x00,0x2C,0x2C,0x00,0x00,0x2C,0x2C,0x00,0x00,0x00,0x00,0x00,0x2C,0x2C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x2C,0x2C,0x00,0x00,0x2C,0x2C,0x2C,0x00,0x00,0x2C,0x2C,0x2C,0x2C,0x2C,0x2C,0x00,0x2C,0x2C,0x00,0x00,0x00,0x2C,0x2C,0x00,0x2C,0x2C,0x2C,0x2C,0x2C,0x00,0x00,0x00,0x00,0x00,0x00,0x2C,0x2C,0x00,0x00,0x00,0x00,0x2C,0x00,0x00,0x00,0x00,0x00 + + clearready db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 +; end ready sprites +; clear pacman/ghosts + clear db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 + +;PacMan's movement animations. + ;Starting pacman + pacManStart db 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x00 + db 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00 + db 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00 + db 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C + db 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C + db 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C + db 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C + db 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00 + db 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00 + db 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x00 + + ;Move Down + pacManWaka1D db 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x00 + db 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00 + db 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00 + db 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C + db 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C + db 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C + db 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C + db 0x00, 0x2C, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x00 + db 0x00, 0x2C, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + pacManWaka2D db 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x00 + db 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00 + db 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00 + db 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C + db 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C + db 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x2C + db 0x2C, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x2C + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + ;Move Up + pacManWaka1U db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x2C, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x00 + db 0x00, 0x2C, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x00 + db 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C + db 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C + db 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C + db 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C + db 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00 + db 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00 + db 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x00 + + pacManWaka2U db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x2C, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x2C + db 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x2C + db 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C + db 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C + db 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00 + db 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00 + db 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x00 + + ;Move Left + pacManWaka1L db 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x00 + db 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00 + db 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00 + db 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C + db 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C + db 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00 + db 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00 + db 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x00 + + pacManWaka2L db 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C + db 0x00, 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00 + db 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00 + db 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x00 + + ;Move Right + pacManWaka1R db 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x00 + db 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00 + db 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00 + db 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x00 + db 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x00 + db 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00 + db 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00 + db 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x00 + + + pacManWaka2R db 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x00 + db 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x00 + db 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x00, 0x00 + db 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x00 + +;PacMan's Death + death0 db 0x00, 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00 + db 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00 + db 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00 + db 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00 + db 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00 + db 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00 + db 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00 + db 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + death1 db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x2C, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x00 + db 0x00, 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x00 + db 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x00 + db 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00 + db 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00 + db 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + death2 db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x00 + db 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x2C + db 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C + db 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C + db 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00 + db 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + death3 db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x2C + db 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C + db 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C + db 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00 + db 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x00, 0x00, 0x2C, 0x2C, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + death4 db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x2C + db 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C + db 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C + db 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00 + db 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x00, 0x00, 0x2C, 0x2C, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + death5 db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00 + db 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C + db 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00 + db 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x00, 0x00, 0x2C, 0x2C, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + death6 db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x00 + db 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00 + db 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C + db 0x00, 0x00, 0x2C, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + death7 db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00 + db 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C + db 0x00, 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + death8 db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + death9 db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + death10 db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00 + +;Fruits + ;Cherry + cherry db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06 + db 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00 + db 0x00, 0x28, 0x06, 0x28, 0x00, 0x28, 0x06, 0x28, 0x00 + db 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28 + db 0x28, 0x0F, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28 + db 0x00, 0x28, 0x28, 0x00, 0x28, 0x0F, 0x0F, 0x28, 0x28 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x28, 0x28, 0x00 + + ;Strawberry + strawberry db 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x30, 0x30, 0x30, 0x0F, 0x30, 0x30, 0x30, 0x00 + db 0x28, 0x28, 0x0F, 0x30, 0x30, 0x30, 0x28, 0x28, 0x0F + db 0x0F, 0x28, 0x28, 0x28, 0x28, 0x0F, 0x28, 0x28, 0x28 + db 0x28, 0x28, 0x28, 0x0F, 0x28, 0x28, 0x28, 0x0F, 0x28 + db 0x00, 0x0F, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x00 + db 0x00, 0x28, 0x28, 0x0F, 0x28, 0x28, 0x0F, 0x28, 0x00 + db 0x00, 0x00, 0x28, 0x28, 0x28, 0x28, 0x28, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00 + + ;Orange + orange db 0x00, 0x00, 0x00, 0x00, 0x06, 0x30, 0x30, 0x00, 0x00 + db 0x00, 0x00, 0x42, 0x06, 0x06, 0x06, 0x30, 0x30, 0x00 + db 0x00, 0x42, 0x42, 0x42, 0x06, 0x42, 0x42, 0x42, 0x00 + db 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42 + db 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42 + db 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42 + db 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42 + db 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x00 + db 0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x00, 0x00 + + ;Apple + apple db 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00 + db 0x00, 0x28, 0x28, 0x00, 0x06, 0x00, 0x28, 0x28, 0x00 + db 0x28, 0x28, 0x28, 0x28, 0x06, 0x28, 0x28, 0x28, 0x28 + db 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28 + db 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x0F, 0x28, 0x28 + db 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x0F, 0x28, 0x28 + db 0x00, 0x28, 0x28, 0x28, 0x28, 0x0F, 0x28, 0x28, 0x00 + db 0x00, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x00 + db 0x00, 0x00, 0x28, 0x28, 0x28, 0x28, 0x28, 0x00, 0x00 + + ;Melon + melon db 0x00, 0x00, 0x00, 0x33, 0x33, 0x33, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x30, 0x30, 0x33, 0x30, 0x30, 0x00, 0x00 + db 0x00, 0x33, 0x30, 0x0F, 0x30, 0x30, 0x33, 0x0F, 0x00 + db 0x30, 0x30, 0x33, 0x30, 0x30, 0x33, 0x30, 0x30, 0x30 + db 0x0F, 0x30, 0x30, 0x33, 0x30, 0x30, 0x33, 0x0F, 0x30 + db 0x30, 0x30, 0x33, 0x30, 0x30, 0x0F, 0x30, 0x33, 0x30 + db 0x30, 0x33, 0x30, 0x30, 0x0F, 0x30, 0x33, 0x30, 0x33 + db 0x00, 0x30, 0x0F, 0x30, 0x30, 0x33, 0x30, 0x30, 0x00 + db 0x00, 0x00, 0x30, 0x30, 0x33, 0x30, 0x0F, 0x00, 0x00 + + ;Galaxian + galaxian db 0x20, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x20 + db 0x20, 0x00, 0x00, 0x28, 0x28, 0x28, 0x00, 0x00, 0x20 + db 0x20, 0x2C, 0x28, 0x28, 0x28, 0x28, 0x28, 0x2C, 0x20 + db 0x20, 0x2C, 0x2C, 0x2C, 0x28, 0x2C, 0x2C, 0x2C, 0x20 + db 0x20, 0x20, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x20, 0x20 + db 0x00, 0x20, 0x20, 0x2C, 0x2C, 0x2C, 0x20, 0x20, 0x00 + db 0x00, 0x00, 0x20, 0x00, 0x2C, 0x00, 0x20, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x00 + + ;Bell + bell db 0x00, 0x00, 0x00, 0x2C, 0x2C, 0x2C, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x2C, 0x2C, 0x00, 0x2C, 0x2C, 0x00, 0x00 + db 0x00, 0x00, 0x2C, 0x00, 0x2C, 0x2C, 0x2C, 0x00, 0x00 + db 0x00, 0x2C, 0x2C, 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x00 + db 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x00 + db 0x2C, 0x2C, 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C + db 0x2C, 0x2C, 0x00, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C + db 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C + db 0x00, 0x4E, 0x4E, 0x4E, 0x4E, 0x0F, 0x4E, 0x4E, 0x00 + + ;Key + key db 0x00, 0x00, 0x00, 0x4E, 0x4E, 0x4E, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x4E, 0x4E, 0x00, 0x4E, 0x4E, 0x00, 0x00 + db 0x00, 0x00, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x1B, 0x00, 0x1B, 0x1B, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x1B, 0x00, 0x1B, 0x1B, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x00 + + +; Gums sprites + ;superGum + superGum db 0x00, 0x57, 0x57, 0x57, 0x57, 0x00 + db 0x57, 0x57, 0x57, 0x57, 0x57, 0x57 + db 0x57, 0x57, 0x57, 0x57, 0x57, 0x57 + db 0x57, 0x57, 0x57, 0x57, 0x57, 0x57 + db 0x57, 0x57, 0x57, 0x57, 0x57, 0x57 + db 0x00, 0x57, 0x57, 0x57, 0x57, 0x00 + + ;gum + gum db 0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x57,0x57,0x00,0x00 + db 0x00,0x00,0x57,0x57,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00 + + + ; maze patterns sprite ------------------------------------------------ + ; simple wall + smplwall1 db 0x00,0x00,0x00,0x00,0x00,0x00 ; 10 + db 0x00,0x00,0x00,0x00,0x00,0x00 + db 0x10,0x10,0x10,0x10,0x10,0x10 + db 0x20,0x20,0x20,0x20,0x20,0x20 + db 0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00 + + smplwall2 db 0x00,0x00,0x00,0x00,0x00,0x00 ; 11 + db 0x00,0x00,0x00,0x00,0x00,0x00 + db 0x20,0x20,0x20,0x20,0x20,0x20 + db 0x10,0x10,0x10,0x10,0x10,0x10 + db 0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00 + + smplwall3 db 0x00,0x00,0x20,0x10,0x00,0x00 ; 12 + db 0x00,0x00,0x20,0x10,0x00,0x00 + db 0x00,0x00,0x20,0x10,0x00,0x00 + db 0x00,0x00,0x20,0x10,0x00,0x00 + db 0x00,0x00,0x20,0x10,0x00,0x00 + db 0x00,0x00,0x20,0x10,0x00,0x00 + + smplwall4 db 0x00,0x00,0x10,0x20,0x00,0x00 ; 13 + db 0x00,0x00,0x10,0x20,0x00,0x00 + db 0x00,0x00,0x10,0x20,0x00,0x00 + db 0x00,0x00,0x10,0x20,0x00,0x00 + db 0x00,0x00,0x10,0x20,0x00,0x00 + db 0x00,0x00,0x10,0x20,0x00,0x00 + + ; simple angle backward + smplangle11 db 0x00,0x00,0x00,0x00,0x00,0x00 ; 14 + db 0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x10,0x10,0x10,0x10 + db 0x00,0x00,0x10,0x00,0x00,0x20 + db 0x00,0x00,0x10,0x00,0x20,0x00 + db 0x00,0x00,0x10,0x20,0x00,0x00 + + smplangle12 db 0x00,0x00,0x00,0x00,0x00,0x00 ; 15 + db 0x00,0x00,0x00,0x00,0x00,0x00 + db 0x10,0x10,0x10,0x10,0x00,0x00 + db 0x20,0x00,0x00,0x10,0x00,0x00 + db 0x00,0x20,0x00,0x10,0x00,0x00 + db 0x00,0x00,0x20,0x10,0x00,0x00 + + smplangle13 db 0x00,0x00,0x20,0x10,0x00,0x00 ; 16 + db 0x00,0x20,0x00,0x10,0x00,0x00 + db 0x20,0x00,0x00,0x10,0x00,0x00 + db 0x10,0x10,0x10,0x10,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00 + + smplangle14 db 0x00,0x00,0x10,0x20,0x00,0x00; 17 + db 0x00,0x00,0x10,0x00,0x20,0x00 + db 0x00,0x00,0x10,0x00,0x00,0x20 + db 0x00,0x00,0x10,0x10,0x10,0x10 + db 0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00 + + ; simple angle forward + smplangle21 db 0x00,0x00,0x00,0x00,0x00,0x00; 18 + db 0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x20,0x20 + db 0x00,0x00,0x00,0x20,0x10,0x10 + db 0x00,0x00,0x20,0x10,0x00,0x00 + db 0x00,0x00,0x20,0x10,0x00,0x00 + + smplangle22 db 0x00,0x00,0x00,0x00,0x00,0x00; 19 + db 0x00,0x00,0x00,0x00,0x00,0x00 + db 0x20,0x20,0x00,0x00,0x00,0x00 + db 0x10,0x10,0x20,0x00,0x00,0x00 + db 0x00,0x00,0x10,0x20,0x00,0x00 + db 0x00,0x00,0x10,0x20,0x00,0x00 + + smplangle23 db 0x00,0x00,0x10,0x20,0x00,0x00 ; 20 + db 0x00,0x00,0x10,0x20,0x00,0x00 + db 0x10,0x10,0x20,0x00,0x00,0x00 + db 0x20,0x20,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00 + + smplangle24 db 0x00,0x00,0x20,0x10,0x00,0x00; 21 + db 0x00,0x00,0x20,0x10,0x00,0x00 + db 0x00,0x00,0x00,0x20,0x10,0x10 + db 0x00,0x00,0x00,0x00,0x20,0x20 + db 0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00 + + ; double wall + dblwall1 db 0x20,0x20,0x20,0x20,0x20,0x20 ; 22 + db 0x00,0x00,0x00,0x00,0x00,0x00 + db 0x20,0x20,0x20,0x20,0x20,0x20 + db 0x10,0x10,0x10,0x10,0x10,0x10 + db 0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00 + + dblwall2 db 0x00,0x00,0x00,0x00,0x00,0x00 ; 23 + db 0x00,0x00,0x00,0x00,0x00,0x00 + db 0x10,0x10,0x10,0x10,0x10,0x10 + db 0x20,0x20,0x20,0x20,0x20,0x20 + db 0x00,0x00,0x00,0x00,0x00,0x00 + db 0x20,0x20,0x20,0x20,0x20,0x20 + + dblwall3 db 0x00,0x00,0x10,0x20,0x00,0x20 ; 24 + db 0x00,0x00,0x10,0x20,0x00,0x20 + db 0x00,0x00,0x10,0x20,0x00,0x20 + db 0x00,0x00,0x10,0x20,0x00,0x20 + db 0x00,0x00,0x10,0x20,0x00,0x20 + db 0x00,0x00,0x10,0x20,0x00,0x20 + + dblwall4 db 0x20,0x00,0x20,0x10,0x00,0x00 ; 25 + db 0x20,0x00,0x20,0x10,0x00,0x00 + db 0x20,0x00,0x20,0x10,0x00,0x00 + db 0x20,0x00,0x20,0x10,0x00,0x00 + db 0x20,0x00,0x20,0x10,0x00,0x00 + db 0x20,0x00,0x20,0x10,0x00,0x00 + + ; double angle wall + dblangle1 db 0x00,0x00,0x00,0x20,0x20,0x20 ; 26 + db 0x00,0x00,0x20,0x00,0x00,0x00 + db 0x00,0x20,0x00,0x00,0x20,0x20 + db 0x20,0x00,0x00,0x20,0x10,0x10 + db 0x20,0x00,0x20,0x10,0x00,0x00 + db 0x20,0x00,0x20,0x10,0x00,0x00 + + dblangle2 db 0x20,0x20,0x20,0x00,0x00,0x00 ; 27 + db 0x00,0x00,0x00,0x20,0x00,0x00 + db 0x20,0x20,0x00,0x00,0x20,0x00 + db 0x10,0x10,0x20,0x00,0x00,0x20 + db 0x00,0x00,0x10,0x20,0x00,0x20 + db 0x00,0x00,0x10,0x20,0x00,0x20 + + dblangle3 db 0x00,0x00,0x10,0x20,0x00,0x20 ; 28 + db 0x00,0x00,0x10,0x20,0x00,0x20 + db 0x10,0x10,0x20,0x00,0x00,0x20 + db 0x20,0x20,0x00,0x00,0x20,0x00 + db 0x00,0x00,0x00,0x20,0x00,0x00 + db 0x20,0x20,0x20,0x00,0x00,0x00 + + dblangle4 db 0x20,0x00,0x20,0x10,0x00,0x00 ; 29 + db 0x20,0x00,0x20,0x10,0x00,0x00 + db 0x20,0x00,0x00,0x20,0x10,0x10 + db 0x00,0x20,0x00,0x00,0x20,0x20 + db 0x00,0x00,0x20,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x20,0x20,0x20 + + ; double wall with angle + dblwallangle1 db 0x20,0x20,0x20,0x20,0x20,0x20 ; 30 + db 0x00,0x00,0x00,0x00,0x00,0x00 + db 0x20,0x20,0x00,0x00,0x00,0x00 + db 0x10,0x10,0x20,0x00,0x00,0x00 + db 0x00,0x00,0x10,0x20,0x00,0x00 + db 0x00,0x00,0x10,0x20,0x00,0x00 + + dblwallangle2 db 0x20,0x20,0x20,0x20,0x20,0x20 ; 31 + db 0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x20,0x20 + db 0x00,0x00,0x00,0x20,0x10,0x10 + db 0x00,0x00,0x20,0x10,0x00,0x00 + db 0x00,0x00,0x20,0x10,0x00,0x00 + + dblwallangle3 db 0x20,0x00,0x00,0x00,0x00,0x00 ; 32 + db 0x20,0x00,0x00,0x00,0x00,0x00 + db 0x20,0x00,0x00,0x00,0x20,0x20 + db 0x20,0x00,0x00,0x20,0x10,0x10 + db 0x20,0x00,0x20,0x10,0x00,0x00 + db 0x20,0x00,0x20,0x10,0x00,0x00 + + dblwallangle4 db 0x20,0x00,0x20,0x10,0x00,0x00 ; 33 + db 0x20,0x00,0x20,0x10,0x00,0x00 + db 0x20,0x00,0x00,0x20,0x10,0x10 + db 0x20,0x00,0x00,0x00,0x20,0x20 + db 0x20,0x00,0x00,0x00,0x00,0x00 + db 0x20,0x00,0x00,0x00,0x00,0x00 + + dblwallangle5 db 0x00,0x00,0x10,0x20,0x00,0x20 ; 34 + db 0x00,0x00,0x10,0x20,0x00,0x20 + db 0x10,0x10,0x20,0x00,0x00,0x20 + db 0x20,0x20,0x00,0x00,0x00,0x20 + db 0x00,0x00,0x00,0x00,0x00,0x20 + db 0x00,0x00,0x00,0x00,0x00,0x20 + + dblwallangle6 db 0x00,0x00,0x00,0x00,0x00,0x20 ; 35 + db 0x00,0x00,0x00,0x00,0x00,0x20 + db 0x20,0x20,0x00,0x00,0x00,0x20 + db 0x10,0x10,0x20,0x00,0x00,0x20 + db 0x00,0x00,0x10,0x20,0x00,0x20 + db 0x00,0x00,0x10,0x20,0x00,0x20 + + ; double straight wall door + dblstrgwall1 db 0x00,0x00,0x00,0x00,0x00,0x00 ; 36 + db 0x00,0x00,0x00,0x00,0x00,0x00 + db 0x10,0x10,0x10,0x10,0x10,0x10 + db 0x20,0x20,0x20,0x20,0x20,0x20 + db 0x00,0x00,0x00,0x00,0x00,0x20 + db 0x20,0x20,0x20,0x20,0x20,0x20 + + dblstrgwall2 db 0x00,0x00,0x00,0x00,0x00,0x00 ; 37 + db 0x00,0x00,0x00,0x00,0x00,0x00 + db 0x10,0x10,0x10,0x10,0x10,0x10 + db 0x20,0x20,0x20,0x20,0x20,0x20 + db 0x20,0x00,0x00,0x00,0x00,0x00 + db 0x20,0x20,0x20,0x20,0x20,0x20 + + ; double straight angle + dblstrgangle1 db 0x00,0x00,0x00,0x00,0x00,0x00 ; 38 + db 0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x10,0x10,0x10,0x10 + db 0x00,0x00,0x10,0x20,0x20,0x20 + db 0x00,0x00,0x10,0x20,0x00,0x00 + db 0x00,0x00,0x10,0x20,0x00,0x20 + + dblstrgangle2 db 0x00,0x00,0x00,0x00,0x00,0x00 ; 39 + db 0x00,0x00,0x00,0x00,0x00,0x00 + db 0x10,0x10,0x10,0x10,0x00,0x00 + db 0x20,0x20,0x20,0x10,0x00,0x00 + db 0x00,0x00,0x20,0x10,0x00,0x00 + db 0x20,0x00,0x20,0x10,0x00,0x00 + + dblstrgangle3 db 0x20,0x00,0x20,0x10,0x00,0x00; 40 + db 0x00,0x00,0x20,0x10,0x00,0x00 + db 0x20,0x20,0x20,0x10,0x00,0x00 + db 0x10,0x10,0x10,0x10,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00 + + dblstrgangle4 db 0x00,0x00,0x10,0x20,0x00,0x20 ; 41 + db 0x00,0x00,0x10,0x20,0x00,0x00 + db 0x00,0x00,0x10,0x20,0x20,0x20 + db 0x00,0x00,0x10,0x10,0x10,0x10 + db 0x00,0x00,0x00,0x00,0x00,0x00 + db 0x00,0x00,0x00,0x00,0x00,0x00 + + ; door ghost room + door db 0x00,0x00,0x00,0x00,0x00,0x00 ; 1 + db 0x00,0x00,0x00,0x00,0x00,0x00 + db 0x10,0x10,0x10,0x10,0x10,0x10 + db 0x00,0x00,0x00,0x00,0x00,0x00 + db 0x54,0x54,0x54,0x54,0x54,0x54 + db 0x00,0x00,0x00,0x00,0x00,0x00 + + ;empty + empty db 0,0,0,0,0,0, ; 0 + db 0,0,0,0,0,0, + db 0,0,0,0,0,0, + db 0,0,0,0,0,0, + db 0,0,0,0,0,0, + db 0,0,0,0,0,0, + + + ; Blinky Pose 1 Looking to the Right + blinky1R db 0x00, 0x00, 0x00, 0x28, 0x28, 0x28, 0x28, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x00, 0x00 + db 0x00, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x00 + db 0x28, 0x28, 0x0F, 0x0F, 0x28, 0x28, 0x0F, 0x0F, 0x28, 0x28 + db 0x28, 0x0F, 0x0F, 0x20, 0x20, 0x0F, 0x0F, 0x20, 0x20, 0x28 + db 0x28, 0x0F, 0x0F, 0x20, 0x20, 0x0F, 0x0F, 0x20, 0x20, 0x28 + db 0x28, 0x28, 0x0F, 0x0F, 0x28, 0x28, 0x0F, 0x0F, 0x28, 0x28 + db 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28 + db 0x28, 0x28, 0x00, 0x28, 0x28, 0x28, 0x28, 0x00, 0x28, 0x28 + db 0x28, 0x00, 0x00, 0x00, 0x28, 0x28, 0x00, 0x00, 0x00, 0x28 + + ; Blinky Pose 1 Looking to the Left + blinky1L db 0x00, 0x00, 0x00, 0x28, 0x28, 0x28, 0x28, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x00, 0x00 + db 0x00, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x00 + db 0x28, 0x28, 0x0F, 0x0F, 0x28, 0x28, 0x0F, 0x0F, 0x28, 0x28 + db 0x28, 0x20, 0x20, 0x0F, 0x0F, 0x20, 0x20, 0x0F, 0x0F, 0x28 + db 0x28, 0x20, 0x20, 0x0F, 0x0F, 0x20, 0x20, 0x0F, 0x0F, 0x28 + db 0x28, 0x28, 0x0F, 0x0F, 0x28, 0x28, 0x0F, 0x0F, 0x28, 0x28 + db 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28 + db 0x28, 0x28, 0x00, 0x28, 0x28, 0x28, 0x28, 0x00, 0x28, 0x28 + db 0x28, 0x00, 0x00, 0x00, 0x28, 0x28, 0x00, 0x00, 0x00, 0x28 + + ; Blinky Pose 1 Looking to the Up + blinky1U db 0x00, 0x00, 0x00, 0x28, 0x28, 0x28, 0x28, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x00, 0x00 + db 0x00, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x00 + db 0x28, 0x28, 0x20, 0x20, 0x28, 0x28, 0x20, 0x20, 0x28, 0x28 + db 0x28, 0x0F, 0x20, 0x20, 0x0F, 0x0F, 0x20, 0x20, 0x0F, 0x28 + db 0x28, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x28 + db 0x28, 0x28, 0x0F, 0x0F, 0x28, 0x28, 0x0F, 0x0F, 0x28, 0x28 + db 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28 + db 0x28, 0x28, 0x00, 0x28, 0x28, 0x28, 0x28, 0x00, 0x28, 0x28 + db 0x28, 0x00, 0x00, 0x00, 0x28, 0x28, 0x00, 0x00, 0x00, 0x28 + + ; Blinky Pose 1 Looking to the Down + blinky1D db 0x00, 0x00, 0x00, 0x28, 0x28, 0x28, 0x28, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x00, 0x00 + db 0x00, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x00 + db 0x28, 0x28, 0x0F, 0x0F, 0x28, 0x28, 0x0F, 0x0F, 0x28, 0x28 + db 0x28, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x28 + db 0x28, 0x0F, 0x20, 0x20, 0x0F, 0x0F, 0x20, 0x20, 0x0F, 0x28 + db 0x28, 0x28, 0x20, 0x20, 0x28, 0x28, 0x20, 0x20, 0x28, 0x28 + db 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28 + db 0x28, 0x28, 0x00, 0x28, 0x28, 0x28, 0x28, 0x00, 0x28, 0x28 + db 0x28, 0x00, 0x00, 0x00, 0x28, 0x28, 0x00, 0x00, 0x00, 0x28 + + ; Blinky Pose 2 Looking to the Right + blinky2R db 0x00, 0x00, 0x00, 0x28, 0x28, 0x28, 0x28, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x00, 0x00 + db 0x00, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x00 + db 0x28, 0x28, 0x0F, 0x0F, 0x28, 0x28, 0x0F, 0x0F, 0x28, 0x28 + db 0x28, 0x0F, 0x0F, 0x20, 0x20, 0x0F, 0x0F, 0x20, 0x20, 0x28 + db 0x28, 0x0F, 0x0F, 0x20, 0x20, 0x0F, 0x0F, 0x20, 0x20, 0x28 + db 0x28, 0x28, 0x0F, 0x0F, 0x28, 0x28, 0x0F, 0x0F, 0x28, 0x28 + db 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28 + db 0x28, 0x28, 0x28, 0x00, 0x28, 0x28, 0x00, 0x28, 0x28, 0x28 + db 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00 + + ; Blinky Pose 2 Looking to the Left + blinky2L db 0x00, 0x00, 0x00, 0x28, 0x28, 0x28, 0x28, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x00, 0x00 + db 0x00, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x00 + db 0x28, 0x28, 0x0F, 0x0F, 0x28, 0x28, 0x0F, 0x0F, 0x28, 0x28 + db 0x28, 0x20, 0x20, 0x0F, 0x0F, 0x20, 0x20, 0x0F, 0x0F, 0x28 + db 0x28, 0x20, 0x20, 0x0F, 0x0F, 0x20, 0x20, 0x0F, 0x0F, 0x28 + db 0x28, 0x28, 0x0F, 0x0F, 0x28, 0x28, 0x0F, 0x0F, 0x28, 0x28 + db 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28 + db 0x28, 0x28, 0x28, 0x00, 0x28, 0x28, 0x00, 0x28, 0x28, 0x28 + db 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00 + + ; Blinky Pose 2 Looking to the Up + blinky2U db 0x00, 0x00, 0x00, 0x28, 0x28, 0x28, 0x28, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x00, 0x00 + db 0x00, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x00 + db 0x28, 0x28, 0x20, 0x20, 0x28, 0x28, 0x20, 0x20, 0x28, 0x28 + db 0x28, 0x0F, 0x20, 0x20, 0x0F, 0x0F, 0x20, 0x20, 0x0F, 0x28 + db 0x28, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x28 + db 0x28, 0x28, 0x0F, 0x0F, 0x28, 0x28, 0x0F, 0x0F, 0x28, 0x28 + db 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28 + db 0x28, 0x28, 0x28, 0x00, 0x28, 0x28, 0x00, 0x28, 0x28, 0x28 + db 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00 + + ; Blinky Pose 2 Looking to the Down + blinky2D db 0x00, 0x00, 0x00, 0x28, 0x28, 0x28, 0x28, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x00, 0x00 + db 0x00, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x00 + db 0x28, 0x28, 0x0F, 0x0F, 0x28, 0x28, 0x0F, 0x0F, 0x28, 0x28 + db 0x28, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x28 + db 0x28, 0x0F, 0x20, 0x20, 0x0F, 0x0F, 0x20, 0x20, 0x0F, 0x28 + db 0x28, 0x28, 0x20, 0x20, 0x28, 0x28, 0x20, 0x20, 0x28, 0x28 + db 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28 + db 0x28, 0x28, 0x28, 0x00, 0x28, 0x28, 0x00, 0x28, 0x28, 0x28 + db 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00 + + + + ; Pinky Pose 1 Looking to the Right + pinky1R db 0x00, 0x00, 0x00, 0x3C, 0x3C, 0x3C, 0x3C, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x00, 0x00 + db 0x00, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x00 + db 0x3C, 0x3C, 0x0F, 0x0F, 0x3C, 0x3C, 0x0F, 0x0F, 0x3C, 0x3C + db 0x3C, 0x0F, 0x0F, 0x20, 0x20, 0x0F, 0x0F, 0x20, 0x20, 0x3C + db 0x3C, 0x0F, 0x0F, 0x20, 0x20, 0x0F, 0x0F, 0x20, 0x20, 0x3C + db 0x3C, 0x3C, 0x0F, 0x0F, 0x3C, 0x3C, 0x0F, 0x0F, 0x3C, 0x3C + db 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C + db 0x3C, 0x3C, 0x00, 0x3C, 0x3C, 0x3C, 0x3C, 0x00, 0x3C, 0x3C + db 0x3C, 0x00, 0x00, 0x00, 0x3C, 0x3C, 0x00, 0x00, 0x00, 0x3C + + ; Pinky Pose 1 Looking to the Left + pinky1L db 0x00, 0x00, 0x00, 0x3C, 0x3C, 0x3C, 0x3C, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x00, 0x00 + db 0x00, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x00 + db 0x3C, 0x3C, 0x0F, 0x0F, 0x3C, 0x3C, 0x0F, 0x0F, 0x3C, 0x3C + db 0x3C, 0x20, 0x20, 0x0F, 0x0F, 0x20, 0x20, 0x0F, 0x0F, 0x3C + db 0x3C, 0x20, 0x20, 0x0F, 0x0F, 0x20, 0x20, 0x0F, 0x0F, 0x3C + db 0x3C, 0x3C, 0x0F, 0x0F, 0x3C, 0x3C, 0x0F, 0x0F, 0x3C, 0x3C + db 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C + db 0x3C, 0x3C, 0x00, 0x3C, 0x3C, 0x3C, 0x3C, 0x00, 0x3C, 0x3C + db 0x3C, 0x00, 0x00, 0x00, 0x3C, 0x3C, 0x00, 0x00, 0x00, 0x3C + + ; Pinky Pose 1 Looking to the Up + pinky1U db 0x00, 0x00, 0x00, 0x3C, 0x3C, 0x3C, 0x3C, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x00, 0x00 + db 0x00, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x00 + db 0x3C, 0x3C, 0x20, 0x20, 0x3C, 0x3C, 0x20, 0x20, 0x3C, 0x3C + db 0x3C, 0x0F, 0x20, 0x20, 0x0F, 0x0F, 0x20, 0x20, 0x0F, 0x3C + db 0x3C, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x3C + db 0x3C, 0x3C, 0x0F, 0x0F, 0x3C, 0x3C, 0x0F, 0x0F, 0x3C, 0x3C + db 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C + db 0x3C, 0x3C, 0x00, 0x3C, 0x3C, 0x3C, 0x3C, 0x00, 0x3C, 0x3C + db 0x3C, 0x00, 0x00, 0x00, 0x3C, 0x3C, 0x00, 0x00, 0x00, 0x3C + + ; Pinky Pose 1 Looking to the Down + pinky1D db 0x00, 0x00, 0x00, 0x3C, 0x3C, 0x3C, 0x3C, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x00, 0x00 + db 0x00, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x00 + db 0x3C, 0x3C, 0x0F, 0x0F, 0x3C, 0x3C, 0x0F, 0x0F, 0x3C, 0x3C + db 0x3C, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x3C + db 0x3C, 0x0F, 0x20, 0x20, 0x0F, 0x0F, 0x20, 0x20, 0x0F, 0x3C + db 0x3C, 0x3C, 0x20, 0x20, 0x3C, 0x3C, 0x20, 0x20, 0x3C, 0x3C + db 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C + db 0x3C, 0x3C, 0x00, 0x3C, 0x3C, 0x3C, 0x3C, 0x00, 0x3C, 0x3C + db 0x3C, 0x00, 0x00, 0x00, 0x3C, 0x3C, 0x00, 0x00, 0x00, 0x3C + + ; Pinky Pose 2 Looking to the Right + pinky2R db 0x00, 0x00, 0x00, 0x3C, 0x3C, 0x3C, 0x3C, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x00, 0x00 + db 0x00, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x00 + db 0x3C, 0x3C, 0x0F, 0x0F, 0x3C, 0x3C, 0x0F, 0x0F, 0x3C, 0x3C + db 0x3C, 0x0F, 0x0F, 0x20, 0x20, 0x0F, 0x0F, 0x20, 0x20, 0x3C + db 0x3C, 0x0F, 0x0F, 0x20, 0x20, 0x0F, 0x0F, 0x20, 0x20, 0x3C + db 0x3C, 0x3C, 0x0F, 0x0F, 0x3C, 0x3C, 0x0F, 0x0F, 0x3C, 0x3C + db 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C + db 0x3C, 0x3C, 0x3C, 0x00, 0x3C, 0x3C, 0x00, 0x3C, 0x3C, 0x3C + db 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00 + + ; Pinky Pose 2 Looking to the Left + pinky2L db 0x00, 0x00, 0x00, 0x3C, 0x3C, 0x3C, 0x3C, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x00, 0x00 + db 0x00, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x00 + db 0x3C, 0x3C, 0x0F, 0x0F, 0x3C, 0x3C, 0x0F, 0x0F, 0x3C, 0x3C + db 0x3C, 0x20, 0x20, 0x0F, 0x0F, 0x20, 0x20, 0x0F, 0x0F, 0x3C + db 0x3C, 0x20, 0x20, 0x0F, 0x0F, 0x20, 0x20, 0x0F, 0x0F, 0x3C + db 0x3C, 0x3C, 0x0F, 0x0F, 0x3C, 0x3C, 0x0F, 0x0F, 0x3C, 0x3C + db 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C + db 0x3C, 0x3C, 0x3C, 0x00, 0x3C, 0x3C, 0x00, 0x3C, 0x3C, 0x3C + db 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00 + + ; Pinky Pose 2 Looking to the Up + pinky2U db 0x00, 0x00, 0x00, 0x3C, 0x3C, 0x3C, 0x3C, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x00, 0x00 + db 0x00, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x00 + db 0x3C, 0x3C, 0x20, 0x20, 0x3C, 0x3C, 0x20, 0x20, 0x3C, 0x3C + db 0x3C, 0x0F, 0x20, 0x20, 0x0F, 0x0F, 0x20, 0x20, 0x0F, 0x3C + db 0x3C, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x3C + db 0x3C, 0x3C, 0x0F, 0x0F, 0x3C, 0x3C, 0x0F, 0x0F, 0x3C, 0x3C + db 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C + db 0x3C, 0x3C, 0x3C, 0x00, 0x3C, 0x3C, 0x00, 0x3C, 0x3C, 0x3C + db 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00 + + ; Pinky Pose 2 Looking to the Down + pinky2D db 0x00, 0x00, 0x00, 0x3C, 0x3C, 0x3C, 0x3C, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x00, 0x00 + db 0x00, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x00 + db 0x3C, 0x3C, 0x0F, 0x0F, 0x3C, 0x3C, 0x0F, 0x0F, 0x3C, 0x3C + db 0x3C, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x3C + db 0x3C, 0x0F, 0x20, 0x20, 0x0F, 0x0F, 0x20, 0x20, 0x0F, 0x3C + db 0x3C, 0x3C, 0x20, 0x20, 0x3C, 0x3C, 0x20, 0x20, 0x3C, 0x3C + db 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C + db 0x3C, 0x3C, 0x3C, 0x00, 0x3C, 0x3C, 0x00, 0x3C, 0x3C, 0x3C + db 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00 + + + + ; Inky Pose 1 Looking to the Right + inky1R db 0x00, 0x00, 0x00, 0x34, 0x34, 0x34, 0x34, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x00, 0x00 + db 0x00, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x00 + db 0x34, 0x34, 0x0F, 0x0F, 0x34, 0x34, 0x0F, 0x0F, 0x34, 0x34 + db 0x34, 0x0F, 0x0F, 0x20, 0x20, 0x0F, 0x0F, 0x20, 0x20, 0x34 + db 0x34, 0x0F, 0x0F, 0x20, 0x20, 0x0F, 0x0F, 0x20, 0x20, 0x34 + db 0x34, 0x34, 0x0F, 0x0F, 0x34, 0x34, 0x0F, 0x0F, 0x34, 0x34 + db 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34 + db 0x34, 0x34, 0x00, 0x34, 0x34, 0x34, 0x34, 0x00, 0x34, 0x34 + db 0x34, 0x00, 0x00, 0x00, 0x34, 0x34, 0x00, 0x00, 0x00, 0x34 + + ; Inky Pose 1 Looking to the Left + inky1L db 0x00, 0x00, 0x00, 0x34, 0x34, 0x34, 0x34, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x00, 0x00 + db 0x00, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x00 + db 0x34, 0x34, 0x0F, 0x0F, 0x34, 0x34, 0x0F, 0x0F, 0x34, 0x34 + db 0x34, 0x20, 0x20, 0x0F, 0x0F, 0x20, 0x20, 0x0F, 0x0F, 0x34 + db 0x34, 0x20, 0x20, 0x0F, 0x0F, 0x20, 0x20, 0x0F, 0x0F, 0x34 + db 0x34, 0x34, 0x0F, 0x0F, 0x34, 0x34, 0x0F, 0x0F, 0x34, 0x34 + db 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34 + db 0x34, 0x34, 0x00, 0x34, 0x34, 0x34, 0x34, 0x00, 0x34, 0x34 + db 0x34, 0x00, 0x00, 0x00, 0x34, 0x34, 0x00, 0x00, 0x00, 0x34 + + ; Inky Pose 1 Looking to the Up + inky1U db 0x00, 0x00, 0x00, 0x34, 0x34, 0x34, 0x34, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x00, 0x00 + db 0x00, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x00 + db 0x34, 0x34, 0x20, 0x20, 0x34, 0x34, 0x20, 0x20, 0x34, 0x34 + db 0x34, 0x0F, 0x20, 0x20, 0x0F, 0x0F, 0x20, 0x20, 0x0F, 0x34 + db 0x34, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x34 + db 0x34, 0x34, 0x0F, 0x0F, 0x34, 0x34, 0x0F, 0x0F, 0x34, 0x34 + db 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34 + db 0x34, 0x34, 0x00, 0x34, 0x34, 0x34, 0x34, 0x00, 0x34, 0x34 + db 0x34, 0x00, 0x00, 0x00, 0x34, 0x34, 0x00, 0x00, 0x00, 0x34 + + ; Inky Pose 1 Looking to the Down + inky1D db 0x00, 0x00, 0x00, 0x34, 0x34, 0x34, 0x34, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x00, 0x00 + db 0x00, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x00 + db 0x34, 0x34, 0x0F, 0x0F, 0x34, 0x34, 0x0F, 0x0F, 0x34, 0x34 + db 0x34, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x34 + db 0x34, 0x0F, 0x20, 0x20, 0x0F, 0x0F, 0x20, 0x20, 0x0F, 0x34 + db 0x34, 0x34, 0x20, 0x20, 0x34, 0x34, 0x20, 0x20, 0x34, 0x34 + db 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34 + db 0x34, 0x34, 0x00, 0x34, 0x34, 0x34, 0x34, 0x00, 0x34, 0x34 + db 0x34, 0x00, 0x00, 0x00, 0x34, 0x34, 0x00, 0x00, 0x00, 0x34 + + ; Inky Pose 2 Looking to the Right + inky2R db 0x00, 0x00, 0x00, 0x34, 0x34, 0x34, 0x34, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x00, 0x00 + db 0x00, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x00 + db 0x34, 0x34, 0x0F, 0x0F, 0x34, 0x34, 0x0F, 0x0F, 0x34, 0x34 + db 0x34, 0x0F, 0x0F, 0x20, 0x20, 0x0F, 0x0F, 0x20, 0x20, 0x34 + db 0x34, 0x0F, 0x0F, 0x20, 0x20, 0x0F, 0x0F, 0x20, 0x20, 0x34 + db 0x34, 0x34, 0x0F, 0x0F, 0x34, 0x34, 0x0F, 0x0F, 0x34, 0x34 + db 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34 + db 0x34, 0x34, 0x34, 0x00, 0x34, 0x34, 0x00, 0x34, 0x34, 0x34 + db 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00 + + ; Inky Pose 2 Looking to the Left + inky2L db 0x00, 0x00, 0x00, 0x34, 0x34, 0x34, 0x34, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x00, 0x00 + db 0x00, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x00 + db 0x34, 0x34, 0x0F, 0x0F, 0x34, 0x34, 0x0F, 0x0F, 0x34, 0x34 + db 0x34, 0x20, 0x20, 0x0F, 0x0F, 0x20, 0x20, 0x0F, 0x0F, 0x34 + db 0x34, 0x20, 0x20, 0x0F, 0x0F, 0x20, 0x20, 0x0F, 0x0F, 0x34 + db 0x34, 0x34, 0x0F, 0x0F, 0x34, 0x34, 0x0F, 0x0F, 0x34, 0x34 + db 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34 + db 0x34, 0x34, 0x34, 0x00, 0x34, 0x34, 0x00, 0x34, 0x34, 0x34 + db 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00 + + ; Inky Pose 2 Looking to the Up + inky2U db 0x00, 0x00, 0x00, 0x34, 0x34, 0x34, 0x34, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x00, 0x00 + db 0x00, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x00 + db 0x34, 0x34, 0x20, 0x20, 0x34, 0x34, 0x20, 0x20, 0x34, 0x34 + db 0x34, 0x0F, 0x20, 0x20, 0x0F, 0x0F, 0x20, 0x20, 0x0F, 0x34 + db 0x34, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x34 + db 0x34, 0x34, 0x0F, 0x0F, 0x34, 0x34, 0x0F, 0x0F, 0x34, 0x34 + db 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34 + db 0x34, 0x34, 0x34, 0x00, 0x34, 0x34, 0x00, 0x34, 0x34, 0x34 + db 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00 + + ; Inky Pose 2 Looking to the Down + inky2D db 0x00, 0x00, 0x00, 0x34, 0x34, 0x34, 0x34, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x00, 0x00 + db 0x00, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x00 + db 0x34, 0x34, 0x0F, 0x0F, 0x34, 0x34, 0x0F, 0x0F, 0x34, 0x34 + db 0x34, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x34 + db 0x34, 0x0F, 0x20, 0x20, 0x0F, 0x0F, 0x20, 0x20, 0x0F, 0x34 + db 0x34, 0x34, 0x20, 0x20, 0x34, 0x34, 0x20, 0x20, 0x34, 0x34 + db 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34 + db 0x34, 0x34, 0x34, 0x00, 0x34, 0x34, 0x00, 0x34, 0x34, 0x34 + db 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00 + + + + ; Clyde Pose 1 Looking to the Right + clyde1R db 0x00, 0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x00, 0x00 + db 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x00 + db 0x42, 0x42, 0x0F, 0x0F, 0x42, 0x42, 0x0F, 0x0F, 0x42, 0x42 + db 0x42, 0x0F, 0x0F, 0x20, 0x20, 0x0F, 0x0F, 0x20, 0x20, 0x42 + db 0x42, 0x0F, 0x0F, 0x20, 0x20, 0x0F, 0x0F, 0x20, 0x20, 0x42 + db 0x42, 0x42, 0x0F, 0x0F, 0x42, 0x42, 0x0F, 0x0F, 0x42, 0x42 + db 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42 + db 0x42, 0x42, 0x00, 0x42, 0x42, 0x42, 0x42, 0x00, 0x42, 0x42 + db 0x42, 0x00, 0x00, 0x00, 0x42, 0x42, 0x00, 0x00, 0x00, 0x42 + + ; Clyde Pose 1 Looking to the Left + clyde1L db 0x00, 0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x00, 0x00 + db 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x00 + db 0x42, 0x42, 0x0F, 0x0F, 0x42, 0x42, 0x0F, 0x0F, 0x42, 0x42 + db 0x42, 0x20, 0x20, 0x0F, 0x0F, 0x20, 0x20, 0x0F, 0x0F, 0x42 + db 0x42, 0x20, 0x20, 0x0F, 0x0F, 0x20, 0x20, 0x0F, 0x0F, 0x42 + db 0x42, 0x42, 0x0F, 0x0F, 0x42, 0x42, 0x0F, 0x0F, 0x42, 0x42 + db 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42 + db 0x42, 0x42, 0x00, 0x42, 0x42, 0x42, 0x42, 0x00, 0x42, 0x42 + db 0x42, 0x00, 0x00, 0x00, 0x42, 0x42, 0x00, 0x00, 0x00, 0x42 + + ; Clyde Pose 1 Looking to the Up + clyde1U db 0x00, 0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x00, 0x00 + db 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x00 + db 0x42, 0x42, 0x20, 0x20, 0x42, 0x42, 0x20, 0x20, 0x42, 0x42 + db 0x42, 0x0F, 0x20, 0x20, 0x0F, 0x0F, 0x20, 0x20, 0x0F, 0x42 + db 0x42, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x42 + db 0x42, 0x42, 0x0F, 0x0F, 0x42, 0x42, 0x0F, 0x0F, 0x42, 0x42 + db 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42 + db 0x42, 0x42, 0x00, 0x42, 0x42, 0x42, 0x42, 0x00, 0x42, 0x42 + db 0x42, 0x00, 0x00, 0x00, 0x42, 0x42, 0x00, 0x00, 0x00, 0x42 + + ; Clyde Pose 1 Looking to the Down + clyde1D db 0x00, 0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x00, 0x00 + db 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x00 + db 0x42, 0x42, 0x0F, 0x0F, 0x42, 0x42, 0x0F, 0x0F, 0x42, 0x42 + db 0x42, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x42 + db 0x42, 0x0F, 0x20, 0x20, 0x0F, 0x0F, 0x20, 0x20, 0x0F, 0x42 + db 0x42, 0x42, 0x20, 0x20, 0x42, 0x42, 0x20, 0x20, 0x42, 0x42 + db 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42 + db 0x42, 0x42, 0x00, 0x42, 0x42, 0x42, 0x42, 0x00, 0x42, 0x42 + db 0x42, 0x00, 0x00, 0x00, 0x42, 0x42, 0x00, 0x00, 0x00, 0x42 + + ; Clyde Pose 2 Looking to the Right + clyde2R db 0x00, 0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x00, 0x00 + db 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x00 + db 0x42, 0x42, 0x0F, 0x0F, 0x42, 0x42, 0x0F, 0x0F, 0x42, 0x42 + db 0x42, 0x0F, 0x0F, 0x20, 0x20, 0x0F, 0x0F, 0x20, 0x20, 0x42 + db 0x42, 0x0F, 0x0F, 0x20, 0x20, 0x0F, 0x0F, 0x20, 0x20, 0x42 + db 0x42, 0x42, 0x0F, 0x0F, 0x42, 0x42, 0x0F, 0x0F, 0x42, 0x42 + db 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42 + db 0x42, 0x42, 0x42, 0x00, 0x42, 0x42, 0x00, 0x42, 0x42, 0x42 + db 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00 + + ; Clyde Pose 2 Looking to the Left + clyde2L db 0x00, 0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x00, 0x00 + db 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x00 + db 0x42, 0x42, 0x0F, 0x0F, 0x42, 0x42, 0x0F, 0x0F, 0x42, 0x42 + db 0x42, 0x20, 0x20, 0x0F, 0x0F, 0x20, 0x20, 0x0F, 0x0F, 0x42 + db 0x42, 0x20, 0x20, 0x0F, 0x0F, 0x20, 0x20, 0x0F, 0x0F, 0x42 + db 0x42, 0x42, 0x0F, 0x0F, 0x42, 0x42, 0x0F, 0x0F, 0x42, 0x42 + db 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42 + db 0x42, 0x42, 0x42, 0x00, 0x42, 0x42, 0x00, 0x42, 0x42, 0x42 + db 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00 + + ; Clyde Pose 2 Looking to the Up + clyde2U db 0x00, 0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x00, 0x00 + db 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x00 + db 0x42, 0x42, 0x20, 0x20, 0x42, 0x42, 0x20, 0x20, 0x42, 0x42 + db 0x42, 0x0F, 0x20, 0x20, 0x0F, 0x0F, 0x20, 0x20, 0x0F, 0x42 + db 0x42, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x42 + db 0x42, 0x42, 0x0F, 0x0F, 0x42, 0x42, 0x0F, 0x0F, 0x42, 0x42 + db 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42 + db 0x42, 0x42, 0x42, 0x00, 0x42, 0x42, 0x00, 0x42, 0x42, 0x42 + db 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00 + + ; Clyde Pose 2 Looking to the Down + clyde2D db 0x00, 0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x00, 0x00 + db 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x00 + db 0x42, 0x42, 0x0F, 0x0F, 0x42, 0x42, 0x0F, 0x0F, 0x42, 0x42 + db 0x42, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x42 + db 0x42, 0x0F, 0x20, 0x20, 0x0F, 0x0F, 0x20, 0x20, 0x0F, 0x42 + db 0x42, 0x42, 0x20, 0x20, 0x42, 0x42, 0x20, 0x20, 0x42, 0x42 + db 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42 + db 0x42, 0x42, 0x42, 0x00, 0x42, 0x42, 0x00, 0x42, 0x42, 0x42 + db 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00 + + + + ; Fright Ghost Blue Pose 1 + frightB1 db 0x00, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00 + db 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00 + db 0x20, 0x20, 0x20, 0x59, 0x20, 0x20, 0x59, 0x20, 0x20, 0x20 + db 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20 + db 0x20, 0x20, 0x59, 0x59, 0x20, 0x20, 0x59, 0x59, 0x20, 0x20 + db 0x20, 0x59, 0x20, 0x20, 0x59, 0x59, 0x20, 0x20, 0x59, 0x20 + db 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20 + db 0x20, 0x20, 0x00, 0x20, 0x20, 0x20, 0x20, 0x00, 0x20, 0x20 + db 0x20, 0x00, 0x00, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x20 + + ; Fright Ghost Blue Pose 2 + frightB2 db 0x00, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00 + db 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00 + db 0x20, 0x20, 0x20, 0x59, 0x20, 0x20, 0x59, 0x20, 0x20, 0x20 + db 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20 + db 0x20, 0x20, 0x59, 0x59, 0x20, 0x20, 0x59, 0x59, 0x20, 0x20 + db 0x20, 0x59, 0x20, 0x20, 0x59, 0x59, 0x20, 0x20, 0x59, 0x20 + db 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20 + db 0x20, 0x20, 0x20, 0x00, 0x20, 0x20, 0x00, 0x20, 0x20, 0x20 + db 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00 + + ; Fright Ghost White Pose 1 + frightW1 db 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00 + db 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00 + db 0x0F, 0x0F, 0x0F, 0x28, 0x0F, 0x0F, 0x28, 0x0F, 0x0F, 0x0F + db 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F + db 0x0F, 0x0F, 0x28, 0x28, 0x0F, 0x0F, 0x28, 0x28, 0x0F, 0x0F + db 0x0F, 0x28, 0x0F, 0x0F, 0x28, 0x28, 0x0F, 0x0F, 0x28, 0x0F + db 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F + db 0x0F, 0x0F, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x0F, 0x0F + db 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x0F + + ; Fright White Blue Pose 2 + frightW2 db 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00 + db 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00 + db 0x0F, 0x0F, 0x0F, 0x28, 0x0F, 0x0F, 0x28, 0x0F, 0x0F, 0x0F + db 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F + db 0x0F, 0x0F, 0x28, 0x28, 0x0F, 0x0F, 0x28, 0x28, 0x0F, 0x0F + db 0x0F, 0x28, 0x0F, 0x0F, 0x28, 0x28, 0x0F, 0x0F, 0x28, 0x0F + db 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F + db 0x0F, 0x0F, 0x0F, 0x00, 0x0F, 0x0F, 0x00, 0x0F, 0x0F, 0x0F + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00 + + + + ; Font letter A + fontA db 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00 + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + ; Font letter B + fontB db 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x00 + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + ; Font letter C + fontC db 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + ; Font letter D + fontD db 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x00 + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + ; Font letter E + fontE db 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x00 + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + ; Font letter F + fontF db 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x00 + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + ; Font letter G + fontG db 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x0F, 0x00, 0x0F, 0x0F, 0x0F + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + ; Font letter H + fontH db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + ; Font letter I + fontI db 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F + db 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00 + db 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + ; Font letter J + fontJ db 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F + db 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00 + db 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x00 + db 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + ; Font letter K + fontK db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x00 + db 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00 + db 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x00 + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + ; Font letter L + fontL db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + ; Font letter M + fontM db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x0F, 0x0F, 0x00, 0x0F, 0x0F + db 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + ; Font letter N + fontN db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x0F + db 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F + db 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x0F + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + ; Font letter O + fontO db 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + ; Font letter P + fontP db 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + ; Font letter Q + fontQ db 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x0F + db 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + ; Font letter R + fontR db 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F + db 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x00 + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + ; Font letter S + fontS db 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + ; Font letter T + fontT db 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F + db 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + ; Font letter U + fontU db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + ; Font letter V + fontV db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x00, 0x0F, 0x00, 0x0F, 0x00 + db 0x00, 0x00, 0x0F, 0x00, 0x0F, 0x00 + db 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + ; Font letter W + fontW db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F + db 0x00, 0x0F, 0x0F, 0x00, 0x0F, 0x0F + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + ; Font letter X + fontX db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x00, 0x0F, 0x00, 0x0F, 0x00 + db 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00 + db 0x00, 0x00, 0x0F, 0x00, 0x0F, 0x00 + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + ; Font letter Y + fontY db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x00, 0x0F, 0x00, 0x0F, 0x00 + db 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + ; Font letter Z + fontZ db 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F + db 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00 + db 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00 + db 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00 + db 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + ; Font number 0 + font0 db 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00 + db 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x0F + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x0F + db 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + ; Font number 1 + font1 db 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00 + db 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00 + db 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + ; Font number 2 + font2 db 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00 + db 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x00 + db 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00 + db 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00 + db 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + ; Font number 3 + font3 db 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + ; Font number 4 + font4 db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + ; Font number 5 + font5 db 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + ; Font number 6 + font6 db 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + ; Font number 7 + font7 db 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00 + db 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00 + db 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + ; Font number 8 + font8 db 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00 + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + ; Font number 9 + font9 db 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + ; Font symbol dash (-) + fontDash db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + ; Font symbol underscore (_) + fontUnderS db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + ; Font symbol slash (/) + fontSlash db 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F + db 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00 + db 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00 + db 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00 + db 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + ; Font symbol dot (.) + fontDot db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + db 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00 + db 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00 + db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + + + + ; --------------------------------------------------------------------- \ No newline at end of file