Latest version: 0.5.2b "Flying Kobold"
Download: https://cosmicchipsocket.com/files/supe ... 0.5.2b.zip
This archive includes precompiled binaries, so please verify checksums!
Public git repo: https://github.com/cosmicchipsocket/superfeather
From the manual:
Superfeather is a framework designed to help you create fast and colorful 16-bit games for bsnes/higan, snes9x, and of course real hardware. It includes functionality common to many games, such as a gameloop, object handling system, and sprite management. The three core principles behind the framework are performance, flexibility, and convenience.
- Performance - The engine should run well. It should be able to scale to demanding genres such as shmups.
- Flexibility - The engine shouldn't try to make too many assumptions about the type of game running on top of it. Game code should be allowed to use as much or as little of the functionality as it needs. Engine tunables should be made available via constants.
- Convenience - The engine should provide working implementations of common and useful features such as metasprites and object management. Getting content into the game should be relatively straightforward, and tools made available for this purpose.
The following features are currently implemented:
- Gameloop - Functional VBlank and controller input handling, plus the ability to jump between self-contained scenes.
- Game Objects - Create and destroy objects, and give them unique behaviors.
- Sprites - Define OAM data for sprites, and then draw them at object positions.
- Metasprites and Animations - Define extended sprite data for larger, animated graphics.
- DMA Queue - Request VRAM transfers to occur during VBlank.
- Audio Driver - Use SNESGSS to play music and sound effects.
- Crash Handler - Debug BRK crashes and other errors you determine to be fatal.
- Buildsystem - Simple Lua-based buildsystem with easy configuration.
- Dynamic Sprites - Automatic sprite streaming for sprite animations that would not normally fit in VRAM.
- World System - Construct large scrolling levels out of metatiles, place and spawn objects.
- Collision Data Structures - Indexing for fast object-to-object collisions, necessary for shmups.
- Data Compression - Get the most out of your ROM size, with limited impact on loading times.
- Audio Improvements - Sample streaming, soundbanks, and precise tempo.
- Currently, if VBlank time is exhausted, the engine forces a fatal error. This is to help developers avoid the DMA/HDMA crash on CPU revision 1 model hardware. There are probably better ways to avoid this, but they need to be investigated.
- A Linux binary of GFX2SNES is not being shipped currently. For now it is wrapped in Wine.
- Heartcore Editor does not have an undo feature (yet). Please take care to save your files often.
- Communication with the SNESGSS driver may introduce significant latency, as much as 5-10% CPU, depending on timing and the state of the audio driver (e.g. whether music is playing). A future version of the framework will likely use non-blocking coroutine-based polling to work around this issue.
- The pseudo-RNG needs to be rewritten to be smaller and faster.
- The buildsystem does not currently generate a checksum for the resulting output.
Right now I have no idea how easy or hard this thing is to use, and I would love to continue developing the engine's features and API in response to user feedback, so feel free to try it out!