diff options
author | sadbeast <sadbeast@sadbeast.com> | 2024-02-01 16:11:53 -0800 |
---|---|---|
committer | sadbeast <sadbeast@sadbeast.com> | 2025-01-11 17:58:17 -0800 |
commit | 6637ef371082d88c45952f1094df709ea988b7b4 (patch) | |
tree | 99a8de3d0402a0dc7d6b972a6c47258871cfab57 | |
download | anxiety-main.tar.gz anxiety-main.tar.bz2 |
-rw-r--r-- | .envrc | 1 | ||||
-rw-r--r-- | .gitignore | 2 | ||||
-rw-r--r-- | .theme | bin | 0 -> 6 bytes | |||
-rw-r--r-- | Makefile | 18 | ||||
-rw-r--r-- | README.md | 7 | ||||
-rw-r--r-- | ako00 | bin | 0 -> 2048 bytes | |||
-rw-r--r-- | ako01 | bin | 0 -> 2048 bytes | |||
-rw-r--r-- | anxiety.asm | 254 | ||||
-rw-r--r-- | flake.lock | 61 | ||||
-rw-r--r-- | flake.nix | 26 | ||||
-rw-r--r-- | mos_api.inc | 197 | ||||
-rw-r--r-- | palette.gpl | 260 | ||||
-rw-r--r-- | spritesheet.xcf | bin | 0 -> 68543 bytes | |||
-rw-r--r-- | times15.uf2 | bin | 0 -> 8448 bytes | |||
-rw-r--r-- | winona.chr | bin | 0 -> 4096 bytes | |||
-rw-r--r-- | winona.chr.nmt | bin | 0 -> 768 bytes |
16 files changed, 826 insertions, 0 deletions
@@ -0,0 +1 @@ +use flake
\ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7e5922f --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.bin +*.lst Binary files differdiff --git a/Makefile b/Makefile new file mode 100644 index 0000000..65030d3 --- /dev/null +++ b/Makefile @@ -0,0 +1,18 @@ +ASM = ez80asm -l -b 00 + +NAME = anxiety +BINARY = $(NAME).bin +DEPS = mos_api.inc times12.uf2 + +SD_PATH = ~/.local/share/fab-agon-emulator/sdcard/bin + +all: $(BINARY) + +$(BINARY): $(NAME).asm $(DEPS) + $(ASM) $< + +clean: + rm -f $(BINARY) *.lst + +install: $(BINARY) + cp $(BINARY) $(SD_PATH) diff --git a/README.md b/README.md new file mode 100644 index 0000000..292a249 --- /dev/null +++ b/README.md @@ -0,0 +1,7 @@ +## Dependencies + +- [ez80asm](https://github.com/envenomator/agon-ez80asm) + +## Acknowledgements + +- https://github.com/schur/Agon-Light-Assembly Binary files differBinary files differdiff --git a/anxiety.asm b/anxiety.asm new file mode 100644 index 0000000..9e9eeac --- /dev/null +++ b/anxiety.asm @@ -0,0 +1,254 @@ +.macro buf_cmd + ld a, 23 + rst.lil $10 + ld a, 0 + rst.lil $10 + ld a, $a0 + rst.lil $10 + .endmacro + +.macro vdu end + push hl + push bc + ld hl, @vdu_start + ld bc, end - @vdu_start + rst.lil $18 + pop bc + pop hl + jr end +@vdu_start: + .endmacro + +font_buf: .equ 1000 + + .include "mos_api.inc" + + .assume adl = 1 + .org $40000 + + jr start + .asciz "anxiety.bin" + .align 64 ; fill with 0 up to MOS header + .db "MOS" ; MOS header + .db 0 ; version 0 + .db 1 ; ADL mode + +start: + ei + + ld hl, mode ; location of screen mode restore + mos mos_sysvars ; load pointer to sysvars in IX + ld a, (ix + sysvar_scrMode) ; get current screen mode + ld (hl), a ; save it in command stream + +vdu_init: + vdu @n + .db 12 ; CLS + .db 16 ; CLG + .db 23, 0, $c0, 0 ; logical coords off + ; .db 22, 0 ; select screenmode, 640x480x16 + .db 22, 18 ; select screenmode, 1024x768x2 + .db 23, 1, 0 ; hide cursor +@@: + + ld de, 0 + ld hl, font ; first 256 bytes are character widths + ld ix, font + $100 ; font icn data starts here + ld b, -1 +create_char: + call create_bitmap + + inc hl + inc d + djnz create_char + +main: + ld hl, font + ld (font_ptr), hl + + ld hl, 40 + ld (x), hl + + ld hl, text + call print_text + + ld hl, 0 + ld (x), hl + + ld hl, (y) + ld de, 32 + add hl, de + ld (y), hl + ld hl, small_text + call print_text + +loop: + mos mos_sysvars + ld a, (ix + sysvar_keyascii) + cp '\e' + jr nz, loop ; Loop until key is pressed + +end: + vdu @n + .db 16 ; CLG + .db 23, 1, 1 ; show cursor + .db 22 ; restore screen mode +mode: + .db 0 +@@: + + ld hl, 0 ; return success + ret + +create_bitmap: + ld e, (hl) ; get width + + buf_cmd + ld a, d ; buffer id + rst.lil $10 + ld a, 0 ; buffer id is 16-bit, send msb + rst.lil $10 + ld a, 2 ; clear buffer + rst.lil $10 + + buf_cmd + ld a, d ; buffer id + rst.lil $10 + ld a, 0 ; buffer id is 16-bit, send msb + rst.lil $10 + ld a, 0 ; write block + rst.lil $10 + ld a, 32 ; block length + rst.lil $10 + ld a, 0 ; length msb + rst.lil $10 + + push bc + + ld b, 16 +@loop: + ld a, (ix) + rst.lil $10 + ld a, (ix + 16) + rst.lil $10 + inc ix + djnz @loop + + ld b, 16 +@@: + inc ix + djnz @p + + pop bc + + buf_cmd + ld a, d ; buffer id + rst.lil $10 + ld a, 0 ; buffer id is 16-bit, send msb + rst.lil $10 + ld a, 14 ; consolidate blocks + rst.lil $10 + + ld a, 23 ; bitmap api + rst.lil $10 + ld a, 27 ; bitmap api + rst.lil $10 + ld a, $20 ; select bitmap + rst.lil $10 + ld a, d ; buffer id + rst.lil $10 + ld a, 0 ; buffer id is 16-bit, send msb + rst.lil $10 + + ld a, 23 ; bitmap api + rst.lil $10 + ld a, 27 ; bitmap api + rst.lil $10 + ld a, $21 ; create bitmap + rst.lil $10 + ld a, 16 ; width id + rst.lil $10 + ld a, 0 ; width is 16-bit, send msb + rst.lil $10 + ld a, 16 ; height + rst.lil $10 + ld a, 0 ; height is 16-bit, send msb + rst.lil $10 + ld a, 2 ; 1-bpp + rst.lil $10 + ret + +plot: + ld a, 25 + rst.lil $10 + ld a, $ed + rst.lil $10 + ld a, l + rst.lil $10 + ld a, h + rst.lil $10 + ld a, e + rst.lil $10 + ld a, d + rst.lil $10 + ret + +draw_char: + push hl + + ld de, 0 + ld e, a + + ld a, 23 ; bitmap api + rst.lil $10 + ld a, 27 ; bitmap api + rst.lil $10 + ld a, $20 ; select bitmap + rst.lil $10 + ld a, e ; select bitmap id based on ascii code + rst.lil $10 + ld a, 0 ; buffer id is 16-bit, send msb + rst.lil $10 + + push de + ld hl, (x) + ld de, (y) + call plot + pop de + + ld hl, font + add hl, de ; add width pointer offset + + ld a, (hl) ; get width + ld d, 0 + ld e, a + + ld hl, (x) + add hl, de ; update cursor pointer by width + ld (x), hl + + pop hl + ret + +print_text: + ld a, (hl) + cp 0 + ret z + inc hl + call draw_char + jr print_text + +font: + .incbin "times15.uf2" +; times12: +; .incbin "times12.uf2" +text: + .asciz "Happy New Years!" +small_text: + .asciz "Wait a minute, wait a minute, Doc, are you telling me that you built a time machine out of a delorean." +font_ptr: + .dw 0 +x: + .dw 0 +y: + .dw 0 diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..0cecf90 --- /dev/null +++ b/flake.lock @@ -0,0 +1,61 @@ +{ + "nodes": { + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1734649271, + "narHash": "sha256-4EVBRhOjMDuGtMaofAIqzJbg4Ql7Ai0PSeuVZTHjyKQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d70bd19e0a38ad4790d3913bf08fcbfc9eeca507", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..ac88504 --- /dev/null +++ b/flake.nix @@ -0,0 +1,26 @@ +{ + description = "anxiety"; + + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + flake-utils.url = "github:numtide/flake-utils"; + }; + + outputs = { + nixpkgs, + flake-utils, + ... + }: + flake-utils.lib.eachDefaultSystem ( + system: let + pkgs = nixpkgs.legacyPackages.${system}; + + nativeBuildInputs = with pkgs; [ + gnumake + ]; + buildInputs = with pkgs; []; + in { + devShells.default = pkgs.mkShell {inherit nativeBuildInputs buildInputs;}; + } + ); +} diff --git a/mos_api.inc b/mos_api.inc new file mode 100644 index 0000000..cf645b0 --- /dev/null +++ b/mos_api.inc @@ -0,0 +1,197 @@ +;
+; Title: AGON MOS - API for user projects
+; Author: Dean Belfield
+; Created: 03/08/2022
+; Last Updated: 11/11/2023
+;
+; Modinfo:
+; 05/08/2022: Added mos_feof
+; 09/08/2022: Added system variables: cursorX, cursorY
+; 18/08/2022: Added system variables: scrchar, scrpixel, audioChannel, audioSuccess, vpd_pflags
+; 05/09/2022: Added mos_ren, vdp_pflag_mode
+; 24/09/2022: Added mos_getError, mos_mkdir
+; 13/10/2022: Added mos_oscli
+; 23/02/2023: Added more sysvars, fixed typo in sysvar_audioSuccess, offsets for sysvar_scrCols, sysvar_scrRows
+; 04/03/2023: Added sysvar_scrpixelIndex
+; 08/03/2023: Renamed sysvar_keycode to sysvar_keyascii, added sysvar_vkeycode
+; 15/03/2023: Added mos_copy, mos_getrtc, mos_setrtc, rtc, vdp_pflag_rtc
+; 21/03/2023: Added mos_setintvector, sysvars for keyboard status, vdu codes for vdp
+; 22/03/2023: The VDP commands are now indexed from 0x80
+; 29/03/2023: Added mos_uopen, mos_uclose, mos_ugetc, mos_uputc
+; 13/04/2023: Added FatFS file structures (FFOBJID, FIL, DIR, FILINFO)
+; 15/04/2023: Added mos_getfil, mos_fread, mos_fwrite and mos_flseek
+; 19/05/2023: Added sysvar_scrMode
+; 05/06/2023: Added sysvar_rtcEnable
+; 03/08/2023: Added mos_setkbvector
+; 10/08/2023: Added mos_getkbmap
+; 11/11/2023: Added mos_i2c_open, mos_i2c_close, mos_i2c_write and mos_i2c_read
+
+; VDP control (VDU 23, 0, n)
+;
+vdp_gp: equ 80h
+vdp_keycode: equ 81h
+vdp_cursor: equ 82h
+vdp_scrchar: equ 83h
+vdp_scrpixel: equ 84h
+vdp_audio: equ 85h
+vdp_mode: equ 86h
+vdp_rtc: equ 87h
+vdp_keystate: equ 88h
+vdp_logicalcoords: equ C0h
+vdp_terminalmode: equ FFh
+
+; MOS high level functions
+;
+mos_getkey: equ 00h
+mos_load: equ 01h
+mos_save: equ 02h
+mos_cd: equ 03h
+mos_dir: equ 04h
+mos_del: equ 05h
+mos_ren: equ 06h
+mos_mkdir: equ 07h
+mos_sysvars: equ 08h
+mos_editline: equ 09h
+mos_fopen: equ 0Ah
+mos_fclose: equ 0Bh
+mos_fgetc: equ 0Ch
+mos_fputc: equ 0Dh
+mos_feof: equ 0Eh
+mos_getError: equ 0Fh
+mos_oscli: equ 10h
+mos_copy: equ 11h
+mos_getrtc: equ 12h
+mos_setrtc: equ 13h
+mos_setintvector: equ 14h
+mos_uopen: equ 15h
+mos_uclose: equ 16h
+mos_ugetc: equ 17h
+mos_uputc: equ 18h
+mos_getfil: equ 19h
+mos_fread: equ 1Ah
+mos_fwrite: equ 1Bh
+mos_flseek: equ 1Ch
+mos_setkbvector: equ 1Dh
+mos_getkbmap: equ 1Eh
+mos_i2c_open: equ 1Fh
+mos_i2c_close: equ 20h
+mos_i2c_write: equ 21h
+mos_i2c_read: equ 22h
+
+
+; FatFS file access functions
+;
+ffs_fopen: equ 80h
+ffs_fclose: equ 81h
+ffs_fread: equ 82h
+ffs_fwrite: equ 83h
+ffs_flseek: equ 84h
+ffs_ftruncate: equ 85h
+ffs_fsync: equ 86h
+ffs_fforward: equ 87h
+ffs_fexpand: equ 88h
+ffs_fgets: equ 89h
+ffs_fputc: equ 8Ah
+ffs_fputs: equ 8Bh
+ffs_fprintf: equ 8Ch
+ffs_ftell: equ 8Dh
+ffs_feof: equ 8Eh
+ffs_fsize: equ 8Fh
+ffs_ferror: equ 90h
+
+; FatFS directory access functions
+;
+ffs_dopen: equ 91h
+ffs_dclose: equ 92h
+ffs_dread: equ 93h
+ffs_dfindfirst: equ 94h
+ffs_dfindnext: equ 95h
+
+; FatFS file and directory management functions
+;
+ffs_stat: equ 96h
+ffs_unlink: equ 97h
+ffs_rename: equ 98h
+ffs_chmod: equ 99h
+ffs_utime: equ 9Ah
+ffs_mkdir: equ 9Bh
+ffs_chdir: equ 9Ch
+ffs_chdrive: equ 9Dh
+ffs_getcwd: equ 9Eh
+
+; FatFS volume management and system configuration functions
+;
+ffs_mount: equ 9Fh
+ffs_mkfs: equ A0h
+ffs_fdisk: equ A1h
+ffs_getfree: equ A2h
+ffs_getlabel: equ A3h
+ffs_setlabel: equ A4h
+ffs_setcp: equ A5h
+
+; File access modes
+;
+fa_read: equ 01h
+fa_write: equ 02h
+fa_open_existing: equ 00h
+fa_create_new: equ 04h
+fa_create_always: equ 08h
+fa_open_always: equ 10h
+fa_open_append: equ 30h
+
+; System variable indexes for api_sysvars
+; Index into _sysvars in globals.asm
+;
+sysvar_time: equ 00h ; 4: Clock timer in centiseconds (incremented by 2 every VBLANK)
+sysvar_vpd_pflags: equ 04h ; 1: Flags to indicate completion of VDP commands
+sysvar_keyascii: equ 05h ; 1: ASCII keycode, or 0 if no key is pressed
+sysvar_keymods: equ 06h ; 1: Keycode modifiers
+sysvar_cursorX: equ 07h ; 1: Cursor X position
+sysvar_cursorY: equ 08h ; 1: Cursor Y position
+sysvar_scrchar: equ 09h ; 1: Character read from screen
+sysvar_scrpixel: equ 0Ah ; 3: Pixel data read from screen (R,B,G)
+sysvar_audioChannel: equ 0Dh ; 1: Audio channel
+sysvar_audioSuccess: equ 0Eh ; 1: Audio channel note queued (0 = no, 1 = yes)
+sysvar_scrWidth: equ 0Fh ; 2: Screen width in pixels
+sysvar_scrHeight: equ 11h ; 2: Screen height in pixels
+sysvar_scrCols: equ 13h ; 1: Screen columns in characters
+sysvar_scrRows: equ 14h ; 1: Screen rows in characters
+sysvar_scrColours: equ 15h ; 1: Number of colours displayed
+sysvar_scrpixelIndex: equ 16h ; 1: Index of pixel data read from screen
+sysvar_vkeycode: equ 17h ; 1: Virtual key code from FabGL
+sysvar_vkeydown: equ 18h ; 1: Virtual key state from FabGL (0=up, 1=down)
+sysvar_vkeycount: equ 19h ; 1: Incremented every time a key packet is received
+sysvar_rtc: equ 1Ah ; 6: Real time clock data
+sysvar_spare: equ 20h ; 2: Spare, previously used by rtc
+sysvar_keydelay: equ 22h ; 2: Keyboard repeat delay
+sysvar_keyrate: equ 24h ; 2: Keyboard repeat reat
+sysvar_keyled: equ 26h ; 1: Keyboard LED status
+sysvar_scrMode: equ 27h ; 1: Screen mode
+sysvar_rtcEnable: equ 28h ; 1: RTC enable flag (0: disabled, 1: use ESP32 RTC)
+sysvar_mouseX: equ 29h ; 2: Mouse X position
+sysvar_mouseY: equ 2Bh ; 2: Mouse Y position
+sysvar_mouseButtons: equ 2Dh ; 1: Mouse button state
+sysvar_mouseWheel: equ 2Eh ; 1: Mouse wheel delta
+sysvar_mouseXDelta: equ 2Fh ; 2: Mouse X delta
+sysvar_mouseYDelta: equ 31h ; 2: Mouse Y delta
+
+; Flags for the VPD protocol
+;
+vdp_pflag_cursor: equ 00000001b
+vdp_pflag_scrchar: equ 00000010b
+vdp_pflag_point: equ 00000100b
+vdp_pflag_audio: equ 00001000b
+vdp_pflag_mode: equ 00010000b
+vdp_pflag_rtc: equ 00100000b
+vdp_pflag_mouse: equ 01000000b
+; vdp_pflag_buffered: equ 10000000b
+
+;
+; Macro for calling the API
+; Parameters:
+; - function: One of the function numbers listed above
+;
+ macro mos function
+ ld a,function
+ rst.lis $08
+ endmacro
diff --git a/palette.gpl b/palette.gpl new file mode 100644 index 0000000..460ee19 --- /dev/null +++ b/palette.gpl @@ -0,0 +1,260 @@ +GIMP Palette +Name: pallette.gpl +Columns: 16 +# +255 255 255 Untitled +255 25 63 Untitled +21 237 65 Untitled +0 97 253 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +0 0 0 Untitled +109 109 109 Untitled +170 170 170 Untitled +255 255 255 Untitled diff --git a/spritesheet.xcf b/spritesheet.xcf Binary files differnew file mode 100644 index 0000000..a77845b --- /dev/null +++ b/spritesheet.xcf diff --git a/times15.uf2 b/times15.uf2 Binary files differnew file mode 100644 index 0000000..8c76579 --- /dev/null +++ b/times15.uf2 diff --git a/winona.chr b/winona.chr Binary files differnew file mode 100644 index 0000000..ea461f8 --- /dev/null +++ b/winona.chr diff --git a/winona.chr.nmt b/winona.chr.nmt Binary files differnew file mode 100644 index 0000000..37f7c70 --- /dev/null +++ b/winona.chr.nmt |