Port of Aunt Flora's Mansion to Game Boy Advance.
Aunt Flora's Mansion is a cute PuzzleScript game made by anna anthropy. We thought it would be fun to port it to the GBA (with permission), so more people are exposed to the game, and as a hackable project for others.
Features:
- Puzzle, graphics, and sound effects from original game
- Undo and checkpoint saving
- New HD graphics and expanded viewport (live streams)
- Music track (Hungarian Dance no. 5)
- Permissible license to encourage hacking
My best score for total steps is 1213.
You will need an emulator to play the game, we suggest mGBA.
This project used gba-bootstrap as a starting point.
You will need to install the ARM GCC via:
# Mac OSX
brew install gcc-arm-embedded
# Linux
sudo apt install gcc-arm-none-eabi
# Windows
# Download from:
# https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloadsThen, run make:
makeAnd the ROM will be output to tgt/auntflora.gba.
The map is edited with Tiled.
There are two maps:
data/world_sd.json- standard definition (SD)data/world_hd.json- high definition (HD)
In order to edit the logic, you must edit both maps, so they are in sync with each other.
The tilemaps have layers:
screens- ignored; marks the screen boundaries for conveniencemarkers- special positions on the map that trigger actions (text popups, end of game, etc)objs- objects that are layered above the base layer; these can potentially movebase- base layer, this is static and never changes
During the build process, the SD map is considered authoritative, and the HD map will be compared against it to try and detect mistakes.
If you are changing the tilemap completely, then you should know there is some hardcoded behavior, based on the original map:
xform/xform.c, functionignore_warnings, which ignores warnings on the HD end screen, which was changed a lot from the SD end screensrc/main.c, functionmove_player, has hardcoded logic to expand the size of the Parlor and Kitchen markers
The tilesets are:
data/tiles_sd.png- standard definition (SD)data/tiles_hd.png- high definition (HD)
Notice that the SD tiles are 10x10, but with pixels doubled to match the original game's resolution of 5x5. The HD tiles are 12x12.
If you are changing the meaning of a tile, then you need to update a few locations:
xform/xform.c, constantsis_solid_sdandis_solid_hd, which are used to flag solid tiles, and show warningssrc/cellinfo.c, constantg_cellinfo, which contains flags of how to interpret each tile
Note that if a tile is solid (via is_solid_hd), then it should have the high bit set in
g_cellinfo (0x8000).
Lastly, if you're making a new game, you probably want to change the metadata of the GBA ROM file:
sys/gba/crt0.s, game title, currently set toAUNTFLORA\0\0\0sys/gba/crt0.s, game code, currently set toCAFE77
See GBATEK for more information on these values.
Casey live streamed a lot of her work on creating the HD graphics.
Check them out here if you're interested!