P.JBoy
Any
Editor
Joined: 3/25/2006
Posts: 850
Location: stuck in Pandora's box HELLPP!!!
nitsuja wrote:
Yes, but to do that would mean putting most of Snes9x 1.43 WIP inside Snes9x 1.51+whatever
You done it before. Besides, the code is already there, how hard can it be
Emulator Coder, Former player
Joined: 10/2/2005
Posts: 563
Location: Toronto, Ontario
P.JBoy wrote:
nitsuja wrote:
Yes, but to do that would mean putting most of Snes9x 1.43 WIP inside Snes9x 1.51+whatever
You done it before. Besides, the code is already there, how hard can it be
Why not just use 1.43WIP for movies that need it, and 1.51 for those that don't?
P.JBoy
Any
Editor
Joined: 3/25/2006
Posts: 850
Location: stuck in Pandora's box HELLPP!!!
Well for start I wouldn't know which version to open when I get a movie that doesn't say, it would also spam up my startbar. It would help me and lots of other people (newbies) as well. Mainly the 1st reason annoys me though since it is solvable
Emulator Coder, Skilled player (1310)
Joined: 12/21/2004
Posts: 2687
P.JBoy wrote:
You done it before. Besides, the code is already there, how hard can it be
No, it's not the same. Now that scores of changes are scattered throughout all of the code, I can't simply disable a little block of code when a box is checked to make it act like it did before. This would require so much effort that I would never consider wasting the time to do it. It is probably easier to attack the problem from the other side by adding non-WIP non-timing to Snes9x 1.43 instead of adding WIP timing to Snes9x 1.51.
Skilled player (1410)
Joined: 5/31/2004
Posts: 1821
Sorry if this was mentioned before, didn't really read the whole thread, but if you press "watch" at the cheat menu, without having a RAM adress selected, the emulator crashes.
Emulator Coder, Skilled player (1310)
Joined: 12/21/2004
Posts: 2687
No, nobody caught that before, thanks.
gocha
Any
Emulator Coder, Former player
Joined: 6/21/2006
Posts: 401
Location: Japan, Nagoya
When I turned on "Text in Image" option, the text display got broken like this video. Does anyone know why? Sorry if this was mentioned before.
I am usually available on Discord server or Twitter.
Emulator Coder, Skilled player (1310)
Joined: 12/21/2004
Posts: 2687
There is a bug that makes that option mess up in 32-bit color depth, sorry. If you really need it, you can change to 16-bit color.
Active player (411)
Joined: 3/16/2004
Posts: 2623
Location: America, Québec
Something that is still not implemented and definitely should, is a directories configuration. Now, it uses the last dir where you open a file. Kinda annoying and higher the chances to overwrite an existing and important file. Edit: I've got an error when loading a state. "Sound CPU executing stop at 0020". Then no more sounds. :S Ok, what I usually do when making a movie is pause the emu, start recording and save and play a little at normal speed. Then I load state, which is at frame 0. Then the message "Sound CPU executing stop at 0020". Edit 2:Super Castlevania 4 is desync. in every version of Snes9x(Maybe 1.43 with Fake mute is working better). A major fix is needed. It would be nice if using reset while playing a movie restart playing the movie like in FCEU. Edit 3: Due to keyboard limitation, it would be nice to configure combo buttons such as A+B+L at same time.
Player (105)
Joined: 1/30/2005
Posts: 564
Location: Québec, Canada
Phil wrote:
Also, Super Castlevania 4 is desync. in every version of Snes9x.
Did you try recording/playing the movie with the option "Fake mute desync workaround" option turned on?
Active player (411)
Joined: 3/16/2004
Posts: 2623
Location: America, Québec
Ok here is a movie of SCV4 where a movie desync. The ZIP file contain the, movie, a savestate and pictures. Ok here is an explanation of what did happened. I was Timeattacking SCV4 yesterday and all were looking fine. No desync and such(Well, that's probably not true. Explained later) then today, I play the movie and wtf, the movie desync. I was angry but not that much since I wasn't pretty far in the game. Then I did remembered that yesterday, I did played the movie but loaded a state to skip the into and such. I did that and wtf, the movie is playing fine. :S :@ :S :S MAJOR BUG :S :@ :S Then I did studied where the movie really desyncing by using some memory addresses. 7E054A,2u — X pixel (center); 7E0549,2u — X subpixel (1 unit = 1/256 of a pixel); 7E054E,2u — Y pixel (center); It appears that Snes9x creates lag when state is loaded. Recording or not. At frame 1995, we can easily see that the game is lagging by comparing X,Y.
With state                   Without


1989

X pos = 388
X subpx =33983				It's the same
Y center=62

1993

X pos = 393
X subpx =35263				It's the same				
Y center=66


1994

X pos = 394
X subpx =35583				It's the same
Y center=68

1995

X pos = 394				   396
X subpx =35583				35903			
Y center=68				   70

1997

X pos = 398				   The same
X subpx =36607				36415
Y center=65				   69



When you check the pictures using state, it's funny because it doesn't seem it is lagging. I guess it's probably related to that bug. Normally, it should freeze for 1 frame. In conclusion, FIX the desync issue when loading state. Note that I did tested several times recording with no rerecords and those movies were playing fine. Edit: I am wondering if it's not related to that extra fadeout lag. The state was saved/loaded in the black screen. There might be something that isn't saved properly in the state due to that. I am going to test later to be sure.
Player (89)
Joined: 11/14/2005
Posts: 1058
Location: United States
This is the exact same shitty issue that happened to me in super metroid. It appears that many games are affected by this stupid bug. Playing a movie from the very beginning to check for desyncs is a very difficult task, and it becomes exponentially longer each time you want to check for a dysync. This makes the emulator completely useless for recording movies on. According to my tests, I too believe the fade out lag is responsible for the desyncs. It is usually within the fadeout scenes that the missing frame is cut out.
They're off to find the hero of the day...
Tompa
Any
Editor, Expert player (2216)
Joined: 8/15/2005
Posts: 1942
Location: Mullsjö, Sweden
Another reason to not use 1.51... And another reason to remove the "1.51 is recommended for newer movies." text. http://tasvideos.org/EmulatorHomepages.html#snes9x_ I'm going to complain about that until it is fix. As it's all wrong and will make new players use the wrong emulator which will end up in a huge failure...
Active player (411)
Joined: 3/16/2004
Posts: 2623
Location: America, Québec
What is/are other reasons(s) to not use it. Other than that bug, ALL is clearly better than 1.43.
Player (89)
Joined: 11/14/2005
Posts: 1058
Location: United States
Well the fact that saves states don't load is another bug, but I think the desync issues are enough of a reason to not use it. It is a real shame too...
They're off to find the hero of the day...
Active player (411)
Joined: 3/16/2004
Posts: 2623
Location: America, Québec
Save states don't load? Do you mean states from other movies? If it's that, yes, it is missing an important feature. On other side, it is more secure. But still, sometimes, I use a state from another movie to save me times. But I think it's the same in other versions of Snes9x.
Player (89)
Joined: 11/14/2005
Posts: 1058
Location: United States
http://tasvideos.org/forum/viewtopic.php?t=5664 I agree that 1.51 has better emulation accuracy and graphics/sound, but the recording issues are far too overwhelming to ever use it.
They're off to find the hero of the day...
Active player (411)
Joined: 3/16/2004
Posts: 2623
Location: America, Québec
Just read the loading problem thread. Well, that's kinda related to what I am saying. Snes9x seems too paranoiac. It should be like FCEU. Anyway, it's not a 1.51 specific problem. It did that with other versions(I think). Edit: If the movie within a savestate is considered too different by Snes9x, it will think it is from another movie. Edit: ok I understand more about the loading problem. Yes, in read only mode... Indeed, that sucks but that's just a misfeature that won't discourage me. Now I am 90% sure the desync issue is when using savestate during fadeout. Because now, there seems to be no more desync.
Joined: 3/17/2007
Posts: 97
Location: Berkeley, CA
OK, I've wanted to help with this roaring bitch of a bug for a while, and I've been testing some ideas. I'm a bit new to S9x itself, but I've learned a lot already and I really want to see this fixed. Could any sufferers--or runners of affected games who haven't had problems--answer some questions for me? 1. Are you using the win32 version? 2. If so, had you been playing in frame advance with "FrameAdvanceSkipsNonInput" enabled? 3. If the problem can happen in other circumstances, would you be willing to help me reproduce it (starting with at most a .smv)? Thanks! **UPDATE** (sorry for this post's length) OK, I have proof of the mechanism behind at least one sync bug, which I'd bet is responsible for your problems. Experiment to demonstrate the problem: Grab the win32 release. Turn on [Settings\Win]FrameAdvanceSkipsNonInput in snes9x.cfg. Also grab Phil's very helpful smv/savestate demo from earlier in this thread. Now use two methods to play back the movie starting at the savestate: Method 1: File->Movie Play. While the movie is running, hit F5 to load the savestate. Simon should gracefully make it through the door. Method 2: File->Movie Play. This time, hit the frame advance key and wait until emulation pauses at an input frame (343 / 2257). Then hit F5 to load the savestate. When you unpause, the result is definitely unworthy of Simon (and Phil/AngerFist)! My explanation: A core emulator function, S9xGetCPU(), notices when the game uses joypad data. It can notify the emulator (via a callback) when this is about to happen. This is potentially a great way to support frame advance, since the emulator can just stop and collect your input on the frames when it's needed. So this is used in the Windows version, when "FrameAdvanceSkipsNonInput" is on. But it's misused: the emulator actually stops, mid-instruction, to run the full event loop until your next frame advance. You see and interact with the emulator in this state when it's paused inside an input frame. Normally this should be happening between emulated frames, not in the middle of them--that's still true during non-frame-advance play *and* while the emulator plays through lag frames at full speed. And even if you use quicksaves, the emulator is going to return to what it was in the middle of doing, so if (for example) you save a state while skipping through lag frames and reload it when the emulator is paused, you'll inadvertently put the emulator in the wrong context and cause a desync. I'm a bit suspicious that the timing of this pause for input (relative to when the joypad state is recorded in the movie) might cause snapshots to be inconsistent with their associated movies... not so sure about that though! Workaround: disable [Settings\Win]FrameAdvanceSkipsNonInput. You can enable [Settings]MovieNotifyIgnored as a substitute, but if I understand correctly you'll only learn whether or not a frame accepted your input *after* you've entered it... not as convenient. Bad news:A tempting workaround is just to do all your quicksaves/loads while paused for frame advance. If the game you're running reads input from two distinct points in its code, though, the mechanism I described can still ruin your movie. I think it's less probable though. If you use my suggested workaround (after deleting and re-creating any savestates you created under frame advance) and you still get a desync, I really want to know. Fixing the bug: I can contribute code, but I need help from a Windows user with a windows dev. environment that can build snes9x. It looks like nitsuja has been very busy lately, so why not team up with me and give it a try?
IRC nick: UncombedCoconut
Emulator Coder
Joined: 3/9/2004
Posts: 4588
Location: In his lab studying psychology to find new ways to torture TASers and forumers
nitsujrehtona wrote:
Fixing the bug: I can contribute code, but I need help from a Windows user with a windows dev. environment that can build snes9x. It looks like nitsuja has been very busy lately, so why not team up with me and give it a try?
I build Snes9xw from Linux and run it in Linux too. I didn't add cross compile support for nothing.
Warning: Opinions expressed by Nach or others in this post do not necessarily reflect the views, opinions, or position of Nach himself on the matter(s) being discussed therein.
Joined: 3/17/2007
Posts: 97
Location: Berkeley, CA
Yeah, thanks Nach. This has been... fun. Sorry if I'm making you cringe with my mistakes... :) I did figure out minGW cross-compilation. And there's more going on here than I realized, but I'm still sure this whole "skipping states" idea is broken beyond repair. :)
IRC nick: UncombedCoconut
gocha
Any
Emulator Coder, Former player
Joined: 6/21/2006
Posts: 401
Location: Japan, Nagoya
Edit: Obsoleted, new version is here.
gocha wrote:
Imported some of fixes from improvement11. - Snes9x 1.51 i11-fix1 Windows binary - Snes9x 1.51 i11-fix1 source code diff This should fix snapshot inconsistent issue, though this won't fix terrible desync bug :(
I am usually available on Discord server or Twitter.