1 2
12 13
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3808)
Joined: 11/30/2014
Posts: 2828
Location: US
Looks like a problem with the triangle channel linear counter. Should be an easy fix. I'll look into it in the next couple of days. Thanks for the report. EDIT: fixed
Editor, Emulator Coder, Site Developer
Joined: 5/11/2011
Posts: 1108
Location: Murka
Alyosha wrote:
Looks like a problem with the triangle channel linear counter. Should be an easy fix. I'll look into it in the next couple of days. Thanks for the report. EDIT: fixed
Sweet! Thanks for that. Now NesHawk is more than 100% accurate!
Fortranm
He/Him
Editor, Experienced player (877)
Joined: 10/19/2013
Posts: 1121
http://castlevania.wikia.com/wiki/VS._Castlevania
The difficulty level, starting number of lives and bonus points awarded at the end of each "block" can be altered by adjusting the DIP switches on the actual board.
Can this be done on NESHawk? Pressing the button for Service Switch works the same as pressing the button for Insert Coin P1/P2.
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3808)
Joined: 11/30/2014
Posts: 2828
Location: US
Yes. Dip switches are part of the sync settings and are not controls like ‘insert coin’. You can find them in one of NESHawk’s menus (I’m not at my computer right now though to check which one .)
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3808)
Joined: 11/30/2014
Posts: 2828
Location: US
An interesting development has come up in NES emulation recently that might lead to better possibilities for console verification. You can read about the details here: http://forums.nesdev.com/viewtopic.php?f=3&t=18113 Basically, a bus conflict exists when writing to ppuaddr ($2006) which causes incorrect scrolling to happen. The most obvious effect of this is the background glitching out. But, a side effect of this is that it can effect sprite zero hit (since sprite zero hit requires a non-zero background pixel.) Any game that happened to run into this in the past would fail on console since it was completely unemulated. I'm thinking Battletoads warpless probably ran into this at some point, but haven't tested for sure. The results are still coming in but it seems completely consistent and easy to emulate. There is also the possibility that other registers (notably ppuscroll at $2005) might have similar difficulties. This is pretty exciting since console verification (at least from my perspective looking at the emulator side) was basically stuck without any leads, and now things are starting to open back up again. So expect some relatively big commits coming down the line. Overall very few games should be effected, but it may cause desyncs in some cases.
adelikat
He/Him
Emulator Coder, Site Developer, Site Owner, Expert player (3570)
Joined: 11/3/2004
Posts: 4754
Location: Tennessee
Wow, exciting news! I look forward to what develops from this
It's hard to look this good. My TAS projects
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3808)
Joined: 11/30/2014
Posts: 2828
Location: US
Alright, a bit of exciting news, I finally figured out how to sync movies between Mesen and NESHawk! This took me many hours of frustration only to find that the problem was just a flag that was set differently between Mesen and NESHawk at power on. But now I should be able to do sync testing between them and look for differences in a way that actually makes sense. I already tried with Streemerz and the results are encouraging, perfect sync at similar power on state. And since Streemerz is known to be a ppu timing sensitive game, this brings fresh hope that it should be verifiable on console (once I re-make a run with the Mesen settings.) I also started implementing the new finds with $2006 writes, but so far it has minimal impact (since most games rightly stay away from this case.) But still it's an important accuracy improvement, with more edge cases still to come. Assuming these things sort out existing problems with getting basic runs to sync on console, it will finally be time to look ahead to the dreaded DMC DMA cases and games that use a reset sequence.
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3808)
Joined: 11/30/2014
Posts: 2828
Location: US
I made some improvements to NESHawk that give a roughly 5 fps boost in performance through some simple code optimizations. Some gems of wisdom include:
if (true)
else if (false)
replaced by simply:
if (true)
else
I also rewrote the audio handling to bring it in line with other cores and simplify it a bit. Note that these changes break savestates (but not sync)
Joined: 9/12/2014
Posts: 539
Location: Waterford, MI
Is the nanjing mapper supported? The one with ff7 on nes? I'm not sure if this was an emulator bug or game bug, but on fcuex, the equipment in that game was pretty selective for some reason. What I mean is, when red XIII joined the party, he came with some good equipment. Removing that equipment for someone else doesnt seem to make any difference? Also, equipment that is dropped in one area like before guard scorpion saved up for tifa before air buster, the strength stats somehow maxes out and says her strength stat is very high. When in battle, it doesnt seem to have any effect. How would they screw that up? Some pointer goes somewhere else? Not read right?
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3808)
Joined: 11/30/2014
Posts: 2828
Location: US
Did you try it? There are various supported Nanjing mappers.
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3808)
Joined: 11/30/2014
Posts: 2828
Location: US
I have updated NEShawk's startup state to match console testing I have been doing. Now several more timing sensitive games console verify that didn't work before. Donkey Kong, Nightshade, Roger Rabbit all sync on console through full runs. I nice side effect of the state I chose (out of 3 more or less equally reasonable options) is that the runs of Battletoads still sync, with very minor adjustment for initial lag frames. I have console verified the current 2 player warps run to verify this, will post videos when I organize everything. I've also made some other small updates to how input is polled so that games like Bionic Commando which hit some edge cases now console verify as well. this game always gave trouble before, but the emulation was never wrong, only the communication between emulator and console. I'm very confident in the new state, and am hopeful many more games can be verified now, and maybe progress can be made on DMC timing (assuming it's not random.) As a final side note, the Streemerz runs, which have never worked on console, still work in the new state, that game is a real mystery! Link to video
Bigbass
He/Him
Moderator
Joined: 2/2/2021
Posts: 189
Location: Midwest
Alyosha wrote:
Donkey Kong, Nightshade, Roger Rabbit all sync on console through full runs.
Was it necessary to resync these TASes in order to verify them? If so, do you have the resynced movie files available somewhere?
Alyosha wrote:
I've also made some other small updates to how input is polled so that games like Bionic Commando which hit some edge cases now console verify as well. this game always gave trouble before, but the emulation was never wrong, only the communication between emulator and console.
What do you mean by the communication between the emulator and console? Also, if small updates had to be made, how was the emulator never wrong? Isn't input polling, a part of the emulation?
Alyosha wrote:
...Bionic Commando which hit some edge cases...
Curious, what were these edge cases?
TAS Verifications | Mastodon | Github | Discord: @bigbass
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3808)
Joined: 11/30/2014
Posts: 2828
Location: US
Yes resyncing was necessary, as I get organized I am putting files here: https://github.com/alyosha-tas/NES_replay_files I mean things that got sent to lua scripts were slightly wrong (lag detection, input poll event), actual execution didn't change at all (except right now with the start up state update, but that doesn't matter for bionic commando.) Bionic Commando occasionally encounters situations where input is polled, but then not read because something else interrupts it. Before fixing things up this would result in bad lag detection and mess up the dump. Additionally, the all items run runs into a case where input is polled twice in one frame (it only happens once in the entire run!) and this case was missed by the frame dump script, so it needs the poll dump script. Link to video
Fortranm
He/Him
Editor, Experienced player (877)
Joined: 10/19/2013
Posts: 1121
I'm not sure if it has been asked before, but how feasible is it to add PLAYCHOICE-10 support?
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3808)
Joined: 11/30/2014
Posts: 2828
Location: US
Fortranm wrote:
I'm not sure if it has been asked before, but how feasible is it to add PLAYCHOICE-10 support?
Doesn't look like it would be too hard, but I don't really see a compelling reason to do so.
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3808)
Joined: 11/30/2014
Posts: 2828
Location: US
Some interesting new quirks are being discovered in the NES by the folks at NesDev. In particular, OAM DMA will read data from the external bus whenever the cpu is accessing the external bus. One implication of this is that there are 0x20 bytes at 0x4000 that OAM DMA can read but the CPU cannot (because the CPU will always access registers there.) It works in the other direction too, OAM DMA will access registers if cpu is executing from register space. (Setting this up is very non-trivial, the test ROM Fiskbit came up with is a pretty good emulator test just to get the setup right.) I just implemented this into NESHawk: This doesn't really mean anything for TASing, I just think it's cool to see new things still being discovered.
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3808)
Joined: 11/30/2014
Posts: 2828
Location: US
With some more help from Fiskbit in working out some edge cases, and puzzling out a few remaining unknown effects myself, the milestone of being able to console verify NES games with full DMC emulation is finally being achieved. The end result is verification of a resync of Super Mario Bros 3 Warpless: Link to video At the moment, I do not have any TASes known to desync on console due to emulation issues. Other games using the DMC channel also work, such as Tiny Toon Adventures 2: Link to video (I also have a TAS of Time Lord that syncs on console up to the last boss but very unfortunately desyncs due to uninitialized RAM.) Starting with 2.7.1, most NES games should be console verifiable with NESHawk.
1 2
12 13