Update Week 5!
The end is in sight!
As always, the latest version of the ROM is attached. Please check it out, and let me know if you have any feedback!!
Performance Improvements
Most of this week was really slow, digging deep into performance problems. The biggest issue being a small hitch at the moment a brick lands, which was significant enough to cause the frame to go long, and sprites would flicker.
Profiling and optimizing game code is something I actually do quite regularly in my day job, but things are quite a bit different on the NES
.
Thanks to the people in this thread, and elsewhere, I was able to use PPU Mask for some rudimentary profiling. It resulted in these on screen colored lines representing the amount of time spent in a given chunk of code. Here is the break down of my sprite update routine.
After many hours of moving calls to POKE(0x2001...) all over my code, I was able to eliminate most of my sprite flicker issues. There is still one more during "hard drops" where the block travels the entire height of the screen in a single frame (checking collision along the way) but I can live with that one.
The performance work made up the majority of my week, but I also made 2 more big advancements.
Box Art
I found an artist (
@syrupneko) who was willing to create the box art for FROM BELOW! He has a really cool "comic strip" aesthetic which you don't see very often.
So without further adieu, here is the official box art for FROM BELOW!
And because I'm sure the web will massacre all the little details in his shading work, I will try to capture some zoomed in shots here:
New Gameplay
This most noticeable change to the game, is the new "real-time" Kraken gameplay I have added to the game. Previously, the Kraken would add garbage to the screen
every time a block landed. With this new version, the Kraken adds garbage to the screen
every 10 seconds.
This new real-time version challenges the player to get as much done as fast as possible; a race against the impending attack! It rewards fast, frantic play styles, and punishes overthinking. I think it feel much more distinct from traditional Tetris-like gameplay, and is much closer to what I originally envisioned.
Both this new "real time" mode, as well as the old "turn based" mode are available in the options menu. In addition there is also a "classic" mode with no garbage blocks.
Oh and I added movement to the tentacles so that they look more interesting but also have a tell right before their attack!
What's Next
As I said, the end is in sight! I think if I can get a solid week of dev in, next week will be the last major update, and then probably another week of bug fixes and odds and ends.
Here's my current TODO list:
Code: Select all
..::TODO::..
FEATURES:
//must have
* Non-Nintendo blocks.
* Option to return to main menu on game over.
* Pal swap based on time of day/night.
//should have
* Ability for player to "store" a block for later.
* Game over screen (polished).
* Fast music when tentacle is maxed out.
* Sound on hit tentacle.
//nice to have
* Screen shake on hit.
* Score for Classic mode.
* Option to turn of SFX.
* Hard drop trails
//investigate
* Multiple tentacles. - possibly if when reaching top they go into name table.
* Number of rows that hit the tentacle adds a delay to next attack.
* See if tentacles can be made to work with name tables.