Hard or soft reset for runs?
1 month ago
Russia

Hello, currently, the rules for the X-Men 2 runs do not specify whether a hard or soft reset should be used to start a run. The current world record (A-Frame's run ) does a soft reset.

I do not have any solid evidence that there is a difference, but from my observations, runs with the soft resets have some issues:

  • Sometimes, there are sound glitches, like Siberia stage background music bugging out. The bug persists throughout the game and causes a soft lock: .
  • The background music on the Fortress 1 stage (climbing the pyramid) is sometimes slowed down until you reach the boss.
  • Avalon 3 (falling down stage) background music starts playing and overlaps with background music in Savage 1 (going up and down trees in a swamp).
  • Other rare issues include screen freezing in Savage 4 (the second purple stage with a 9-tiled door at the end) and soft locking the game.

The runs with the hard reset seem not to have those issues. The Fortress 1 stage glitch is annoying because I rely on the sound queues for skips.

However, if we consider allowing hard resets, we need to determine if the timing for a run start is the same as when we use a soft reset (-2.73 seconds).

I'm unsure how the question of whether to do a soft or hard reset is usually addressed, so I'd like some feedback.

United States

Hey Arkan, I can't think of any gameplay changes that a hard reset would introduce, so my thought is that it would be fine to use for runs.

We'll need to work out when to start the timer for a hard reset. I did a bit of testing in Bizhawk last night, and a hard reset appears to add 3 frames to startup when compared to a soft reset. I'm hoping someone can verify this.

My method was to load the X-Men 2 rom, display frame count, pause emulation, choose soft or hard reset from the menu, then frame advance until the characters horizontal position in ram could be influenced. I ran a similar test, but instead of watching ram for position, I counted frames until Nightcrawler was hit by the shot from the tank enemy.

I'll add a follow up post soon with a few additional considerations.

United States

A hard reset on console is considerably longer, since the console itself displays a message on startup.

It adds about 3.5 seconds, but that was measured by me manually splitting in livesplit. We can measure it more accurately when needed - I suppose by getting a recording and manually counting frames?

United States

One last hiccup we'll want to discuss. We've been operating on the fact that, after a soft reset, there are 164 frames before you can take action. In my tests last night, my count showed 169. My hope is that someone can double check this as well.

The original frame count came from someone that worked on the TAS, so I don't doubt their number - I just think we were measuring two different things. When initiating a soft reset, it looks like there are five frames before several memory addresses are populated with what I assume are startup values. From the TAS perspective, perhaps that is when time starts - once the reset has completed. But for speedrunning, we probably want to account for those 5 frames in our reset countdown.

All that said, I have very little experience examining memory addresses - so I may be totally off. Let me know what y'all find if you take a look.

United States

Hrm, I just had another thought. Perhaps horizontal position isn't the correct value to watch on start up. Maybe there is some value related to acceleration that can be influenced before the character's position changes.

Russia

Thanks for investigating, A-Frame. I also used Bizhawk and observed the same results - the 3-frame difference. As for 164 frames before you can take action vs. yours 169: I managed to take action on frame 167; minimal input is Right + B (normal attack). If you only enter B, the action will not happen unless you input it in frame 169. I'm unsure about 164 frames; maybe there is some magical input. There are some differences between Bizhawk versions 2.4 and 2.9.1 as well: initiating a TAS from the most recent bk2 TAS movie starts fine with version 2.4, but in 2.9.1, the run begins with the Cyclops.

United States

Great, thanks for verifying the 3-frame difference between hard/soft resets Arkan.

I contacted the person that originally reported the 164 frames and he doesn't remember the specifics on it since it was a few years ago.

My thought is that, for now, we can probably leave the soft reset start time as is at -2.73 (to account for 164 frames) for now. A few frames isn't a big deal since:

  • Runs are often tens of minutes long
  • Our degree of precision is seconds
  • We allow several different platforms to run the game, with minor performance differences
  • Our end time is when "the screen is completely black", which is a bit loose

Plus, all recent runs have started with -2.73.

All that said, if anyone wants to tackle researching cleaner start/end timing and propose a rule change, I'm open to it if other community members are on-board.

Hopefully others will pop in to express agreement or objection. Otherwise, I think you are good to go with 167 frames (2.78 seconds) of startup time for hard resets, Arkan.

Modifié par l'auteur 1 month ago
TopazDragoon39 aiment ceci
Albany, NY, USA

Hi, sorry I'm late to reply to this! I did notice the 3 frame difference in Bizhawk too, but it did not seem to exist when I tested in Kega and BlastEm. It could stand to undergo a more thorough check for sure, but I think I agree with A_Frame for now, given all of the bullet points mentioned in the post directly above this one.

Arkan, (or whoever else might know/replies to this first) does Bizhawk only spit out Nightcrawler on resets? You mention the game only accepts a direction + B input before frame 169, and I am curious as to if it's because that is normally most characters' direct movement option in the air. I would like to confirm if Right + A input for Psylocke or Wolverine (they use this input a lot for movement unlike the others) is being accepted on frames 164-167 like I feel they do in Kega. I don't think dying and then restarting from character select is the same frames-wise as a hard/soft reset of the game.

I'm not very good at maneuvering around a lot of these tools to check frame stuff yet but I'm trying to learn! Go easy on me if I said something off lol

Modifié par l'auteur 1 month ago
TopazDragoon39 aiment ceci
Ohio, USA

I did some early experimentation with Bizhawk, but nothing extensive, between versions when I was working with chill_runs in the possibility of creating a rom hack for starting characters. I tried a wide variety of directions plus buttons to try to influence it, but if it is a fresh press on a specific frame, I definitely did not test that deep. Bizhawk 2.9.1 was the one that I could not get a different character aside from Nightcrawler in, with random button configurations as well as hard/soft resets.

Modifié par l'auteur 1 month ago
Albany, NY, USA

Yeah like we mentioned in the thread you started a while back Lynn, you can't influence the starting character unless you do an input that's normally possible on hardware (down + up simultaneous, etc.). The purpose of my question was specifically in relation to what is the very first frame the game accepts an input. It may not be on frame 167 for every character, since you don't do the same input for your first movement as every character. (I don't move with direction + B with Psylocke for instance).

