Posts for Alyosha


Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
I noticed a couple of places in the submission text that said things like this:
Lair It was not possible on BizHawk to beak bust through the leaf in the CCW lobby. I can’t simply backflip twice as well so I have to flutter cancel.
Out of curiousity, how much more time could be saved if all the things that are possible on console become available on emulator?
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Not sure it's exactly what you're looking for, but the EXP system in NES Kid Icarus is both hidden and non-intuitive (beyond just killing more enemies is better.)
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
With a big thanks to Sergunov, we can confirm that greyscale check really does happen 2 ppu clocks later then originally thought (putting it right at the end of the pipeline.) I expected this would be true since otherwise the nmi_sync test makes no sense, but it is really good to have real video conifrmation of it. Basically I modified the scanline/scanline test to change greyscale instead of background rendering. If they happened at the same time, we would expect the same pixels that are on in the background test to be grey scaled in the other test. However it is evident (V2 in the post above) that this is not the case, and in fact greyscale impacts things 2 pixels to the left. With this, we can put the NMI_sync test as a 'pass' on NESHawk, making it currently the only emulator to do so (well, accurately anyway), although this is a trivial thing to add for other emulators since it is purely post processing. Adelikat and I have also been making pretty rapid progress on the mapper front, Big thanks to him for doing the upfront coding work that I'm not quite able to do myself yet. One other thing that is evident from the scanline tests is that something is definitely up with the nametable toggle (test number 2.) I don't see any reason why this should be occuring later but it is very evident form the test videos that it is, so something else to investigate I guess.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
This tas was amazing! (so many great TASes recently) Banjo Kazooie is a great game and this TAS really does it justice, well done!
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
The bad 3D effects seem to be an emulation error. Both BizHawk and PuNES display the 3D mode correctly. So if you (for some reason) did want to make a 3-D mode run it would have to be in BizHawk.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
This was one of my favorite NES games. Nice work on this one! A bit of a shame it's so laggy, but I sitll liked it.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Personally I like the decision to use the 1.1 version, it seems more like a finished product. As TASing moves into newer systems I think we'll run into version differences a lot more, even games on disks get downloaded updates now. Seems like a bit of a grey area to me.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Antoher great TAS Arc! You sure are on a roll breathing new life into some of these popular NES games.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Wow, this really is a good looking Rom Hack and a good looking TAS of it as well. I'm really impressed by everything here, the TAS, Dolphin, and the Hack too, voting yes.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
@feos: I guess I agree with removing them from the table. The tests DO provide some information, it's unfortunate they aren't timed strictly enough to be consistent though. But the behaviour is also tested in dmc_dma_during_read4/dma_4016_read, and in a stricter way, so I guess those other ones are redundant. @Koh1fds: I'll add that to the list on the OP, but don't expect it to be worked out soon. It won't be easy to work backwards from an IPS patch alone, and there are many other mappers to work on first. If you know any other info about that hack it would certainly be helpful to have.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
^ Oops! Sorry about that, not sure how I missed it but it should be fixed now. It will probably be a while before I get to look into that FDS stuff, at least it works by the 2 step eject and change side process, thanks for the report though. Overclocking won't be happening in the near future unless someone else does it, sorry.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
void setchr1r(int r, uint32 A, uint32 V) {
	if (!CHRptr[r]) return;
	FCEUPPU_LineUpdate();
	V &= CHRmask1[r];
	if (CHRram[r])
		PPUCHRRAM |= (1 <<A>> 10));
	else
		PPUCHRRAM &= ~(1 <<A>> 10));
	VPageR[(A) >> 10] = &CHRptr[r][(V) << 10] - (A);
}
@feos: this is code from FCEUX cart.cpp. Do you know what it does when r=0x10? I have no idea what it is trying to tell me and I need it for a mapper. The conflicts occur on an edge case of DMC fetches, I believe becuase there is a bus conflict but I'm not sure. The test is just rapid fire doing controller reads around DMCs, I don't think it is specifically timed to hit particular ones.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Ok so I fixed the background draw check that was causing the stars to display improperly. This was certainly a bug, so I'm glad to have learned something from that troublesome scanline test. I'm surprised it didn't come up before. I also went ahead and commited the pipelined check on grayscale drawing, as there is no other conceivable way to fix nmi_sync, and it makes sense that the greyscale check would run at the end of the rendering anyway since it's basically a post processing effect. This doesn't effect sync in any way, it's purely a visual effect, so if new information comes to light it can still be tinkered with easily. The only thing odd is the first and fourth bar of the second test occasionally flickering in that video. It shouldn't be possible for only those 2 to flicker, as the sawtooth pattern of that test should either effect every bar or none, and it definitely shouldn't be itermitant like it is. For now i dont know what to make of it, although I would like to see if it also occurs in Famicom AV (+InviteNES) or powerpack as well. If so then that is surely something strange and unmodelled. @Sergunov would you be able to try out that case as well? EDIT: I also noticed that the read_joy3/count_errors tests were changed to 'fail.' Having conflicts or errors does not mean a fail in there tests. Actually, having no conflicts at all is a sign of failure. the tet is checking if DMC causes misreads of controller input. It only fails if they are not recognized and reconciled (it would print a different message in this case. The reason older versions of NesHawk had no conflicts is becuase DMC was emulated as instantaneous, which was of course wrong. These tests should still be in the 'pass' category (punes should pass these as well, and FCEUX should fail them.)
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
^Awesome, thank you! Hmmm, so the stars are only partial afterall. The assumption in NesHawk is that the draw_background check is only done every 8 pixels, so I can definitely fix that. The flickering of the bars in the last of the 3 tests is present in both NesHawk and PuNes, so that's good to see, it means nothing is grossly wrong. The flickering in the middle set of bars is more interesting though, I don't think I've ever seen that befroe, going to require some research.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Very impressive run, to have improved the previous one by over 1 second is quite the technical achievemnet. Any thoughts of working on the sequel as well?
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
^ Thanks, but that is nmi_sync/demo_ntsc, I meant scanline/scanline, it's screen looks like this: I am curious exactly what pattern it gives.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
feos wrote:
You can also ask on nesdev directly.
I have now posted there about it, but my last 2 questions got no replies, well let's see. feos would you be able to get a video of the console output for the scanline/scanline test please? I would really like to see the exact output it produces, might help clarify some things.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
So in continuing to research what is going on with the nmi_sync test, I just can't find anything wrong with any of the current implementation of PPU timing. Given that all the other relevent tests, Vblank, NMI timing pass, and that those tests are accurate down to the PPU clock, there was nothing I could really change to influence anything. So I scoured the NESDEV stuff looking for any clues, the only thing I found was here in http://wiki.nesdev.com/w/index.php/PPU_rendering
Sprite zero hits act as if the image starts at cycle 2 (which is the same cycle that the shifters shift for the first time), so the sprite zero flag will be raised at this point at the earliest. Actual pixel output is delayed further due to internal render pipelining, and the first pixel is output during cycle 4.
My working theory is that since the rendering pipeline is longer then emulated in BizHawk (in which it is instantaneous) certain checks take place further down the pipeline then we account for. So if I do the $2001 color_render check at the end of the pipeline, the sync test passes exactly as it should. I added a pipelining function to make this happen, and everything works fine. But I'm currently unsure what stuff to put into the pipeline, so perhaps more testing is needed there. As for the scnaline function, it's obvious there what is failing. Every fourth frame NMI takes one extra insturction to trigger. So until this test can pass on console, my working assumption is that it is an innacurate test. (However, this seems odd given that it was written by Quietust, who is responsible for much NES work including Visual 2C02.) But the console has the final word. I haven't commited the pipeline stuff yet, but I'm pretty confident it is correct, feedback would be appreciated though, as it is currently experimental.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
@Koh1fds: The Druid fix is trivial to port, it's changing probably 3 lines of code. I briefly looked through FCEUX's FDS audio code, it's certainly not as mature as BizHawk's, so would probably take some effort to get it there. I'm not involved in FCEUX so can't say when it might be included. ___________________ The following is highly speculative, but I'm about 90% sure I know why both the scanline test and NMI_sync test fail and what is needed to get them to pass. Currently BizHawk syncs up PPU and CPU by performing 3 PPU cycles and then 1 CPU cycle. Both tests however are off by 1 pixel, which makes me think that writes to PPU registers are visible to the PPU earlier then currently emulated (by 1 PPU clock.) This should be possible in theory, since the 6502 would already be in the phi2 phase of the write cycle by the time the thrid ppu clock starts. I'm currently thinking about how this might best be emulated/tested. Any ideas are welcome.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
^ interesting. That looks similar to the trouble I had with scanline/scanline. feos are you able to use these test roms on real console? If so, can you test scanline/scanline as well? That one does not have console test results on the accuracy tests page, and I suspect these 2 things are related.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Ok, so I adjusted FDS audio levels so that they wouldn't drown out the NES audio as much (helps Kid Icarus quite a bit.) I couldn't find anymore errors with the acutal audio code itself. NESDev mentions a low pass filter that we might need to emulate to get a bit more accuracy out of it, but I think mixing between NES and FDS audio signals needs to be captured better first. Things sound pretty good right now though, so I'm happy enough with the results to move on. Using 'eject' for metroid did work instead of just immediately pressing 'side B', so that's interesting, I'll have to add that to the list of things to look into. Anyway thanks for the reports Koh1fds, FDA audio is greatly improved! Back to mappers!
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
jlun2 wrote:
Basically jumping into a wall gives you just enough of a push to the right to jump into the lever while still going forward. Like the clip, it only works in one direction though.
I can see that in the run, but how does that even work? You move right, but somehow that makes going left faster?
When you jump into a wall, the first thing the game does is move you straight down, not immeditaely eject you. At this point you are slightly further right then would otherwise be possible, just enough so that if you jump to the left you can hit the lever.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Oh is that how that appveyor thing works? pretty neat! Added to OP
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
ok progress report on FDS sound. I fixed up several obvious glitches, mostly following the wiki and rainwarrior's NSFplay code. This seems to have resolved numerous issues including: -Zelda 1 sword sounds -Zelda 2 taking damage sounds -Kid Icarus reaper sounds. I was not able to test metroid since I couldn't get it to load. Not sure if a ROM or emulator problem. @Koh1fds: please test this out and see if you can find any more obvious errors. I think things still probably are not quite right, but should be much much better.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
That's a cool glitch! Hard to believe it wasn't known about until now. I'm not sure about using it in this particular run though. Isn't it meant to be a glitchless category? The 'goals' of the orignal run said it avoided unintended exits, and this certainly seeems like one. And if you do use it, why not use left + right and just call it a non-warp glitch run? Seems messy to me. Still cool though!