Analysis of Hiyoko zip in Gimmick!

What is Hiyoko zip?

"Hiyoko zip" is a glitch that allows Yumetaro to clip the ceilings.

www.youtube.com

There are the side-effects, such as not beinig able to climb up through some screens.

The effect lasts until game over or reset.

 

 

How it works

This glitch is caused by sprite overflow.

The relative RAM memory addresses are following:

f:id:becored:20160122113156p:plain

f:id:becored:20160123191348p:plain

The frame color shows what for the values are, and overlay color shows whose the values these are.

(e.g. $0090 = Yumetaro's status, $030D = #2 misc sprite's direction)

As you can see, Yumetaro's Y-hitbox value is next to a direction value. A direction value is initialized with 00 or 01 when a sprite is created.

The value of Yumetaro's Y-hitbox (for the objects) is initialized with E0 when you choose start or continue on the title screen, and it is usually not changed after that. If it can be low enough, he will be able to clip the ceilings (Hiyoko zip).

The idea of this glitch is: make the game try to create #9 misc sprite and cause sprite overflow intentionally, then initialize $0314 with 00 or 01.

Usually, the game checks the availability of sprite so it doesn't happen (this is why the enemy doesn't drop an item sometimes even though the score point is a repdigit).

However, in Hiyoko screen, the game tries to create the eggshell sprites whether there is the availability of sprite or not.

Now let's look at how these values change in Hiyoko screen.

The game creates a misc sprite (63 = egg / Hiyoko) in the screen.

f:id:becored:20160123152057p:plainf:id:becored:20160123141852p:plain

The game creates 2 misc sprites (60 = the right side of the eggshell, 61 = the left side of the eggshell) to make look like the egg hatches. Both of them are already dead when created, so $0093 and $0094 are initialized with D3 .

f:id:becored:20160123152243p:plainf:id:becored:20160123144840p:plain  

Bombing decreases the availability of sprite significantly because the explosion animation uses a lot of misc sprites (B4 = the small star), so the game tries to create eggshells (60, 61) with #8 and #9 misc sprites. (The game doesn't use #2 and #8 instead because of the continuity?)

f:id:becored:20160123160336p:plainf:id:becored:20160123160313p:plain

The game tries to initialize the values of #9 and it ends up messing up other values.

Therefore that causes not only Hiyoko zip but also some side-effects:

  • $009A = D3: Push Yumetaro down a bit
  • $00CC = D8: Swerve Yumetaro leftwards
  • $0314 = 01: Activate Hiyoko zip

The game fails to create the left side of eggshell after all.

f:id:becored:20160123164509p:plain

 

Why Yumetaro can't climb up through the screens

After Hiyoko zip is activated, Yumetaro can't climb up the screens. That's because Yumetaro's Y-hitbox is tiny.

Normally, Yumetaro's Y-hitbox is big enough that the blocks push him up.

(e.g. the second check point screen in level 7)

f:id:becored:20160123174453p:plain

However, when Yumetaro's Y-hitbox is tiny, the blocks can't push him up and he falls off just like hitting his head on the ceiling.

f:id:becored:20160123174710p:plain

 

f:id:becored:20160123180453p:plain zzz