Posts for merrp


merrp
She/Her
Experienced Forum User, Published Author, Player (19)
Joined: 7/31/2019
Posts: 56
Yeah, the double corruption is performed on Marshtomp, the PID, TID & SID were manipulated so that two corruptions (the one that sets bit 6) on the PID and ID would swap EVs for moves to acquire the glitch move. I haven't found a better glitch move than 0x3110 on JP, unfortunately getting it requires the extra Protein and HP Ups. The two Speed EVs are to make the second glitch move not crash the game--without them, you can't even open the move select, because its name is so long it causes an overflow, I think. A similar manipulation can be done on non-Japanese versions, but the bootstrap code (the animation script and address to jump to) has to be written with something other than nicknames, since the bytes required aren't available. I explored using Pokemon EVs to write the animation code, but it didn't seem practical. Glitch items can also be used if available, but would of course need a different glitch move to target them. Glitch move 0x3110 targets 0x02330000, RNG'd to be Abra's nickname. The code on Abra is: 1F 50 00 33 02 (FF), which calls CreateSoundTask and jumps to 0x02330050. The code on the Poochyena is an 8 instruction loop that calls the software interrupt for VBlank, reads from the joypad and writes the lower 8 bits consecutively into memory, and loops back if L&R are not pressed. When L&R are pressed it jumps to the start of the code written. The code I ended up inputting is a simple credits warp but is very easily changed. So if I set up the party order as KO Poochyena - KO Poochyena - Marshtomp - Abra, I'll still be able to perform the pomeg glitch? Using the menu to switch is likely much faster than an extra battle, and I can just do it when I already use the menu on Route 106 to teleport.
merrp
She/Her
Experienced Forum User, Published Author, Player (19)
Joined: 7/31/2019
Posts: 56
There's still a few, mostly minor time saves in this, but I did make it to the end. This beats the game with 5 badges with arbitrary code execution. Final input at 231382 frames, 01:04:33.80 https://www.youtube.com/watch?v=p0Nyrp8yPOw Link to video List of things I know of and am likely going to fix: - Frames can be saved waiting for Wally's Ralts by spending more time in the battle with the Youngster beforehand. - I recently wrote a 7 instruction payload that is a little more difficult to work with, but requires one less Poochyena, so I will be updating the later parts of the run with that. - Am not sure if I can skip the wild battle just before Pomeg glitching, or if there is a setup without the extra battle + fleeing. The setup for Pomeg glitch is one of my weaker areas of knowledge - Maybe some minor time saves with better movement in a few areas. - Haven't tested it, but I might be able to knock out 1 Ralts with Marshtomp late in the run instead of two Zigzagoon and it'll still work. This is done to change one of the glitch moves Marshtomp gets to not crash the game. Alternatively, I could knock out a pokemon that yields 2 Speed EVs somewhere else, maybe. - It may be worthwhile to catch 1 Oddish instead of Poochyena and use Sweet Scent to RNG for an encounter that gives good corruption offsets, since the wait times can be upwards of a few seconds otherwise. Again, I'd have to test it.
merrp
She/Her
Experienced Forum User, Published Author, Player (19)
Joined: 7/31/2019
Posts: 56
The RNG is in fact reseeded right after the trainer name is confirmed--it's just difficult to see at 60 fps. The value it's seeded with is precise more or less to the CPU cycle (it uses one of the GBA's timer registers, which starts when the naming screen is entered). It can be influenced somewhat by pressing more or fewer buttons in the naming screen, as pressing buttons takes more/less cycles than not pressing any. Of course, waiting also allows for different initial seeds. I aimed for a seed that would give me a good Mudkip PID 6018 RNG cycles later--the approximate time it takes to get to the starter selection. The Lua script I'm using is custom; for critical hits, an exclamation point appears next to the damage value. I plan on making the display prettier, I just started using it instead of RAM watch to display values. After some discussion in the Discord, I discovered that I do in fact have to beat Brawly--I was under the impression that he could be skipped until Ever Grande, but as you said, I do have to beat him to fight Norman. For Mudkip, I already have to wait about half a second or so to get the PID I want, so talking to the girl instead won't save time, I'll just have to wait longer in the starter selection. At 5:20, I'll test talking to Mom instead and see if it's faster. There might be a chance that the few frames saved might enable an easier fight, but I'll have to test it to find out. Edited for a more in-depth explanation and clarity.
merrp
She/Her
Experienced Forum User, Published Author, Player (19)
Joined: 7/31/2019
Posts: 56
For a few days I've been working on a TAS of the Japanese version of Emerald, that will use a different lategame route and beat the game using ACE. It won't require beating the Weather Institute, fighting Brendan again, beating Winona, or traveling through Victory Road, etc. At the moment this is just a WIP, any feedback is appreciated. One of the things not shown here that I'm currently struggling with is avoiding encounters on the Mach bike--on foot you can just pause a frame or two, but that doesn't work as well with the bike. :/ The trainer name is signifcant; when encoded as an ARM instruction it represents a relative jump of +15 double words. Abra's nickname is also significant, it will be used as the "bootstrap" code for ACE. Mudkip's nickname is not significant and I just picked it since it was short. Also of note is that in the final run it's not necessary to beat Brawly, but I did here anyway, as I haven't decided what shorter fight(s) I'm going to go for instead to make Mudkip evolve into Marshtomp. I'm also going to clean up waiting for Wally's Ralts to generate so that his Zigzagoon kills it--RNG wasn't nice to me there and as a result I had to wait a bit, but I can reduce the time by spending a bit longer in the first battle with the Youngster since the RNG advances faster there. Link to video
merrp
She/Her
Experienced Forum User, Published Author, Player (19)
Joined: 7/31/2019
Posts: 56
Masterjun wrote:
From what I understand in your explanation, setup 1 misses the Hall of Fame screen, setup 2 misses the credits, and setup 3 has everything. We can say for sure that setup 2 is unlikely to be accepted. It simply doesn't finish the end sequence. (From your explanation it also seems like the viewer couldn't tell it was completed.) We can also say that setup 3 is likely to be accepted, since it's the most complete ending. Setup 1 is probably a bit more difficult. You said "the game is technically not beaten", by which I assume you meant it skips the Hallf of Fame and the save. Yet it does play the credits sequence all the way. If it's reasonable and not too difficult, I think your best chance would be to submit setup 1 but have a movie file with setup 3 ready in case the viewer dislike the missing components of the end. If you simply want to be safe, you can choose setup 3. In my personal opinion, having made several game end glitch runs myself: If you already have a lot of control over the end, you might as well spend those few seconds making sure it's as complete as possible.
That is correct, 1 skips the Hall of Fame and the save entirely, but plays the complete credits sequence. I think I'll do what you suggested, and create two different endings with the two setups, and submit 1 first. Thank you!
Post subject: What counts as completing Pokemon Emerald?
merrp
She/Her
Experienced Forum User, Published Author, Player (19)
Joined: 7/31/2019
Posts: 56
I have a question about TASing Pokemon Emerald. I've found 3 reliable ACE payloads that are all executed from inside a battle, and I'd like to know which ones would be accepted because some are shorter/have fewer restrictions/less setup. 1. Rolls the credits, but the game is technically not cleared/beaten. The credits play all the way through without incident, and input is not blocked, meaning you reach 'THE END' screen and can press A to reload the game normally. This is the shortest and quickest payload. 2. Loads the Hall of Fame screen, beats the game internally, and saves it, but requires the game to be reset (via A+B+Start+Select) to tell that the game has actually been beaten. This is slightly larger than 1 but about the same speed. It's also not visually interesting. 3. Modifies save data so that when the game is saved and reloaded, the Hall of Fame map script plays normally. The battle is exited, the game saved and reset, and proceeds as if you actually reached the Hall of Fame in normal gameplay. This is about the same size as 2 and requires a few more seconds of time, because of the soft resetting. Which, if any of these methods of "beating the game" would be accepted if I used them in a video?