1 2
13 14 15
19 20
Alyosha
He/Him
Editor, Expert player (3532)
Joined: 11/30/2014
Posts: 2728
Location: US
http://tasvideos.org/userfiles/info/64320753696980848 Here is the other pokemon trading card game run resynced. A very tedious exorcise but necessary to try. Double speed mode timing has some quirks that I don't quite understand yet. Most of the available tests enter double speed mode with the screen still on. GBHawk fails these tests. However, most games enter double speed mode with the screen off, and when turning it back on afterwards, things line up as I would expect (as in these TCG runs.) I think maybe something extra is happening when the screen is left on, maybe it is stopped for a few cycles while the system determines if the STOP command is a speed change stop or a normal stop. So far I haven't been able to reconcile everything though. Gambatte on the other hand passes the double speed timing tests but fails the single speed versions of the same tests. So, something unresolved is happening there. It will probably take some more detailed tests to sort it out. I think for now I can maybe start to branch out from Pokemon games and start to test other games.
Alyosha
He/Him
Editor, Expert player (3532)
Joined: 11/30/2014
Posts: 2728
Location: US
Here is a re-sync of the MIB the series run in current dev build Gambatte: http://tasvideos.org/userfiles/info/64345543143172904 Here is also a GBHawk version, it is not entirely the same in terms of inputs, but it is the same number of frames. The original run uses equal length frames mode, not sure if this has anything to do with it: http://tasvideos.org/userfiles/info/64372467340189285 This is a sufficiently short run that it might be worth testing with. Also this an example of a game that does not turn the screen off while changing to double speed mode, but it does so shortly after and the cycles line up the same in this case.
Judge, Skilled player (1289)
Joined: 9/12/2016
Posts: 1645
Location: Italy
Did you already take a look for fixing the artifacts that appear in the Crystal save glitch TAS, right after clearing the memory save, at the bottom of the screen? Post #495406 from some reports, it seems that this behavior doesn't happen on real console.
my personal page - my YouTube channel - my GitHub - my Discord: thunderaxe31 <Masterjun> if you look at the "NES" in a weird angle, it actually clearly says "GBA"
Alyosha
He/Him
Editor, Expert player (3532)
Joined: 11/30/2014
Posts: 2728
Location: US
ThunderAxe31 wrote:
Did you already take a look for fixing the artifacts that appear in the Crystal save glitch TAS, right after clearing the memory save, at the bottom of the screen? Post #495406 from some reports, it seems that this behavior doesn't happen on real console.
Oh, my bad I must have missed that. Fixed in master now. It's actually an interesting case of changing window Y value to a value that's less then the current scanline value.
Judge, Skilled player (1289)
Joined: 9/12/2016
Posts: 1645
Location: Italy
Are cycles counted as half while double normal speed mode is active? edit: fixed typo.
my personal page - my YouTube channel - my GitHub - my Discord: thunderaxe31 <Masterjun> if you look at the "NES" in a weird angle, it actually clearly says "GBA"
Alyosha
He/Him
Editor, Expert player (3532)
Joined: 11/30/2014
Posts: 2728
Location: US
Changing to double speed mode does not effect the cycle counts. It still counts in single speed ( 4 MHz) increments.
Judge, Skilled player (1289)
Joined: 9/12/2016
Posts: 1645
Location: Italy
Alyosha wrote:
Changing to double speed mode does not effect the cycle counts. It still counts in single speed ( 4 MHz) increments.
This is also no good. I just run some tests with both Gambatte and SubGBHawk, with both a GB game and a GBC game that uses double speed. We need SubGBHawk to count half CPU cycles during normal speed mode, otherwise the value of the cycle count will be unusable for calculating the exact length of movies, especially because the engine of GBC games may change CPU speed at arbitrary moments, so we need the counting to scale with that, just like Gambatte does.
my personal page - my YouTube channel - my GitHub - my Discord: thunderaxe31 <Masterjun> if you look at the "NES" in a weird angle, it actually clearly says "GBA"
Emulator Coder, Judge, Experienced player (608)
Joined: 2/26/2020
Posts: 698
Location: California
ThunderAxe31 wrote:
Alyosha wrote:
Changing to double speed mode does not effect the cycle counts. It still counts in single speed ( 4 MHz) increments.
This is also no good. I just run some tests with both Gambatte and SubGBHawk, with both a GB game and a GBC game that uses double speed. We need SubGBHawk to count half CPU cycles during normal speed mode, otherwise the value of the cycle count will be unusable for calculating the exact length of movies, especially because the engine of GBC games may change CPU speed at arbitrary moments, so we need the counting to scale with that, just like Gambatte does.
GB Game that uses double speed mode? I assume you mean a game with DMG+GBC on the header, considering games with only DMG on the header (like Pokemon Red/Blue) cannot enter double speed mode (nor are they able to use other GBC only features like extended RAM). In any case, this should probably be moved to the GBHawk thread, as this isn't applicable for this submission.
Judge, Skilled player (1289)
Joined: 9/12/2016
Posts: 1645
Location: Italy
That's not what I mean. Of course GB games don't use double speed mode (unless you force them to do so with some heavy glitching or ACE), but GBC games do change CPU speed at arbitrary times, so we need the SubGBHawk core to count half cycles during normal speed, and counting full cycles during double speed, just like Gambatte does. This is the only way to have a CycleCount value that reflects the exact movie length.
my personal page - my YouTube channel - my GitHub - my Discord: thunderaxe31 <Masterjun> if you look at the "NES" in a weird angle, it actually clearly says "GBA"
Emulator Coder, Judge, Experienced player (608)
Joined: 2/26/2020
Posts: 698
Location: California
ThunderAxe31 wrote:
That's not what I mean. Of course GB games don't use double speed mode (unless you force them to do so with some heavy glitching or ACE), but GBC games do change CPU speed at arbitrary times, so we need the SubGBHawk core to count half cycles during normal speed, and counting full cycles during double speed, just like Gambatte does. This is the only way to have a CycleCount value that reflects the exact movie length.
"force them" You can't. If the header says it's DMG only (like Pokemon Red/Blue does), the BIOS will boot into a pseudo DMG mode, and one of the things this mode does is make it so you cannot write to rKEY, which is needed to switch to double speed mode, and thus the stop opcode used for the switch will hang the system. (of course, if the header says DMG+GBC, it isn't locked out provided you're booting on a GBC). Ok minor rant aside, my point was that this shouldn't matter for this movie's CycleCount at all :P
Alyosha
He/Him
Editor, Expert player (3532)
Joined: 11/30/2014
Posts: 2728
Location: US
I'm not sure what you mean, but the returned cycle count accurately keeps track of time at a resolution of 4 MHz. , regardless of what speed mode the system is in at what time. Just divide the returned cycle count by 4194304 to get the time in seconds.
Judge, Skilled player (1289)
Joined: 9/12/2016
Posts: 1645
Location: Italy
Alyosha wrote:
I'm not sure what you mean, but the returned cycle count accurately keeps track of time at a resolution of 4 MHz. , regardless of what speed mode the system is in at what time. Just divide the returned cycle count by 4194304 to get the time in seconds.
That works for games that don't use double speed, but for games that do, it gives a completely wrong value. Try to calculate the movie length for a GBC game that uses double speed mode. You'll get about half of the expected amount of seconds. Emphasis on "about", because during the BIOS sequence it's always in normal speed, and then each GBC game sets the double speed mode at a different timing. So the cycle count needs to scale dynamically with that.
my personal page - my YouTube channel - my GitHub - my Discord: thunderaxe31 <Masterjun> if you look at the "NES" in a weird angle, it actually clearly says "GBA"
Alyosha
He/Him
Editor, Expert player (3532)
Joined: 11/30/2014
Posts: 2728
Location: US
Are you using dev build? It wont work in 2.4.2, but seems to work fine in dev build, i tried just now.
Judge, Skilled player (1289)
Joined: 9/12/2016
Posts: 1645
Location: Italy
All right, I downloaded the latest devbuild and done more tests. It all seems to be working correctly. Sorry for the false positive.
my personal page - my YouTube channel - my GitHub - my Discord: thunderaxe31 <Masterjun> if you look at the "NES" in a weird angle, it actually clearly says "GBA"
Alyosha
He/Him
Editor, Expert player (3532)
Joined: 11/30/2014
Posts: 2728
Location: US
http://tasvideos.org/userfiles/info/64926196486444191 Here is a resync of the old pokemon yellow ACE movie for Pi Day. It works except that it writes to VRAM at times that it's not accessible, so the result is glitched in appearance. If I let VRAM writes always succeed (not console accurate) it does look the same as the original. My ultimate goal is to use SubGBHawk to have a console verified version of MrWint's new Pokemon Yellow ACE run, this test was just a first step. I'm not sure exactly how that will work out yet though. Also I'm getting into console verification with GBI myself, and I'm open to suggestions on what existing GB runs people might want to see resynced and console verified. I think any game not using double speed mode or using hard rests or uninitialized memory should be verifiable now. But, the more games that get tested the more edge cases might pop up, so I'm just going to be testing all kinds of games.
Alyosha
He/Him
Editor, Expert player (3532)
Joined: 11/30/2014
Posts: 2728
Location: US
http://tasvideos.org/userfiles/info/64967031374165337 I can finally get GBHawk runs console verified now. you can run the above script with a GBHawk movie and get an input file that works with GBI. In it's current form it only works with single speed mode movies, but I'll be expanding capabilities to double speed and subframe in the future. I have verified this version of Kwirk with it already: http://tasvideos.org/userfiles/info/64882123397930984 More to come as I figure out the process a bit better. I don't have a capture device so no video right now though.
TiKevin83
He/Him
Ambassador, Moderator, Site Developer, Player (120)
Joined: 3/17/2018
Posts: 348
Location: Holland, MI
Awesome!
Alyosha
He/Him
Editor, Expert player (3532)
Joined: 11/30/2014
Posts: 2728
Location: US
http://tasvideos.org/userfiles/info/64970777987927243 Battletoads by lobsterzelda. Apparently GBI doesn't play the last input in it's file, so I had to extend one frame so the last input would be empty, otherwise the last boss is left with 2 health. Otherwise, easy resync.
Emulator Coder, Judge, Experienced player (608)
Joined: 2/26/2020
Posts: 698
Location: California
Alyosha wrote:
Apparently GBI doesn't play the last input in it's file
That's normal behavior, GBI expects 00 on the next line so it knows how long to press the button. If it doesn't have that, it won't press the button.
TiKevin83
He/Him
Ambassador, Moderator, Site Developer, Player (120)
Joined: 3/17/2018
Posts: 348
Location: Holland, MI
Yeah we ran into this over the weekend when the last input didn't work on Super Mario Advance 4 until we added a blank input at the end.
Alyosha
He/Him
Editor, Expert player (3532)
Joined: 11/30/2014
Posts: 2728
Location: US
http://tasvideos.org/userfiles/info/64991397408720138 Not a GBHawk movie, but here is a console verified version of Zen Intergalatic Ninja by EZGames69. I'll try to get a GBHawk version too. There is a lot of lag and sprites and scrolling all going on at the same time in this game, so it's a good one to verify.
Alyosha
He/Him
Editor, Expert player (3532)
Joined: 11/30/2014
Posts: 2728
Location: US
http://tasvideos.org/userfiles/info/65037296378073579 Here is a console verified version of Zen for GBHawk. This run actually failed at first because of behaviour of writing to the LY register. The GB CPU manual states that writing here resets the counter, but even if this is true for the GB, it is definitely not true for GBC, as the run will fail to console verify if this is the case. I have committed a fix accordingly. So this process has already revealed some important information. (Zen is the only game I know of that tries to do this, and does so for no real reason, it writes zero but then just waits for VBL shortly after.) I have also verified a version of the Donkey Kong Land 2 TAS I have been working on up to beating K. Rool for the first time, so that was cool to see as well.
Alyosha
He/Him
Editor, Expert player (3532)
Joined: 11/30/2014
Posts: 2728
Location: US
I updated controls for Kirby Tilt n' Tumble to better match what I get on Console; it's pretty close now, but there are a lot of factors that I didn't account for to simplify things. The control scheme doesn't work so well with a joystick because it's pretty non-linear, but works pretty well with a mouse as long as you make the screen size large and remove dead zone. I'm not very good at either console or emulator control though so individual results may vary. I also console verified this version of Men in Black the Series for Gambatte: http://tasvideos.org/userfiles/info/65096124653759503 The run I posted previously did not sync on console, due to it using equal length frames and there was a case where I guess input showed up too close to a frame boundary. I expected this kind of thing to happen, it's definitely best not to use equal length frame mode when TASing with Gambatte. The GBHawk version did not verify, looking at trace logs it looks like mode 3 timing in double speed mode is the culprit (indirectly anyway, it's actually HDMA occurring slightly too early but that is timed off of the end of mode 3.) This is a known issue and something I'll start addressing after 2.5 is released. For now I'm going to continue with single speed mode testing. Also I confirmed that Star Trek 25th anniversary has a system dependent glitch in the PPU where a text box border can be aligned or misaligned. Old consoles (GB and SGB) have it aligned and at GBP has it misaligned. Not sure about any other details. Still a lot of R&D to do.
Alyosha
He/Him
Editor, Expert player (3532)
Joined: 11/30/2014
Posts: 2728
Location: US
I've started looking at gambatte's hardware tests to see if they could help at all with Men in black. It has a lot of useful HDMA tests, and it turns out that I was starting HDMA too early. After fixing that Men in Black behaves much closer to Gambatte, but still doesn't work on console due to STAT timing not being exactly right. The HDMA timing issue also effects single speed mode, so I went ahead and committed the fix, but hardly any games actually care about when HDMA starts, only how long it takes, so this didn't effect any other runs in my testing, even Pokemon TCG which requires perfect accuracy in a lot of other ways. It's a pretty lucky coincidence that Men in Black just happens to require the most complete accuracy of any game I've tested so far. So far I have not found any deficiencies in single speed testing. I partially re-syncing the Metroid 2 select glitch run since it's very glitchy and it worked just fine. The resync process is quite horrible though as RNG does not work out at all. I managed to get up to the first 7 metroids but I don't think I'll go any further, it's just too much effort. I also recorded a quick movie of Micro Machines by hand for the first few tracks and it also worked fine. I'm going to keep testing with a few more games before trying to tackle double speed STAT timing.
TiKevin83
He/Him
Ambassador, Moderator, Site Developer, Player (120)
Joined: 3/17/2018
Posts: 348
Location: Holland, MI
Awesome, I was able to verify LADX Any% yesterday in addition to the No Wrong Warp run that's been verified. No changes were needed despite the run being done without the GBA in GBC mode.
1 2
13 14 15
19 20