Veup provided their input for that here as the beginning of another movie. It doesn't sync because it has the wrong RNG seed, which I fixed here. On Desmume 0.9.11, veup's movie beats Marathon in 4522 frames.
Veup utilizes a timesave that I'm not seeing in the submission: 5z98qTHveupDQ5kL/veup wrote:
Allmost all frames saved in 200 lines mode are due to "landing recovery cancel" by pressing down arrow just before landing in level 1-17.
Projects:
Tetris DS
Genesis Toys: Let the Toy Wars Begin
Experienced Forum User, Published Author, Player
(56)
Joined: 11/28/2013
Posts: 120
New category wrong warps from a game over in MG1 to MH1, but it requires some setup.
Link to videoSummary from Eandis:
Eandis wrote:
1. Start up the game
2. Go to Competition mode, choose no monitors, start a new game
3. get to hydrocity 1, get any big ring, don't collect an emerald, get to boss, and drown on score tally for act 1 in act 2 glitch. Beat the level and reset console after score tally.
4. do that 3 more times but dont collect the big ring anymore
5. start a new file (timing starts now), get to hydro 1, die until 2 lives left, get any big ring, do act 1 in act 2 glitch
6. game over in marble garden
7. winner
drown on score tally for act 1 in act 2 glitch is a reference to
Link to video
Projects:
Tetris DS
Genesis Toys: Let the Toy Wars Begin
Experienced Forum User, Published Author, Player
(56)
Joined: 11/28/2013
Posts: 120
PoochyEXE wrote:
Sorry, please hold off on judging for a little bit, I spotted a couple optimizations that I think I can add in while still being able to resync the RNG state afterwards. I'll probably have a new version in a day or two.
Edit: Done! https://tasvideos.org/UserFiles/Info/637806096666496015 -- Please replace the movie file with this new one. I've included a changelog in the upload description. (Note that this still includes the fanfare at the end.)
Linked to a new encode. Also, now the RNG in 59 is even sillier. Love it
Projects:
Tetris DS
Genesis Toys: Let the Toy Wars Begin
Experienced Forum User, Published Author, Player
(56)
Joined: 11/28/2013
Posts: 120
Temporary encode:
Link to video
For reference, the RTA WR is 1:11:15 currently. My favorite level was 59 because it was so clean. Easy yes vote!
PoochyEXE wrote:
There's a special fanfare that plays upon clearing Round 99, but unfortunately letting it play out would lose about 5 seconds, so I simply skip it and proceed to the ending cutscene, although the time loss would be after the point when the timer would stop in an RTA speedrun. If the community and/or mods think the speed/entertainment tradeoff is worth it, it's easy to change the movie.
Though a Youtube encode with commentary is not available yet, here is a livestream where both myself and Stryder7x are commentating. https://www.twitch.tv/videos/145626330
Would you consider posting the Twitch VOD to YouTube? From my limited perspective, it had good commentary. The submission seems to cover everything else, just in case.
Suggested screenshots: 1, 2
Projects:
Tetris DS
Genesis Toys: Let the Toy Wars Begin
I wouldn't call it "maximum coins" because it is not comparable to [2977] NES Super Mario Bros. "maximum coins" by TEHH_083, HappyLee & CuteQt in 26:10.25. If it were, there would be a lot of back-tracking in each level to collect each ring multiple times. This could be accomplished by entering/exiting special stages, which causes all rings to respawn but does not reset the ring count, and you could potentially do this for each star post. I am glad the branch is "ring attack" and not "maximum rings".
Projects:
Tetris DS
Genesis Toys: Let the Toy Wars Begin
Experienced Forum User, Published Author, Player
(56)
Joined: 11/28/2013
Posts: 120
Baxter wrote:
morningpee wrote:
Now for the important question: Does this movie minimize the number of A presses necessary to complete the game?
It doesn't. The reset is done by using UP+A on the second controller, which could count as using the A button. As for using A on the first controller: you could grab more heart containers, obtain the magical sword and beat Ganon by using A 4 times instead of 16 times, which would be less A-presses (but obviously be slower).
Thank you for this. Needless to say, I voted "yes".
Projects:
Tetris DS
Genesis Toys: Let the Toy Wars Begin
Experienced Forum User, Published Author, Player
(56)
Joined: 11/28/2013
Posts: 120
It's great to see an improvement to this category! Now for the important question: Does this movie minimize the number of A presses necessary to complete the game?
Projects:
Tetris DS
Genesis Toys: Let the Toy Wars Begin
Experienced Forum User, Published Author, Player
(56)
Joined: 11/28/2013
Posts: 120
Warepire wrote:
You will need to do some sort of API replacement to achieve the necessary determinism required to do input replay etc across systems.
That is recreating a lot of things that linux containers have already achieved. Being more strict, requiring the TASer to simplify his own environment or play a game in a lxc may not be nice, but it simplifies the process of recreating Hourglass for Linux. Hourglass for Windows accepts most executables and fails 95% of the time.
Warepire wrote:
Thirdly ... how did you end up requiring sudo? gdb doesn't and it can do the same things.
Running everything in userspace might take awhile because you start using tricks like "LD_PRELOAD" before you hit any dead ends. If he starts top-down, using linux containers, he can keep requiring sudo without exposing his system.
Projects:
Tetris DS
Genesis Toys: Let the Toy Wars Begin
Experienced Forum User, Published Author, Player
(56)
Joined: 11/28/2013
Posts: 120
YamiAmarillo wrote:
feos wrote:
What does the difficulty level affect other than amount of Puppy Love rounds?
Easy gives you 3 rounds, normal is 4, and difficult is 5. Btw, any chance you could send me the Lua file you have for puppy love? I want to mess around with it.
I was debating using a Rom hack a friend made that gets rid of all the puppy loves, but I didn't know if that is allowed
Difficulty level also affects how fast Psy-Crow runs in the final stage. In the hardest difficulty, he runs faster than you.
Projects:
Tetris DS
Genesis Toys: Let the Toy Wars Begin
Experienced Forum User, Published Author, Player
(56)
Joined: 11/28/2013
Posts: 120
Great job, this blows other TASing attempts I've seen out of the water. Your RNG manipulation managed to make even Puppy Love watchable, EWJ2 speedruns never show the player getting mauled by the mother... multiple times.
Projects:
Tetris DS
Genesis Toys: Let the Toy Wars Begin
Experienced Forum User, Published Author, Player
(56)
Joined: 11/28/2013
Posts: 120
A major frustration I have come across while TASing this game has been the 2-frame delay between inputs and display. I have made a set of scripts that removes this delay. Use them
https://gitgud.io/scahfy/Tetris_DS_Visualizer/tree/0.1.1
Projects:
Tetris DS
Genesis Toys: Let the Toy Wars Begin
Experienced Forum User, Published Author, Player
(56)
Joined: 11/28/2013
Posts: 120
I will be interested to see how this plays out. For the first time, it might make sense to use console verifications as the primary publication videos, when possible. Console verification videos are generally camera footage of the whole playback setup, including the bot and the TV, to emphasize the process for the viewer's benefit. As a legal response, though, nothing but the game footage should be necessary.
Projects:
Tetris DS
Genesis Toys: Let the Toy Wars Begin
Experienced Forum User, Published Author, Player
(56)
Joined: 11/28/2013
Posts: 120
I am unable to watch addresses using the GDB stub in 0366 - Tetris DS (U).nds. When the watch is supposed to break execution, I instead get the following message in GDB:
Can't send signals to this remote system. SIGABRT not sent.
I can write a small GDB script that imitates watching and breaks when certain conditions are met, but that option runs very slowly. I am using arm-none-eabi-gdb on Arch Linux and running Desmume 0.9.11 in Wine.
Projects:
Tetris DS
Genesis Toys: Let the Toy Wars Begin
Experienced Forum User, Published Author, Player
(56)
Joined: 11/28/2013
Posts: 120
jlun2 wrote:
How exactly does this game's RNG work? Time/input/frame?
The initial RNG value comes directly from the system time.
The original algorithm that generates the first RNG value is too long to paste for how simple it is so I'll just say that the last word (at 0x207F3EC) is always 0x00000000, and the first word is the system time at frame 222, calculated from the replay file's rtcStartNew parameter as follows: 0x00000003 + 0x01000000 * year + 0x00100000 * month + 0x00008000 * day + 0x00000e10 * hour + 0x00000036 * minute + 0x00000001 * second. Year ranges from 0-99, month ranges from 1-12, day ranges from 1-31, hour ranges from 0-23, minute ranges from 0-59, and second ranges from 0-59. The offset 0x00000003 comes from the fact that frame 222 is about 3 seconds in. For example, May 25 2012 at 00:00:00 becomes 0x00000003 + 0x01000000 * 12 + 0x00100000 * 5 + 0x8000 * 25 + 0x00000e10 * 0 + 0x00000036 * 0 + 0x00000001 * 0 = 0x0c5c8003.
The RNG cycles once at frame 222 (Desmume 0.9.11), 30 times for each bag sequence that is generated, and one extra time between the first and second bags of the game.
Starting with the sequence {0, 1, 2, 3, 4, 5, 6}, each bag is generated by swapping bag elements a total of 15 times (once for every two RNG cycles). At 0x02028894, the first index is stored in r7 and the second is stored in r0.
Language: asm
0x02027280: 94 20 81 10 umullne r2, r1, r4, r0 ; where r0 = 7 and r4 is the first word of most recent calculation of the RNG
;... for the first RNG cycle, r1 -> r7
;... for the first RNG cycle, r1 -> r0
0x02028894: 07 30 86 e0 add r3, r6, r7 ; r6 points to the next bag of pieces
0x02028898: 00 10 86 e0 add r1, r6, r0
0x0202889c: 01 50 85 e2 add r5, r5, #1
0x020288a0: 04 20 d3 e5 ldrb r2, [r3, #4]
0x020288a4: 04 00 d1 e5 ldrb r0, [r1, #4]
0x020288a8: 0f 00 55 e3 cmp r5, #15
0x020288ac: 04 00 c3 e5 strb r0, [r3, #4]
0x020288b0: 04 20 c1 e5 strb r2, [r1, #4]
After rewriting the RNG algorithm in C and brute-forcing all system times, I can say that changing the movie's "rtcStartNew" date to May 25, 2012 makes veup's movies sync in Desmume 0.9.8. That is the only startup system time that produces the correct RNG.
Projects:
Tetris DS
Genesis Toys: Let the Toy Wars Begin