Posts for Alyosha

Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
Most likely that is referring to how NesHawk handled illegal opcodes in previous versions. Many were poorly emulated, and at least one that should have crashed the system was emulated as basically a NOP and let code execution continue. So as described in that post, this might allow things on emulator not possible on console, since console would crash but emulator wouldn't. Any of those such problems should be cleared up by now though, all opcodes are emulated correctly, and NESHawk is much more accurate in basically every respect.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
@sergunov: Oh cool thanks, yup that is same result BizHawk gives. Also the third party controller hangs becuase it returns zeroes instead of 1's after the 8th read (this is what they say on the wiki anyway.) @Potato Stomper: That's interesting. I will try to run the currently published any%run and see if it works when I have a bit more time. Maybe we can clear that up, thanks for pointing it out. EDIT: Quickly tested it and it worked just fine. Ended the game in the exact same way. I should also point out that the current 100% run desyncs in the exact same way on console as on BizHawk, so I think it's quite accurate for SMB3 at this point.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
That was amazing! I really liked the Bowser in the Fire Sea fight. Hard work, endless determination, and a bit of genius sure does make some great things happen!
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
Woah this is quite a surprise! Seeing a completely new route with that many frames saved is amazing!
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
Dolphin has matured a lot since Soig's NSMB Wii run was published a year ago. Have you thought about trying to improve that one? I'm sure you can learn a lot from it and maybe save some frames with a more stable Dolphin.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
I removed the extra DMC read and both the new and old Ninja Gaiden runs sync just fine on NESHawk without it (after removing one frame at the beginning as before), so that is definitely the only problem. So I guess we just need to wait for results from True's console testing to see what happens. Also I'm still making progress on mappers, so hopefully soon the only left to tackle will be the VS stuff.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
Looking good Tompa! Back to Croctopus Chase now! I don't think there is really that much more to do there honestly, my last WIP was already pretty close to breaking. I can definitely help if you want me to look at anything. If you plan on starting from scratch don't forget to turn on the radar, it's not perfect but way better then TASing blind. Also I'm about 80% sure that everything in the level has to be loaded in order, and things break when they aren't, so this might be another to check for things, if you can identify all the objects that is. Anyway, good luck! This is the last major hurdle so don't give up now!
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
@Scumtron: Short Answer: Yes, button mashing can resolve the conflict. Long Answer: What's happening here is the DMC unit is changing the address from the controller port to wherever it's reading the DMC byte from. Once it's done, it puts the address back to the controller port. An unfortunate side effect of this is that this causes the controller port to see this as an extra read, and pushes the next key press onto the shift register. Normally the port is polled 8 times for the 8 keys, but this extra poll from the DMC means one button is lost. The last button read is 'right' and the behaviour is that any reads after the 8th returns '1'='the key is pressed' so normally in this situation you see an extra right press and one lost key. Ninja Gaiden and other DMC using games compensate for this by polling the entire controller twice. What games do after this differs though. Some games, like SMB3, if they detect a conflict will do the whole routine again, and repeat until there is no conflict (which is where the possibliity of the 2 second SMB3 run from SGDQ comes from.) Other games though, like Ninja Gaiden here, if they detect a conflict, just give up and fall back to the previous frame's input. This is fine for casual play where you mostly wouldn't notice, but under TAS conditions this is obviously fatal. Mashing buttons simply makes the game think that both reads match (by hitting all the buttons after the extra poll took place, it looks like nothing is wrong.) @feos: Something that would immediately help with determining if BizHawk's implementation of this is correct is running dmc_dma_during_read4/dma_4016_read with different buttons held down on the controller. Of particular interest would be the results from holding down A,B, A+B. This would at least confirm that the basics are all correct. Beyond this I'm not sure what besides hardware testing can shed any more light on this. I tried adding and subtracting a few CPU or PPU cycles at startup see if I can get different sync behaviour. At best I can make it to about half way through level 3, but it seems inevitable that there will be a DMC hit somewhere. I'm not sure how the original run survived, could be a result of CPU - PPU alignment but I don't really know.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
Due to different power up behaviour, adding frames is no longer the way to sync FCEUX runs. The correct thing to do is remove 1 frame. I did so and the run syncs correctly through the first level. It then desyncs at the ladder in level 2. Currently looking into why it happens, looks like it misses a 'right' press. Will edit this post if I get any more info. EDIT: nevermind problem is already obvious, it's a DMC hit. Hmmm, this is troublesome, it's certainly possible that this same hit would happen on console, but it's also possible it wouldn't. It would be nice if there were a way to add a method into the emulator to avoid this probabalistic behaviour but at the same time this is cycle accurate and correct, so fatal hits like this just come up now and then. Anyone have any thoughts? Also, I would be really really interested to see what happens on console. If code execution is tied closely enough Vblank, this hit might be deterministic, or at least happen with a high probability. EDIT2: the old run desyncs in the exact same place, but that one is known to sync on console. We need more information, such as if the old run always syncs or only a certain percentage of the time.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
Well I do have some suggestions maybe you can consider. 1. The published run of NSMB Wii uses a corner boosting technique extensively. You can probably save some time here and there with this technique. 2. It looks like if you jump off a goomba while going down a slope you get a pretty good speed boost, see the published run at 1:51 to see what I mean. It looks like you can do the same thing here in level 1-1 right before the pipe to get in it quicker. 3. It looks like you don't need to get the fire flower in 1-1? You trade it off later for the helicopter and it doesn't look like it saves any time between the two points. Maybe it's for showing off or I'm missing something. 4. In 1-7 it looks like you lose penguin slide speed after a while, seems like it can be maintained a bit better, although I didn't test. You don't want to keep getting rejected runs, then you will end up with 'limited user' status and not be able to submit at all. D:
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
I still like this hack and this run, and am still voting yes, but I think it would be better served if you take more time to really go over each level and really optimize each bit of it. A TAS of this length would really take at least a month to do , and I bet you can save much more time by really studying the game. I do want to see this hack published, but it's going to take a seriously optimized and thought out run to get it there, hacks are generally given pretty harsh scrutiny. You can create a thread for this game over in the forums : http://tasvideos.org/forum/viewforum.php?f=40 EDIT: there is already a thread for this games hacks here: http://tasvideos.org/forum/viewtopic.php?t=14861 as was kindly pointed out to me 8D You can also post videos and input files of your progress there for feedback. In the mean time I might recommend cancelling this run, as Spikestuff points out some of your new times are slower then your old ones, which doesn't bode well. Still a good start for a first TAS though, keep improving!
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
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 (3572)
Joined: 11/30/2014
Posts: 2744
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 (3572)
Joined: 11/30/2014
Posts: 2744
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 (3572)
Joined: 11/30/2014
Posts: 2744
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 (3572)
Joined: 11/30/2014
Posts: 2744
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 (3572)
Joined: 11/30/2014
Posts: 2744
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 (3572)
Joined: 11/30/2014
Posts: 2744
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 (3572)
Joined: 11/30/2014
Posts: 2744
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 (3572)
Joined: 11/30/2014
Posts: 2744
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 (3572)
Joined: 11/30/2014
Posts: 2744
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 (3572)
Joined: 11/30/2014
Posts: 2744
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 (3572)
Joined: 11/30/2014
Posts: 2744
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 (3572)
Joined: 11/30/2014
Posts: 2744
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 (3572)
Joined: 11/30/2014
Posts: 2744
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.