1 2
5 6
Spikestuff
They/Them
Editor, Publisher, Expert player (2642)
Joined: 10/12/2011
Posts: 6438
Location: The land down under.
Awesome! Thanks BadPotato. :D
WebNations/Sabih wrote:
+fsvgm777 never censoring anything.
Disables Comments and Ratings for the YouTube account. Something better for yourself and also others.
Spikestuff
They/Them
Editor, Publisher, Expert player (2642)
Joined: 10/12/2011
Posts: 6438
Location: The land down under.
Now since OpenGL was touched on a few times on this I should mention I got sync with Crash Bandicoot 2 "Glitched" with Pete's OpenGL Driver. Main issue: - in kkapture you need to have it as 30fps > The plugin was half scaling the speed, so by putting it on 60fps you're making it go double speed. <MUPEN Logic Edit: Trying to find a good alternate
WebNations/Sabih wrote:
+fsvgm777 never censoring anything.
Disables Comments and Ratings for the YouTube account. Something better for yourself and also others.
Joined: 1/26/2009
Posts: 558
Location: Canada - Québec
Alright, sorry for the delay.
Spikestuff wrote:
Main issue: - in kkapture you need to have it as 30fps > The plugin was half scaling the speed, so by putting it on 60fps you're making it go double speed. <MUPEN Logic
Yeah, kkapture is bit picky but once you get something working, I guess it work just fine. Now the big question would be how well pete plugin+sound workflow behave or should we separe completly video capture from sound. Don't hesitate to report any issue, I might not be able to fix this stuff right now, but maybe I can help.
Site Admin, Skilled player (1254)
Joined: 4/17/2010
Posts: 11475
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Site Admin, Skilled player (1254)
Joined: 4/17/2010
Posts: 11475
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
I just did a test and it seems while at high resolutions OGL2 GPU flashes black while loading states, it doesn't actually freeze the game, so except for a couple overhead frames, 2 videos made with lowres TAS GPU and hires OGL2 match frames very well. It means, we can use that to finally add a feature for getting rid of resync artifacts in video and audio. But alone I couldn't do it, because the script is complicated as hell. So I'm requesting this tweak: whenever desync occurs, make a savestate 10 frames before it's being done currently. And store the current frame in the table, and as a state name. So that when sync script gets to that frame, it loads the state that's 10 fames back. This way we will have 10 extra frames in the video per desync. If it also creates a file, listing all these frames by comma, we could use it in avs to cut out those 10 frames. The same goes to creating TAS SPU checkpoints. Checkpoint creation must happen 10 frames after they're created now, then the current frame number is stored, and written as a save name. So that when it gets to those frames, it will as well load a state from 10 frames back. Note that I'm now using a version that accounts for "while true do" loop delay, and loads all regular states 1 frame earlier, which now doesn't let the emulator draw desynced picture. Also, I added Sleep(1) to pcsx.suspend. So, BadPotato, if you will try implementing the request, use my latest versions of script and emulator: http://feos-tas.googlecode.com/svn/trunk/Misc/pcsx-13f.7z http://feos-tas.googlecode.com/svn/trunk/Misc/PcsxrrEncodeWofkflow.7z EDIT: Forgot to add that I also removed the need to use GD, because we don't need to deal with existing image files anymore, everything is done by a single lua function, other GPU's rather than TAS one aren't needed.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Joined: 1/26/2009
Posts: 558
Location: Canada - Québec
Hi feos, I'm on IRC right now, if you want to discuss about these spec. Edit: See post bellow.
Site Admin, Skilled player (1254)
Joined: 4/17/2010
Posts: 11475
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
I will only come back after some hours.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Joined: 1/26/2009
Posts: 558
Location: Canada - Québec
Time to recap then. So in order to make the OpenGL plugin to work for the whole workflow, instead of the soft driver: First, you want any desync that get saved in "desyncSaveStates" and "tasSoundSaveStates" folder to be 10 frames before the current value. Currently,we make a savestate at the exact where there is a desync, right? Can you confirm this? If that's the case, with that fix, it may cause a couple more desync than before, since the savestate won't be as "fresh" anymore, but as far as I known this doesn't break the workflow. Now, I have a question about this:
The same goes to creating TAS SPU checkpoints. Checkpoint creation must happen 10 frames after they're created now, then the current frame number is stored, and written as a save name. So that when it gets to those frames, it will as well load a state from 10 frames back.
Right now, we only create a TAS SPU checkpoints where there's a desync at the said frame. So, do you want to keep our current default behavior(so exactly 10 frames after your first tweak request which is the exact frame of the desync) or do you actually want to remove that default behavior and create a savestate 10 frames after the desync? That said, I just checked the script and yeah, it's horrible. I'll probably cleanup some of the unused junk as well.
Site Admin, Skilled player (1254)
Joined: 4/17/2010
Posts: 11475
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
If loading a state 10 frames before the desync really occurs leads to another desync, we can reduce the overhead as an option. But overall, if it works like that, it won't be noticeable, because artifacts occur during those overhead periods and are cut away from the video. I suppose it still needs to be 10 frame of extra footage. But if anything goes wrong, we can do it like this: Desync at frame 80. Save TAS sound state at frame 75. When sync script is at final pass, load that state only when at frame 85. So we still have the same overhead, but it's not BEFORE desync, but AROUND it. About checkpoints, I was under impression that it saves them no matter what as long as 1) first non-lag frame occurs, 2) some frame is after movie end. If it's possible to load them at lag frames, no problem, make them work exactly similar to desync savestates. But I saw emulator doesn't receive commands until bootup process is over. Can you explain?
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Site Admin, Skilled player (1254)
Joined: 4/17/2010
Posts: 11475
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Site Admin, Skilled player (1254)
Joined: 4/17/2010
Posts: 11475
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
Ahem!
99999 : done ! ( 0585674495 / 0585674495 )
Please make sure the detection for the screenshot is over, before running this script.
Waiting for an update status...
Unexpected error. Missing some frame info in the hashframe file.
-----------------------------
error at line : 
stack traceback:
	pcsxrrWorkflowConfig.lua:653: in function 'printStack'
	...sx-rr-v013f\PcsxrrEncodeWofkflow\synchCheckpoint.lua:227: in function 'checkFrame'
	...sx-rr-v013f\PcsxrrEncodeWofkflow\synchCheckpoint.lua:135: in function 'getHashFromFile'
	...sx-rr-v013f\PcsxrrEncodeWofkflow\synchCheckpoint.lua:256: in function 'syncCheck'
	...sx-rr-v013f\PcsxrrEncodeWofkflow\synchCheckpoint.lua:359: in main chunk
