Initial commit
authorLukas Krickl <lukas@krickl.dev>
Thu, 2 Apr 2026 05:11:18 +0000 (07:11 +0200)
committerLukas Krickl <lukas@krickl.dev>
Thu, 2 Apr 2026 05:11:18 +0000 (07:11 +0200)
44 files changed:
.gitattributes [new file with mode: 0644]
.gitignore [new file with mode: 0644]
BUGS.md [new file with mode: 0644]
LICENSE [new file with mode: 0644]
README.md [new file with mode: 0644]
TODO.md [new file with mode: 0644]
assets/maps/bank0.tsx [new file with mode: 0644]
assets/maps/l1.tmx [new file with mode: 0644]
assets/tiles/bank0.png [new file with mode: 0644]
assets/tiles/bank1.png [new file with mode: 0644]
assets/tiles/bank2.png [new file with mode: 0644]
assets/tiles/bank3.png [new file with mode: 0644]
gen/maps/l1.inc [new file with mode: 0644]
gen/tiles/bank0.inc [new file with mode: 0644]
gen/tiles/bank1.inc [new file with mode: 0644]
gen/tiles/bank2.inc [new file with mode: 0644]
gen/tiles/bank3.inc [new file with mode: 0644]
makefile [new file with mode: 0644]
src/actor.s [new file with mode: 0644]
src/d_actor.s [new file with mode: 0644]
src/d_map.s [new file with mode: 0644]
src/d_oam.s [new file with mode: 0644]
src/d_player.s [new file with mode: 0644]
src/d_tiles.s [new file with mode: 0644]
src/debug.s [new file with mode: 0644]
src/defs.s [new file with mode: 0644]
src/gen.s [new file with mode: 0644]
src/header.s [new file with mode: 0644]
src/hram.s [new file with mode: 0644]
src/hw.s [new file with mode: 0644]
src/input.s [new file with mode: 0644]
src/jmp.s [new file with mode: 0644]
src/macros.s [new file with mode: 0644]
src/main.s [new file with mode: 0644]
src/map.s [new file with mode: 0644]
src/mem.s [new file with mode: 0644]
src/player.s [new file with mode: 0644]
src/sys.s [new file with mode: 0644]
src/tiles.s [new file with mode: 0644]
src/update.s [new file with mode: 0644]
src/video.s [new file with mode: 0644]
src/wram.s [new file with mode: 0644]
tools/png2chr.py [new file with mode: 0755]
tools/tmx2map.py [new file with mode: 0755]

