I definitely like this TAS a lot.
Some things about the TAS (Hetfield90 may have already mentioned this in the Youtube commentary):
- Nearly everything uses the RNG to varying degrees. That's why you see a lot of Freudenstachel shots (and jumping in boss rooms as well).
- The Zwei slide glitch in Schwer's stage occurs by placing Zwei level to a platform; then sliding onto the platform makes the game think you are still riding Zwei so you achieve very high speeds until you jump, turn around or take damage.
- Taking damage/having lower HP allows Grollschwert to do more damage. This is used against Sichte as well as Sepperin's second form.
- There is an upper route in Trauare's stage but it is slower.
- Getting four small weapon energy is faster than getting one big weapon energy; that's why there's all this manipulation for small weapon energy in the castle stages.
- In Sepperin 4, the lower route is faster as Spiritia. According to Hetfield90, the upper route is faster as Grolla.
- Hetfield90 shoots a lot of Freudenstachel in Iris 1 for Bosspider manipulation. Speaking of which, it is possible to hit Bosspider three times per round to kill it in two cycles. Start with Zwei to gain enough height to hit it as soon as possible; Bosspider must come down as fast as possible but have three wire crossings at the fifth row (from the top) or below to get three hits in. For the second cycle, get as high as possible using Eins, then hit it three times; the wires just have to be anything that allow enough time for three hits.
Also some things about using Hourglass with RKS that Hetfield90 informed me about:
- There are a few graphical encode glitches in Hetfield90's encode. I don't know if they are avoidable.
- Hetfield90 used Virtualbox+WinXP to run Hourglass+RKS and TAS in it. He also was able to run hourglass+RKS in his Windows 7, but I was unable to when I tried (may be computer differences).
- Hourglass+RKS crashes when a previous room is loaded in some cases. For example, after reaching Bosspider's room, loading a previous room causes a crash.
Hetfield90 mentioned something about me and RNG. I'll explain about the RNG part:
- I strongly suspect that the RNG uses
32-bit Mersenne Twister (MT19937). I have not verified it yet but my guess is based on the recurrence of the number 624 in the implementation of this RNG, which stores and uses 624 4-byte numbers. According to Wikipedia, in MT19937, every sequence of 624 4-byte numbers appears an equal number of times in a period (period is 2^19937-1) except for all-zero, which appears once less.
- Hetfield90 mentioned something about changes to an earlier stage causing completely different RNG for later stages; I don't know what causes this.
- My likely guess as to the implementation of how RNG is used is some kind of rand(n) function that generates a random integer between 0 and n-1. The likely implementation is to take a 4-byte number (between 0 and 2^32-1), multiply it by n, divide by 2^32, and round down to make it as normally distributed as possible.
- Based on the above assumption and testing by changing memory values, item drop works as follows, when an enemy is killed (RNG numbers are hexadecimal):
1) Get RNG value. If RNG>=40000000 (rand(100)>=25), then no item drop. Otherwise,
2) Get another RNG value. If RNG<=51EB851E (rand(100)<32), then small health drop. Otherwise,
3) Get another RNG value. If RNG<=6B851EB8 (rand(100)<42), then big health drop. Otherwise,
4) Get another RNG value. If RNG<=BD70A3D7 (rand(100)<74), then small weapon drop. Otherwise,
5) Get another RNG value. If RNG<=F0A3D70A (rand(100)<94), then big weapon drop. Otherwise, 1-up drop.
- Bosspider wire RNG is as follows (RNG numbers are hexadecimal):
*) Get 8 or more RNG values to determine 8 wires. The RNG values determine the wires as in the following chart (value of rand(30) in brackets):
LEFT MIDDLE RIGHT
| | | |
|00000000-08888888(00)|55555556-5DDDDDDD(10)|AAAAAAAB-B3333333(20)|
|08888889-11111111(01)|5DDDDDDE-66666666(11)|B3333334-BBBBBBBB(21)|
|11111112-19999999(02)|66666667-6EEEEEEE(12)|BBBBBBBC-C4444444(22)|
|1999999A-22222222(03)|6EEEEEEF-77777777(13)|C4444445-CCCCCCCC(23)|
|22222223-2AAAAAAA(04)|77777778-7FFFFFFF(14)|CCCCCCCD-D5555555(24)|
|2AAAAAAB-33333333(05)|80000000-88888888(15)|D5555556-DDDDDDDD(25)|
|33333334-3BBBBBBB(06)|88888889-91111111(16)|DDDDDDDE-E6666666(26)|
|3BBBBBBC-44444444(07)|91111112-99999999(17)|E6666667-EEEEEEEE(27)|
|44444445-4CCCCCCC(08)|9999999A-A2222222(18)|EEEEEEEF-F7777777(28)|
|4CCCCCCD-55555555(09)|A2222223-AAAAAAAA(19)|F7777778-FFFFFFFF(29)|
| | | |
*) If any wire determined by this method conflicts with a previously determined wire by being the same or directly to its left or right, then it is ignored and the next RNG value is used instead.
*) The game keeps using RNG values until 8 wires are determined.
By the way, I support Hetfield90's decision to go for in-game time. The previous TAS had its funny moment with the loophole abuse; now I get to see what the final boss looks like TASed. Sure, you don't get to hear as much music or see all of Iris's attacks, but that's not what a TAS is for.
Edit: Oh, forgot to mention. I used
Cheat Engine to figure out the RNG. Some addresses I know of are:
61DAB4 (rks.exe+21DAB4) Lives
61DB44 (rks.exe+21DB44) HP
BCC8F0 (rks.exe+7CC8F0) RNG