Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1301)
Joined: 12/21/2004
Posts: 2687
I think GuanoBowl started with it checked and didn't want to start over. It does seem to cause some unreliability... The pause screen issue is possibly a bigger problem, though.
The plugins weren't designed to be able to do that. The timing is determined by the emulator core, not the plugins. This is one game where the graphics plugins can affect the timing (only at pause screens), but that's most likely a bug in the emulator core and not the fault of the plugins.
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1301)
Joined: 12/21/2004
Posts: 2687
Oops, it was nowhere. It's here now. Note that both acts need redoing as they still aren't as fast as possible.
Also, I've noticed that Sonic/Cream is better than Sonic/Tails in several ways, too bad Cream is unlocked so late in the game...
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1301)
Joined: 12/21/2004
Posts: 2687
Did you watch the test run I did of acts 1 and 3 with Tails/Sonic? They can definitely be faster than Sonic/Tails, especially with the "secret" capabilities that Sonic's tag action boost gives Tails (double jump if you press A when you release R, and an even more massive speed boost than normal if you do that or are holding Down when you release R. The speed gain is further amplified by downhill slopes to speeds much faster than Sonic can ever travel, and flying completely preserves that speed).
EDIT: Hmm, it looks like all cut scenes can be skipped by resetting the game (you still keep the new character and beat the level).
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1301)
Joined: 12/21/2004
Posts: 2687
Actually in the test I did of it, it was a lot faster to reset the game (soft or hard) and go through the title screen again than it was to switch at the factory.
Also, if you look at the TSC record times for this game, most of them were done using Sonic+Tails and not one of them that I can find was done using Tails+Sonic, so it's not at all obvious that Tails+Sonic would be faster overall if only sticking with that team.
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1301)
Joined: 12/21/2004
Posts: 2687
I bet fcm->smv could be done with some delays inserted between levels to convert existing SMB3 movies to run in Super Mario All-Stars.
A suggestion about the editor: Make sure you have some way of representing analog input, or M64 editing won't work too well. Also, it seems like this is the 3rd or 4th independently started project of this nature, maybe there should be some code sharing or something...
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1301)
Joined: 12/21/2004
Posts: 2687
You're acting as if it's necessary to play through the entire game with the same team. The goal will be in-level time primarily and then real-time (EDIT: with the additional restriction that no level will be played twice), in which case it's probably worth it to switch to Sonic+Tails for certain acts. (Route 99 Act 2 looks like a good candidate for this, but I'm still not 100% sure about it.) Also, I'm not sure yet which of the other characters might be worth getting. I used Tails/Sonic because they were faster at getting through the level; out-of-level time is only a secondary concern. Using SRAM to have the characters already unlocked might be something to consider, though.
It probably takes more strategy, with the different character teams and tag actions to choose from. At least, to TAS it might require playing through each level with multiple teams to see who ends up being fastest.
No, I'm barely able to follow any route through a level without accidentally taking some different route, much less approach any record times. I could probably do it with enough practice, but I'm content to just make it through the game when playing normally.
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1301)
Joined: 12/21/2004
Posts: 2687
But isn't it the same Sega CD savestate support we already have? I mean, it says on the Gens site that the Sega CD savestate contributions were by upthorn.
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1301)
Joined: 12/21/2004
Posts: 2687
Why is this being done as a 1-player run instead of as a 2-player run? (To make it not too hard to do, or is it actually faster?) It's fine either way, I'm just wondering what the reason is.
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1301)
Joined: 12/21/2004
Posts: 2687
I made a minor update after v18 (now v18.1) to address the Pokemon Gold/Silver time problem better, especially to display a message of about what time and date the ROM thinks it is. (I say "about" because the message shows it adjusted to your local time whereas the ROM gets it as GM time.) I've been able to watch the Silver and Gold movies somewhat reliably now without changing the system date. It might be only a temporary coincidence that it's currently working for me, but I don't see anything leftover in the code that can use the system time while a movie is open.
EDIT: I had forgotten to also update the mirror download until now. The About dialog will actually display "v18.1" in the version number if you have the version I'm talking about.
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1301)
Joined: 12/21/2004
Posts: 2687
You could also try this or this.
EDIT: I just tested the second one of those and it worked perfectly fine for VBA and whatever else I tried. Just have to download the thing called "demo project" and open the .exe file inside and everything gets a pin icon to set it to always on top.
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1301)
Joined: 12/21/2004
Posts: 2687
These are the changes made in version 18:
- made throttle speeds below 6% not skip an extra frame when unpausing
- made maximized status of the window not get reset when loading a ROM
- made pressing a key that is set to as auto-held temporarily unhold the key
- added color-coded display of auto-hold and auto-fire input
- - white means pressed this frame
- - yellow means auto-held and pressed
- - red means auto-held but not pressed this frame
- - blue means auto-fired and not pressed this frame
- - black means it's not pressed but was displayed last frame
- - text display mode must be set to either "in game" or "on game" for this to work
- made mismatching ROM info display in red in the movie open dialog
- added "decimal display" option to the memory viewer, to show values as signed base 10 numbers
- made "automatic update" and "decimal display" settings save
- - the checkmark initial state is displayed wrong for non-defaults, but it's saved
- fixed some code that was resetting the real-time clock of some games to current local time while playing a movie
- - it still desyncs sometimes for unknown reasons, but maybe less often now
- made the "too many search results" message in the cheat search dialog less misleading
That means that these problems specifically should be addressed:
Well, it's merged into the current display via color-coding, that's probably good enough.
I assume you meant un-maximizes, not minimizes, in which case it's fixed.
It's not quite as bad now.
Also...
I think it would be easier if you just run one of those programs that adds an "always on top" button to everything, rather than have it added one at a time to each emulator.
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1301)
Joined: 12/21/2004
Posts: 2687
Here is a video beating act 1 in 0'32''47 (!) using Tails.
The speed trails increase the maximum speed you can reach while running (or probably also rolling) on the ground by about 50%. They're impossible to get if Sonic isn't one of the two players.
EDIT: Look at 030015d8 in the memory viewer, that value is the character's horizontal speed.
(More specific instructions: choose "Tools->Debug->Memory Viewer...", paste 030015d8 address in the top-right box, click Go and it should be the top-left number, make sure "16-bit" and "decimal display" are enabled. The value after it is vertical speed.)
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1301)
Joined: 12/21/2004
Posts: 2687
I think Tails+Sonic will definitely be faster than Sonic+Tails, at least on act 1. I got something like 0'36''50 with them, and I know that can go lower.
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1301)
Joined: 12/21/2004
Posts: 2687
Already did, found a way to extend the jump length slightly which is useful for small optimizations, but nothing of the "beat the level 30% faster" variety.
Thanks, I'd forgotten about that one. That particular trick is pretty slow but maybe there is a faster variant...
Sounds like a good idea, although actually Veysey seemed to know more about it, and the topic in question hasn't had a new post since December.
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1301)
Joined: 12/21/2004
Posts: 2687
This exact same thing happened to me in the SNES version. But it turned out to be even faster to run-jump through with slightly different timing so that you bypass the fight without getting shot in the next room.
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1301)
Joined: 12/21/2004
Posts: 2687
I was thinking about this, but a forum page I found on the Treasure Fanpage makes it pretty much impossible to continue a run of this game until someone can figure out what they're talking about.
(Link)
They claim to have found something called a "boost grab", which allows for an extra-high jump at slide-dash speed or faster. Supposedly it goes high enough to fly over those blocks at the top of 3-1, which, being 2 screenfuls high, are pretty difficult to get on top of. Anyone have any ideas what this "boost grab" could be, or has anyone else encountered it before?
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1301)
Joined: 12/21/2004
Posts: 2687
I'd watch the first quest, but I think the second one is more suited for a regular speedrun than a TAS. With good manipulation of randomness and frame-precise control of attacks (on bosses), I think Sora's quest would definitely not be too long or boring for a TAS.
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1301)
Joined: 12/21/2004
Posts: 2687
Actually there would be a guarantee, if it's done right. As long as you can make sure the initial state of emulation is the same (which I bet is not completely true now) and that the same button sequence is pressed (which should already be the case), the CD seeks and reads should happen in the exact same emulation environment and thus (because they're just virtual delays the emulator decides on, not actual hardware delay times) those operations should last the same number of frames each time.
You could try removing the delays to make CD operations not last any frames, but I'd consider that a last resort because it could alter emulation (if any games rely on the delay being there, it would introduce bugs in those games).
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1301)
Joined: 12/21/2004
Posts: 2687
It shouldn't need to be a blocking operation to operate consistently, unless it's running it in a separate thread (which I don't think it is). If the CD seeks and reads aren't taking a constant amount of time under the same circumstances, then the problem is probably that the functions for performing CD seeks and reads are using some variables that don't get saved and/or reset properly (or at all).
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1301)
Joined: 12/21/2004
Posts: 2687
I don't know if it actually worked, but I put the modified executable here. I made buf static instead of allocating it with new, since you said you just wanted it off the stack, and the new would leak without a delete.
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1301)
Joined: 12/21/2004
Posts: 2687
It's just UPX. Download UPX and run "upx --best gens.exe" and the filesize will decrease drastically.
As for recording Sonic CD not working, I can confirm that it happens even when I don't use any savestates (not sure why, sorry) and usually sometime around the startup screen, although sometimes it does actually work pretty well. Enabling "perfect synchro" could be necessary but definitely isn't enough to fix it.
One change you should make: in Load_State, there's a commented-out line that says "Reset_VDP();". I don't know why it's disabled, but without it the emulator core sometimes freezes when loading a save state, so it should be re-enabled.
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1301)
Joined: 12/21/2004
Posts: 2687
In that example I think it's not enough justification to not play on hard mode. Maybe if the bosses had long invulnerability periods and still took more hits, but in that game the bosses were short enough already in either mode.
In this case, hard mode isn't available from the start, so it'll take more justification than "hard mode is better". If you (pirate_sephiroth) don't want to explain it anymore, you could show some of the progress you've made already so people can judge whether it's really different enough. Since you're new to TASing and have stated that you don't like perfection in these movies, it doesn't seem likely that what you do initially on your own will be accepted.
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1301)
Joined: 12/21/2004
Posts: 2687
I don't know if this is the same, but there's some bug with movie lengths and savestates that makes it so you have to frame advance at least 1 frame after loading a save state while recording before stopping (or playing) the movie, or the movie length will probably be different from what was in the savestate. It can make it too short or too long depending on where in the movie you were before (in your case it was longer).
edit: From your description, I think it could be related somehow, but I'm not exactly sure how.