Helious 2 Almost But Not Quite Full Playthrough
Duuqnd
0:00 / 0:00
Helious 2 Almost But Not Quite Full Playthrough
2 525 просмотров · 6 л. назад
Duuqnd
116 подписчиков
2 525 просмотров · 6 л. назад
A miracle, the admiral's prophecy has come true, it's later now, and there is more!
I realized I couldn't manage to make a video about what I've found out, so I wrote it in text instead.
https://quux.foo/articles/helious.html
EDIT 2022: It appears I've come across Sean Puckett. Now things are beginning to make sense. More later.
EDIT 2023: "Later" turned out later than intended, but it's still happening, don't worry.
The first few levels were played off-screen because I didn't think I'd be going through them all until I was already a bit into it. It seems to be impossible to beat all the levels since one of them doesn't seem to have a goal flag. I'll keep investigating this, but for the time being the game should be considered impossible.
It's unlikely that there's even an ending since the readme seems to imply that there isn't one.
Details about the cheat:
The entire game logic's memory fits in 64K (one segment). The game's heap is in the segment 0x0FBA. All other memory access is irrelevant to the gameplay. By making memory dumps with DOSBox Debug and comparing them in a custom Cheat Engine-like program I made I was able to find addresses that changed over time as I did things.
That way I found the velocity. I assumed that the player's data was stored in a struct, and so I started looking around for memory in that same area that changes with movement. After poking around a bit, I found the most significant byte of the air supply variable.
The air supply variable is an unsigned short stored at 0FBA:8CB1 (all values are little endian). However, the air supply is in different places for levels 5 and 9 (clockwise, top level is 1). On level 5, the air supply is at 0FBA:8D83 and for level 9 it's at 0FBA:90CB.
I don't know why there's three copies of the player's struct. It's a complete mystery to me. It happens in Helious 1 as well, although it's different levels that have different addresses.
I modified the memory breakpoint feature in DOSBox to freeze the memory values instead of pausing when they're changed. That way the air supply is always zero. The ball only explodes when the air supply is greater than or equal to 13000, so it uses underflow to make it puff out from too little air.
The knuckle joints on the tentacle thing don't indicate progress at all, as can be seen in the video. Once they even appeared when I went into a level and exited right away. I've also seen it in Helious 1. Like the three player structs, it's a complete mystery what causes them to appear.