good morning [introduction]
gimmick! ost
61 notes
·
View notes
To celebrate its 30th anniversary, I present to you the untold story of Mr Gimmick. For this video I interviewed Tomomi Sakai, the creator of the game, to bring you completely new information. Enjoy the art from all the wonderful artists I brought on! (Thumbnail by @rainbowheartunicorn)
https://youtu.be/S1aZxyCJgSc
27 notes
·
View notes
My Manga Musings video for Gimmick! is available to watch over on my Patreon! This month free members get to watch as well!
Thank you for the support!
6 notes
·
View notes
Gimmick! Quality of Life Mod
I made a ROM hack for Gimmick! that makes jumping way easier.
There are many situations where it feels like your jump input gets eaten, so I fixed that! Jumping feels way more consistent now.
Gimmick! is a really charming game with a great soundtrack. If you haven't played it before, now's as good of a time as any!
A more detailed explanation of the hack follows.
This is my first time dealing with assembly-language stuff since taking a college class for x86 assembly. It was really fun, actually!
Shoutout to Mesen's debugger for being really cool and user-friendly. Not that I have much experience using other emulator debuggers, but the feature that marks what code/data has and hasn't been called by the game was a real big help.
The reason Gimmick!'s jumps can feel so strict (to me) is because the game seems to have one or two frames of input delay (i did not do rigorous testing of this), combined with the fact that the player character starts falling off of platforms sooner than you might expect. This means that you can press jump while you're still on a platform, but by the time the game processes the input you've already been put into the air.
This is further exacerbated in situations where your character is accelerating down a slope or jumping off of a falling platform, as they may suddenly become airborne for a frame or two, meaning you can't jump if you happened to press A at that exact moment.
Occasionally there are also jumps that only have a couple frames of leniency (especially when using your star). It can be really hard to gauge exactly when your character will land on a surface in some situations, especially when combined with the slight input delay.
So my idea was to do two things: implement "coyote time" (being able to jump for a short period of time after you fall off of a platform), and implement a jump buffer that allows you to press jump a few frames before landing and still have it come out as soon as you land.
To do this, I found a seemingly-unused RAM address ($F1) and used it as a shift register. Every frame, the routine that checks whether or not you jumped pushes two bits into the shift register: one that tracks whether you pressed A this frame, and one that tracks whether you can jump this frame. So basically, when you press A, that will be saved for 3 frames afterwards, and when you are on the ground, the game will still allow you to jump for 3 frames after you go airborne. I think.
I had to add a couple of new subroutines to achieve this, and luckily I found two seemingly-unused areas of code that had just enough space for me to squeeze those subroutines in. I think they were exactly big enough or 1 byte larger... Granted, there were still more unused areas and I could have split those routines in half if I really needed to, but thankfully I didn't! Assembly programming is fun.
I think in total it amounts to about 44 bytes of new code, plus 46 bytes for the slightly-changed jump routine (which is a couple bytes shorter than it was originally). Somehow it surprises me that it's that small, but I guess it makes sense thinking about machine language bytes and not plaintext characters.
36 notes
·
View notes
Huevember Day 09: Kohei Nagase
Please read Gimmick! Please read Gimmick! Please read Gimmick! Please read Gimmick! Please-
6 notes
·
View notes