Simple exploration Touhou fangame for Gameboy
- WLA-GB 9 or greater (Used for game code assembly)
- WLA Link (Puts the game together)
- GNU Make (Build system)
- Tiled 1.4.4 (For map editing)
The file organization is pretty garbage, but I'll try to explain what I can.
Both concept art, and the tile data needed to make the game. Extension .gb so Tile Molester picks up on them with less fiddling.
ROM and symbol file end up here. Safe to delete.
Tile data for the faces that appear in the text boxes in the game.
Folder for storing the built libraries during assembly. Safe to delete.
Stores the Tiled maps that comprise all screens, alongside concept art.
Tiledata.tsx
: Copy of Tiledata.gb for Tiled, so game maps look rightSystem.tsx
: A few colored tiles, so Collsions, Priority, and Visibility bits can be visualized (and drawn)
Stores the compiled versions of the non-library files during assembly. Safe to delete.
Stores the compiled versions of game assets. Safe to delete.
Brings the hills to life with the sound of music. All text files. Edit away! Midis for all (read: some) songs are also provided for your convenience. The MML compiler is non-optimizing, so each song is hand optimized for size. You have been warned.
All the assembly files for the game's code. Other asm files can be included as same directory (.include "file.asm"
), but resources are included as .include "rsc\name.ext"
Names are capitalized, except for the non-code .asm files for macros and the memory map. Since these are intended to be included, they're named to match.
This project leverages WLA's library abilities for almost every file; only Assemble.asm (containing the start and organization code) and vBlank2.asm (the screen's interrupt handlers) are compiled to objects.
I found including assembly files in assembly files to make building inefficient and difficult.
Stores the WLA generated Makefiles, so that dependencies are accurately reflected. Make sure you can make working builds before deleting! Due to a WLA bug, if some included files cannot be opened, the assembler issues an error, and doesn't output dependencies. GNU Make then blindly uses the created file, never bothering to update it. If you change any includes, you must build, delete this directory, then build again, to ensure everything works like it should. Man, I suck at Make. This bug is fixed in more recent versions of WLA-DX. There's a tiiiiny window where it still ocurrs. My advice is to update WLA-DX.
Helper programs needed to make the game, writtem by me.
MML6
: (My) Music Macro Language compiler used for all the songsLZ-MapConv
: Converts Tiled 1.4.1 formatted maps into a compressed compiled formatLZifier
: LZ compresses data, used for faces and tiledata There's also some miscy files herespecfile_marisa.cfg
: Tells LZifier the exact format of packets to output
Things I didn't know what to do with ended up here. Other than administrata, the linking file lives here. It can be safely deleted. The Storyline.txt is not engine, data, or art related, so it doesn't have a home
- If you're not on Win64, build the tools in Tools (tools not included sorry)
- Run
make
in the root folder- WLA not in your path? Use
make WLADIR=path/to/wla/dir
- Running Unix? Crack open the Makefile, do a find-replace from
\
to/
. Also redefine the commands specified near line 10 - Dependent tools not in
Tools
? Usemake TOOLDIR=path/to/tools
- Build environment won't check out, but you know it'll be OK anyways? Use
make force
make clean
is available for you- The Makefile has a few memory maps available for you. Building alone may not leave enough space, but using
make MAP=ALTMAP
ekes out a few extra bytes. If you're adding things in and know it's over size, usemake MAP=FATMAP
. The game will not run using this map!
- WLA not in your path? Use
For right now, the Tools folder contains win64 versions of tools I writ. make
and wla
will have to be provided by you.
The tools' sources are available in other repositories.
- The Makefile autogenerates the WLA linkfile as Link.link, adds all the pieces where they need to be, and throws it together.
- The two Make variables LIB0 and LIB1 place the libraries in banks 0 and 1. I tried to organize approximately on what would and would not be bankswitched, though it doesn't matter, because the project is 32k. (This can be thrown out the window with the altername memory maps)
- The symbol file is stripped of section information automatically. This is done in the Makefile.
- It is encouraged, though not necessary, to ensure every resource has a compiled variant, so everything included is in Source or rsc.
- The tools are not very well documented here (left the documentation in the source). This will get fixed in the distant future.
- The Makefile is written on and for a Windows machine (line endings, commands, etc.). The executables are win64 binaries. The data of the project is probably portable.
- The Makefile should rebuild submakes when the source file changes, which, while costly, ensures they don't fall out of date. Additionally, it should make Make build most the file's dependencies first.
- I dislike Make and disagree with how it does things and sees the world, so I likely have done a few things incorrectly there. If some change doesn't seem to be sticking, suspect the Makefile.
Outside game:
- Organize the game files
- Add `.gitignore`s for intermediate files
- Move the tools away from the repo
- Add the music midis in
- Release the "picnic" demo
- Write a prereq script
- Release video?
- Flash game to cartridge
- Manual booklet!
- Box art!
- Cartridge sticker!
- Assemble boxed game!
- Shrink wrap?
- Finish the last half-dozen cutscenes
- Script and write the last half-dozen text blobs
- Tie the cutscenes into the game at their intended points
- Rewrite Love-Colored Master Spark to be more fitting and smaller
- Rewrite the fairy behavior to be more RAM based and modular
- Reimplement danmaku
- Write up patterns for the fairies
- Write up patterns for Narumi
- Tie the patterns to their characters
- Clean up Narumi fight
-
Redo collision to be more robust and less slow! - Give up on optimizing collision speed and find a way to accept lag
- Add the hat interactions
-
PushStop Marisa when she's hit without her hat to protect her - Fix the danmaku hitboxes being stupid
- Add danmaku to the second ending
- Make danmaku animated