I recently figured that a lot of things can be optimized with some effort, so I decided to get serious on this, even if it's still my very first TAS project. I don't know if I can succeed in getting all the needed data by myself, so I ask if someone wants to help me. In my opinion, working on this TAS is worth the effort, just check my WIP movies and decide.
First, I'm still trying to figure what triggers the double jump bug that I use at 4515 and 4543. I already found that it doesn't trigger unless the player is not rising in altitude. This can be checked on value at address FFE4. In other words, this
signed value must be equal or greater than zero. This bug may be useful because it can be also triggered in third level.
Second, I haven't still found the X and the Y player subpixel addresses.
These two are the things I need help at the moment. And there are some project notes if someone is interested:
The most important thing I'm working on is luck manipulation of the Crusher gun. Its explotions depend on the value at address FFE7, wich is predictably altered for every of the four explosion following the impacting projectile of Crusher gun. Other events that alter this value are all the game animations wich use random variations, such the multiple explosions (like when a boss dies), and earthquake animations, wich are also triggered when using a Bomb, tough it isn't worth wasting them. So the only efficent way to luck manipulate the Crusher gun, is by firing extra bullets in advance. Btw, I don't think I need help on this, I'll just write a brute forcing script (I alread wrote and used some).
About the possible improvements: I found the Crusher gun to save a lot of time on the second mid-boss fight in the third level (the one that climbs the skyscraper) and thus is worth using it instead of the Fire gun, even if this will make lose some frames with the level boss fight. I also have to try using it aganist the second level boss and see if I can spare some Bombs for other uses, before and/or after the boss fight.
Lastly, here are the useful RAM values I found:
SystemID GB
C4B5 b s 0 System Bus Enemy 0 HP
C4B6 b s 0 System Bus Enemy 1 HP
C4B7 b s 0 System Bus Enemy 2 HP
C4B8 b s 0 System Bus Enemy 3 HP
C4B9 b s 0 System Bus Enemy 4 HP
C4BA b s 0 System Bus Enemy 5 HP
C4BB b s 0 System Bus Enemy 6 HP
C4BC b s 0 System Bus Enemy 7 HP
C4BD b s 0 System Bus Enemy 8 HP
C4BE b s 0 System Bus Enemy 9 HP
FF97 b u 0 System Bus Level X
FFDF b u 0 System Bus Player X
FFE0 b u 0 System Bus Player Y
FFE4 b s 0 System Bus Vertical Speed
FFE7 b u 0 System Bus Random Seed