diff --git a/.gitattributes b/.gitattributes
new file mode 100644 (file)
index 0000000..56fc00e
--- /dev/null
@@ -0,0 +1,2 @@
+* text=auto
+*.png filter=lfs diff=lfs merge=lfs -text
diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..0064c5b
--- /dev/null
@@ -0,0 +1,78 @@
+# Build directory
+bin/
+obj/
+tags
+
+ Prerequisites
+*.d
+
+# Object files
+*.o
+*.ko
+*.obj
+*.elf
+
+# Linker output
+*.ilk
+*.map
+*.exp
+
+# Precompiled Headers
+*.gch
+*.pch
+
+# Libraries
+*.lib
+*.a
+*.la
+*.lo
+
+# Shared objects (inc. Windows DLLs)
+*.dll
+*.so
+*.so.*
+*.dylib
+
+# Executables
+*.exe
+*.out
+*.app
+*.i*86
+*.x86_64
+*.hex
+
+# Debug files
+*.dSYM/
+*.su
+*.idb
+*.pdb
+vgcore.*
+
+# Kernel Module Compile Results
+*.mod*
+*.cmd
+.tmp_versions/
+modules.order
+Module.symvers
+Mkfile.old
+dkms.conf
+
+compile_commands.json
+.cache/
+.clang_complete
+.clangd
+.session
+
+*.pyc
+
+pcq.gb
+pcq.mlb
+pcq.lst
+testpcq.gb
+testpcq.mlb
+testpcq.lst
+
+*.sav
+*.patch
+*.sym
+debugrc
diff --git a/BUGS.md b/BUGS.md
new file mode 100644 (file)
index 0000000..97fed4b
--- /dev/null
+++ b/BUGS.md
@@ -0,0 +1,2 @@
+# Known Bugs
+
diff --git a/LICENSE b/LICENSE
new file mode 100644 (file)
index 0000000..5e5b158
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,18 @@
+Copyright 2025-2026 Lukas Krickl (lukas@krickl.dev)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy 
+of this software and associated documentation files (the "Software"), 
+to deal in the Software without restriction, 
+including without limitation the rights to 
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, 
+and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS",
+WITHOUT WARRANTY OF ANY KIND, 
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/README.md b/README.md
new file mode 100644 (file)
index 0000000..7a3406a
--- /dev/null
+++ b/README.md
@@ -0,0 +1,38 @@
+# pocket conquest 
+
+## Table of content
+
+- [Installation](#Installation)
+- [Usage](#Usage)
+- [License](#License)
+- [Contributing](#Contributing)
+- [TODO](#TODO)
+
+## Installation
+
+To compile this game you will need a copy of `ulas`.
+Then simply run `make` to build the rom.
+
+## Usage
+
+This game is compatible with any gameboy emulator.
+
+### Building assets
+
+### Directory structure
+
+- src:  all source files
+- gen/gen.s: include file for all generated files
+- gen: generated source files based on assets
+
+### Module names
+
+- w_<name>: wram section
+- h_<name>: hram section
+- d_<name>: typedefs
+
+## License
+
+This program is distributed under the terms of the MIT License.
+
+
diff --git a/TODO.md b/TODO.md
new file mode 100644 (file)
index 0000000..6bd48d0
--- /dev/null
+++ b/TODO.md
@@ -0,0 +1,3 @@
+# TODO
+
+
diff --git a/assets/maps/bank0.tsx b/assets/maps/bank0.tsx
new file mode 100644 (file)
index 0000000..cf4bc12
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<tileset version="1.10" tiledversion="1.11.2" name="bank0" tilewidth="8" tileheight="8" tilecount="128" columns="16">
+ <image source="../tiles/bank0.png" width="128" height="64"/>
+</tileset>
diff --git a/assets/maps/l1.tmx b/assets/maps/l1.tmx
new file mode 100644 (file)
index 0000000..4f4ac03
--- /dev/null
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<map version="1.10" tiledversion="1.12.1" orientation="orthogonal" renderorder="right-down" width="20" height="14" tilewidth="8" tileheight="8" infinite="0" nextlayerid="2" nextobjectid="1">
+ <tileset firstgid="1" source="bank0.tsx"/>
+ <layer id="1" name="Tile Layer 1" width="20" height="14">
+  <data encoding="csv">
+2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,
+1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,
+1,1,2,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,
+1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+1,1,1,1,2,2,1,1,1,1,1,1,2,1,1,1,1,1,1,1,
+1,1,2,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,
+2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+</data>
+ </layer>
+</map>
diff --git a/assets/tiles/bank0.png b/assets/tiles/bank0.png
new file mode 100644 (file)
index 0000000..1cabed8
--- /dev/null
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:566d9dfa669fe97696f1462c0b3ca8f94847ed783bf6bfe7fb35b8831f8c1035
+size 474
diff --git a/assets/tiles/bank1.png b/assets/tiles/bank1.png
new file mode 100644 (file)
index 0000000..e1c88ee
--- /dev/null
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0b6d132c6b451f364d129b471bbc168fe73640563f2d3b6f49406fae690c28fe
+size 312
diff --git a/assets/tiles/bank2.png b/assets/tiles/bank2.png
new file mode 100644 (file)
index 0000000..5ba7710
--- /dev/null
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4e11371b989afedbd73be6b5d4901f30abb25a536d08d4539548450ea66a2cfc
+size 859
diff --git a/assets/tiles/bank3.png b/assets/tiles/bank3.png
new file mode 100644 (file)
index 0000000..1cabed8
--- /dev/null
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:566d9dfa669fe97696f1462c0b3ca8f94847ed783bf6bfe7fb35b8831f8c1035
+size 474
diff --git a/gen/maps/l1.inc b/gen/maps/l1.inc
new file mode 100644 (file)
index 0000000..83c28e8
--- /dev/null
@@ -0,0 +1,25 @@
+; this map was generated by tmx2map.py
+; flags
+.db 0
+; start y/x
+.db 0, 0
+; end y/x
+.db 0, 0
+; map name
+.db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+
+.db 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1
+.db 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0
+.db 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0
+.db 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0
+.db 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0
+.db 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0
+.db 0x0, 0x0, 0x1, 0x0, 0x0, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0
+.db 0x0, 0x0, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0
+.db 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0
+.db 0x0, 0x0, 0x0, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0
+.db 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0
+.db 0x0, 0x0, 0x0, 0x0, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0
+.db 0x0, 0x0, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0
+.db 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1
+
diff --git a/gen/tiles/bank0.inc b/gen/tiles/bank0.inc
new file mode 100644 (file)
index 0000000..200c0cd
--- /dev/null
@@ -0,0 +1,1153 @@
+; this tileset was generated by png2chr.py
+; tile 0
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 1
+.chr 03333330
+.chr 30000013
+.chr 30022213
+.chr 30222213
+.chr 30222213
+.chr 30222213
+.chr 31111113
+.chr 03333330
+; tile 2
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 3
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 4
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 5
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 6
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 7
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 8
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 9
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 10
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 11
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 12
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 13
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 14
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 15
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 16
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 17
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 18
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 19
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 20
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 21
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 22
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 23
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 24
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 25
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 26
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 27
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 28
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 29
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 30
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 31
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 32
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 33
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 34
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 35
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 36
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 37
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 38
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 39
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 40
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 41
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 42
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 43
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 44
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 45
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 46
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 47
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 48
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 49
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 50
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 51
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 52
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 53
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 54
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 55
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 56
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 57
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 58
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 59
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 60
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 61
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 62
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 63
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 64
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 65
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 66
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 67
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 68
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 69
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 70
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 71
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 72
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 73
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 74
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 75
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 76
+.chr 00000000
+.chr 00033333
+.chr 00322222
+.chr 03322222
+.chr 33222222
+.chr 32333223
+.chr 32333223
+.chr 32333223
+; tile 77
+.chr 00000000
+.chr 33300000
+.chr 11330000
+.chr 21133000
+.chr 22113300
+.chr 33211300
+.chr 33211300
+.chr 33211300
+; tile 78
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 79
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 80
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 81
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 82
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 83
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 84
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 85
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 86
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 87
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 88
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 89
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 90
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 91
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 92
+.chr 32222331
+.chr 32222332
+.chr 32222222
+.chr 33322222
+.chr 00323232
+.chr 00323232
+.chr 00333333
+.chr 00000000
+; tile 93
+.chr 11211300
+.chr 22211300
+.chr 22113300
+.chr 21133000
+.chr 31333000
+.chr 31333000
+.chr 33330000
+.chr 00000000
+; tile 94
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 95
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 96
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 97
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 98
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 99
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 100
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 101
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 102
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 103
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 104
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 105
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 106
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 107
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 108
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 109
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 110
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 111
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 112
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 113
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 114
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 115
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 116
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 117
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 118
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 119
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 120
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 121
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 122
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 123
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 124
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 125
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 126
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 127
+.chr 33333333
+.chr 32333333
+.chr 33333233
+.chr 33333333
+.chr 33233323
+.chr 33333333
+.chr 32332333
+.chr 33333333
diff --git a/gen/tiles/bank1.inc b/gen/tiles/bank1.inc
new file mode 100644 (file)
index 0000000..12887cb
--- /dev/null
@@ -0,0 +1,577 @@
+; this tileset was generated by png2chr.py
+; tile 0
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 1
+.chr 00000000
+.chr 02222220
+.chr 02232320
+.chr 02232320
+.chr 02222220
+.chr 02222220
+.chr 02222220
+.chr 00000000
+; tile 2
+.chr 00000000
+.chr 00022200
+.chr 00032320
+.chr 00032320
+.chr 00022220
+.chr 00022220
+.chr 00022200
+.chr 00000000
+; tile 3
+.chr 00010000
+.chr 01000000
+.chr 00000100
+.chr 02222220
+.chr 02232320
+.chr 02232320
+.chr 02222220
+.chr 00000000
+; tile 4
+.chr 00000000
+.chr 02222220
+.chr 02232320
+.chr 02232320
+.chr 02222220
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 5
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 6
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 7
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 8
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 9
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 10
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 11
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 12
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 13
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 14
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 15
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 16
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 17
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 18
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 19
+.chr 00000000
+.chr 01000010
+.chr 00010000
+.chr 02222220
+.chr 02232320
+.chr 02232320
+.chr 02222220
+.chr 00000000
+; tile 20
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 21
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 22
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 23
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 24
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 25
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 26
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 27
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 28
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 29
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 30
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 31
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 32
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 33
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 34
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 35
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 36
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 37
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 38
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 39
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 40
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 41
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 42
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 43
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 44
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 45
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 46
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 47
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 48
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 49
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 50
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 51
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 52
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 53
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 54
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 55
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 56
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 57
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 58
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 59
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 60
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 61
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 62
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 63
+.chr 13000000
+.chr 31000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
diff --git a/gen/tiles/bank2.inc b/gen/tiles/bank2.inc
new file mode 100644 (file)
index 0000000..6e347bd
--- /dev/null
@@ -0,0 +1,1153 @@
+; this tileset was generated by png2chr.py
+; tile 0
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 1
+.chr 00000000
+.chr 00030000
+.chr 00030000
+.chr 00030000
+.chr 00000000
+.chr 00000000
+.chr 00030000
+.chr 00000000
+; tile 2
+.chr 00000000
+.chr 00303000
+.chr 00303000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 3
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 4
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 5
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 6
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 7
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 8
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 9
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 10
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 11
+.chr 00000000
+.chr 00030000
+.chr 00030000
+.chr 03333300
+.chr 00030000
+.chr 00030000
+.chr 00000000
+.chr 00000000
+; tile 12
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00030000
+.chr 00330000
+.chr 00300000
+.chr 00000000
+; tile 13
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 03333300
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 14
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00033000
+.chr 00033000
+.chr 00000000
+; tile 15
+.chr 00000000
+.chr 00003000
+.chr 00030000
+.chr 00030000
+.chr 00300000
+.chr 00300000
+.chr 03000000
+.chr 03000000
+; tile 16
+.chr 00000000
+.chr 00333000
+.chr 03000300
+.chr 03003300
+.chr 03030300
+.chr 03300300
+.chr 03000300
+.chr 00333000
+; tile 17
+.chr 00000000
+.chr 00030000
+.chr 00330000
+.chr 00030000
+.chr 00030000
+.chr 00030000
+.chr 00030000
+.chr 00333000
+; tile 18
+.chr 00000000
+.chr 00333000
+.chr 03000300
+.chr 00003000
+.chr 00030000
+.chr 00300000
+.chr 03000000
+.chr 03333300
+; tile 19
+.chr 00000000
+.chr 03333000
+.chr 00000300
+.chr 00000300
+.chr 00333300
+.chr 00000300
+.chr 00000300
+.chr 03333000
+; tile 20
+.chr 00000000
+.chr 00033000
+.chr 00303000
+.chr 03003000
+.chr 03003000
+.chr 03333300
+.chr 00003000
+.chr 00003000
+; tile 21
+.chr 00000000
+.chr 03333300
+.chr 03000000
+.chr 03000000
+.chr 03333000
+.chr 00000300
+.chr 00000300
+.chr 03333000
+; tile 22
+.chr 00000000
+.chr 00333300
+.chr 03000000
+.chr 03000000
+.chr 03333000
+.chr 03000300
+.chr 03000300
+.chr 00333000
+; tile 23
+.chr 00000000
+.chr 03333000
+.chr 00000300
+.chr 00000300
+.chr 00003000
+.chr 00003000
+.chr 00030000
+.chr 00030000
+; tile 24
+.chr 00000000
+.chr 00333000
+.chr 03000300
+.chr 03000300
+.chr 00333000
+.chr 03000300
+.chr 03000300
+.chr 00333000
+; tile 25
+.chr 00000000
+.chr 00333000
+.chr 03000300
+.chr 03000300
+.chr 00333300
+.chr 00000300
+.chr 00003000
+.chr 00330000
+; tile 26
+.chr 00000000
+.chr 00033000
+.chr 00033000
+.chr 00000000
+.chr 00000000
+.chr 00033000
+.chr 00033000
+.chr 00000000
+; tile 27
+.chr 00000000
+.chr 00033000
+.chr 00033000
+.chr 00000000
+.chr 00000000
+.chr 00033000
+.chr 00003300
+.chr 00000000
+; tile 28
+.chr 00000000
+.chr 00003000
+.chr 00030000
+.chr 00300000
+.chr 03000000
+.chr 00300000
+.chr 00030000
+.chr 00003000
+; tile 29
+.chr 00000000
+.chr 03333300
+.chr 00000000
+.chr 00000000
+.chr 03333300
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 30
+.chr 00000000
+.chr 00300000
+.chr 00030000
+.chr 00003000
+.chr 00000300
+.chr 00003000
+.chr 00030000
+.chr 00300000
+; tile 31
+.chr 00000000
+.chr 00333000
+.chr 03000300
+.chr 00003000
+.chr 00030000
+.chr 00030000
+.chr 00000000
+.chr 00030000
+; tile 32
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 33
+.chr 00000000
+.chr 00333000
+.chr 03000300
+.chr 03000300
+.chr 03333300
+.chr 03000300
+.chr 03000300
+.chr 03000300
+; tile 34
+.chr 00000000
+.chr 03333000
+.chr 03000300
+.chr 03000300
+.chr 03333000
+.chr 03000300
+.chr 03000300
+.chr 03333000
+; tile 35
+.chr 00000000
+.chr 00333300
+.chr 03000000
+.chr 03000000
+.chr 03000000
+.chr 03000000
+.chr 03000000
+.chr 00333300
+; tile 36
+.chr 00000000
+.chr 03333000
+.chr 03000300
+.chr 03000300
+.chr 03000300
+.chr 03000300
+.chr 03000300
+.chr 03333000
+; tile 37
+.chr 00000000
+.chr 03333000
+.chr 03000000
+.chr 03000000
+.chr 03330000
+.chr 03000000
+.chr 03000000
+.chr 03333000
+; tile 38
+.chr 00000000
+.chr 03333000
+.chr 03000000
+.chr 03000000
+.chr 03330000
+.chr 03000000
+.chr 03000000
+.chr 03000000
+; tile 39
+.chr 00000000
+.chr 00333300
+.chr 03000000
+.chr 03000000
+.chr 03000000
+.chr 03033300
+.chr 03000300
+.chr 00333000
+; tile 40
+.chr 00000000
+.chr 03000300
+.chr 03000300
+.chr 03000300
+.chr 03333300
+.chr 03000300
+.chr 03000300
+.chr 03000300
+; tile 41
+.chr 00000000
+.chr 00333000
+.chr 00030000
+.chr 00030000
+.chr 00030000
+.chr 00030000
+.chr 00030000
+.chr 00333000
+; tile 42
+.chr 00000000
+.chr 00000300
+.chr 00000300
+.chr 00000300
+.chr 00000300
+.chr 03000300
+.chr 03000300
+.chr 00333000
+; tile 43
+.chr 00000000
+.chr 03000300
+.chr 03003000
+.chr 03030000
+.chr 03300000
+.chr 03030000
+.chr 03003000
+.chr 03000300
+; tile 44
+.chr 00000000
+.chr 03000000
+.chr 03000000
+.chr 03000000
+.chr 03000000
+.chr 03000000
+.chr 03000000
+.chr 03333300
+; tile 45
+.chr 00000000
+.chr 03000300
+.chr 03303300
+.chr 03030300
+.chr 03000300
+.chr 03000300
+.chr 03000300
+.chr 03000300
+; tile 46
+.chr 00000000
+.chr 03000300
+.chr 03000300
+.chr 03300300
+.chr 03030300
+.chr 03003300
+.chr 03000300
+.chr 03000300
+; tile 47
+.chr 00000000
+.chr 00333000
+.chr 03000300
+.chr 03000300
+.chr 03000300
+.chr 03000300
+.chr 03000300
+.chr 00333000
+; tile 48
+.chr 00000000
+.chr 03333000
+.chr 03000300
+.chr 03000300
+.chr 03333000
+.chr 03000000
+.chr 03000000
+.chr 03000000
+; tile 49
+.chr 00000000
+.chr 00333000
+.chr 03000300
+.chr 03000300
+.chr 03000300
+.chr 03030300
+.chr 03003000
+.chr 00330300
+; tile 50
+.chr 00000000
+.chr 03333000
+.chr 03000300
+.chr 03000300
+.chr 03333000
+.chr 03030000
+.chr 03003000
+.chr 03000300
+; tile 51
+.chr 00000000
+.chr 00333300
+.chr 03000000
+.chr 03000000
+.chr 00333000
+.chr 00000300
+.chr 00000300
+.chr 03333000
+; tile 52
+.chr 00000000
+.chr 03333300
+.chr 00030000
+.chr 00030000
+.chr 00030000
+.chr 00030000
+.chr 00030000
+.chr 00030000
+; tile 53
+.chr 00000000
+.chr 03000300
+.chr 03000300
+.chr 03000300
+.chr 03000300
+.chr 03000300
+.chr 03000300
+.chr 00333000
+; tile 54
+.chr 00000000
+.chr 03000300
+.chr 03000300
+.chr 03000300
+.chr 03000300
+.chr 00303000
+.chr 00303000
+.chr 00030000
+; tile 55
+.chr 00000000
+.chr 03000300
+.chr 03000300
+.chr 03000300
+.chr 03030300
+.chr 03030300
+.chr 03333300
+.chr 00303000
+; tile 56
+.chr 00000000
+.chr 03000300
+.chr 03000300
+.chr 00303000
+.chr 00030000
+.chr 00303000
+.chr 03000300
+.chr 03000300
+; tile 57
+.chr 00000000
+.chr 03000300
+.chr 03000300
+.chr 00303000
+.chr 00303000
+.chr 00030000
+.chr 00030000
+.chr 00030000
+; tile 58
+.chr 00000000
+.chr 03333300
+.chr 00000300
+.chr 00003000
+.chr 00030000
+.chr 00300000
+.chr 03000000
+.chr 03333300
+; tile 59
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 60
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 61
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 62
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 63
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 64
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 65
+.chr 00000000
+.chr 00333000
+.chr 03000300
+.chr 03000300
+.chr 03333300
+.chr 03000300
+.chr 03000300
+.chr 03000300
+; tile 66
+.chr 00000000
+.chr 03333000
+.chr 03000300
+.chr 03000300
+.chr 03333000
+.chr 03000300
+.chr 03000300
+.chr 03333000
+; tile 67
+.chr 00000000
+.chr 00333300
+.chr 03000000
+.chr 03000000
+.chr 03000000
+.chr 03000000
+.chr 03000000
+.chr 00333300
+; tile 68
+.chr 00000000
+.chr 03333000
+.chr 03000300
+.chr 03000300
+.chr 03000300
+.chr 03000300
+.chr 03000300
+.chr 03333000
+; tile 69
+.chr 00000000
+.chr 03333000
+.chr 03000000
+.chr 03000000
+.chr 03330000
+.chr 03000000
+.chr 03000000
+.chr 03333000
+; tile 70
+.chr 00000000
+.chr 03333000
+.chr 03000000
+.chr 03000000
+.chr 03330000
+.chr 03000000
+.chr 03000000
+.chr 03000000
+; tile 71
+.chr 00000000
+.chr 00333300
+.chr 03000000
+.chr 03000000
+.chr 03000000
+.chr 03033300
+.chr 03000300
+.chr 00333000
+; tile 72
+.chr 00000000
+.chr 03000300
+.chr 03000300
+.chr 03000300
+.chr 03333300
+.chr 03000300
+.chr 03000300
+.chr 03000300
+; tile 73
+.chr 00000000
+.chr 00333000
+.chr 00030000
+.chr 00030000
+.chr 00030000
+.chr 00030000
+.chr 00030000
+.chr 00333000
+; tile 74
+.chr 00000000
+.chr 00000300
+.chr 00000300
+.chr 00000300
+.chr 00000300
+.chr 03000300
+.chr 03000300
+.chr 00333000
+; tile 75
+.chr 00000000
+.chr 03000300
+.chr 03003000
+.chr 03030000
+.chr 03300000
+.chr 03030000
+.chr 03003000
+.chr 03000300
+; tile 76
+.chr 00000000
+.chr 03000000
+.chr 03000000
+.chr 03000000
+.chr 03000000
+.chr 03000000
+.chr 03000000
+.chr 03333300
+; tile 77
+.chr 00000000
+.chr 03000300
+.chr 03303300
+.chr 03030300
+.chr 03000300
+.chr 03000300
+.chr 03000300
+.chr 03000300
+; tile 78
+.chr 00000000
+.chr 03000300
+.chr 03000300
+.chr 03300300
+.chr 03030300
+.chr 03003300
+.chr 03000300
+.chr 03000300
+; tile 79
+.chr 00000000
+.chr 00333000
+.chr 03000300
+.chr 03000300
+.chr 03000300
+.chr 03000300
+.chr 03000300
+.chr 00333000
+; tile 80
+.chr 00000000
+.chr 03333000
+.chr 03000300
+.chr 03000300
+.chr 03333000
+.chr 03000000
+.chr 03000000
+.chr 03000000
+; tile 81
+.chr 00000000
+.chr 00333000
+.chr 03000300
+.chr 03000300
+.chr 03000300
+.chr 03030300
+.chr 03003000
+.chr 00330300
+; tile 82
+.chr 00000000
+.chr 03333000
+.chr 03000300
+.chr 03000300
+.chr 03333000
+.chr 03030000
+.chr 03003000
+.chr 03000300
+; tile 83
+.chr 00000000
+.chr 00333300
+.chr 03000000
+.chr 03000000
+.chr 00333000
+.chr 00000300
+.chr 00000300
+.chr 03333000
+; tile 84
+.chr 00000000
+.chr 03333300
+.chr 00030000
+.chr 00030000
+.chr 00030000
+.chr 00030000
+.chr 00030000
+.chr 00030000
+; tile 85
+.chr 00000000
+.chr 03000300
+.chr 03000300
+.chr 03000300
+.chr 03000300
+.chr 03000300
+.chr 03000300
+.chr 00333000
+; tile 86
+.chr 00000000
+.chr 03000300
+.chr 03000300
+.chr 03000300
+.chr 03000300
+.chr 00303000
+.chr 00303000
+.chr 00030000
+; tile 87
+.chr 00000000
+.chr 03000300
+.chr 03000300
+.chr 03000300
+.chr 03030300
+.chr 03030300
+.chr 03333300
+.chr 00303000
+; tile 88
+.chr 00000000
+.chr 03000300
+.chr 03000300
+.chr 00303000
+.chr 00030000
+.chr 00303000
+.chr 03000300
+.chr 03000300
+; tile 89
+.chr 00000000
+.chr 03000300
+.chr 03000300
+.chr 00303000
+.chr 00303000
+.chr 00030000
+.chr 00030000
+.chr 00030000
+; tile 90
+.chr 00000000
+.chr 03333300
+.chr 00000300
+.chr 00003000
+.chr 00030000
+.chr 00300000
+.chr 03000000
+.chr 03333300
+; tile 91
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 92
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 93
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 94
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 95
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 96
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 97
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 98
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 99
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 100
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 101
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 102
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 103
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 104
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 105
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 106
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 107
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 108
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 109
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 110
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 111
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 112
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 113
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 114
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 115
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 116
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 117
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 118
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 119
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 120
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 121
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 122
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 123
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 124
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 125
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 126
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 127
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
diff --git a/gen/tiles/bank3.inc b/gen/tiles/bank3.inc
new file mode 100644 (file)
index 0000000..200c0cd
--- /dev/null
@@ -0,0 +1,1153 @@
+; this tileset was generated by png2chr.py
+; tile 0
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 1
+.chr 03333330
+.chr 30000013
+.chr 30022213
+.chr 30222213
+.chr 30222213
+.chr 30222213
+.chr 31111113
+.chr 03333330
+; tile 2
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 3
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 4
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 5
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 6
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 7
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 8
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 9
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 10
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 11
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 12
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 13
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 14
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 15
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 16
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 17
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 18
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 19
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 20
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 21
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 22
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 23
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 24
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 25
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 26
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 27
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 28
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 29
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 30
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 31
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 32
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 33
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 34
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 35
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 36
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 37
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 38
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 39
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 40
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 41
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 42
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 43
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 44
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 45
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 46
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 47
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 48
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 49
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 50
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 51
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 52
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 53
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 54
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 55
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 56
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 57
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 58
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 59
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 60
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 61
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 62
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 63
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 64
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 65
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 66
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 67
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 68
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 69
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 70
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 71
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 72
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 73
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 74
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 75
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 76
+.chr 00000000
+.chr 00033333
+.chr 00322222
+.chr 03322222
+.chr 33222222
+.chr 32333223
+.chr 32333223
+.chr 32333223
+; tile 77
+.chr 00000000
+.chr 33300000
+.chr 11330000
+.chr 21133000
+.chr 22113300
+.chr 33211300
+.chr 33211300
+.chr 33211300
+; tile 78
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 79
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 80
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 81
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 82
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 83
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 84
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 85
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 86
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 87
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 88
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 89
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 90
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 91
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 92
+.chr 32222331
+.chr 32222332
+.chr 32222222
+.chr 33322222
+.chr 00323232
+.chr 00323232
+.chr 00333333
+.chr 00000000
+; tile 93
+.chr 11211300
+.chr 22211300
+.chr 22113300
+.chr 21133000
+.chr 31333000
+.chr 31333000
+.chr 33330000
+.chr 00000000
+; tile 94
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 95
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 96
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 97
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 98
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 99
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 100
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 101
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 102
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 103
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 104
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 105
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 106
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 107
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 108
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 109
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 110
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 111
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 112
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 113
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 114
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 115
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 116
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 117
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 118
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 119
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 120
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 121
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 122
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 123
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 124
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 125
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 126
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+.chr 00000000
+; tile 127
+.chr 33333333
+.chr 32333333
+.chr 33333233
+.chr 33333333
+.chr 33233323
+.chr 33333333
+.chr 32332333
+.chr 33333333
diff --git a/makefile b/makefile
new file mode 100644 (file)
index 0000000..8058367
--- /dev/null
+++ b/makefile
@@ -0,0 +1,27 @@
+NAME=pcq
+TEST_NAME=test$(NAME)
+AS=ulas
+FLAGS=-D DEBUG
+#SYMTYPE=sym
+SYMTYPE=mlb
+INCS=-I ./src -I ./gen
+
+bin:
+       $(AS) $(FLAGS) -o $(NAME).gb -l ${NAME}.lst -s $(NAME).$(SYMTYPE) -S $(SYMTYPE) $(INCS) src/main.s
+
+.PHONY: tiles
+tiles:
+       ./tools/png2chr.py assets/tiles/bank0.png > gen/tiles/bank0.inc
+       ./tools/png2chr.py assets/tiles/bank1.png > gen/tiles/bank1.inc
+       ./tools/png2chr.py assets/tiles/bank2.png > gen/tiles/bank2.inc
+       ./tools/png2chr.py assets/tiles/bank3.png > gen/tiles/bank3.inc
+
+.PHONY: maps
+maps:
+       ./tools/tmx2map.py assets/maps/l1.tmx > gen/maps/l1.inc
+
+.PHONY: clean
+clean:
+       rm -f ./gen/maps/*.inc
+       rm -f ./gen/tiles/*.inc
+
diff --git a/src/actor.s b/src/actor.s
new file mode 100644 (file)
index 0000000..c19affc
--- /dev/null
@@ -0,0 +1,267 @@
+       
+       ; gets the tile an actor is located at
+       ; inputs:
+       ;               de: actor ptr
+       ;               bc: y/x offset for position
+       ;       returns:
+       ;               b: tile id
+       ;               a: tile flags
+act_get_tile:
+       
+       ; load tile positions
+       ld hl, act_hi_y
+       add hl, de ; hl = actor y
+       ld a, [hl+]
+       add a, b ; offset by b
+#ifdef DEBUG
+       ldh [debug_col_point_y], a
+#endif
+       div8 a
+       
+       ; b = y tile
+       ld b, a
+       
+       inc hl ; move past lo x
+       ld a, [hl]
+       add a, c ; offset by c
+#ifdef DEBUG
+       ldh [debug_col_point_x], a
+#endif
+       div8 a
+
+       ; c = x tile
+       ld c, a
+
+       ; load map
+       ld hl, map
+       ld a, [hl+]
+       ld h, [hl]
+       ld l, a
+
+       ld de, map_dat
+       add hl, de
+
+       ; hl = map ptr
+       ld de, MAP_W
+       
+       ; save coordinate 
+       ld a, b
+       ldh [col_tile_y], a
+       ld a, c
+       ldh [col_tile_x], a
+
+       ; add MAP_W 
+       ; to map ptr y times
+       ld a, b
+       cp a, 0
+       jr z, @skip_y REL
+@y_loop:
+               add hl, de
+               dec b
+               jr nz, @y_loop REL
+@skip_y:
+
+       ld d, 0
+       ld e, c
+       add hl, de ; add x offset
+
+       ld a, [hl] ; load tile index
+       ld b, a ; b = tile index
+       
+       ; load tile flags
+       ld hl, tile_flags
+       ld e, a
+       add hl, de
+
+       ld a, [hl] ; laod tile flag
+
+       ; b = tile id
+       ; a = tile flags
+       ret
+       
+       ; checks actor for wall position
+       ; inputs:
+       ;               $1: y offset
+       ;               $2: x offset
+       ;               de: actor ptr
+       ; modifies:
+       ;               registers: all
+       ;               preserves: de
+       ;       sets col_flag++ if collision occured
+#macro act_move_wall_check
+       push de
+       ld b, $1 & 0xFF
+       ld c, $2 & 0xFF
+       call act_get_tile
+       and a, TILE_F_WALL
+       
+       pop de
+       
+       call nz, act_inc_col_flag
+#endmacro
+
+       ; increments col flag
+act_inc_col_flag:
+       ; if we called this col_flag should be 1
+       ldh a, [col_flag]
+       inc a
+       ldh [col_flag], a
+       ret
+
+       ; resets position 
+       ; if col_flag > 0
+       ; to tmp_lo/tmp_hi
+       ; inputs:
+       ;   hl: hl point to reset if wall
+       ;               tmp_lo/hi: original position
+       ;       returns:
+       ;               a: 0 no reset
+       ;               a: 1 reset
+act_move_reset:
+       ldh a, [col_flag]
+       cp a, 0
+       jr z, @no_reset REL
+
+       ldh a, [tmp_lo]
+       ld [hl+], a
+       ldh a, [tmp_hi]
+       ld [hl], a
+       
+       ld a, 1
+       ret
+@no_reset:
+       ld a, 0
+       ret
+
+       ; moves an actor up
+       ; inputs:
+       ;               de: actor ptr
+       ;                b: lo value to move by
+       ;                c: hi value to move by
+       ;       returns:
+       ;               a: 0 -> move was made
+       ;               a: 1 -> move failed
+act_move_up:
+       xor a, a
+       ldh [col_flag], a
+
+       ld hl, act_lo_y
+       add hl, de
+       
+       push hl
+
+       ; lo -= b
+       ld a, [hl]
+       ldh [tmp_lo], a
+       sub a, b
+       ld [hl+], a
+
+       ; hi -= carry
+       ld a, [hl]
+       ldh [tmp_hi], a
+       sbc a, c
+       ld [hl], a
+       
+       act_move_wall_check 0, 4
+       act_move_wall_check 0, 2
+       
+       pop hl
+       call act_move_reset
+
+       ret
+       
+       ; same as move up
+act_move_down:
+       xor a, a
+       ldh [col_flag], a
+
+       ld hl, act_lo_y
+       add hl, de
+
+       push hl
+
+       ; lo += b
+       ld a, [hl]
+       ldh [tmp_lo], a
+       add a, b
+       ld [hl+], a
+
+       ; hi += carry
+       ld a, [hl]
+       ldh [tmp_hi], a
+       adc a, c
+       ld [hl], a
+       
+       act_move_wall_check 6, 4
+       act_move_wall_check 6, 2
+
+       pop hl
+       call act_move_reset
+       ret
+
+       ; moves an actor left
+       ; inputs:
+       ;               de: actor ptr
+       ;                b: lo value to move by
+       ;                c: hi value to move by
+       ;       returns:
+       ;               a: 0 -> move was made
+       ;               a: 1 -> move failed
+act_move_left:
+       xor a, a
+       ldh [col_flag], a
+
+       ld hl, act_lo_x
+       add hl, de
+
+       push hl
+       
+       ; lo -= b
+       ld a, [hl]
+       ldh [tmp_lo], a
+       sub a, b
+       ld [hl+], a
+       
+       ; hi -= carry
+       ld a, [hl]
+       ldh [tmp_hi], a
+       sbc a, c
+       ld [hl], a
+               
+       act_move_wall_check 4, 1
+       act_move_wall_check 2, 1
+       
+       pop hl
+       call act_move_reset
+
+       ret
+
+       
+       ; same as move right
+act_move_right:
+       xor a, a
+       ldh [col_flag], a
+
+       ld hl, act_lo_x
+       add hl, de
+       
+       push hl
+
+       ; lo += b
+       ld a, [hl]
+       ldh [tmp_lo], a
+       add a, b
+       ld [hl+], a
+
+       ; hi += carry
+       ld a, [hl]
+       ldh [tmp_hi], a
+       adc a, c
+       ld [hl], a
+       
+       act_move_wall_check 4, 6
+       act_move_wall_check 2, 6
+
+       pop hl
+       call act_move_reset
+       ret
diff --git a/src/d_actor.s b/src/d_actor.s
new file mode 100644 (file)
index 0000000..c952563
--- /dev/null
@@ -0,0 +1,14 @@
+.se 0
+.de ACT_T_NULL, 1
+.de ACT_T_PLAYER, 1
+
+.se 0
+.de act_type, 1
+.de act_flags, 1
+       ; low and high positon
+.de act_lo_y, 1
+.de act_hi_y, 1
+.de act_lo_x, 1
+.de act_hi_x, 1
+.de act_size, 0
+
diff --git a/src/d_map.s b/src/d_map.s
new file mode 100644 (file)
index 0000000..0851c54
--- /dev/null
@@ -0,0 +1,17 @@
+
+#define MAP_H 14
+#define MAP_W 20 
+
+; struct map header
+.se 0
+.de map_flags, 1
+
+       ; start and end tile
+.de map_start_y, 1
+.de map_start_x, 1
+.de map_end_y, 1
+.de map_end_x, 1
+       ; string buffer with map name
+.de map_name, 16
+       ; lastly map data
+.de map_dat, MAP_W * MAP_H
diff --git a/src/d_oam.s b/src/d_oam.s
new file mode 100644 (file)
index 0000000..6f80bd1
--- /dev/null
@@ -0,0 +1,8 @@
+; oam memory layout 
+.se 0
+.de oamy, 1
+.de oamx, 1
+.de oamchr, 1
+.de oamflag, 1
+.de oamsize, 0
+
diff --git a/src/d_player.s b/src/d_player.s
new file mode 100644 (file)
index 0000000..8874cad
--- /dev/null
@@ -0,0 +1,8 @@
+#define player_soam shadow_oam
+
+#define PLAYER_TILE_IDLE 0x81
+#define PLAYER_TILE_HUG_LEFT_WALL 0x82
+#define PLAYER_TILE_FALL 0x93
+#define PLAYER_TILE_JUMP 0x84
+
+#define PLAYER_JUMP_TIMER 0x20
diff --git a/src/d_tiles.s b/src/d_tiles.s
new file mode 100644 (file)
index 0000000..31900ac
--- /dev/null
@@ -0,0 +1,2 @@
+.se 1
+.de TILE_F_WALL, 1
diff --git a/src/debug.s b/src/debug.s
new file mode 100644 (file)
index 0000000..afa9603
--- /dev/null
@@ -0,0 +1,49 @@
+#define DEBUG_SOAM_COL_POINT shadow_oam_end-oamsize
+#define DEBUG_SOAM_COL_TILE shadow_oam_end-oamsize*2
+
+       ; called by ASSERT macro if check
+       ; fails
+debug_assert_fail:
+       BREAK
+       ret     
+
+       ; updates debug information
+debug_update:
+       ; draw debug collision point
+       ld hl, DEBUG_SOAM_COL_POINT
+               
+       ldh a, [debug_col_point_y]
+       add a, OBJ_OFF_Y
+       ld [hl+], a
+
+       ldh a, [debug_col_point_x]
+       add a, OBJ_OFF_X
+       ld [hl+], a
+
+       ld a, 0xBF
+       ld [hl+], a
+
+       xor a, a
+       ld [hl], a
+       
+
+       ; draw debug collision tile
+       ld hl, DEBUG_SOAM_COL_TILE 
+
+       ldh a, [col_tile_y]
+       mul8 a
+       add a, OBJ_OFF_Y
+       ld [hl+], a
+
+       ldh a, [col_tile_x]
+       mul8 a
+       add a, OBJ_OFF_X
+       ld [hl+], a
+
+       ld a, 0xBF
+       ld [hl+], a
+
+       xor a, a
+       ld [hl], a
+
+       ret
diff --git a/src/defs.s b/src/defs.s
new file mode 100644 (file)
index 0000000..aa0081c
--- /dev/null
@@ -0,0 +1,12 @@
+#include "d_oam.s"
+#include "d_map.s"
+#include "d_actor.s"
+#include "d_player.s"
+#include "d_tiles.s"
+
+.def int OAMDMAFN = 0xFF80
+
+#define BGP 0b11100100
+
+#define STACK_BEGIN 0xDFFF
+#define EMPTY_TILE 0x00
diff --git a/src/gen.s b/src/gen.s
new file mode 100644 (file)
index 0000000..1f80afc
--- /dev/null
+++ b/src/gen.s
@@ -0,0 +1,16 @@
+tile_bank0:
+#include "tiles/bank0.inc"
+tile_bank0_end:
+tile_bank1:
+#include "tiles/bank1.inc"
+tile_bank2:
+#include "tiles/bank2.inc"
+tile_bank3:
+#include "tiles/bank3.inc"
+
+maps:
+
+map_l1:
+#include "maps/l1.inc"
+
+maps_end:
diff --git a/src/header.s b/src/header.s
new file mode 100644 (file)
index 0000000..2e11add
--- /dev/null
@@ -0,0 +1,22 @@
+; header
+    jp entry
+    nop
+logo:
+.db 0xCE, 0xED, 0x66, 0x66, 0xCC, 0x0D, 0x00, 0x0B, 0x03, 0x73, 0x00, 0x83, 0x00, 0x0C, 0x00, 0x0D
+.db 0x00, 0x08, 0x11, 0x1F, 0x88, 0x89, 0x00, 0x0E, 0xDC, 0xCC, 0x6E, 0xE6, 0xDD, 0xDD, 0xD9, 0x99
+.db 0xBB, 0xBB, 0x67, 0x63, 0x6E, 0x0E, 0xEC, 0xCC, 0xDD, 0xDC, 0x99, 0x9F, 0xBB, 0xB9, 0x33, 0x3E
+logo_end:
+
+.str "nj"
+.fill 0, 0x147 - $
+
+; cartride type
+; MBC1+RAM+Battery
+.db 0x03
+  ; rom size 32K
+.db 0x00
+  ; ram size 8k
+.db 0x02
+.fill 0, 0x14B - $
+.chksm
+.fill 0, 0x150 - $
diff --git a/src/hram.s b/src/hram.s
new file mode 100644 (file)
index 0000000..e544105
--- /dev/null
@@ -0,0 +1,20 @@
+#define HRAM 0xFF80
+
+; 0x80 - 0x90 are used by dma routines
+.org 0xFF90
+
+       ; tmp y and x registers
+tmp_lo: .adv 1
+tmp_hi: .adv 1
+
+col_tile_y: .adv 1
+col_tile_x: .adv 1
+       ; set to 0 if collision did not occur
+       ; set to 1 if collision did occur
+col_flag: .adv 1
+
+       ; draws collision point
+       ; in actual screen coordinates
+       ; y/x position
+debug_col_point_y: .adv 1
+debug_col_point_x: .adv 1
diff --git a/src/hw.s b/src/hw.s
new file mode 100644 (file)
index 0000000..4aa02f3
--- /dev/null
+++ b/src/hw.s
@@ -0,0 +1,122 @@
+; register defs
+
+#define SCRNW 159
+#define SCRNH 143
+
+; lcd registers 
+
+; lcd y 
+#define RLY 0xFF44
+#define RLYC 0xFF45
+#define RLCD 0xFF40
+
+#define LCDCF_BGON 0b00000001
+#define LCDCF_ON 0b10000000
+#define LCDCF_OBJON 0b00000010
+#define LCDCF_TILE_BANK 0b00010000
+#define LCDF_WINDOWON 0b00100000
+#define LCDF_OBJ_SIZE 0b00000100
+#define LCDF_WINBANKSELECT 0b01000000
+
+#define RSTAT 0xFF41
+
+#define STATF_LYC_INT_SELECT 0b01000000
+
+#define RBGP 0xFF47
+#define ROBP0 0xFF48
+#define ROBP1 0xFF49
+
+; screen scroll y and x
+#define RSCY 0xFF42
+#define RSCX 0xFF43
+
+; window y and x
+#define RWY 0xFF4A
+#define RWX 0xFF4B
+
+; P1: joy pad register
+#define RP1 0xFF00
+#define P1F5 0b00100000 ; get buttons 
+#define P1F4 0b00010000 ; get dpad
+
+; buttons 
+.def int BTNDOWN = 0x80
+.def int BTNUP = 0x40
+.def int BTNLEFT = 0x20
+.def int BTNRIGHT = 0x10
+.def int BTNSTART = 0x08
+.def int BTNSELECT = 0x04
+.def int BTNA = 0x01
+.def int BTNB = 0x02
+
+; obj off-screen offsets
+#define OBJ_OFF_X 8
+#define OBJ_OFF_Y 16
+
+; interrupts
+; interrupt flag 
+#define IF 0xFF0F
+; interrupt enabled
+#define IE 0xFFFF
+#define IVBLANK 0b00000001
+#define ILCD 0b00000010
+
+; location where code for dma needs to be memcyp'd to
+.def int DMAFN = 0xFF80 
+#define DMA 0xFF46
+
+#define OBJSMAX 40
+
+.def int P1FDPAD = P1F5
+.def int P1FBTN = P1F4
+.def int P1FNONE = P1F5 | P1F4
+
+; memory map 
+.def int VRAM = 0x8000
+.def int VRAM8800 = VRAM+0x0800
+.def int VRAM9000 = VRAM+0x1000
+
+.def int VIEW_W = 20
+.def int VIEW_H = 20
+.def int SCRN_W = 32
+.def int SCRN_H = 32
+
+.def int SCRN0 = 0x9800
+.def int SCRN0_UI = SCRN0 + SCRN_W * 16 
+
+.def int SCRN1 = 0x9C00
+.def int OAMRAM = 0xFE00
+.def int OBJSIZE = 4
+.def int OAMRAM_SIZE = OBJSMAX * OBJSIZE
+
+.def int OAM_FPRIO = 0b10000000
+#define OAM_FYFLIP 0b01000000
+#define OAM_FXFLIP 0b00100000
+#define OAM_DMG_PAL 0b00010000
+
+; MBC1 registers
+
+; write 0xA here to enable sram 
+#define MBC1_SRAM_ENABLE 0x0000
+#define MBC1_ROM_BANKSEL 0x2000
+#define MBC1_SRAM_BANKSEL 0x4000
+
+; audio registers
+#define AUDIO_CTRL 0xFF26
+#define MASTER_VOLUME 0xFF24
+
+#define CH1_SWEEP 0xFF10
+#define CH1_LEN_DUTY 0xFF11
+#define CH1_VOL_ENV 0xFF12
+#define CH1_PERIOD_LO 0xFF13
+#define CH1_PERIOD_HI_CTRL 0xFF14
+
+#define CH4_LENGTH 0xFF20
+#define CH4_VOLUME_ENV 0xFF21
+#define CH4_FREQ_RAND 0xFF22
+#define CH4_CTRL 0xFF23
+
+#define AUDIO_ALL_ON 0b10000000
+#define AUDIO_ALL_OFF 0b00000000
+
+
diff --git a/src/input.s b/src/input.s
new file mode 100644 (file)
index 0000000..5f97539
--- /dev/null
@@ -0,0 +1,78 @@
+
+       ; checks if an input was just pressed
+       ; in the last frame
+       ; inputs:
+       ;               b: button to check
+       ;       returns:
+       ;               a: button state
+       ;       flags
+#macro input_just_pressed
+.beginscope
+  ld a, [inputs]
+  ld c, a ; c = current inputs
+  ld a, [inputs_prev]
+  xor a, c ; xor with prev
+  ld c, a ; c = current xor prev 
+  ld a, [inputs]
+  and a, c ; give precdence to current inputs 
+  and a, b
+.endscope
+#endmacro
+
+  ; checks for a button press
+  ; inputs: 
+  ;   b: BUTTON
+  ; returns:
+  ;   a: button state
+       ;               flags
+#macro input_held
+        ld a, [inputs] 
+  and a, b 
+#endmacro
+
+       ; poll inputs
+  ; returns:
+  ;   new inputs in [curr_inputs]
+  ;   previous inputs in [prev_inputs]
+inputs_poll:
+  ld a, [inputs]
+  ld [inputs_prev], a
+
+  ld a, P1FDPAD
+  call poll_p1
+  swap a
+  ld b, a
+  
+  ld a, P1FBTN 
+  call poll_p1 
+  or a, b
+  
+  ld [inputs], a
+  ld a, b
+
+  ret 
+
+  ; poll p1 
+  ; inputs:
+  ;   a: P1 key matrix flag 
+  ; returns
+  ;   a: A0-3 -> inputs
+poll_p1:
+  ld [RP1], a
+  ; wait for values to become stable 
+  ldh a, [RP1]
+  ldh a, [RP1]
+  ldh a, [RP1]
+  ldh a, [RP1]
+  ldh a, [RP1]
+  ldh a, [RP1] ; last read counts
+  xor a, 0x0F
+  and a, 0x0F
+
+  ld d, a
+  ; reset P1F
+  ld a, P1FNONE 
+  ldh [RP1], a
+  ld a, d
+
+  ret 
diff --git a/src/jmp.s b/src/jmp.s
new file mode 100644 (file)
index 0000000..0a4541e
--- /dev/null
+++ b/src/jmp.s
@@ -0,0 +1,37 @@
+; RST $00
+; panic exception handler 
+rst_panic:
+  di
+@forever:
+  jp @forever
+.fill 0, 0x08 - $
+
+  ; rst 0008
+  ; simple call to hl
+sys_call_hl:
+  jp hl
+  
+
+.fill 0, 0x40 - $ 
+; interrupt vectors
+
+;=============
+; vblank 0x40
+;=============
+vec_vblank:
+       call vblank
+  reti
+
+.fill 0, 0x48 - $
+;=============
+; STA 0x48
+;=============
+vec_stat:
+       reti
+  ; disable objects
+  push af
+  ld a, [RLCD]
+  and a, ~LCDCF_OBJON & 0xFF
+  ld [RLCD], a
+  pop af
+  reti
diff --git a/src/macros.s b/src/macros.s
new file mode 100644 (file)
index 0000000..6abcc14
--- /dev/null
@@ -0,0 +1,51 @@
+
+
+; relative jump: jr <label> RELB 
+#define REL - $ - 2 & 0xFF 
+
+#ifdef DEBUG
+
+#define BREAK ld b, b
+
+       ; asserts the a register against $1
+       ; inputs:
+       ;               a: register
+       ;               $1: falg value to compate
+       ;               $2: expected value
+#macro ASSERT 
+.beginscope
+       cp a, $2
+       call $1, debug_assert_fail
+.endscope
+#endmacro
+
+#endif
+
+; no debug 
+#ifndef DEBUG
+
+#define BREAK
+
+#macro ASSERT
+#endmacro
+
+#endif
+
+
+  ; divides a regiser by 8 
+  ; inputs:
+  ;   $1: the register 
+#macro div8 
+  srl $1 ; / 2
+  srl $1 ; / 4
+  srl $1 ; / 8
+#endmacro
+       
+       ; multiplies a register by 8
+       ; inputs:
+       ;               $1: the register
+#macro mul8
+       add $1, $1 ; * 2
+       add $1, $1 ; * 4 
+       add $1, $1 ; * 8
+#endmacro 
diff --git a/src/main.s b/src/main.s
new file mode 100644 (file)
index 0000000..5f6c740
--- /dev/null
@@ -0,0 +1,60 @@
+#include "hw.s"
+#include "defs.s"
+#include "macros.s"
+#include "wram.s"
+#include "hram.s"
+
+.org 0x00
+.section prgrom
+#include "jmp.s"
+.fill 0, 0x100 - $
+#include "header.s"
+
+entry:
+
+init:
+       ld sp, STACK_BEGIN 
+  call disableinterrutpts
+       
+       call mem_init
+
+       call lcd_off
+       
+       call sys_init
+       call tiles_init
+       call video_init
+
+       call map_init
+       call player_init
+       
+       call lcd_on
+       call vblank_wait
+
+       call enableinterrupts
+
+main:
+@forever:
+       ; wait until frame ready is 0
+       ld a, [frame_ready]
+       cp a, 0
+       jr z, @forever REL
+               
+       call update
+
+       ; next frame can happen
+       xor a, a
+       ld [frame_ready], a
+       jr @forever REL
+
+
+#include "gen.s"
+#include "debug.s"
+#include "mem.s"
+#include "video.s"
+#include "update.s"
+#include "tiles.s"
+#include "sys.s"
+#include "input.s"
+#include "map.s"
+#include "actor.s"
+#include "player.s"
diff --git a/src/map.s b/src/map.s
new file mode 100644 (file)
index 0000000..7d98f24
--- /dev/null
+++ b/src/map.s
@@ -0,0 +1,58 @@
+
+       ; draws a single map tile
+#macro _map_draw_tile
+       ld a, [hl+]
+       ld [de], a
+       inc de
+#endmacro
+
+       ; inits the map system
+map_init:
+       ld de, map_l1
+       call map_load
+       ret
+
+       ; loads a map into SCRN0 memory
+       ; inputs:
+       ;               de: map header ptr
+map_load:
+       ld a, e
+       ld [map], a
+       ld a, d
+       ld [map+1], a
+
+       ld hl, map_dat
+       add hl, de
+       
+       ; b = loop counter
+       ld b, MAP_H
+       ld de, SCRN0
+@draw_row:
+               _map_draw_tile
+               _map_draw_tile
+               _map_draw_tile
+               _map_draw_tile
+               _map_draw_tile
+               _map_draw_tile
+               _map_draw_tile
+               _map_draw_tile
+               _map_draw_tile
+               _map_draw_tile
+               _map_draw_tile
+               _map_draw_tile
+               _map_draw_tile
+               _map_draw_tile
+               _map_draw_tile
+               _map_draw_tile
+               _map_draw_tile
+               _map_draw_tile
+               _map_draw_tile
+               _map_draw_tile
+
+               ; next row
+.rep i, 12, 1, inc de
+
+               dec b
+               jr nz, @draw_row REL
+
+       ret
diff --git a/src/mem.s b/src/mem.s
new file mode 100644 (file)
index 0000000..3710256
--- /dev/null
+++ b/src/mem.s
@@ -0,0 +1,76 @@
+
+       ; clears all memory
+       ; sets up dma
+mem_init:
+   ; clear wram
+  ld d, 0
+  ld hl, WRAM
+  ld bc, WRAMLEN
+  call memset
+
+       ld d, 0
+       ld hl, HRAM
+       ld bc, 0x7E
+       call memset
+
+
+       ; copy oam dma 
+  ld de, dma_shadow_oam 
+  ld hl, OAMDMAFN
+  ld bc, dma_shadow_oam_end - dma_shadow_oam
+  call memcpy
+
+       ret
+
+
+; copies memory from one location to another 
+; inputs:
+;   de: source
+;   hl: destination
+;   bc: length
+; returns:
+;   hl: hl+length
+;   de: de+length
+;   bc: 0
+memcpy:
+@loop:
+  ld a, [de]
+  ld [hl+], a
+
+  inc de
+  dec bc
+  ld a, b
+  or a, c
+  jp nz, @loop
+
+  ret
+
+  ; sets a memory location to a specific value 
+  ; inputs:
+  ;   hl: destination
+  ;   bc: length
+  ;    d: value 
+memset:
+@loop:
+  ld a, d
+  ld [hl+], a
+
+  dec bc
+  ld a, b
+  or a, c
+  jp nz, @loop
+  ret
+
+
+; dma shadow oam to oam
+; registers:
+;   hl, af, bc, de
+dma_shadow_oam:
+  ld a, shadow_oam >> 8  
+  ldh [DMA], a
+  ld a, 40 ; 160-cycle wait 
+@wait:
+  dec a
+  jr nz, @wait REL
+  ret 
+dma_shadow_oam_end:
diff --git a/src/player.s b/src/player.s
new file mode 100644 (file)
index 0000000..53d4443
--- /dev/null
@@ -0,0 +1,277 @@
+       ; creates a new player actor
+player_init:
+       ld a, 48
+       ld [player+act_hi_y], a
+       ld a, 64
+       ld [player+act_hi_x], a
+       
+       ld hl, player_draw_idle
+       call player_set_draw
+
+       ld hl, player_update_falling
+       call player_set_update
+
+       ret
+               
+       ; updates player
+player_update:
+       ld a, [player_update_routine]
+       ld l, a
+       ld a, [player_update_routine+1]
+       ld h, a
+       jp hl
+
+       
+       ; sets update routine
+       ; inputs:
+       ;               hl: new routine
+player_set_update:
+       ld a, l
+       ld [player_update_routine], a
+       ld a, h
+       ld [player_update_routine+1], a
+       ret
+       
+       ; sets player draw routine
+       ; inputs:
+       ;               hl: new routine
+player_set_draw:
+       ld a, l
+       ld [player_draw_routine], a
+       ld a, h
+       ld [player_draw_routine+1], a
+       ret
+       
+       ; falling state
+       ; jumping is not possible
+player_update_falling:
+       ld hl, player_draw_fall
+       call player_set_draw
+
+       call player_update_move_left_right
+       call player_apply_gravity
+       ret
+
+       ; updates the player object
+player_update_grounded:
+       ld hl, player_draw_idle
+       call player_set_draw
+
+       ; check inputs
+       call player_update_move_left_right
+
+       ; gravity
+       call player_apply_gravity
+
+       ld b, BTNA
+       input_just_pressed
+       call nz, player_go_to_jump_state
+
+       
+       ret
+
+       ; jumping state
+player_update_jump:
+       ld hl, player_draw_jump
+       call player_set_draw
+
+       call player_update_move_left_right 
+       call player_jump
+       
+       ld b, BTNA
+       input_held
+       ld hl, player_update_falling
+       call z, player_set_update
+
+
+       ret
+
+player_go_to_jump_state:
+       ld hl, player_update_jump
+       call player_set_update
+       ret
+
+       ; common update code for moving left and right
+       ; most update routines want to call this
+player_update_move_left_right:
+       ld b, BTNLEFT
+       input_held 
+       ld b, 128
+       ld c, 0
+       ld de, player
+       call nz, player_move_left
+
+       ld b, BTNRIGHT
+       input_held
+       ld b, 128
+       ld c, 0
+       ld de, player
+       call nz, player_move_right
+       ret
+
+       ; causes the player to jump
+       ; but only as long as jump timer > 0
+player_jump:
+       ld a, [player_jump_timer]
+       cp a, 0
+       jr z, @done REL
+
+       sub a, 1
+       ld [player_jump_timer], a
+
+       ld b, 200
+       ld c, 0
+       ld de, player
+       call act_move_up
+       cp a, 1
+       ret nz ; not wall
+       
+       ; if wall is hit set to 0
+       xor a, a
+       ld [player_jump_timer], a
+
+@done:
+       ld hl, player_update_falling
+       call player_set_update
+
+       ret
+       
+       ; player movement calls
+       ; same as act_move
+       ; but also modifies player_draw ptr
+player_move_left:
+       call act_move_left
+       cp a, 1
+       ld hl, player_draw_hug_left_wall
+       call z, player_set_draw
+       ret
+
+player_move_right:
+       call act_move_right
+       cp a, 1
+       ld hl, player_draw_hug_right_wall
+       call z, player_set_draw
+       ret
+
+       ; applies gravity by moving the player down
+player_apply_gravity:
+       ld b, 0
+       ld c, 1
+       call act_move_down
+       cp a, 1
+       jr nz, @falling REL ; not on ground
+
+       ld a, PLAYER_JUMP_TIMER
+       ld [player_jump_timer], a
+               
+       ; if on the ground go idle
+       ld hl, player_update_grounded
+       call player_set_update
+       ret
+@falling:
+       ld hl, player_update_falling
+       call player_set_update
+
+       ret
+
+       ; draw player to oam
+player_draw:
+       ld a, [player_draw_routine]
+       ld l, a
+       ld a, [player_draw_routine+1]
+       ld h, a
+       jp hl
+
+
+player_draw_idle:
+       ld hl, player_soam
+
+       ld a, [player+act_hi_y]
+       add a, OBJ_OFF_Y
+
+       ld [hl+], a
+       ld a, [player+act_hi_x]
+       add a, OBJ_OFF_X
+       ld [hl+], a
+
+       ld a, PLAYER_TILE_IDLE
+       ld [hl+], a
+
+       xor a, a
+       ld [hl], a
+
+       ret
+
+player_draw_fall:
+       ld hl, player_soam
+
+       ld a, [player+act_hi_y]
+       add a, OBJ_OFF_Y
+
+       ld [hl+], a
+       ld a, [player+act_hi_x]
+       add a, OBJ_OFF_X
+       ld [hl+], a
+
+       ld a, PLAYER_TILE_FALL
+       ld [hl+], a
+
+       xor a, a
+       ld [hl], a
+
+       ret
+
+player_draw_jump:
+       ld hl, player_soam
+
+       ld a, [player+act_hi_y]
+       add a, OBJ_OFF_Y
+
+       ld [hl+], a
+       ld a, [player+act_hi_x]
+       add a, OBJ_OFF_X
+       ld [hl+], a
+
+       ld a, PLAYER_TILE_JUMP
+       ld [hl+], a
+
+       xor a, a
+       ld [hl], a
+
+       ret
+
+player_draw_hug_left_wall:
+       ld hl, player_soam
+
+       ld a, [player+act_hi_y]
+       add a, OBJ_OFF_Y
+
+       ld [hl+], a
+       ld a, [player+act_hi_x]
+       add a, OBJ_OFF_X-2
+       ld [hl+], a
+
+       ld a, PLAYER_TILE_HUG_LEFT_WALL
+       ld [hl+], a
+
+       xor a, a
+       ld [hl], a
+       ret
+
+player_draw_hug_right_wall:
+       ld hl, player_soam
+
+       ld a, [player+act_hi_y]
+       add a, OBJ_OFF_Y
+
+       ld [hl+], a
+       ld a, [player+act_hi_x]
+       add a, OBJ_OFF_X+2
+       ld [hl+], a
+
+       ld a, PLAYER_TILE_HUG_LEFT_WALL
+       ld [hl+], a
+
+       ld a, OAM_FXFLIP
+       ld [hl], a
+       ret
diff --git a/src/sys.s b/src/sys.s
new file mode 100644 (file)
index 0000000..f76d7bb
--- /dev/null
+++ b/src/sys.s
@@ -0,0 +1,42 @@
+sys_init:
+  ; set up shadow IE
+  ld a, IVBLANK | ILCD
+  ld [shadow_ie], a
+
+       ret
+
+       ; enabels interrupts
+  ; writes shadow_ie to IE
+enableinterrupts:
+  ; enable interrupts 
+  ld a, [shadow_ie]
+  ld [IE], a
+  ei 
+  ret
+
+  ; disables interrupts
+  ; writes 0 to IE 
+  ; leaves shadow_ie as is
+disableinterrutpts:
+  ld a, 0
+  ld [IE], a
+  di
+  ret
+
+  ; turns off the lcd
+lcd_off:
+  ; *never* turn off LCD without waiting 
+  ; for vblank!
+  call vblank_wait
+  ; turn off lcd 
+  ld a, 0
+  ld [RLCD], a
+
+  ret
+
+  ; turns on the lcd 
+lcd_on:
+  ld a, LCDCF_ON | LCDCF_BGON | LCDCF_OBJON 
+  ld [RLCD], a
+
+  ret
diff --git a/src/tiles.s b/src/tiles.s
new file mode 100644 (file)
index 0000000..55a1b24
--- /dev/null
@@ -0,0 +1,57 @@
+       
+       ; inits the tileset
+       ; only call when the LCD
+       ; is disabled
+tiles_init:
+       ld de, tile_bank0
+       call tiles_load_bank0
+
+       ld de, tile_bank1
+       call tiles_load_bank1
+       
+       ld de, tile_bank2
+       call tiles_load_bank2
+
+       ld de, tile_bank3
+       call tiles_load_bank3
+
+       
+       ld a, BGP
+       ld [RBGP], a
+
+  ld a, 0b11100100 
+  ld [ROBP0], a
+
+  ld a, 0b11011000
+  ld [ROBP1], a
+
+       ret
+
+
+  ; loads tilesets
+  ; inputs:
+  ;   de: source
+tiles_load_bank0:
+  ld hl, VRAM 
+  ld bc, tile_bank0_end - tile_bank0
+  jp memcpy
+
+tiles_load_bank1:
+  ld hl, VRAM8800 
+  ld bc, tile_bank0_end - tile_bank0
+  jp memcpy
+
+tiles_load_bank2:
+  ld hl, VRAM8800+0x400 
+  ld bc, tile_bank0_end - tile_bank0
+  jp memcpy
+
+tiles_load_bank3:
+  ld hl, VRAM9000 
+  ld bc, tile_bank0_end - tile_bank0
+  jp memcpy
+
+       ; map of tile ids to tile flags
+tile_flags:
+       .db 0 ; 0x00
+       .db TILE_F_WALL ; 0x01
diff --git a/src/update.s b/src/update.s
new file mode 100644 (file)
index 0000000..2b401e3
--- /dev/null
@@ -0,0 +1,12 @@
+       ; updates main game logic
+update:
+       ld a, [frame_count]
+       inc a
+       ld [frame_count], a
+
+       call player_update
+       call player_draw
+
+       call debug_update
+
+       ret
diff --git a/src/video.s b/src/video.s
new file mode 100644 (file)
index 0000000..af4ba6e
--- /dev/null
@@ -0,0 +1,95 @@
+       
+       ; vblank hanlder
+vblank:
+       push af
+       push de
+       push hl
+
+        ; enable objects
+  ld a, [RLCD]
+  or a, LCDCF_OBJON
+  ld [RLCD], a
+       
+       ; skip vblank if frame is not yet ready
+       ld a, [frame_ready]
+       cp a, 1
+       jp z, @skip
+       
+       ; dma sprites
+       call OAMDMAFN
+
+  call inputs_poll
+
+       ; mark frame as ready
+  ld a, 1
+  ld [frame_ready], a
+
+@skip:
+       pop hl
+       pop de
+       pop af
+       ret
+
+       ; inits vidoe system
+video_init:
+         ; set up STAT interrupt
+  ld a, 144-8*4 ; top of window
+  ld [RLYC], a ; set LY compare
+  ld a, STATF_LYC_INT_SELECT
+  ld [RSTAT], a
+
+  ld hl, SCRN0
+  ld bc, 1024
+  ld d, EMPTY_TILE
+  call memset
+
+       ld hl, SCRN1
+  ld bc, 1024
+  ld d, EMPTY_TILE
+  call memset
+
+
+       ret
+
+  ; wait for next vblank
+vblank_wait:
+  ; disable interrupts
+  ld a, [IE]
+  push af
+  xor a, a
+  ld [IE], a
+
+@wait:
+  ld a, [RLY] 
+  cp a, 144
+  jp c, @wait 
+
+  ; restore interrupts
+  pop af
+  ld [IE], a
+
+  ret
+
+not_vblank_wait:
+  ; disable interrupts
+  ld a, [IE]
+  push af
+  xor a, a
+  ld [IE], a
+
+@wait:
+  ld a, [RLY]
+  cp a, 1
+  jp nz, @wait
+
+  ; restore interrupts
+  pop af
+  ld [IE], a
+
+  ret
+       
+       ; waits for vblank to not be enabled
+       ; and *then* waits for the next vblank
+next_vblank_wait:
+  call not_vblank_wait
+  jp vblank_wait
diff --git a/src/wram.s b/src/wram.s
new file mode 100644 (file)
index 0000000..2cd2049
--- /dev/null
@@ -0,0 +1,34 @@
+#define WRAM 0xC000
+#define WRAMLEN 0xFFF
+
+.org WRAM
+.section wram 
+
+; needs to be at the start or alinged properly for DMA!
+shadow_oam: .adv OBJSMAX * oamsize 
+shadow_oam_end:
+
+; shadow registers
+shadow_ie: .adv 1
+       
+       ; set to 1 if the next frame update can happen
+frame_ready: .adv 1
+       
+       ; counts up once a game frame
+frame_count: .adv 1
+
+
+inputs: .adv 1
+inputs_prev: .adv 1
+
+player: .adv act_size
+
+       ; ptr to player draw routine
+player_draw_routine: .adv 2
+       ; ptr to current player update state
+player_update_routine: .adv 2
+player_jump_timer: .adv 1
+
+       ; ptr to current map
+map: .adv 2
+
diff --git a/tools/png2chr.py b/tools/png2chr.py
new file mode 100755 (executable)
index 0000000..f7c3af6
--- /dev/null
@@ -0,0 +1,85 @@
+#!/usr/bin/env python
+
+# this script converts any image to a char map compatible with the 
+# assembler's .chr directive 
+
+import sys 
+import os
+from PIL import Image
+from itertools import product
+
+DW = 8
+
+if len(sys.argv) < 2:
+    print("Usage: png2chr.py <source> [8/16]")
+    sys.exit(-1)
+
+if len(sys.argv) == 3:
+    DW = int(sys.argv[2])
+
+
+# these colors are mapped
+# maps color tuple to .chr string 
+COLORS = {(0, 0, 0, 255): '3', (0, 0, 0, 0): '0', (107, 107, 107, 255): '1', (181, 181, 181, 255): '2', (255, 255, 255, 255): '0'}
+
+src = sys.argv[1]
+
+def tile(src, d):
+    img = Image.open(src)
+    w, h = img.size 
+    tile_index = 0
+    
+    # split the image into even tiles 
+    grid = product(range(0, h-h%d, d), range(0, w-w%d, d))
+    for i, j in grid:
+        box = (j, i, j+d, i+d)
+        cropped = img.crop(box)
+        cw, ch = cropped.size
+        cropped = cropped.load()
+
+        print('; tile ' + str(tile_index))
+        tile_index += 1
+        for y in range(0, ch):
+            print(".chr ", end='')
+            for x in range(0, cw): 
+                color = cropped[x, y]
+                if color in COLORS:
+                    print(COLORS[color], end='')
+                else:
+                    print('Unknown color: ' + str(cropped[x,y]))
+                    sys.exit(-1)
+            print("")
+
+def tile16(src, d):
+    img = Image.open(src)
+    w, h = img.size 
+    tile_index = 0
+    
+    # split the image into even tiles 
+    grid = product(range(0, h-h%d*2, d*2), range(0, w-w%d, d))
+    for i, j in grid:
+        box = (j, i, j+d, i+d*2)
+        cropped = img.crop(box)
+        cw, ch = cropped.size
+        cropped = cropped.load()
+
+        print('; tile ' + str(tile_index))
+        tile_index += 1
+        for y in range(0, ch):
+            print(".chr ", end='')
+            for x in range(0, cw): 
+                color = cropped[x, y]
+                if color in COLORS:
+                    print(COLORS[color], end='')
+                else:
+                    print('Unknown color: ' + str(cropped[x,y]))
+                    sys.exit(-1)
+            print("")
+
+
+print("; this tileset was generated by png2chr.py")
+
+if DW == 8:
+    tile(src, 8)
+else:
+    tile16(src, 8)
diff --git a/tools/tmx2map.py b/tools/tmx2map.py
new file mode 100755 (executable)
index 0000000..2e993d7
--- /dev/null
@@ -0,0 +1,67 @@
+#!/usr/bin/env python
+import sys 
+import os
+import xml.etree.ElementTree as ET
+
+TILE_SIZE = 8
+MAP_W = 20
+
+if len(sys.argv) < 2:
+       print("Usage: tmx2map.py <source> [tile_offset]")
+       sys.exit(-1)
+
+
+src = sys.argv[1]
+
+tile_offset = 1
+
+if len(sys.argv) > 2:
+       tile_offset = int(sys.argv[2])
+
+def print_bg_data(data):
+       split = data.split(",")
+
+       for i, b in enumerate(split):
+               end = ', '
+               if i % MAP_W == 0:
+                       print("\n.db ", end = '')
+
+
+               val = int(b.strip()) - tile_offset
+
+               if (i+1) % MAP_W  == 0:
+                       end = ''
+               
+               if i == len(split) - 1:
+                       end = '\n'
+               print(hex(val), end=end)
+       print("")
+
+def print_header():
+       print("; this map was generated by tmx2map.py")
+
+       print("; flags")
+       print(".db 0")
+       print("; start y/x")
+       print(".db 0, 0")
+       print("; end y/x")
+       print(".db 0, 0")
+       print("; map name")
+       print(".db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0")
+
+       pass
+
+def convert(src):
+       tree = ET.parse(src)
+       root = tree.getroot()
+
+       print_header()
+
+       for child in root:
+               if child.tag == "layer":
+                       name = child.attrib['name']
+                       for data in child:
+                               print_bg_data(data.text)
+
+convert(src)
+