-----------------------------
Looks like it splits hashFrame into several files, and then fails to read the second one.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Joined: 1/26/2009
Posts: 558
Location: Canada - Québec
Oops, I should fix that quickly :p A possible temp fix would be to change the value of hashFrameSplit in pcsxrrWorkflowConfig to an integer higher than the numbers of frame to process(the whole movie+the part after the movie), so the file will continue to grow bigger at the cost of slower performance.
Site Admin, Skilled player (1254)
Joined: 4/17/2010
Posts: 11475
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
Since I already have the files with all hashes, tell me how to make it properly start reading the other one. For now, I tried changing math.floor(framecount / hashFrameSplit) to be +1, -1 and all that stuff, but it just starts reading the second file, thinking the current line is 100000. Do I just copypaste the contents to file 0?
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Site Admin, Skilled player (1254)
Joined: 4/17/2010
Posts: 11475
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
I've just tried Pete's OpenGL GPU 1.78, aka OGL1. And it also does antialiasing. And it also has the source code. And it gives NO BLACK FUCKING FLASHES! You know what it means? That cutting out frames from the dump isn't needed! And we can antialias without any artifacts! Dumping BB2 at 1024x768 right now. http://www.pbernert.com/gpupeopsopengl178.zip EDIT: Found why it was crashing when loading from debug. That was causing it:
Language: lua

if(movieEnd == nil or movieEnd == 0) then movieEnd = getStatusDetectInfo()["MovieDuration"]; end
It never writes the value of movieEnd to the xml file. And still tries to read if from there.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Joined: 1/26/2009
Posts: 558
Location: Canada - Québec
First, sorry for the late reply.
feos wrote:
Found why it was crashing when loading from debug. That was causing it:
Language: lua

if(movieEnd == nil or movieEnd == 0) then movieEnd = getStatusDetectInfo()["MovieDuration"]; end
It never writes the value of movieEnd to the xml file. And still tries to read if from there.
Damn, well this simply proove that using lua XML api was the worse idea I had. Also I wouldn't be surprise that some of our previous problem with memory overflow was caused by that third party library. The best thing to do would be the write our own little file format to store data about desync in the right order, a bit we do with the hashfile. Talking about hashfile, you may try:
math.floor((framecount+1) / hashFrameSplit) .. ".txt";
But you have to start exactly at the right frame. So I would suggest to make a backup for the hashFrame-0, load a savestate from a couple of frame before 10000 and then let him continue to hash all those frames.
Joined: 1/26/2009
Posts: 558
Location: Canada - Québec
First, sorry for the late reply.
feos wrote:
Found why it was crashing when loading from debug. That was causing it:
Language: lua

if(movieEnd == nil or movieEnd == 0) then movieEnd = getStatusDetectInfo()["MovieDuration"]; end
It never writes the value of movieEnd to the xml file. And still tries to read if from there.
Damn, well this simply proove that using lua XML api was the worse idea I had. Also I wouldn't be surprise that some of our previous problem with memory overflow was caused by that third party library. The best thing to do would be the write our own little file format to store data about desync in the right order, a bit we do with the hashfile. Talking about hashfile, I guess this should work by editing getHashFromFile(framecount) and writeHashframe(lineInfo) in synchCheckpoint.lua and detectCheckpoint:
math.floor((framecount+1) / hashFrameSplit) .. ".txt";
I would suggest to make a backup for the hashFrame-0, load a savestate from a couple of frame before 10000 and then let him continue the hash process. Also, glad that you got that plugin working, hopefully we can get some decent encode with this.
Site Admin, Skilled player (1254)
Joined: 4/17/2010
Posts: 11475
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
Look what I found and see what idiots we are. https://github.com/ncoop/vgr/blob/master/lua/Bushido-Blade-2-audio.lua
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
1 2
5 6