Editor, Experienced Forum User, Published Author, Expert player
(3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Ah ok, yeah I just happened to be hitting the one screen that wasn't crashing. I do see now that in previous builds the other ones were crashing while in the current build they work fine. Nice.
Editor, Experienced Forum User, Published Author, Expert player
(3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Fixed.
Although Kattekita Mario Bros wasn't crashing for me previously, where was it crashing for you? Maybe I have a different version?
Also thanks for the valuable R&D on this Sour!
Editor, Experienced Forum User, Published Author, Expert player
(3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Do Zelda TASes have a chance at working on console currently? If not I would consider an any% TAS kind of pointless at the moment anyway, might as well wait for CEN64 (assuming it will eventually be finished.)
Editor, Experienced Forum User, Published Author, Expert player
(3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Done.
I tested your build, and did not notice any slow down. Try disabling rewind and see if that helps. Also check CPU and memory usage and make sure they aren't off the charts, although I did that on my end and nothing seems amiss.
Also what OS are you using?
I'm not sure what other variables might be at play here. Can you try a Dev Build from right before I made all the changes and see if it works fine there?
Editor, Experienced Forum User, Published Author, Expert player
(3536)
Joined: 11/30/2014
Posts: 2733
Location: US
I can't reproduce this so I'm not really sure. If you can zip up the folder you are using exactly as it is and get me a link to it, then maybe I will be able to see what the problem is if it also occurs on my end.
Editor, Experienced Forum User, Published Author, Expert player
(3536)
Joined: 11/30/2014
Posts: 2733
Location: US
buttons = { };
analog_sets = { };
while true do
buttons = joypad.get();
analog_sets["P2 Zapper X"] = "30.5";
joypad.setanalog(analog_sets);
console.writeline(buttons);
emu.frameadvance();
end
Here's the simplest example I can come up with. In this example the zapper is plugged into player 2 on the NES.
In this case the joypad.setanalog simply locks the X coordinate at 30.5, as you can easily verify on the game window by turning on input display.
You can just use the console.writeline(buttons) by itself to see what analog controls are available.
Editor, Experienced Forum User, Published Author, Expert player
(3536)
Joined: 11/30/2014
Posts: 2733
Location: US
There is no mechanism to assign analog (float) controls to keyboard keys, so that's certainly not happening.
There is a lua function joypad.setanalog, does this not work?
Editor, Experienced Forum User, Published Author, Expert player
(3536)
Joined: 11/30/2014
Posts: 2733
Location: US
I think this is a great idea. That would be very cool to see.
As for TASVideos, I don't really see an issue with this. Our technical standards are already quite low, this would be closer to console then like 95% of our current TASes.
Editor, Experienced Forum User, Published Author, Expert player
(3536)
Joined: 11/30/2014
Posts: 2733
Location: US
I've made some more improvements to the core and fixed a few bugs.
Sync of older runs will not be possible if they use the R register at all. The new core corrects several bugs in the old core and this primarily impacts the R register (which counts up every instruction call) and is sometimes used as a souce for RNG.
At this point we could really really benefit from having console testing of SMS and coleco to precisely test behaviour, but I don't see that as likely to happen any time soon.
Editor, Experienced Forum User, Published Author, Expert player
(3536)
Joined: 11/30/2014
Posts: 2733
Location: US
@Sonia: I tested build 0.0.0.1830 and the performance matches my local build , which is about 5% slower then 2.2. For comparison SMB runs at ~135 FPS on 2.2 and ~130 on dev build. So, I'm not entirely sure why your performance has suffered that much. Does it affect any other cores or only NESHawk? Did you compile it on your own or did you use the appveyor download?
@Sour: Ah, thanks for reminding me about that, I was following along when you all were first writing the tests, but then I got distracted by Z80 stuff and totally forgot. I'll try to work through that eventually.
Editor, Experienced Forum User, Published Author, Expert player
(3536)
Joined: 11/30/2014
Posts: 2733
Location: US
That’s a bit concerning, I’m not aware of any sync problems with the genesis core.
Can you post the movie file? Maybe it’s something that can be tracked down.
Editor, Experienced Forum User, Published Author, Expert player
(3536)
Joined: 11/30/2014
Posts: 2733
Location: US
I definitely agree that 'normal' TASes would be boring for such an event. But if that's what the selection commitee is looking for, then we really don't have anything to offer.
I guess the question for me is, what direction should we be pushing in to get something worthy of being accepted? Should we be focusing on newer systems? More creative ideas for tech. demonstrations? Maybe look more at funny stuff?
I was introduced to TASing from a GDQ, it's great exposure while also generally benefitting a good cause, hopefully going forward we can get some idea of what we need to be offering to keep going back while at the same time advancing TASing in general.
Editor, Experienced Forum User, Published Author, Expert player
(3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Making it through zexall was way easier then I thought. The new core now passes that test and I have upgraded SMS/GG, ColecoVision, and TI-83 to use the new core.
I have tested pretty thoroughly, but I would appreciate anyone interested in these systems to download the latest Dev build and try out your favorite game and make sure everything is in order.
I'll be continuing my own testing as well to make sure there are no regressions, as well as checking how well existing TASes sync.
Editor, Experienced Forum User, Published Author, Expert player
(3536)
Joined: 11/30/2014
Posts: 2733
Location: US
I'm not sure about sync yet. I'll be looking into it once all the ZEXALL tests pass. My guess is that runs will still sync unless they rely on very obscure behaviour, which many games seem to mercifully avoid.
Editor, Experienced Forum User, Published Author, Expert player
(3536)
Joined: 11/30/2014
Posts: 2733
Location: US
I was aware of the code but haven't seen it running before, thanks for the video link. That code was removed a while back for being inferior and outdated compared to GPGX. I don't see any point in doing an in house genesis core when close to cycle accurate ones like GPGX are available. Maybe the only reason to do it would be to put a good 32X core on top of it, but that probably isn't a workable approach, I can't imagine such a thing running above like 10 fps.
Editor, Experienced Forum User, Published Author, Expert player
(3536)
Joined: 11/30/2014
Posts: 2733
Location: US
I guess it might help a little, but the z80 is probably only about 10% of the work associated with a genesis core. You'd also need the 68000, the sound and graphics chips, and all the infrastructure putting it together. I'd be willing to work on the 68000 but someone else would have to do everything else, I'm not that interested.
MSX uses a similar graphics chip to coleco and SMS, and I do plan on reworking that chip to be more accurate and making it it's own independent coponenent. So, in that sense a majority of the work towrads an MSX emulator will be done, but I personally don't plan to implement the rest.
I'm targetting the colecovision core currently, so maybe I'll look into Adam but I'm not sure.
Generally speaking, anyone wanting a new core will need to find someone else to do it.
If anyone is really interested, I can get them going on the BizHawk infrastructure part, as my current framework is pretty much copy-pastable to a new core, you'll basically just have to do graphics and sound and the connecting bits. I've personally learned a ton so far in doing this kind of development, and you can get to a working core with quite little programming knowledge, so if anyone thinks they are interested give it a shot!
Editor, Experienced Forum User, Published Author, Expert player
(3536)
Joined: 11/30/2014
Posts: 2733
Location: US
I've been working on this for quite a while, but the new T-cycle based z80 core is finally coming together. I'm about 95% done with only some clean up and bug fixes, particularly for flags, to go.
This is a modern core which should allow for much easier maintanance (containing about 10K fewer lines of code), expandable to other systems (which might include wait states or other interrupt sources), as well as natural accounting of the WZ register which hobbled the current core. It also contains numerous bug fixes from the old core that ZEXALL didn't catch.
It won't show up in the Dev builds for at least another couple weeks, but I thought I would make an announcement for anyone considering making a TAS for systems using the Z80 (GG/SMS, Coleco, TI83) in case anyone is interested in waiting for it. I'm fixing the trace logger at the same time so the new core might help a bit more with code analysis.
This is also the first step in modernizing those systems' emulator cores, but that's a longer term project. For now it will just be a CPU core replacement.
If anyone has any questions/comments/concerns feel free to post them here.
EDIT: I should mention that performance hasn't suffered either, as I can still run SMS at 4x on my laptop.
Editor, Experienced Forum User, Published Author, Expert player
(3536)
Joined: 11/30/2014
Posts: 2733
Location: US
That editor is a neat feature. How has the 3D-ification of other games progressed though? Would enjoy seeing a video about some different titles besides SMB.
Editor, Experienced Forum User, Published Author, Expert player
(3536)
Joined: 11/30/2014
Posts: 2733
Location: US
I've worked a bit on Game 2, and I am stuck at 49.98. The current record is on video at 49.97. The thing is that the RTA run is much less optimized then my current run but still beats it. In trying to figure out why, I noticed that the time at which you go up / down is also important, not just just how long you hold the button for. I seem to be able to gain several pixels just by moving at the correct location.
I don't know the details, but this seems like an important mechanic to figure out to get an optimal run.