View Page Source

Revision (current)
Last Updated by adelikat on 8/7/2022 9:06 PM
Back to Page

This page lists tricks and information for the game Hyper Lode Runner (GB).

%%TOC%%

!! Descend through a block

You can descend into a brick wall the moment it rematerializes with proper timing. You can climb inside the wall like you can climb a ladder. But if you touch the bottom, you cannot climb up anymore. You can dematerialize nearby walls and climb up again, however. This trick is a timesaver in some levels.

[http://i.imgur.com/d0L84w9.gif]

!! Destroy blocks next to a pit

Walk towards a pit while holding A/B (depending on direction) and walk the other direction on the correct frame in order to destroy a block beyond the pit:

[http://i.imgur.com/NlLzicB.gif]

You can also destroy the block you walk across:

[http://i.imgur.com/EtabIXu.gif]

---Both of these tricks depend on very precise positioning. Sometimes, due to how the game handles positioning, a bad starting location can render these tricks impossible. But the exact conditions behind this are still unknown.---

It seems these tricks do not work with "fall through" blocks. And the trick sometimes does not work after falling though the exact conditions are unknown.


!! Stay in 2nd room forever

Normally, when you enter the 2nd room of a level, there is a 1 minute timelimit where you have to go back to the 1st room. Otherwise the door closes and the level is unwinnable.

But you can stay in the 2nd room forever by pausing at the right times. Basicly, the game uses a global timer ($ffd4) and a timer for the 2nd room ($c049). The 2nd room timer depletes every 64 frames based on the global timer (when ''globaltimer % 64 == 0''). Since the globaltimer keeps running but the depletion doesn't occur when the game is paused, you can prevent the depletion by pausing on the correct frames.

!! Survive rematerializing blocks

Similarly to the trick above, you can use pausing in order to survive rematerializing blocks. The game would only check every 4th frame or so, whether you are inside a rematerializing block and kill you.

!! Luck-manipulation

There are a few luck-based elements in the game, but they all depend on the global timer ($ffd4).

* When an enemy walks through gold, he will steal it and keep it. Each enemy has a ''drop timer'' that tells them when to drop the stolen gold. They will only drop it if they are positioned exactly inside an empty space. If they are on a ladder, a rope or in between two empty spaces, the drop timer will keep resetting. %%% %%% Each time the reset occurs, the drop timer will be set to a random number (between 1~255) and count down again. The random number is dependent on the global timer.
* Enemy movement is dependent on the global timer. If the global timer is frozen, enemies don't move.
* Enemies that die will respawn somewhere at the top of the level, depending on the global timer.

Since all of these depend on the global timer and the global timer keeps running while the game is paused, you can effectively use pausing in order to manipulate luck.

!! Respawn points

Enemies that are killed will respawn in a certain respawn location. See this image:

[http://i.imgur.com/byefrxG.png]

For an enemy that is killed, he will respawn in the 2nd row, within the red marked spaces, in a certain space +- 4. Which certain space it ends up being is dependent on the global timer (which can be influenced by pausing) and a yet unknown factor which decides the scenario (it can be manipulated by dematerializing blocks). Respawn spaces can therefore be:

* Scenario one: 2, 6, 10, 14
* Scenario two: 3, 7, 11, 15
* Scenario three: 4, 8, 12, 16
* Scenario four: 5, 9, 13, 17

If the would-be respawn point is occupied already, the game has a ruling on what the space will end up being:
* If the respawn point is occupied, it will be the space to the right of it. If the respawn point is 5 but there is a block in that space, it will be 6 instead.
* If the respawn point is 17 and it is occupied, it will be 18. If that is occupied too, it will be 1. If that is occupied too, it will be 2, etc.
* If 1~18 are occupied, it will be the would-be respawn point + 2 horizontal spaces + 1 vertical space. The game first considers the 2nd up to the 17th space before the 1st and 18th one.
* If 1~18 are occupied and the row below it is occupied, it will be the would-be respawn point + 4 horizontal spaces + 2 vertical spaces.


!! Stolen gold

When a bad guy walks through a heap of gold, he will steal it and hold on to it. He will drop it only under these circumstances:

* His drop timer ($c019, $c029, $c039) reaches zero and he is perfectly inside an empty space. This is very precise. If he is inbetween two spaces, on a ladder or on a rope, he will not drop it. It seems that bad guys will not drop gold when they are currently falling. Also, gold that is dropped in this way can sometimes be re-grabbed on the next frame by the same bad guy (likely due to a programming oversight).
* When a bad guy falls into a dematerialized block, he will drop his gold in the spot above him.
* When a bad guy is killed by a rematerializing block and he is still holding on to a gold, that gold will be deleted from the game. This can happen if a bad guy walks into a dematerialized block from the side rather than falling into it.


!! Addresses

All addresses use the memory domain "System Bus".

||address||size||description||notes||
|c002| 2byte |player xpos| |
|c004| 2byte |player ypos| |
|c012 |2byte |enemy1 xpos| |
|c014 |2byte |enemy1 ypos| |
|c022 |2byte |enemy2 xpos| |
|c024 |2byte |enemy2 ypos| |
|c032 |2byte |enemy3 xpos| |
|c034 |2byte| enemy3 ypos| |
|c019 |1byte |enemy1 drop timer| tells when an enemy should drop their stolen gold|
|c029 |1byte |enemy2 drop timer| " |
|c039 |1byte |enemy3 drop timer| " |
|c049 |1byte |room2 timelimit| tells when the 2nd room door closes. Depletes every 64 frames depending on the global timer.|
|ffd4 |1byte |global timer|keeps looping through 0~255 and controls various aspects of the game. See the Luck-Manipulation section above.|
|ffb4 |1byte |gold left until level is cleared|When 0x00, turns to 0xff|
|ffcc |1byte|camx| |
|ffce |1byte|camy| |
|ffd2 |1byte|camx limitation| the camera position will not exceed this value. It restricts the game from scrolling. Used e.g. in level 16 room 2.|
|ffd3 |1byte|camy limitation| " |

!! Links

* [Forum/Topics/7010|Forum topic]
* [Forum/Posts/438331|Luascript]