Argentina

Hi all, new to this forum, I made some tests myself since I've been playing this game lately and thought I'd add my two cents regarding Bizhawk and first frame of input.

For TAS, the game is reading inputs since very early (didn't check which frame exactly but around frame 100 it is already reading inputs). In the input reading subroutine, it is checking certain input combinations, like Up+Left+Right+Down, more specifically here:

1FD662:  1010  move.b  (A0), D0
1FD664:  0C00  cmpi.b  #$70, D0
1FD668:  6700  beq     $1FD712

#$70 here means the four directional buttons are being pressed, and if yes, then the code will branch to $1FD712, changing the amount of cycles until the VDP H/V counter is read and therefore which character gets selected. In Bizhawk v2.9.1, if you do U+L+R+D even during just one frame, you won't get Wolverine anymore (hard reset), you'll get Beast. And if you do it for more frames, you get other characters.

For actual player movement (speedrunning), for a soft reset it does start at 164. The way I tested it is by taking note of the frame number when soft resetting, and then adding the number where my input (Right + B) was first processed. I soft resetted on frame 100, and frame 264 was the first frame where my input was processed. So, 264 - 100 = 164. For hard reset, it does start at 167.

On a different note, the VDP is being checked on frame 144 for hard reset and frame 141 for soft reset.

@SheWolfVal Yes, even Right + A is being processed/accepted on frame 164 for soft reset, 167 for hard reset (I checked for Wolverine).

Also, in Bizhawk 2.9.1, for hard reset, I always get Wolverine, for soft reset Cyclops. Bizhawk 2.4, for hard reset I get Cyclops, for soft reset I get Nightcrawler.

I hope I was able to clear up a few things and contribute to the discussion!

Russia

Hello velpachallenger. Thank you for the details! I had previously counted the first frame when a player has control by resetting at the 3rd frame, but trying the 100th, as you did, had a different result. I find it interesting that resetting at different frames changes the timing of the first active frame.

Argentina

Hello Arkan! Strange, I didn't receive a notification for your response. Yes, I just checked. While I haven't read the code, I'm pretty confident that happens because the game realizes that it is in an incomplete initialization state. It probably takes a bit more than 3 frames to fully initialize, so when you soft reset at that point and the reset code runs, it uses more time both realizing the current state and then trying to acommodate to that. Whereas, soft resetting at a fully initialized state, it says "oh yeah I'm already fully initialized" and then skips a few frames of initialization and the game starts faster. There are most likely flags or anything similar that are telling the game the current state when you restart by means of a soft reset.

Statistiques du jeu
Abonnés
42
Parties
100
Joueurs
18
Derniers fils de discussion
Publié 3 days ago
5 réponses
Publié 5 days ago
12 réponses
Publié 3 years ago
12 réponses