Hihi, I thought I would make a thread here to document the work I'm putting into my SNES homebrew game, which I'm going to call the "Heartcore Project" for now. My background is C++ and Lua - this is the first time I've done anything in a standard assembly language.
The game will be a "platform shmup" or a "run 'n' gun" or probably more accurately "run and sling hearts at colorful animals". Gameplay inspiration comes from Alien Soldier and Sparkster SNES. Art and level tile format inspiration comes from Sonic CD which I first played at the age of 6.
Right now I'm still working on the core engine, but these are my accomplishments so far:
- Working toolchain
- Data-driven OAM handling routines with scrolling support
- NMI interrupt routine which I'm _pretty_ sure won't cause crashes or weirdness anymore
- "Cycles remaining" counter (need to look in the memory viewer to see it, but will help tremendously with optimization)
- Object coordinate system with 16.8 precision - 24-bit position and 16-bit velocity (up to 127 whole pixels per frame, far more than enough)
Stuff I need to work on next:
- Uploading the SNESGSS driver to the APU without freezing the game (I fixed the interrupt routine recently so I'll try this again)
- Level scrolling (Need to make level editor first to verify results, and honestly this one kinda scares me haha)
Bits and pieces of my current tech design spec:
- bsnes-plus 0.73+2 as the current reference emulator
- No cartridge assistance besides FastROM
- BG Mode 1, with BG3 used as both a scrolling layer and an "open air" HUD
- All game logic variables within the first 8kB of WRAM, and frequently-used variables in the first 256 bytes where possible. Remaining WRAM used to cache decompressed graphics for later DMAing
- First six audio channels for music, with channel 7 for player sounds and channel 8 for environment/enemy sounds. I hate it when sounds cancel out parts of the music. My ideal use also includes BRR streaming via HDMA for longer sound effects and I will most likely need to modify SNESGSS for this. Bleh.
I am using Aseprite to create the graphics. I use Renoise plus a number of synths (Synth1, Harmless, Drumatic 4) to generate samples and to find suitable looping points, something its built-in wave editor excels at.
I want to make good use of the SNES controller. One thing that really bothered me about Alien Soldier was that they crammed 6+ actions onto a three-button gamepad.
I'll write more about this later. For now, have a .sfc of my current engine progress featuring 128 moving ball sprites.
The game will be a "platform shmup" or a "run 'n' gun" or probably more accurately "run and sling hearts at colorful animals". Gameplay inspiration comes from Alien Soldier and Sparkster SNES. Art and level tile format inspiration comes from Sonic CD which I first played at the age of 6.
Right now I'm still working on the core engine, but these are my accomplishments so far:
- Working toolchain
- Data-driven OAM handling routines with scrolling support
- NMI interrupt routine which I'm _pretty_ sure won't cause crashes or weirdness anymore
- "Cycles remaining" counter (need to look in the memory viewer to see it, but will help tremendously with optimization)
- Object coordinate system with 16.8 precision - 24-bit position and 16-bit velocity (up to 127 whole pixels per frame, far more than enough)
Stuff I need to work on next:
- Uploading the SNESGSS driver to the APU without freezing the game (I fixed the interrupt routine recently so I'll try this again)
- Level scrolling (Need to make level editor first to verify results, and honestly this one kinda scares me haha)
Bits and pieces of my current tech design spec:
- bsnes-plus 0.73+2 as the current reference emulator
- No cartridge assistance besides FastROM
- BG Mode 1, with BG3 used as both a scrolling layer and an "open air" HUD
- All game logic variables within the first 8kB of WRAM, and frequently-used variables in the first 256 bytes where possible. Remaining WRAM used to cache decompressed graphics for later DMAing
- First six audio channels for music, with channel 7 for player sounds and channel 8 for environment/enemy sounds. I hate it when sounds cancel out parts of the music. My ideal use also includes BRR streaming via HDMA for longer sound effects and I will most likely need to modify SNESGSS for this. Bleh.
I am using Aseprite to create the graphics. I use Renoise plus a number of synths (Synth1, Harmless, Drumatic 4) to generate samples and to find suitable looping points, something its built-in wave editor excels at.
I want to make good use of the SNES controller. One thing that really bothered me about Alien Soldier was that they crammed 6+ actions onto a three-button gamepad.
I'll write more about this later. For now, have a .sfc of my current engine progress featuring 128 moving ball sprites.
Attachment:
File comment: Heartcore Project engine test 1: scroll (no tile reloading) + 128 sprites + HDMA + 16.8 coordinate system
heartcore_p1.sfc [256 KiB]
Downloaded 135 times
heartcore_p1.sfc [256 KiB]
Downloaded 135 times