1 2 3 4
12 13
Warepire
He/Him
Editor
Joined: 3/2/2010
Posts: 2174
Location: A little to the left of nowhere (Sweden)
I have been damn impressed with your progress each time I see the notification on IRC that you updated this topic and then me checking what you have done. As a guy who's constantly advocates accuracy you have my biggest possible support and awe for the work you put in to this. Keep it up!
Alyosha
He/Him
Editor, Expert player (3535)
Joined: 11/30/2014
Posts: 2732
Location: US
Thanks a lot! I really like accuracy too, and I was always curious why NES emulation never really made into the realm of bsnes in terms of accuracy, despite the wealth of research done by NesDEv folks over the past few years. I think we're getting closer now though (at least with NTSC variants.) BizHawk was already really powerful, and my hope is that the accuracy improvements , combined with feos' numerous improvements to TASStudio, might bring in some runs that can be console verified. My personal goal is to have verifications of MegaMan, Punch Out, and Battletoads. I'm making progress on APU Mixer tests. I'm using the full nonlinear mixer now, and DMC and Noise sound perfect. Triangle sounds strange but roughly matches punes, so not sure what to make of that one. Square is a mess. Audio is not my strong suite so it might take a while to track down what's going on, but either way 4 tests to go!
Sonia
She/Her
Joined: 12/6/2013
Posts: 435
Location: Brazil
Alyosha wrote:
Thanks a lot! I really like accuracy too, and I was always curious why NES emulation never really made into the realm of bsnes in terms of accuracy, despite the wealth of research done by NesDEv folks over the past few years.
I've been wondering about this for a while too. Pretty impressive how SNES got to 100% accuracy before the NES, even though the latter is very well documented. Anyway, only 4 tests to go? I'm confident you'll be able to pass them as well. ^-^
Editor
Joined: 3/31/2010
Posts: 1466
Location: Not playing Puyo Tetris
What is the white square doing? Is that normal?
When TAS does Quake 1, SDA will declare war. The Prince doth arrive he doth please.
Alyosha
He/Him
Editor, Expert player (3535)
Joined: 11/30/2014
Posts: 2732
Location: US
hegyak wrote:
What is the white square doing? Is that normal?
Yup it's normal. That square is sprite zero, so presumably it's used for timing, although I don't know how exactly. I got square channel mostly worked out, although something seems off:
NesDev Wiki wrote:
The reason for these odd sequences is that the sequence counter is initialized to zero but counts downward rather than upward
Right now it only works by counting up, not down as is clearly intended, so not sure what all that is about, but the test is much much closer to correct now.
Joined: 1/19/2010
Posts: 146
Alyosha, I know of an NSF player by the name of NSFPlay which was reworked by someone called Rainwarrior. It is considered to be highly accurate, including for the mappers. Do you think that can be of some use to you?
Alyosha
He/Him
Editor, Expert player (3535)
Joined: 11/30/2014
Posts: 2732
Location: US
RaijinXBlade wrote:
Alyosha, I know of an NSF player by the name of NSFPlay which was reworked by someone called Rainwarrior. It is considered to be highly accurate, including for the mappers. Do you think that can be of some use to you?
Thanks for posting that, I looked over the code and even there they count up. Every over place I check also counts up, so I'm not really sure why the wiki says it counts down, counting up also gives correct test results, which is good enough for me! Down to just 2 tests, scnaline and TVpassfail. I'm not really interested in the TV one since it's just a filter, maybe I'll do it eventually. Scanline is puzzling. Currently I get results similar to punes, and the test seems to rely a bit on start up state. I also don't see how FCEUX is able to pass it, I'm guessing a false positive. EDIT: I finally fixed the Saint Seiya - Ougon Densetsu Kanketsu Hen glitch. This turned out to be a ppu $2007 write during rendering, for which you simply need to read from address the background renderer is using instead of the normal vram one. A simpler fix then I realized. I'm happy that this one is done, as it was one of the first things I tried fixing.
Sonia
She/Her
Joined: 12/6/2013
Posts: 435
Location: Brazil
Alyosha wrote:
Down to just 2 tests, scnaline and TVpassfail. I'm not really interested in the TV one since it's just a filter, maybe I'll do it eventually.
So it's not important then? I'd like if you could tell me more about TVpassfail (what we'd be missing out if it's not accurate). I like learning about those little things whenever possible.
creaothceann
He/Him
Editor
Joined: 4/7/2005
Posts: 1874
Location: Germany
Gamer Maiden Sonia wrote:
Alyosha wrote:
Down to just 2 tests, scnaline and TVpassfail. I'm not really interested in the TV one since it's just a filter, maybe I'll do it eventually.
So it's not important then? I'd like if you could tell me more about TVpassfail (what we'd be missing out if it's not accurate). I like learning about those little things whenever possible.
https://github.com/christopherpow/nes-test-roms/tree/master/tvpassfail
Alyosha
He/Him
Editor, Expert player (3535)
Joined: 11/30/2014
Posts: 2732
Location: US
Gamer Maiden Sonia wrote:
Alyosha wrote:
Down to just 2 tests, scnaline and TVpassfail. I'm not really interested in the TV one since it's just a filter, maybe I'll do it eventually.
So it's not important then? I'd like if you could tell me more about TVpassfail (what we'd be missing out if it's not accurate). I like learning about those little things whenever possible.
Well it's important for proper appearence, but it's basically a post processing feature so it doesn't effect core emulation. The test is looking for proper emulation of cross talk between components of the output color singal. I'm no expert so here is a picture of the comparison between 2 filters in punes, the left emulates NTSC video signal output to a real life TV, the right is just raw video output. Bizhawk looks like the right, so at some point a filter needs to be put in to make it look like the left.
ody
Joined: 11/12/2014
Posts: 14
Alyosha wrote:
Down to just 2 tests...
The results of your efforts are quite impressive.
Alyosha
He/Him
Editor, Expert player (3535)
Joined: 11/30/2014
Posts: 2732
Location: US
ody wrote:
Alyosha wrote:
Down to just 2 tests...
The results of your efforts are quite impressive.
Thanks! So at this point I think the core itself is in pretty good shape. There are still some things I would like to clean up but for now I'll take a break from the code and move on to other forms of testing. I have taken jlun2's advice and started looking at console verified runs. SMB3 is the most obvious choice for me since it uses the DMC channel and that had a major timing change in my recent improvements. The game end glitch run still syncs as it did on 1.11.6 (you have to remove one frame at the beginning though.) Then I remembered something True had wrote from the warpless run console attempt:
True wrote:
Edit: The run went well. It desynced after 2-1, just as PRG1 did on emulator. This is both a good thing and a bad thing. I need SMB3 PRG0 or a donor to continue, but it may verify yet. I'll see what I can do. Edit 2: I ran PRG0 SMB3 on console. It desycned as PRG1 did on console and emulator. This might (or might not?) be a helpful test in improving emulation.
I tried this on 1.11.6 and realized it desynced in a different spot, in 1-4. This was an excellent test point, so I tried the run on the current version and it instead de-synced after 2-1, just as True describes. This is defintely an improvement, as it behaves just as console does now. I think this is a good sign. Over the next few days I'll re-test some of the longer runs, but they are already highly likely to sync since they were made on the much less accurate fceux to begin with. I'll also see if I can learn anything from other runs that failed to sync, if they desync in the same manner, this seems like a good path forward. ______________________________ Also, if anyone wants to download and test the current version, I am definitely in need of new test cases. So if you see something not quite right, or a game that doesn't work , I could really use a report about it. Update on syncs: SMB 2 warpless syncs. But I encountered an interesting timing issue. I originally deleted a frame at the begining of the movie, since an early vsync allows input a frame earlier. However it turns out that this thorugh the run off all the way at frame 50000. When i didn't remove the frame it synced just fine. This is strange since I would not expect this to be the case in general. It could just be that the run syncs on console through astounding luck. Anyway, that it syncs is good confirmation. I also tried looking at some failed syncs. Looking at Punch out was first on my list. Adelikat's run syncs all the way through, even though it desyncs on console. I'll try looking into this a bit to see what's going on.
Sonia
She/Her
Joined: 12/6/2013
Posts: 435
Location: Brazil
Good luck with the syncing, Alyosha. By the way, will the updated (98% accurate) neshawk core be available on the next BizHawk release? :) I want to do a few movies but I'd rather wait until the core gets updated.
Editor
Joined: 3/31/2010
Posts: 1466
Location: Not playing Puyo Tetris
Gamer Maiden Sonia wrote:
Good luck with the syncing, Alyosha. By the way, will the updated (98% accurate) neshawk core be available on the next BizHawk release? :) I want to do a few movies but I'd rather wait until the core gets updated.
It should be in the next release pending nothing is outright wrong.
When TAS does Quake 1, SDA will declare war. The Prince doth arrive he doth please.
Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11273
Location: RU
zeromus wrote:
Feos, be my guest. I don't like the way it looks, and it's a speedhack, but that part of the emulator core is not likely ever to change again, so its a fine time to speedhack it. Just don't do it for the mappers first, that's too big a job.
I tried. Guess how much speedup it gave. Hint: FUCKING ZERO https://github.com/vadosnaprimer/BizHawk/commit/168120a8a04112b64767a2b35e0e5de0d8b5cb78
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.
Editor, Emulator Coder
Joined: 8/7/2008
Posts: 1156
Try not creating a 64K delegates. Reuse a smaller number. I don't expect that will help much, but it isn't a fair comparison to fceux codebase until then.
Alyosha
He/Him
Editor, Expert player (3535)
Joined: 11/30/2014
Posts: 2732
Location: US
Aww so it didn't help much after all, oh well, thanks for trying anyway feos. But I guess it's not surprising. I do plan to return to this after 1.11.7 is released to clean things up and make performance improvements, maybe I can at least approach 1.11.6 performance levels again.
Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11273
Location: RU
zeromus wrote:
Try not creating a 64K delegates. Reuse a smaller number.
Please elaborate.
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.
Editor, Emulator Coder
Joined: 8/7/2008
Posts: 1156
create exactly one delegate for every function, not one delegate per address.
Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11273
Location: RU
Wouldn't I have to do all the ifs by address again to determine which one to call?
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.
Editor, Emulator Coder
Joined: 8/7/2008
Posts: 1156
ReadDelegates[addr] = new ReadMemoryDelegate(ReadRAMMirrors); //creates a new delegate ReadDelegates[addr] = TheOnePreCreatedReadRAMMirrorsDelegate; //does not create a new delegate
Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11273
Location: RU
Like this? Nothing changed.
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.
Experienced player (853)
Joined: 11/15/2010
Posts: 267
Alyosha, I'm not sure if this has come up in this thread but if you're looking at accuracy you should check out this commit. https://github.com/TASVideos/BizHawk/commit/a53200d98ebafa2375b0089ff7ef9104c4476802 The change fixes an issue running NES Time Lord, but I know it affects sync so I figured it was worth mentioning.
Alyosha
He/Him
Editor, Expert player (3535)
Joined: 11/30/2014
Posts: 2732
Location: US
Console powerup, and to a lesser extent reset, is still a work in progress. For Time Lord in particular there needed to be VBlank flag set shortly after poweron or things go awry, and I believe the current implementation is at least pretty close to correct. This is one of things I plan to look more deeply into in the next round of clean up and testing, but not until after the next release. Thanks for posting though, I am definitely in need of more bugs / test cases to move developement along.
Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11273
Location: RU
Well then, I don't think open bus is emulated.
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 3 4
12 13