Posts for notaz

Experienced Forum User
Joined: 10/5/2014
Posts: 31
Can this movie be started from .srm instead of a savestate? .srm has cross-compatibility between emulators and even real hardware flashcarts, while savestates don't.
Experienced Forum User
Joined: 10/5/2014
Posts: 31
Techokami wrote:
The emulator used was kind of tricky to get (not everyone has the build tools and a SVN client handy!) so here's a mirror: http://files.holenet.info/Gens-rr_r351.7z
FWIW the movie syncs fine on Gens built from 2003 source release with .gmv playback patched in, so it should play on pretty much any Gens-rr release (assuming there were no timing screwups in it's dev history). As for the movie itself, yes vote of course. It's interesting how in Angel Island 1 the game is accepting Tails input much earlier now, which however doesn't work out on real hardware, inserting 2 frames like before doesn't cut it, it seems to want a lot more. Edit: ok it's the "spawn Tails early by pressing a button" trick, so frames need to inserted before that, still won't sync on hardware (Sonic spindashes wrong way after landing), but that's something to investigate later..
Experienced Forum User
Joined: 10/5/2014
Posts: 31
It depends on TV and if you run the console in PAL or NTSC mode. Here is how it looks on a CRT: (large picture warning) http://notaz.gp2x.de/img/mess/megadrive/mr_nutz_ntsc.jpg http://notaz.gp2x.de/img/mess/megadrive/mr_nutz_pal.jpg
Experienced Forum User
Joined: 10/5/2014
Posts: 31
I've finally synced Sonic 2, but unfortunately it's not stable and occasionally desyncs, probably because of some reason mentioned in verification thread. There are also 2 added long pauses, one on Chemical Plant 2 and another in Wing Fortress to sync platforms, so it's rather noticeable and I'm not sure it's worth recording. I've made Sonic hacks to play this movie and S1 one without any special hardware on real Genesis/MD and made a post at SpritesMinds with hope that some emu author will notice: http://gendev.spritesmind.net/forum/viewtopic.php?t=1948
Experienced Forum User
Joined: 10/5/2014
Posts: 31
Aqfaq wrote:
Doesn't Bizhawk have a bit better sound emulation? Does the run synch on Bizhawk?
Checked that, doesn't sync on real hardware, as well as genplusgx/Bizhawk.
Experienced Forum User
Joined: 10/5/2014
Posts: 31
Ok, thanks for all the info. With that knowledgde I've been able to make a romhack that updates score counter (replaced by VInt counter) whenever animal goes left, which almost never happens normally, except in a few cases like Casino Night, so almost doesn't affect timing. With that it's easy to see how many frames to insert to sync animals now. Next was Mystic Cave boss, where stone/spike spawns were wrong. Finding the boss routine in S2 disassembly (really good to have it available) and dumping VInt counter solved this again. Some trivia: the boss dies on VInt counter value 33333 on emulator and 33680 on hardware running my hacked input file. I'm at Oil Ocean now, need to sync more animals..
Experienced Forum User
Joined: 10/5/2014
Posts: 31
I'm having problems with Aquatic Ruin 2 desync, there are 2 pauses before boss fight starts, inserting a frame to any of them, or delaying the pauses themselves doesn't seem to help. Here is how it desyncs, and I couldn't spot any difference after frame inserts: Link to video and I wonder what the reason for delaying the last hit?
Experienced Forum User
Joined: 10/5/2014
Posts: 31
marzojr wrote:
notaz wrote:
So the difference seems to be 31.
I take it that this is including the 2+13=15 frames you added? If so, those screenshots would indicate 16 more lag frames than what Gens emulates. Straining your good will, could you check where those frames come from? I would hope it is from before the level starts...
Yeah it's with all frames, otherwise the movie would not sync. So the first time score counter shows it's 7 lag + 2 mine, meaning others come from level transition. Can't check other points using this method as the score counter doesn't update anywhere else.
marzojr wrote:
And by the way, these 16 lag frames don't affect the moving platform, vines or ring animations, so this is just plain old curiosity.
Hmm you mentioned vines using VInt counter before, is that S3 only and not S&K?
Experienced Forum User
Joined: 10/5/2014
Posts: 31
Console verified: Link to video
Experienced Forum User
Joined: 10/5/2014
Posts: 31
I tried the simplest hack for S3K which replaces score with VInt counter (so only updated when score changes), and this is the result: So the difference seems to be 31. (also it seems my camera scans bottom-to-top, what's up with that?)
Experienced Forum User
Joined: 10/5/2014
Posts: 31
notaz wrote:
marzojr wrote:
You want to insert frames in the form of a pauses before the 17th second: specifically, before the tipping floor objects are loaded.
I'll try that..
OK it worked, needed 203 frame long pause. Next desync - Aquatic Ruin 2 animal manipulations, are those hard to fix up? I could instead resync at Casino Night 1 start I guess, like I used to do in S1..
notaz wrote:
marzojr wrote:
It may be possible to reduce the amount of work in this case if the approximate difference in v-int run count between emulator and console can be inferred;
Maybe we could use a ROM hack for this, replace ring counter with that, or something. Different drawing routine may affect timing but maybe not too much and it would be enough for debug.. What is the RAM address of that counter?
I've tried toying with this too, and it seems S2 is optimized to not redraw score/rings until they change, so replacing them is not that useful. I've tried to force redrawing every frame, and that caused things to drift and desync, as expected..
Experienced Forum User
Joined: 10/5/2014
Posts: 31
marzojr wrote:
You want to insert frames in the form of a pauses before the 17th second: specifically, before the tipping floor objects are loaded.
I'll try that..
marzojr wrote:
It may be possible to reduce the amount of work in this case if the approximate difference in v-int run count between emulator and console can be inferred;
Maybe we could use a ROM hack for this, replace ring counter with that, or something. Different drawing routine may affect timing but maybe not too much and it would be enough for debug.. What is the RAM address of that counter?
marzojr wrote:
it may be possible to do that from the video, actually, but I'd need a 60 fps video to compare frame by frame with the run.
Unfortunately I can only do 30fps video..
marzojr wrote:
For what is worth, the next iteration of the TAS will not use this platform...
What would also help is getting rid of excessive input. For example at the Knuckles emerald cutscene, Tails' left input starts way before game accepts input, which got me confused as inserting 10 frames (for example) before input starts made Tails walk left too much and I got even different desyncs. I usually add more frames for a test, and reduce until minimum needed is found, but it didn't work here until I replaced all excessive frames (33) with no-input.
feos wrote:
Is gpgx so far off to test on?
It's somewhere in between of Gens and real hardware. Seems to be closer to Gens according to floor tiles and almost kills CPZ boss in S2, but also desyncs right there.
Experienced Forum User
Joined: 10/5/2014
Posts: 31
I've tried messing with Sonic 2 and it seems to be a lost cause too. Inserting frames at the start of the level to attempt to manipulate boss panels affects all other objects too, so the move desyncs earlier. Here is how the desync looks when there are no input modifications: Link to video It seems Sonic jumps a bit too early here, which I don't understand why as even if there was lag earlier in the level, amount of frames between start of that spindash and jump should be the same.. If I delay the jump Sonic hits the boss, but he falls to his death at the left corner because the floor is open (unlike in Gens).
Experienced Forum User
Joined: 10/5/2014
Posts: 31
Thanks for all the info..
marzojr wrote:
This counter is used as a weak source of entropy:
  1. Its low bits are used to determine if an event will occur: these event may or may not use the full PRNG for details. Examples: signpost sparkles in S3/S&K (uses PRNG), explosions from bosses in all games (uses PRNG), animals coming from capsules (uses PRNG), starting state of Chemical Plant tipping pipe sections (does not use PRNG), starting state of Wing Fortress platforms (does not use PRNG), and many others.
When you say "uses PRNG", do you mean it derives some larger values from those low bits only, or does it also mix in some previous RNG state?
marzojr wrote:
  • Directly as a source of entropy: in Sky Sanctuary, the boss reseeds the PRNG using the v-int run counter directly.
This looks like a showstopper to me. By the time we arrive at Sky Sanctuary (assuming it's possible at all) this "universal timer" will have a lot larger value in console than in Gens, so it's basically impossible to get the value needed by TAS here.
marzojr wrote:
The function that updates them is called right before the function that updates the ring animation frame, which means they both got called at a different frequency on console than they did on emulator
What made you arrive at this conclusion? Both ring animation phase and the platform differ from emulation, but they still may be in sync with each other. Or do I miss something?
marzojr wrote:
Hm. How many waiting frames (if any) did you have to add to the flame transition?
2 frames had to be inserted before input starts around Knuckles emerald cutscene. 13 frames inserted before spindash after flame transition to avoid the spindash become useless because of screen lock. Note that this only counts frames where the game reads inputs, as it's the only thing that microcontroller uses to advance frames.
Experienced Forum User
Joined: 10/5/2014
Posts: 31
feos wrote:
Bud, why won't you edit the publication since it's verified? Takes a few seconds really.
I can do it if you want, but I'll still wait a bit to see if anyone spots some problem or mistake.
Experienced Forum User
Joined: 10/5/2014
Posts: 31
Well the period of moving platform from my screenshot is 6 seconds or so, I'd have to pause the game (or have Sonic loiter) for around this time which is not going to be fun to watch. That's why I'm hoping I can find someone willing to re-run those sections. This of course assumes remaining movie could still be synced, I'm hoping someone experienced with Sonic runs can comment about that. As for Sonic 2, if the period is shorter, maybe the pauses could be carefully spread out to not be that noticeable, but I don't know..
Post subject: Help wanted for syncing sonic games
Experienced Forum User
Joined: 10/5/2014
Posts: 31
..or at least some advice, I can see quite a lot of people involved with Sonic submissions. As some of you may have noticed, I'm currently working on Genesis console verifications. There are games that work right away, there are others that desync even before menus, and there are some that work after some input tweaking. Sonic games are in that third category. I've started with Sonic1, and it was not syncing, but was quite easy to fix. The reason for those desyncs seems to be that Gens does poor job emulating latencies caused by loading graphics into VRAM, so things go a bit faster in Gens then in the real thing. This could be fixed by inserting some no-input frames in level transitions; main symptom was that Sonic would not do his initial jump at the start of some level (all movement is started with jump in S1 to gain speed, as there is no spindash). So the process was to just insert a frame, play and see how it goes, which was a bit time consuming at the end of the game as there is no easy way to speed up real hardware or load a savestate (had to play the same thing full length each time), but I did it in background while doing other stuff at the PC, so it was ok and worked out in the end. Now with later Sonic games starting from 2, things become more complicated. The games tend to load stuff mid-level a lot more, and that is causing desyncs, but they can be solved the same old way. However those extra frames seem to affect some objects in the game, like moving platforms, which end up in different positions. See screenshots below: GhostSonic had the same issue with Sonic2, I'm also getting desync at the same place, haven't checked in detail but it's probably also the same issue. http://tasvideos.org/forum/viewtopic.php?p=366845#366845 So the question is, if parts of the movie with different object phases would be redone, would remaining levels of the game sync? To put it differently, are Sonic games sensitive to early input changes so much that later levels would desync? If later levels can be synced, would anyone be willing to rework sections of the movie with different object placements? I think it should be possible to recreate object phases in the emulator by keeping Sonic idle for some frames at the start of the level. I'd just need some TASer to re-run those sections in an optimal way (I have no experience in that area to do it myself), while I could provide a gmv (or bkm) which runs upto the object so it's in hardware-compatible phase.
Experienced Forum User
Joined: 10/5/2014
Posts: 31
First 32X verification I think? Link to video As usual, some more info here: http://notaz.gp2x.de/md/verification/
Experienced Forum User
Joined: 10/5/2014
Posts: 31
Oh and it would be interesting to see the map - image links in the submission page are dead.
Experienced Forum User
Joined: 10/5/2014
Posts: 31
Despite all the luck manipulation, this syncs on real hardware, so console verified: Link to video As usual, more info here: http://notaz.gp2x.de/md/verification/
Experienced Forum User
Joined: 10/5/2014
Posts: 31
Console verified: Link to video No loader program or manual input modifications were needed. More info: http://notaz.gp2x.de/md/verification/
Experienced Forum User
Joined: 10/5/2014
Posts: 31
Pokota wrote:
Bluh. Does not sync in Bizhawk 1.8.4, so I can't do an encode with the intended drum sound sound effects.
Try this: http://notaz.gp2x.de/md/verification/aqfaq,sonikkustar,truncated1-tazmania_genplusgx_resync.bkm (only tested on raw genplus-gx, Bizhawk is not fun to get going on Linux..)
Experienced Forum User
Joined: 10/5/2014
Posts: 31
Pokota wrote:
Seriously, why is the drum sound screwy in the older Genesis emulators? Compare the YT Encode with the Console Verification video.
It's an issue with phase counter overflow in YM2612, which wasn't known at the time Gens was developed (although Snake probably knew it and had it right in Fusion). The Genesis/MD GEMS sound driver happened to have an instrument that made use of this "feature", so there are quite a few games affected.
Experienced Forum User
Joined: 10/5/2014
Posts: 31
Console verified: Link to video No loader program or manual input modifications were needed. More info: http://notaz.gp2x.de/md/verification/
Experienced Forum User
Joined: 10/5/2014
Posts: 31
Console verified: Link to video No loader program or manual input modifications were needed. More info: http://notaz.gp2x.de/md/verification/