Editor, Experienced Forum User, Published Author, Expert player
(2364)
Joined: 5/15/2007
Posts: 3940
Location: Germany
On Bizhawk 2.9.1, when recording AVI with "Capture OSD" and "Capture Lua" enabled, gui elements that are half transparent will not show up as such on the extra padding space area in the video. The issue happened both with "Xvid MPEG-4 Codec" and uncompressed.
The issue can be seen in this video (Look at the orange and pink boxes).
Link to video
Editor, Experienced Forum User, Published Author, Expert player
(2364)
Joined: 5/15/2007
Posts: 3940
Location: Germany
It was suggested here that this game should be looked at for the possibility of save corruption. How do savegames and checksums work in this game? (This will also be posted to Mario & Luigi Partners in Time.)
Editor, Experienced Forum User, Published Author, Expert player
(2364)
Joined: 5/15/2007
Posts: 3940
Location: Germany
It was suggested here that this game should be looked at for the possibility of save corruption. How do savegames and checksums work in this game? (This will also be posted to Mario & Luigi Bowser's Inside Story.)
Editor, Experienced Forum User, Published Author, Expert player
(2364)
Joined: 5/15/2007
Posts: 3940
Location: Germany
I vaguely remember this was reported back in the early days of M&L TASing. I assumed if there was any emulation inaccuracy related to the Peach escorting, it must have been fixed by now. So since you have brought this up, I wanted to investigate this thoroughly. And here is what I found:
EWRAM address $4815 will tell how many frames Peach has been offscreen and this value is checked every 3rd frame or so.
(The address will usually increment up to 3 and then reset back to 0.)
When entering the first room, Peach is not allowed any offscreen time so she is captured as soon as she is offscreen, which is expected to happen during Toadworth's intervention in normal gameplay. After that, Peach is allowed to be offscreen up to 3 seconds (180 frames, 0xB4 in hex) - assuming she doesn't touch any active enemy.
When Peach comes back onscreen, the timer is reset to 0 and she can go offscreen up to 3 seconds again.
Since TAS skips the capture in the first room, the check for Peach being offscreen doesn't change. So she cannot go offscreen at all from that point onwards.
However, despite the above I managed to skip the goomba in the 3rd room during testing, by having the goomba become active and start walking as soon as possible and then going back to Peach and blocking her from walking upwards in a specific way. It should be possible to save a few seconds with this knowledge.
It looks like there wasn't an inaccuracy.
Editor, Experienced Forum User, Published Author, Expert player
(2364)
Joined: 5/15/2007
Posts: 3940
Location: Germany
I was not able to improve 1A, so the best time is still 53.92.
Additionally to using the "no nitro sounds", I tried adding pauses to the first boost as well as the last boost.
Although I tried many different timings and durations - thinking the pause sound itself has an impact - it never actually seems to change anything.
On the underground boost, the best RTA time 54.06 does some pauses there but I think it doesn't actually have any impact.
54.04 is the best time RTA could achieve without any pausing and without "no nitro sounds".
I will do a few more tests, but I guess pausing can be ignored as it doesn't seem to be a time-saver. If that's the case, I would be happy about this because it makes running this game slightly easier.
Bk2 of 1A 53.92 https://tasvideos.org/UserFiles/Info/638672762461221250
Used JP ROM on Bizhawk 2.9.1.
Editor, Experienced Forum User, Published Author, Expert player
(2364)
Joined: 5/15/2007
Posts: 3940
Location: Germany
Instead of just running the input file to verify it, I would be more interested what are actually the values in the SRAM battery when shipped by Nintendo (mint condition).
Are they really random, or 0x00, or 0xFF...?
Maybe it is possible to check it somehow.
The save corruption method itselfs should work. I can probably make a test verification movie file that doesn't require the SRAM's initial state to be 0xFF. But it will require hard-resets, not sure how the verification process can do that.
Editor, Experienced Forum User, Published Author, Expert player
(2364)
Joined: 5/15/2007
Posts: 3940
Location: Germany
This was already known:
$c10d - speed
$c38a - speed - this seems to be related to the amount of pixels to advance the screen by per frame
This is new:
$c7a3 - speed (actual speed address, mirrored at $c7a0 and possibly other places. $c10d and $c38a depend on this. Will be temporarily set to 0 when a lag frame occurs.)
$c7a4 - nitro boost duration (Will be temporarily set to 0 when a lag frame occurs, and I think it also gets set to 0 if leaving a ramp.)
I would like to investigate the "speed skips" (mentioned in a previous post) once more.
I was thinking maybe those speed skips happen even before the speed value actually starts decreasing.
Some years passed and now "best ingame time at all costs" seems more logical for a goal choice than "no-nitro-sound spamming allowed but no pausing".
Also I think all levels should be played (all eight races in all three difficulty settings).
Although this is just a first thought. I have not done any actual new work yet and I'm not sure I will do it, since it's very tedious to optimize this game.
I still have the old bk2s and luascript with the unfinished staff ghost utility.
Editor, Experienced Forum User, Published Author, Expert player
(2364)
Joined: 5/15/2007
Posts: 3940
Location: Germany
@Potato
I took your 35f improvement and managed to save 16 more frames.
Bk2
4f in Cruiser room 4 (small optimizations).
12f in Stardust Mushroom side (used a teleport instead of running).
Maybe it is possible to use two teleports in that room?
But like I said, I'm not quite good using this bug.
I tried the spike room again but couldn't manage to save time. Tried to apply spike ledge boosts and set up the follow path further down so we could maybe reach the loading zone with Mario without having to jump or having to switch. Other than that, I'm not sure if it is possible to have Luigi get teleported into a wall, too - he always is already in falling state after the teleport, otherwise it might be possible to switch inside the wall and then just walk down out of the wall, instead of jumping. But I was not able to do it.
Unfortunately, this Bk2 desyncs again, this time in the first room of the mountain.
Maybe you can adjust it again? I guess that first enemy actor ruins the set up... Not sure how it could be fixed. Perhaps some of the 16 frames time save has to be neglected/delayed to keep the RNG the same as before.
Although there might be more frames to squeeze, I think the run has reached a satisfactory level of quality now so I think we should submit it soon.
I don't think getting 1024 speed is possible in Stardust Mushroom side, unless perhaps if you do it diagonally off a corner (like in Cruiser 4). Getting 1024 is very precise; it seems you can only get it in very specific spots.
Editor, Experienced Forum User, Published Author, Expert player
(2364)
Joined: 5/15/2007
Posts: 3940
Location: Germany
Wow, first time I see this. My mind is blown at the fact you can skip the barrier with a jab, lol
I don't really understand it. Going through "1 pixel" means the game only uses a point as a collision for Link. I always assumed the game used multiple points or a diamond shape or something. This is something that I quickly dismissed back in the early days of testing.
The second thing is with there being 1 pixel in the first place. It doesn't make sense that it exists. One would think that the environmental collision planes should align perfectly into each other, with the ledges working the same as the inner part. But this discovery suggests that the ledges work as "empty lines". Weird.
The Tingle Tuner thing is funny. Disconnecting and Reconnecting the device is something that should sound like an obvious thing to test for glitch hunters, but I guess nobody has thought of it. It's funny that a random player pointed it out in a random post. To me it is a legitimate thing to do next to inputs and hard resets.
Editor, Experienced Forum User, Published Author, Expert player
(2364)
Joined: 5/15/2007
Posts: 3940
Location: Germany
@Potato
I looked at your 131f improvement and found more improvements.
Bk2
Koopa Cruiser room 4 (25f faster)
Stardust Fields spike room (16f faster)
After the spike room, I had to switch the brothers back, done after the cave towards Hoohoo Mountain Village (1f lost)
The NPC girl in Hoohoo Mountain Village isn't in a bad spot anymore (2f faster)
The movie desyncs in the mountain sections because of the enemy actor. It might be possible to squeeze a few more frames in Koopa Cruiser room 4 and Stardust Fields spike room (especially the latter).
Maybe you can squeeze more frames in the spike room, Potato? I suggest to do this before anything else, since enemy actors in the mountain rooms could change again if we save more frames.
Editor, Experienced Forum User, Published Author, Expert player
(2364)
Joined: 5/15/2007
Posts: 3940
Location: Germany
@Potato
I managed to improve by 58 frames.
Bk2here
10f from the jump before the Koopa Cruiser cutscene.
3f from Koopa Cruiser 4th room.
45f by successfully using Firedash speed glitch in the Stardust Fields room with the spikes.
I did not find a 1 frame improvement in the first Stardust Fields room which you mentioned.
The subsequent NPC boosts in Hoohoo Mountain Village needed to be changed but there was neither a time gain nor a loss.
I vaguely remember that I was able to teleport right into the exit in the Stardust Fields spike room but it required a few brother swaps or something... Unfortunately I didn't save the input for that. It might not be worth looking into it since the new improvement I came up with is pretty decent.
Lastly, a few words on Firedash speed glitch.
As explained in a previous post, it works if Luigi in front gets pushed by an adjacent ledge while falling off but it is precise.
You can usually gain the ability to run around at 768 speed.
In order to obtain 1024 speed, I think you have to do it on a ledge that is two units high (requiring high jump to get on it) or on a 1 unit tall ledge that looks like the one in the Stardust Fields spike room (adjacent ledge has a width of 1 tile). I have not been able to get 1024 speed in other scenarios.
I would be happy if you continue looking for improvements when you have time and feel like it.
Editor, Experienced Forum User, Published Author, Expert player
(2364)
Joined: 5/15/2007
Posts: 3940
Location: Germany
I noticed another minor bug with TAStudio where input of the last frame isn't displayed on the emulator screen.
The three A presses before the last one are displayed by "View→Display Input" on the emulator screen, but the last one is not even though it is executed.
Editor, Experienced Forum User, Published Author, Expert player
(2364)
Joined: 5/15/2007
Posts: 3940
Location: Germany
Hello Potato,
thank you for the help.
I'm not very good with the teleportation glitch.
About understanding save corruption better:
I have updated my MLSS luascript so it will work on Bizhawk 2.9.1. See here.
When using that script, open the "Savegames" display. It will show two values in the bottom right corner, which is the current checksum and the required checksum. If both match, then the savegame is valid. You can also look at the SRAM memory domain while saving, copying or deletion takes place to better understand what's going on.
For NPC boosting in Toad Town and Koopa Cruiser, I tried delaying 1 or 2 frames on the file select screen which yielded different RNG seeds but the NPCs still didn't cooperate.
Since you came up with improvements in cruiser, maybe it is worth trying this again. If you send me the bk2 or tasproj file, I can try it.
I did try to improve the run myself, came up with 3 frames improvement in the fourth room of Cruiser.
I think because I took a more sharp turn towards the crates at the top of the room and by a better NPC boost after the crates.
Tried firedash speed glitch but did not manage to save time with it.
In Stardust Fields at the first room with spikes to jump across, is where I stopped because I tried firedash glitch with teleportation but couldn't make it work.
Let me know if you have any questions.
Editor, Experienced Forum User, Published Author, Expert player
(2364)
Joined: 5/15/2007
Posts: 3940
Location: Germany
I don't really understand how it makes a difference of more than a second. Shouldn't this have lead to a desync?
I always assumed the Game Boy runs at 59.727(...) FPS.
31150 / 59,727 = 521.539672175 (8 minutes, 41 seconds, 539 milliseconds)
Is there somewhere I can read about this topic?
Editor, Experienced Forum User, Published Author, Expert player
(2364)
Joined: 5/15/2007
Posts: 3940
Location: Germany
I encountered a minor bug where input in TAStudio isn't displayed correctly at the top-most row for one frame.
https://i.imgur.com/rE8JWzs.png
1. In recording mode, advance a few frames. (A)
2. Then load a state from an earlier frame. (B)
3a. Press any button on this frame. It will be correctly shown (C1) but on the next frame the row will be shown as empty (C2).
3b. Don't press anything on this frame. The row will be empty (D1) but if you press anything on the next frame, the input will be shown for the current row as well as the top-most row (D2).
Editor, Experienced Forum User, Published Author, Expert player
(2364)
Joined: 5/15/2007
Posts: 3940
Location: Germany
I corrected the submission text. The last jump in Act 6 room 1 didn't turn out to be improvable but I found an improvement in the 2nd room which saved 27 frames.
Act 12 was changed slightly without gaining or losing time.
The new file is linked in the submission text.
Editor, Experienced Forum User, Published Author, Expert player
(2364)
Joined: 5/15/2007
Posts: 3940
Location: Germany
jlun2 wrote:
Woah, a glitched run finally exists! I looked through this thread every time it got an update, and I knew a glitched run was attempted for years without success. Congrats!
1. Does save corruption exist for the other Mario & Luigi games?
2. Assuming a run that does this gets published, would you or others still try to do that ACE run as a "no save glitch" category?
3. What other stuff can you do with this? Anything fun?
1. I don't know. The corruption was only possible because bytes get saved in groups of 8 once per frame and the checksum protection is weak.
2. I thought ACE was close but not reached yet. I'm not sure what the progress is on that. Of course that would be a different category.
Remember, this run only works this way because SRAM is full of 0xFF, which is an acceptable "default state" for emulators but the real SRAM battery probably gets shipped with random values. Although not even that is sure, I think.
3. It depends what you want to do. With subframe resets, you might be able to reach an end credits room earlier.
Editor, Experienced Forum User, Published Author, Expert player
(2364)
Joined: 5/15/2007
Posts: 3940
Location: Germany
I should probably have verified the time saves at some point...
After directly comparing this bk2 to the "resynched without improvements bk2" it turns out:
Act 5 actually saved 5 frames.
Act 6-1 saved 1 frame instead of 3.
Acts 8 and 9 accepted input 1 frame sooner each on the title card, but it didn't actually save 1 frame each...
Everything else looks correct. Act 12 saved 13f (12 from the hot pot skip and 1 from a reduced lag frame), resulting in 19f time save total and the 20th frame was saved at Gargamel.
Please wait until I do more checks, before you decide on publishing this.
Editor, Experienced Forum User, Published Author, Expert player
(2364)
Joined: 5/15/2007
Posts: 3940
Location: Germany
No new updates on 100%. I have gotten burnt out on trying to manipulate luck in route [03] so I'm taking a break.
In the meantime, I looked at low% again.
I determined in 2011 that it is possible to beat the game with 27%, see here.
Some things I found that might be important:
It is possible to skip two rooms (740 and 790) in Moonlight Mansion via Parasol glitch.
When traveling to Carrot Castle etc., it is best to go through rooms 507 -> 137 -> 194.
When traveling to Candy Constellation, going through Moonlight Mansion or Peppermint Palace takes the same amount of rooms.
When going from Carrot Castle to Peppermint Palace, you can skip rooms 121 and 226 by taking the warpstar in Carrot Castle in room 731. But this Carrot Castle route takes 2 rooms more than the normally fastest route so there is no gain.
If there was a way to skip down through platforms, you could save 1 room when going from 513 -> 515 in Cabbage Cavern.
If there was a way to glitch through walls in any of the "bottom Lever rooms" (Olive Ocean and Radish Ruins), you could save a bunch of rooms, but it is not possible.
You can reset at a certain frame when the game transitions from the tutorial into the hub cutscene which results in the game not setting the "have visited this room" flag for room 801, but that room does not get counted to the completion percentage, therefore making it a useless trick.
After going through the game again with everything I know, it still results in 27%.
You can visit 2 rooms more which still results in 27%, with a third additional room resulting in 28%.
It would take 6 rooms less to result in 26%.
It looks like 8 visited rooms (one flags byte being fully set) make up one percent.
With this knowledge, you could probably calculate a floating point percentage that could be used as a true determinator of what percentage we got.