From 4f1d4068bcd1ee95783d530ae61215fde351ad59 Mon Sep 17 00:00:00 2001 From: shoofle Date: Sat, 4 Jan 2025 09:23:01 -0500 Subject: [PATCH] moving up and down the card display --- gb-export.lua | 18 +- tarot.asm | 472 ++++++++++++++++++++++++++++++++++++++--------- thefool.aseprite | Bin 5018 -> 6103 bytes thefool.asm | 46 +++++ 4 files changed, 440 insertions(+), 96 deletions(-) create mode 100644 thefool.asm diff --git a/gb-export.lua b/gb-export.lua index 005e6fe..28085c0 100644 --- a/gb-export.lua +++ b/gb-export.lua @@ -38,7 +38,7 @@ local plt = sprt.palettes[1] -- DEFINES THE PALETTE local tile_amount = 0 local tile_offset = 0 -local folder = string.find(filepath,"[^/]+$") -1 +local folder = string.find(filepath,"[^/]+$") - 1 filepath = string.sub(filepath,1,folder) local tile_name = "" @@ -391,7 +391,7 @@ local function export_asm(tab,map) end if do_map then -- CHECKS IF MAP IS TO BE EXPORTED - out_contents = out_contents .. map_name .. ":\n" + out_contents = out_contents .. map_name .. ": ; tiles start at " .. tile_offset .. "\n" for i, line in ipairs(map) do local linen = {} for x, mark in ipairs(line) do @@ -409,17 +409,23 @@ local function do_code() local tiles = generate_tileset(layer.tileset) -- GENERATES TILESET local map = generate_tilemap() -- GENERATES TILEMAP + local file_name = filepath .. tile_name + + if string.find(sprt.filename, ".aseprite$") ~= nil then + file_name = string.gsub(sprt.filename, ".aseprite$", "") + end + if (file_format == "C") then local c_file, h_file = export_c(tiles, map) - save_to_file(filepath..tile_name..".c", c_file) - save_to_file(filepath..tile_name..".h", h_file) + save_to_file(file_name ..".c", c_file) + save_to_file(file_name..".h", h_file) print(h_file.."\n") print(c_file) end if (file_format == "ASM") then local asm_file = export_asm(tiles, map) - save_to_file(filepath..tile_name..".asm", asm_file) + save_to_file(file_name..".asm", asm_file) end end @@ -431,4 +437,4 @@ if dlg_data.confirm then end if dlg_data.cancel then return -end \ No newline at end of file +end diff --git a/tarot.asm b/tarot.asm index 9328dbc..b7238ac 100644 --- a/tarot.asm +++ b/tarot.asm @@ -1,5 +1,17 @@ ; From https://gbdev.io/gb-asm-tutorial/part1/hello_world.html +; FF80 CALL +; FF81 LOW +; FF82 HIGH +; FF83 RET +; pattern repeats for the first 16 bytes so we can have some call vectors for the scene system +DEF SCENE_SETUP EQU $FF81 +DEF SCENE_UPDATE EQU SCENE_SETUP + 4 ; call then ret is 3+1 bytes +DEF SCENE_DRAW EQU SCENE_UPDATE + 4 +DEF SCENE_TEARDOWN EQU SCENE_DRAW + 4 +DEF rMYBTN EQU $FF90 +DEF rMYBTNP EQU rMYBTN + 1 + INCLUDE "hardware.inc" SECTION "Header", ROM0[$100] @@ -13,60 +25,157 @@ EntryPoint: ld a, 0 ld [rNR52], a + + + ld a, [Instructions] ; get the value of a call instruction so we can shove it into our handles + ld hl, SCENE_SETUP - 1 + ld [hl], a + ld hl, SCENE_UPDATE - 1 + ld [hl], a + ld hl, SCENE_DRAW - 1 + ld [hl], a + ld hl, SCENE_TEARDOWN - 1 + ld [hl], a + + ld a, [Instructions + 3] ; get the value of a ret instruction + ld hl, SCENE_SETUP + 2 + ld [hl], a + ld hl, SCENE_UPDATE + 2 + ld [hl], a + ld hl, SCENE_DRAW + 2 + ld [hl], a + ld hl, SCENE_TEARDOWN + 2 + ld [hl], a + + ; set up our scene vectors + ld hl, SCENE_SETUP + ld de, CardReadSetup + ld a, e + ld [hl+], a + ld a, d + ld [hl+], a + ld hl, SCENE_UPDATE + ld de, CardReadUpdate + ld a, e + ld [hl+], a + ld a, d + ld [hl+], a + ld hl, SCENE_DRAW + ld de, CardReadDraw + ld a, e + ld [hl+], a + ld a, d + ld [hl+], a + ld hl, SCENE_TEARDOWN + ld de, CardReadTeardown + ld a, e + ld [hl+], a + ld a, d + ld [hl+], a + ; Do not turn the LCD off outside of VBlank WaitVBlank: ld a, [rLY] cp 144 jp c, WaitVBlank - ; Turn the LCD off + call SCENE_SETUP - 1 + +Loop: + ld hl, rP1 + ld [hl], P1F_GET_DPAD + ld a, [hl] + ld a, [hl] + ld a, [hl] + ld a, [hl] + cpl + and a, %00001111 + ld b, a + ld [hl], P1F_GET_BTN + ld a, [hl] + ld a, [hl] + ld a, [hl] + ld a, [hl] + cpl + and a, %00001111 + swap a + or a, b + ld b, a + ld a, [rMYBTN] + cpl + and a, b + ld [rMYBTNP], a + ld a, b + ld [rMYBTN], a + + call SCENE_UPDATE - 1 + + ld b, 144 + call AwaitLine + + call SCENE_DRAW - 1 + + jp Loop + + + +CardReadSetup: +; Turn the LCD off ld a, 0 ld [rLCDC], a - ld de, UITiles ; source - ld hl, $8800 ; destination of copy + ld hl, UITiles ; source + ld de, $8800 ; destination of copy ld bc, UITilesEnd - UITiles ; length to copy call CopyRange - - ld de, BGTiles ; source - ld hl, $8000 ; destination of copy + + ld hl, BGTiles ; source + ld de, $8000 ; destination of copy ld bc, BGTilesEnd - BGTiles ; length to copy call CopyRange - - ld de, LetterTiles ; source - ld hl, $8000 + (128 + 16)*16 + + ld hl, LetterTiles ; map the small font into vram at ascii locations + ld de, $8000 + (127 + $21)*16 ld bc, LetterTilesEnd - LetterTiles call CopyRange - - ld de, BigLetterTiles - ld hl, $8000 + (128 + 16 + 32)*16 + + ld hl, BigLetterTiles + ld de, $8000 + (128 + 16 + 32)*16 ld bc, BigLetterTilesEnd - BigLetterTiles - call CopyRange + ; call CopyRange ld de, UITilemap ; origin ld hl, $9800 ; destination ld b, 18 ; height ld c, 20 ; width call CopyTilesToMap - + ld de, BGTilemap ; origin - ld hl, $9800 + 32 + 1 ; destination + ld hl, $9800 + 32 + 1 ; destination ld b, 16 ; height ld c, 8 ; width call CopyTilesToMap - - ld de, LittleLetters - ld hl, $9800 + 32*5 + 10 - ld b, 5 - ld c, 8 - call CopyTilesToMap - + + ; TheFool is a sequence of length-prefixed strings in memory + ; so when we're done writing one, hl will be correctly placed to read the next + ; length-prefixed print doesn't require passing a length + ; so all we have to set is the destination for each + ld hl, TheFool + ld de, $9800 + 32*5 + 10 + call PrintString + ld de, $9800 + 32*6 + 10 + call PrintString + ld de, $9800 + 32*7 + 10 + call PrintString + ld de, $9800 + 32*8 + 10 + call PrintString + ld de, BigLetters ld hl, $9800 + 32*1 + 10 ld b, 2 ld c, 8 call CopyTilesToMap - + ; Turn the LCD on ld a, LCDCF_BLK01 | LCDCF_ON | LCDCF_BGON ld [rLCDC], a @@ -75,24 +184,138 @@ WaitVBlank: ld a, %11100100 ld [rBGP], a -Done: - jp Done + ld a, 0 + ldh [$FF90+2], a + + ret ; return from cardreadsetup + +CardReadUpdate: + ldh a, [rMYBTNP] + and a, %0000_1000 ; check if down is held + jp z, CardReadUpdateDoneDown + ldh a, [$FF90+2] + inc a ; increment when they press down because the stack has card 0 at the top + ldh [$FF90+2], a +CardReadUpdateDoneDown: + ldh a, [rMYBTNP] + and a, %0000_0100 + jp z, CardReadUpdateDoneUp + ldh a, [$FF90+2] + dec a ; decrement when they press up because the stack has card 0 at the top + ldh [$FF90+2], a +CardReadUpdateDoneUp: + ldh a, [$FF90+2] + cp a, 22 + jp nz, CardReadUpdateDoneZero + ld a, 0 + ldh [$FF90+2], a +CardReadUpdateDoneZero: + cp a, $FF + jp nz, CardReadUpdateReturn + ld a, 21 + ldh [$FF90+2], a +CardReadUpdateReturn: + ret + +CardReadDraw: + ld b, 11 ; 11 rows, and we stop before drawing row zero + ld hl, $9800+32*4+19 ; start point + ld de, 32 ; stride +CardReadDrawCopyTile: + ld a, $81 + ld [hl], a + add hl, de + dec b + jp nz, CardReadDrawCopyTile + + ld a, $87 + ld [hl], a ; draw the cap at the end + +CardReadDrawSelectedTile: + ldh a, [$FF90+2] + ld b, a + srl b + ld hl, $9800+32*4+19 ; start point + ld de, 32 ; stride + jp z, CardReadDrawDrawSelectedTile +CardReadDrawCountDownTile: + add hl, de + dec b + jp nz, CardReadDrawCountDownTile +CardReadDrawDrawSelectedTile: + ldh a, [$FF90+2] + and a, 1 + jp z, CardReadDraw_PickTileWithTop + ld a, $90 + ld [hl], a + add hl, de + ld a, $81 + cp a, [hl] + ld a, $91 + ld [hl], a + jp z, CardReadDrawReturn + ld a, $92 + ld [hl], a + jp CardReadDrawReturn +CardReadDraw_PickTileWithTop: + ld a, $82 + ld [hl], a +CardReadDrawReturn: + ret +CardReadTeardown: + ret +Instructions: + call Instructions + 2 + ret + +TheFool: + db 8, "THE FOOL" + db 6, "-begin" + db 5, "-leap" + db 8, "-naivete" +TheMagician: + db 3, "THE" + db 8, "MAGICIAN" +; subroutines + + +PrintString: ; write ascii string which has been prefixed by its length. + ld b, [hl] + inc hl +PrintBChars: ;write ascii characters. will not respect newlines or anything like that + ; hl should be the source of ascii text + ; de should be the location in the tile map to start writing at + ; b should be the length + ld a, [hli] + or a, %10000000 + ld [de], a + inc de + dec b + jp nz, PrintBChars + ret + +AwaitLine: ; put the line you want to reach in b + ld a, [rLY] + cp b + jp nz, AwaitLine + ret + CopyRange: - ; de is source - ; hl is destination + ; hl is source + ; de is destination ; bc is length to copy - ld a, [de] - ld [hli], a + ld a, [hli] + ld [de], a inc de dec bc - ld a, b + ld a, b or a, c ; check if bc is zero jp nz, CopyRange ret @@ -114,27 +337,28 @@ CopyTile: jp nz, CopyTile DoneWithLine: pop bc - + ld a, l add a, 32 - ld l, a - ld a, h + ld l, a + ld a, h adc a, 0 ld h, a ld a, l sub a, c - ld l, a - ld a, h + ld l, a + ld a, h sbc a, 0 - ld h, a - - dec b - ret z + ld h, a - jp CopyTilesToMap + dec b + jp nz, CopyTilesToMap + ret SECTION "Tile data", ROM0 +Spreads: + UITiles: db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 db $0f,$0f,$10,$10,$10,$10,$10,$10,$0f,$0f,$10,$10,$10,$10,$10,$10 @@ -152,10 +376,13 @@ UITiles: db $00,$00,$ff,$00,$ff,$00,$aa,$55,$00,$ff,$00,$ff,$ff,$ff,$ff,$ff db $63,$1f,$73,$0f,$63,$1f,$73,$0f,$63,$1f,$73,$0f,$63,$1f,$73,$0f db $ff,$ff,$ff,$ff,$00,$ff,$00,$ff,$55,$aa,$ff,$00,$ff,$00,$00,$00 + db $0f,$0f,$10,$10,$10,$10,$10,$10,$7f,$7f,$80,$80,$80,$80,$80,$80 + db $7f,$7f,$10,$10,$10,$10,$10,$10,$0f,$0f,$10,$10,$10,$10,$10,$10 + db $7f,$7f,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 UITilesEnd: BGTiles: - db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$00,$01,$00,$02 db $00,$00,$00,$00,$00,$1f,$00,$60,$00,$80,$00,$00,$00,$00,$00,$00 db $00,$00,$00,$00,$00,$00,$00,$c0,$00,$20,$00,$10,$00,$10,$00,$08 @@ -170,34 +397,27 @@ BGTiles: db $f0,$fe,$20,$2b,$10,$53,$e8,$eb,$8c,$8e,$42,$43,$00,$01,$00,$03 db $00,$00,$00,$00,$00,$80,$00,$c0,$00,$40,$00,$20,$00,$60,$00,$20 db $3f,$40,$3e,$41,$1d,$22,$0a,$14,$01,$0c,$02,$08,$05,$08,$02,$08 - db $00,$f4,$a0,$1a,$50,$05,$a8,$02,$50,$05,$aa,$00,$55,$00,$aa,$00 + db $00,$f4,$a0,$1a,$50,$05,$a8,$02,$50,$05,$aa,$00,$55,$00,$aa,$01 db $80,$85,$00,$05,$00,$81,$00,$63,$02,$3d,$1f,$e0,$1c,$e3,$bd,$3c db $00,$20,$00,$a0,$00,$20,$00,$20,$1f,$3f,$00,$aa,$01,$ab,$01,$6b db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$80,$c0,$c0,$c0,$c0 db $05,$08,$02,$08,$04,$0b,$00,$0c,$00,$08,$00,$00,$00,$00,$00,$00 - db $55,$00,$aa,$00,$00,$ff,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01 + db $54,$01,$a9,$02,$00,$fe,$01,$02,$00,$02,$01,$04,$02,$04,$01,$04 db $46,$5c,$8f,$8e,$82,$8e,$86,$8d,$8c,$89,$ca,$b9,$7c,$89,$72,$8d db $a6,$1e,$50,$08,$a8,$04,$54,$02,$a8,$02,$54,$02,$a8,$02,$54,$02 db $20,$20,$10,$10,$08,$08,$04,$04,$04,$04,$04,$04,$04,$04,$04,$04 - db $00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01 + db $02,$04,$01,$04,$02,$04,$01,$04,$02,$04,$01,$04,$02,$04,$01,$06 db $78,$85,$3c,$43,$bc,$43,$3c,$43,$be,$41,$5e,$21,$9e,$21,$5d,$22 db $a8,$02,$54,$02,$a8,$02,$54,$02,$a8,$02,$50,$04,$a8,$04,$50,$04 db $04,$04,$04,$04,$04,$04,$04,$04,$04,$0c,$08,$08,$08,$18,$10,$30 - db $00,$00,$00,$0f,$00,$30,$00,$40,$00,$40,$00,$40,$00,$40,$00,$42 - db $00,$01,$00,$ff,$00,$01,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - db $9c,$22,$1d,$62,$0c,$b2,$05,$1a,$04,$4a,$01,$86,$00,$82,$01,$82 + db $00,$02,$01,$02,$00,$03,$00,$07,$00,$18,$00,$60,$00,$80,$00,$00 + db $9c,$22,$1d,$62,$0c,$b2,$05,$1a,$04,$0a,$01,$06,$00,$82,$01,$82 db $a8,$04,$50,$04,$a8,$05,$53,$0f,$a0,$08,$50,$08,$a0,$08,$50,$08 db $20,$60,$40,$c0,$80,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - db $00,$41,$00,$31,$10,$2f,$1c,$23,$1e,$21,$1e,$21,$1e,$21,$1c,$22 - db $00,$c0,$00,$38,$00,$07,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - db $00,$82,$01,$82,$00,$c2,$01,$62,$00,$21,$00,$20,$00,$30,$00,$30 + db $00,$82,$01,$82,$00,$82,$01,$82,$00,$c1,$00,$c0,$00,$60,$00,$70 db $a0,$08,$40,$38,$80,$48,$00,$84,$00,$04,$00,$04,$00,$04,$00,$08 - db $00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$00,$1e,$00,$20,$00,$40 - db $1c,$22,$1c,$22,$1c,$22,$10,$2e,$00,$f2,$00,$02,$00,$01,$00,$01 db $00,$30,$00,$30,$00,$30,$00,$10,$00,$10,$00,$10,$00,$10,$00,$10 db $00,$08,$00,$08,$00,$08,$00,$08,$00,$08,$00,$10,$00,$10,$00,$08 - db $00,$38,$00,$07,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - db $00,$01,$00,$fe,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 db $00,$10,$00,$10,$00,$10,$00,$10,$00,$10,$00,$08,$00,$04,$00,$06 db $00,$08,$00,$08,$00,$08,$00,$04,$00,$0c,$00,$0c,$00,$38,$38,$c4 db $00,$03,$00,$01,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 @@ -218,9 +438,53 @@ BGTiles: db $00,$00,$00,$01,$00,$01,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 db $00,$80,$00,$00,$00,$00,$00,$80,$00,$c0,$00,$20,$00,$20,$00,$20 db $00,$20,$00,$20,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$00,$02,$00,$03 + db $00,$0c,$00,$10,$00,$20,$00,$40,$00,$80,$00,$00,$00,$00,$00,$00 + db $00,$00,$00,$00,$00,$00,$00,$02,$00,$0b,$00,$2f,$00,$b8,$00,$e0 + db $00,$01,$01,$02,$01,$02,$03,$04,$07,$08,$07,$08,$0f,$10,$1f,$20 + db $00,$30,$00,$30,$00,$18,$00,$0c,$00,$0e,$00,$06,$00,$03,$00,$01 + db $1f,$e0,$3e,$41,$1c,$22,$18,$24,$00,$18,$00,$08,$00,$08,$00,$90 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$3c,$00,$33 + db $00,$e0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $00,$83,$00,$8e,$00,$d8,$80,$70,$c0,$30,$c0,$20,$80,$40,$00,$80 + db $00,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$00,$06 + db $00,$01,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 BGTilesEnd: LetterTiles: db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $04,$04,$04,$04,$04,$04,$04,$04,$04,$04,$04,$04,$00,$00,$04,$04 + db $28,$28,$28,$28,$28,$28,$08,$08,$00,$00,$00,$00,$00,$00,$00,$00 + db $04,$04,$24,$24,$2c,$2c,$28,$28,$fc,$fc,$28,$28,$fe,$fe,$28,$28 + db $38,$38,$60,$60,$e0,$e0,$70,$70,$30,$30,$20,$20,$e0,$e0,$60,$60 + db $e0,$e0,$b0,$b0,$b2,$b2,$e4,$e4,$08,$08,$16,$16,$35,$35,$27,$27 + db $1c,$1c,$74,$74,$60,$60,$38,$38,$3d,$3d,$37,$37,$3e,$3e,$3c,$3c + db $00,$00,$18,$18,$10,$10,$10,$10,$00,$00,$00,$00,$00,$00,$00,$00 + db $08,$08,$10,$10,$20,$20,$20,$20,$20,$20,$20,$20,$30,$30,$10,$10 + db $00,$00,$00,$00,$0e,$0e,$02,$02,$02,$02,$06,$06,$0c,$0c,$18,$18 + db $02,$02,$46,$46,$6c,$6c,$78,$78,$7c,$7c,$68,$68,$0c,$0c,$00,$00 + db $08,$08,$08,$08,$08,$08,$08,$08,$7c,$7c,$08,$08,$08,$08,$00,$00 + db $00,$00,$00,$00,$00,$00,$00,$00,$08,$08,$08,$08,$18,$18,$10,$10 + db $00,$00,$00,$00,$00,$00,$3c,$3c,$20,$20,$00,$00,$00,$00,$00,$00 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$20,$20,$00,$00 + db $00,$00,$00,$00,$02,$02,$04,$04,$0c,$0c,$08,$08,$10,$10,$10,$10 + db $00,$00,$00,$00,$3c,$3c,$24,$24,$24,$24,$3c,$3c,$00,$00,$00,$00 + db $00,$00,$04,$04,$04,$04,$04,$04,$04,$04,$0c,$0c,$08,$08,$00,$00 + db $00,$00,$0c,$0c,$12,$12,$12,$12,$02,$02,$0e,$0e,$07,$07,$00,$00 + db $00,$00,$00,$00,$38,$38,$08,$08,$18,$18,$18,$18,$00,$00,$00,$00 + db $02,$02,$32,$32,$26,$26,$3e,$3e,$24,$24,$04,$04,$00,$00,$00,$00 + db $00,$00,$00,$00,$3e,$3e,$20,$20,$38,$38,$08,$08,$38,$38,$20,$20 + db $00,$00,$00,$00,$30,$30,$20,$20,$58,$58,$68,$68,$7c,$7c,$3c,$3c + db $00,$00,$1e,$1e,$03,$03,$03,$03,$02,$02,$04,$04,$04,$04,$00,$00 + db $00,$00,$3c,$3c,$24,$24,$38,$38,$18,$18,$1c,$1c,$38,$38,$00,$00 + db $00,$00,$00,$00,$3e,$3e,$64,$64,$7c,$7c,$0c,$0c,$08,$08,$10,$10 + db $00,$00,$00,$00,$10,$10,$00,$00,$00,$00,$10,$10,$10,$10,$00,$00 + db $00,$00,$08,$08,$00,$00,$00,$00,$0c,$0c,$04,$04,$0c,$0c,$18,$18 + db $00,$00,$04,$04,$1c,$1c,$30,$30,$60,$60,$78,$78,$1e,$1e,$02,$02 + db $00,$00,$00,$00,$00,$00,$3c,$3c,$40,$40,$78,$78,$00,$00,$00,$00 + db $00,$00,$20,$20,$30,$30,$18,$18,$0c,$0c,$1c,$1c,$30,$30,$00,$00 + db $0c,$0c,$3c,$3c,$24,$24,$0c,$0c,$08,$08,$08,$08,$00,$00,$08,$08 + db $00,$00,$04,$04,$1e,$1e,$3f,$3f,$36,$36,$3e,$3e,$1c,$1c,$00,$00 db $00,$00,$10,$10,$28,$28,$28,$28,$7c,$7c,$44,$44,$82,$82,$82,$82 db $00,$00,$7c,$7c,$22,$22,$22,$22,$3c,$3c,$22,$22,$22,$22,$7c,$7c db $00,$00,$3c,$3c,$42,$42,$40,$40,$40,$40,$40,$40,$42,$42,$3c,$3c @@ -231,8 +495,8 @@ LetterTiles: db $00,$00,$44,$44,$44,$44,$44,$44,$7c,$7c,$44,$44,$44,$44,$44,$44 db $00,$00,$38,$38,$10,$10,$10,$10,$10,$10,$10,$10,$10,$10,$38,$38 db $00,$00,$0e,$0e,$04,$04,$04,$04,$04,$04,$04,$04,$44,$44,$38,$38 - db $44,$44,$48,$48,$50,$50,$60,$60,$60,$60,$50,$50,$48,$48,$44,$44 - db $00,$00,$e0,$e0,$40,$40,$40,$40,$40,$40,$40,$40,$44,$44,$fc,$fc + db $00,$00,$48,$48,$50,$50,$60,$60,$60,$60,$50,$50,$48,$48,$44,$44 + db $00,$00,$70,$70,$20,$20,$20,$20,$20,$20,$20,$20,$22,$22,$7e,$7e db $00,$00,$42,$42,$66,$66,$5a,$5a,$42,$42,$42,$42,$42,$42,$42,$42 db $00,$00,$64,$64,$64,$64,$54,$54,$54,$54,$4c,$4c,$4c,$4c,$44,$44 db $00,$00,$38,$38,$44,$44,$44,$44,$44,$44,$44,$44,$44,$44,$38,$38 @@ -241,13 +505,49 @@ LetterTiles: db $00,$00,$78,$78,$44,$44,$44,$44,$7c,$7c,$48,$48,$48,$48,$44,$44 db $00,$00,$1c,$1c,$22,$22,$20,$20,$1c,$1c,$02,$02,$62,$62,$1c,$1c db $00,$00,$7c,$7c,$10,$10,$10,$10,$10,$10,$10,$10,$10,$10,$10,$10 - db $00,$00,$42,$42,$42,$42,$42,$42,$42,$42,$42,$42,$42,$42,$3c,$3c + db $00,$00,$42,$42,$42,$42,$42,$42,$42,$42,$42,$42,$42,$42,$bc,$bc db $00,$00,$44,$44,$44,$44,$28,$28,$28,$28,$28,$28,$10,$10,$10,$10 db $00,$00,$82,$82,$82,$82,$44,$44,$54,$54,$54,$54,$28,$28,$28,$28 db $00,$00,$44,$44,$28,$28,$28,$28,$10,$10,$28,$28,$28,$28,$44,$44 db $00,$00,$44,$44,$28,$28,$10,$10,$10,$10,$10,$10,$10,$10,$10,$10 db $00,$00,$7c,$7c,$08,$08,$08,$08,$10,$10,$20,$20,$20,$20,$7c,$7c - db $00,$00,$00,$00,$00,$18,$00,$66,$00,$66,$00,$18,$00,$00,$00,$00 + db $00,$00,$3c,$3c,$20,$20,$20,$20,$20,$20,$20,$20,$3c,$3c,$30,$30 + db $00,$00,$c0,$c0,$c0,$c0,$40,$40,$60,$60,$20,$20,$10,$10,$18,$18 + db $18,$18,$0f,$0f,$03,$03,$02,$02,$02,$02,$02,$02,$12,$12,$1e,$1e + db $08,$08,$1c,$1c,$34,$34,$04,$04,$00,$00,$00,$00,$00,$00,$00,$00 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$3e,$3e,$00,$00 + db $20,$20,$18,$18,$0c,$0c,$04,$04,$00,$00,$00,$00,$00,$00,$00,$00 + db $00,$00,$00,$00,$30,$30,$08,$08,$38,$38,$48,$48,$3c,$3c,$00,$00 + db $08,$08,$08,$08,$08,$08,$08,$08,$0e,$0e,$0d,$0d,$0b,$0b,$0e,$0e + db $00,$00,$00,$00,$00,$00,$0c,$0c,$1c,$1c,$10,$10,$18,$18,$0c,$0c + db $00,$00,$01,$01,$01,$01,$0f,$0f,$09,$09,$09,$09,$0b,$0b,$0e,$0e + db $80,$80,$80,$80,$8c,$8c,$9c,$9c,$1c,$1c,$10,$10,$1c,$1c,$18,$18 + db $38,$38,$2c,$2c,$20,$20,$3c,$3c,$20,$20,$20,$20,$20,$20,$20,$20 + db $00,$00,$00,$00,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$0c,$0c,$30,$30 + db $20,$20,$20,$20,$20,$20,$38,$38,$38,$38,$24,$24,$20,$20,$00,$00 + db $10,$10,$00,$00,$30,$30,$10,$10,$10,$10,$10,$10,$00,$00,$00,$00 + db $00,$00,$10,$10,$00,$00,$10,$10,$10,$10,$10,$10,$10,$10,$30,$30 + db $10,$10,$16,$16,$1c,$1c,$1c,$1c,$16,$16,$18,$18,$00,$00,$00,$00 + db $28,$28,$20,$20,$20,$20,$30,$30,$10,$10,$10,$10,$00,$00,$00,$00 + db $00,$00,$30,$30,$30,$30,$34,$34,$6c,$6c,$2c,$2c,$04,$04,$00,$00 + db $00,$00,$00,$00,$00,$00,$20,$20,$70,$70,$50,$50,$50,$50,$10,$10 + db $00,$00,$00,$00,$38,$38,$28,$28,$38,$38,$28,$28,$38,$38,$00,$00 + db $00,$00,$60,$60,$60,$60,$50,$50,$70,$70,$40,$40,$60,$60,$00,$00 + db $00,$00,$00,$00,$3c,$3c,$2c,$2c,$3c,$3c,$0c,$0c,$08,$08,$0c,$0c + db $00,$00,$10,$10,$38,$38,$20,$20,$20,$20,$20,$20,$20,$20,$00,$00 + db $00,$00,$00,$00,$0c,$0c,$18,$18,$18,$18,$0c,$0c,$18,$18,$00,$00 + db $00,$00,$18,$18,$08,$08,$08,$08,$3f,$3f,$28,$28,$08,$08,$00,$00 + db $00,$00,$00,$00,$00,$00,$24,$24,$64,$64,$2c,$2c,$38,$38,$00,$00 + db $00,$00,$00,$00,$20,$20,$30,$30,$13,$13,$12,$12,$1c,$1c,$08,$08 + db $00,$00,$00,$00,$01,$01,$21,$21,$2b,$2b,$3e,$3e,$16,$16,$00,$00 + db $00,$00,$00,$00,$20,$20,$3c,$3c,$1c,$1c,$1c,$1c,$36,$36,$30,$30 + db $00,$00,$00,$00,$1a,$1a,$0a,$0a,$0c,$0c,$0c,$0c,$08,$08,$08,$08 + db $60,$60,$00,$00,$30,$30,$3e,$3e,$0c,$0c,$18,$18,$1c,$1c,$00,$00 + db $0e,$0e,$18,$18,$0c,$0c,$0c,$0c,$38,$38,$08,$08,$18,$18,$1c,$1c + db $20,$20,$30,$30,$20,$20,$10,$10,$10,$10,$10,$10,$00,$00,$00,$00 + db $30,$30,$38,$38,$10,$10,$10,$10,$10,$10,$18,$18,$18,$18,$30,$30 + db $00,$00,$00,$00,$32,$32,$3c,$3c,$78,$78,$00,$00,$00,$00,$00,$00 + db $06,$06,$7c,$7c,$5f,$5f,$5b,$5b,$5e,$5e,$72,$72,$03,$03,$00,$00 LetterTilesEnd: BigLetterTiles: @@ -311,49 +611,41 @@ UITilemap: db $8e, $80, $80, $80, $80, $80, $80, $80, $80, $89, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80 db $8e, $80, $80, $80, $80, $80, $80, $80, $80, $89, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80 db $8e, $80, $80, $80, $80, $80, $80, $80, $80, $89, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80 - db $8e, $80, $80, $80, $80, $80, $80, $80, $80, $89, $80, $80, $80, $80, $80, $80, $80, $80, $80, $81 - db $8e, $80, $80, $80, $80, $80, $80, $80, $80, $89, $80, $80, $80, $80, $80, $80, $80, $80, $80, $81 - db $8e, $80, $80, $80, $80, $80, $80, $80, $80, $89, $80, $80, $80, $80, $80, $80, $80, $80, $80, $81 - db $8e, $80, $80, $80, $80, $80, $80, $80, $80, $89, $80, $80, $80, $80, $80, $80, $80, $80, $80, $81 - db $8e, $80, $80, $80, $80, $80, $80, $80, $80, $89, $80, $80, $80, $80, $80, $80, $80, $80, $80, $81 - db $8e, $80, $80, $80, $80, $80, $80, $80, $80, $89, $80, $80, $80, $80, $80, $80, $80, $80, $80, $81 - db $8e, $80, $80, $80, $80, $80, $80, $80, $80, $89, $80, $80, $80, $80, $80, $80, $80, $80, $80, $81 - db $8e, $80, $80, $80, $80, $80, $80, $80, $80, $89, $80, $80, $80, $80, $80, $80, $80, $80, $80, $82 - db $8e, $80, $80, $80, $80, $80, $80, $80, $80, $89, $80, $80, $80, $85, $80, $80, $80, $80, $80, $81 - db $8e, $80, $80, $80, $80, $80, $80, $80, $80, $89, $80, $80, $83, $86, $83, $83, $80, $80, $80, $81 - db $8e, $80, $80, $80, $80, $80, $80, $80, $80, $89, $80, $80, $84, $83, $84, $84, $80, $80, $80, $81 - db $8e, $80, $80, $80, $80, $80, $80, $80, $80, $89, $80, $80, $80, $84, $80, $80, $80, $80, $80, $81 - db $8e, $80, $80, $80, $80, $80, $80, $80, $80, $89, $80, $80, $80, $80, $80, $80, $80, $80, $80, $81 - db $8c, $8f, $8f, $8f, $8f, $8f, $8f, $8f, $8f, $88, $80, $80, $80, $80, $80, $80, $80, $80, $80, $87 + db $8e, $80, $80, $80, $80, $80, $80, $80, $80, $89, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80 + db $8e, $80, $80, $80, $80, $80, $80, $80, $80, $89, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80 + db $8e, $80, $80, $80, $80, $80, $80, $80, $80, $89, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80 + db $8e, $80, $80, $80, $80, $80, $80, $80, $80, $89, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80 + db $8e, $80, $80, $80, $80, $80, $80, $80, $80, $89, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80 + db $8e, $80, $80, $80, $80, $80, $80, $80, $80, $89, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80 + db $8e, $80, $80, $80, $80, $80, $80, $80, $80, $89, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80 + db $8e, $80, $80, $80, $80, $80, $80, $80, $80, $89, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80 + db $8e, $80, $80, $80, $80, $80, $80, $80, $80, $89, $80, $80, $80, $85, $80, $80, $80, $80, $80, $80 + db $8e, $80, $80, $80, $80, $80, $80, $80, $80, $89, $80, $80, $83, $86, $83, $83, $80, $80, $80, $80 + db $8e, $80, $80, $80, $80, $80, $80, $80, $80, $89, $80, $80, $84, $83, $84, $84, $80, $80, $80, $80 + db $8e, $80, $80, $80, $80, $80, $80, $80, $80, $89, $80, $80, $80, $84, $80, $80, $80, $80, $80, $80 + db $8e, $80, $80, $80, $80, $80, $80, $80, $80, $89, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80 + db $8c, $8f, $8f, $8f, $8f, $8f, $8f, $8f, $8f, $88, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80 UITilemapEnd: BGTilemap: - db $00, $00, $01, $02, $03, $00, $00, $00 + db $00, $00, $01, $02, $03, $00, $00, $00 db $00, $00, $04, $05, $06, $00, $00, $00 db $00, $00, $07, $08, $09, $00, $00, $00 db $00, $00, $0a, $0b, $0c, $0d, $00, $00 db $00, $00, $0e, $0f, $10, $11, $12, $00 db $00, $00, $13, $14, $15, $16, $17, $00 db $00, $00, $00, $18, $19, $1a, $1b, $00 - db $00, $00, $1c, $1d, $1e, $1f, $20, $00 - db $00, $00, $21, $22, $23, $24, $00, $00 - db $00, $25, $26, $00, $27, $28, $00, $00 - db $00, $29, $2a, $00, $2b, $2c, $00, $00 - db $00, $00, $00, $00, $2d, $2e, $2f, $00 - db $00, $30, $31, $32, $00, $33, $34, $00 - db $00, $35, $36, $37, $38, $39, $3a, $3b - db $00, $3c, $3d, $00, $00, $00, $00, $00 - db $00, $00, $3e, $00, $00, $00, $00, $00 + db $00, $00, $42, $1c, $1d, $1e, $1f, $00 + db $00, $38, $39, $3a, $20, $21, $00, $00 + db $3e, $3b, $40, $00, $22, $23, $00, $00 + db $3c, $3d, $41, $00, $24, $25, $00, $00 + db $43, $3f, $00, $00, $26, $27, $28, $00 + db $00, $29, $2a, $2b, $00, $2c, $2d, $00 + db $00, $2e, $2f, $30, $31, $32, $33, $34 + db $00, $35, $36, $00, $00, $00, $00, $00 + db $00, $00, $37, $00, $00, $00, $00, $00 BGTilemapEnd: -LittleLetters: - db $ab, $92, $95, $97, $99, $9e, $90, $90 - db $90, $90, $90, $90, $90, $90, $90, $90 - db $ab, $9c, $95, $91, $a0, $90, $90, $90 - db $90, $90, $90, $90, $90, $90, $90, $90 - db $ab, $9e, $91, $99, $a6, $95, $a4, $95 -LittleLettersEnd: - BigLetters: db $c1, $b1, $b6, $b0, $c2, $ba, $ba, $c4 db $b3, $b2, $b5, $b0, $c3, $b9, $b9, $c5 diff --git a/thefool.aseprite b/thefool.aseprite index 03b009e6e1771bb9e27a56672b670b2977455231..34d8fedcc4150cb77749acef740a5d77ba631435 100644 GIT binary patch delta 2303 zcmYk6XH=8h5{AEo5~L>5%%KGo=}40jIuTJ25orn{B}4@Tq)IcNNRtjmr577YFF^%S zf)WI!DJ?=cVnhY$K|&|Fk#&EZnYG_Fv;V!bo|ys#$`L3JX0CL%NWYKeneS+;M9^oBUsf$@k$HB$=!(kbN`=`!s zW%BblAtT?E@;Ud}fZPc`MB>BJ?1KB~6Hz8f%zFx(cv2m3`H5xRP7j2%em{FsaIzlEFxyM(zrLU^U!RGt4DF}B@ z&S3<>5~QK>`w@VJ?`6~}Tv!+`BoyW7dlg5t zgKBdKO+o(}W6Pc~Pqr}yu!7x27S)_ftF6-D$9!b5{@fFMoUx#vSS1^fc%R%){I_-v z<`OGuu3q9R&0ru+U$i~cW2)mbQ`c2HgeM$zjfw}jjxH{p zPCRMg{A7M&wQ4(ZdCDH_R+-m!Z1NWO{q?+$`b#-pcu0A&n)C*YRypk#@pX4C`cak~ z8kUFC3z9ULG{` z(yHJi|9Z@Kb!+If8tbX;6E|B0hM<1$b{iH+;~NJ(i}eyj23s{{bp!ISIKcGM{I~q*5jT2; zIvFoghWC0@5ojI$eXue&ivF}AP4nioulScSU)4N$7&B}4!pjzQ8W*#4<}!0+$M)xD z6naf5R~Nr!D0}O@sMT$lghr>|>g36`4^wF(lFOLow;w=gg13KR0n$O%eHTsO!lHGW!neuy$Aw1vJXg!6>F%@qEcs}7G@@a+2stWJkCO{m(@U}@9^}J!ZTix@ z=(z@9^Qp~ktx^dhR#JTXd=N%vT%&Lxlp4j&96Y#bPgdd@3etF7H;xyE6|In4=<6l)G|WU>N)+sn_T_}w(hbv+d~$1)eS~~ z)*V!meG>PKF`HBaOD8S*EFd;IZXNV$IzmF%zyq-J}~G&6Z- z<=Rr>hV2g~lB6CnHChH2%Bo&Tpe4bs*x#o@L^bkLnqyLeKMFM@3$}A>MF@1p(=Cv% zt;r@0E6oSou3$o`>b`yLyXIN)Oq?-E z(f=lA#%DR0gK9zT-$rRA+oE`gPT|K;usZR*< z%BKyy67J~nofG0=3{mW_?5-k4Lk*j`9iJR@@JSgRID0VhfGXmG=ntNYU#25h7;yR` zx$hNYqR&a8T(l+)S2Oubg~XdWSh^EQYC(r5-Qj(tY2E6#Q9awx4{EmiQ?5mQ&UtGlLjDVN#ge9~$m zjWfukclro3*yj2MykltnJB3j<)E@a^sW-}&X7sYexMtyJ8xeJ~AL}ET_yt0e!65mFAvHOJs6*{}KLu5)=BXA+rqe_t7gClm~kGC#^R1hJwa@ zY@6uwkJFCrUfm#UJ&@0$_J}OYVIMCDMIYn&@?X{i2}S&h5GbLO{|sBj1eDlnCU8f^ zip@S3iY@G5{XOn`Q3hnQ@A|@9O$fVvSH`dl*k@OkqbVj6`Hw3AKxWy$Tqp>@!%o)U z?b!<+08a2g$bdHnMoweQ;lL+85sDaP&?2qXu=C$dmIv)nZ-)hxP~>yiUnCD@@lrb;P%a zb3aqP3yYs!AG7J74{evVk_>(4+vw24%p#g@d6-}YeKQDFi1Rv}-5OcQ+hb)q+68EH ztzK+gK?k(6`{u+lMlbp7pKFlpC?m68J0KM9TLOo30JlFtzxfb)5qhdvPfyP?P;V!c zGtAo-HHt+E%$PA$pbe0eXk^)%lEs21W2@PJ1_%dW zdjovZk*o_n0|1{C#*q2>zGENm=VYhPci(5R_||1!O;5lru4sF=+8fR{^#sPuKOe~3 z71W=}4o;Q|9@gwC)}TFhIBhsp9eTJ}4>z8EK2*JV=1xy-^K3yBMXi}u?iScORU5PD zw%U%#GJ5eN1!rgcXChVH`OWG_|Dfuqxnh}hlZ_d|z~~M7NK#PSHtnegetW9UmSr)= KghXHvpZ^D!p*#lw delta 2153 zcmV-v2$uKPFPbL;niG)%ehwNF008>&w*X`S006fDk&Z48w*UYDBOm|(000I6000n^ z!37t8004^s004NLwNQ%+03irV`~QEwsVQM++;f3T%5B)%dvrj^+r<0#KCm0!>N6lD zzZj%X{1>}V_}2ai{V5mzvEN64788*&E~-k#q`g!y83xz$cYBBHhL0IHi(|QV^Pw;Y zg+|lL!ogoOy3be)N01E9eE?R41k01r2&w^H zlSl$33=05aX=fm8Wps39a=(v-S{j*(9c}wyr2Gu?8`r-PdVA;<2>I=D8M?D|oFY)wW7X~f<*ZTSD2`+Z^ z1J3b0vEqzX#s^^31m3gJ2qFOwTmk?9BOn6+000I6002Le!37t82LNkjc_3kObSVM= z0C=3eR|#?iAqWKg|DPk!IEp&wR!G%0I3Cb~8lry{8BvyfRO;`($DM`Rz)6|EOrQ2+ z-pVm!r->Vz)t9Dx_GInW>RXkfP>KP2BQsZ%P4vTBN-6k=C|d)9rqZt;G4gAy z{K*m>Bjfta>-lgSb#->igd{!$vI}NHOA_a?hN-1tSz}m#*z<=?tvY-8Fa?WZ`=-ID z67F=$u#XG-VCF=*!aH$pP&{kJ^VcHsiX3cp+#8VSu!XPUOL;u<6JA`z7g;u%bME=R zr;Fzl$FqEqH<#jk2$<9ncg z|4_V#DBee>^Ct|SJLjKEQ1EW(kT4%y=*Gsok@8MDN#x{Q{jM-h3>;R2e|IbCX(4@y zJ1^z4edF62F@I@FK@bE%@D`-7T4G97qZ-Pf1wtlm3UEL9<%&S~ zJ%jE?uMfN*eSF5xZ;8G>2>v_e@!OQuCPP#%ndWMj0U}v{LVp9?^>W^<1&puQ6~W!m zBv%VvP`?sf>0Mrerf2PK50573{G@a+EJ3GNig$yJF;*NZB&9m`Cy-PjUQeuiNrH7~ zF~8#`r$l^wsm>h2$*;v%DngFYndY}ozS#uzUOL;$k*c?UolhMnzam)mvT7AC(DRqn z=E%?1f2CXmvwzZRda5X`p6!buD5qXFKPzTQf=JNkmvx1uL2~>$y|NLhQL5Z}LFx2# z4P%1#>*a!?vxi|jxGj+c-BQ5(wk#w;Hxk?WFQ;QdQC0_dQlcxpi^|Vo+hA~hHafHO zE0Y^FzhkEk%`aEK$nQ_o{BoC{fc#SJU}pE0x|K6OTz`BmKi|D1y_TOV4}hLH>I`yj z=a%br2Q5|b$Pb`*ztc9vb%DQ@tDoo~=!ciJ$ly}^@UobZU!vuAeS40}Pu#&(LgiNv zteWDPALR(&cE8qaEz!=U_}QDScBv^|j>}i#-)-sj@eS;EYp&zw2m7dw^m@(@p%;D+ z;rm@?3V)JcoiUJp?j`xqZ?)d+g5f9AD@gx#RRQ!%e&gHSy){^TjUQC-%#Z1J4lq!^ zwn?YzrQ;ZDwa5&S>#7=t|IibXFA?PWeTg90F9aWRIXmJ37aT2LIUJ{zL_eXOWA#jT zpC6T&KVSV@xsMr56b75P+3xd$++Mv+S)%tsE=>N#!`p2J|NfP~A?LT4@Ouby=IWpe z!u{ZSct5;gRPa;6?-}721VIo4LGT~>0ir1e&c*-$00kfc01yBO0RIC30000000007 z01%TQ79W3g&*cgOK@3LG)V2cm_O7!_G8 z$Z;Pt5VJvPW-6G+0yT#PiYYY@W+pa3i}>XMVtxXcgGlq(ffxW>u>!Velcg0mFq39r zU|<4bRv=~vVoo6DV;~+#12GR&KO+zekf0Z)pAV`RWVaa9ED00000000006q6qoAvT@EHwu6N5CE{V7qEBz|3A&