Posts for Alyosha


Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
I've made good progress on screen timing and now can get pixel accurate frames even for timing sensitive games like Speedway above. I also figured out the (probably) correct emulation for Blockout, which is much simpler and more realistic then what I was doing before. The key is that the VBL flag bit is reset upon read, not upon end of VBL. It's more of a 'VBL needs servicing' flag then a 'VBL in progress' flag. I probably should have guessed this earlier since the sound bit works the same way. There are still a few finer details that need to be sorted out, but I think all the major timing challenges are dealt with now.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Is that really what it looks like? That looks really washed out to me. Do you have a real screen pic for comparison? EDIT: I looked at some youtube videos and I guess it's pretty close, would still be good to see a high res pic though to compare.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Resetting bowling works fine for me (at least it does in the curent dev build.) I fixd a few more bugs (notably Speedway and Nimble Numbers Ned) I still need to do some more research into Blockout, the way I have it implemented now seems unrealistic for real hardware.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
filpAM wrote:
Please revive the C++ version of GBHawk. So I can use it.
It's not worth it for the significant extra effort it would take to get linked modes working with the comparatively minor performance boost.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
image hosting I did a lot of rework on the ppu and now things are working much better. Blockout behaves like console now, as does Cosmic Conflict, which is now closer to console then O2EM. The good thing about Cosmic Conflict and Blockout is that they both do fairly careful timing things but in different ways, so if they are both correct at the same time it's a pretty solid indication that the emulation is close to correct. A big open end remains in that Blockout turns on HBL interrupts but expects them to not happen. I don't know what's up here, I would need to find a game that actually uses HBL interrupts constructively to do things correctly but so far I can't find one. Anyway as always more testing is appreciated. I think I'm getting close on NTSC, PAL still needs some work though.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Leaving some notes here about Blockout. When running in the intro screen of 'blockout' (where it says 'press 1') the game is doing too much in one frame and it misses VBL interrupt, this is what causes the screen to flash. It can miss it by a wide margin, up to 2 scanlines, so this isn't something a small timing tweak can fix. The reason it is doing too much is that it runs extra routines for ball reflections and keyboard scanning, and this is just a little too much stuff. I looked for evidence of this in actual gameplay videos and found this: https://www.youtube.com/watch?v=DuMK4VhiwIo You can see around 2:28 in the video that there is a graphical artifact in the top right corner of the screen. So it's definitely also having trouble on console. The difference is that this only effects a couple scanlines. I'm not sure what mechanism I'm missing that allows this to happen. On the right track though. EDIT: It also turns on HBL interrupts and expects them to either not happen or happen only once per frame.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Sub Chase also stops after 3 minutes on O2EM. O2EM isn't the most accurate emulator, s I'm not 100% certain if it's intended or not, I'll look into it a bit more. I did add a reset button and fixed hard reset so it works now. I'll try knocking out those other bugs as well.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
I have done quite a bit of optimizing GBHawk as a result of what I learned in trying to go to C++. GBC single and double speed modes are about 10% faster now. GB mode is 25% faster thanks to fixing a bottleneck. This isn't much obviously but it really helped out 4 player linked modes. I have scrapped the C++ core for now (I have it saved locally for possible future use in maybe a SGB core, but not sure yet.) This was still a worth while experiment as I learned a great deal in a relatively short amount of time. But that's enough with optimization for now. I'll be going back to bug fixing mode and syncing console verified gambatte runs and other accuracy stuff.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
I remember jumping off the power pad to get super long jumps. I felt accomplished beating cheetah but now he looks so slow! Yes vote.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Yikes, you weren't kidding D:
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Woah another out of nowhere improvement. I'm amazed you were able to save so much time here. I remember trying this game a couple years ago and I couldn't make any improvements. nice work and yes vote!
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Wow out of nowhere a huge improvement! Yes vote!
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Wow those are really impressive gains, great work, almost at the end now!
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
I was getting ~220 for GB games, and after the port about ~280 (unthrottled, no rewind enabled) So about a 25% increase EDIT: it turns out that I can get most of the additional benefits just by applying optimizations I made in C++ to the original C# core. I got to 260 fps (compared to 300 I got up to in C++.) It seems like my core design just isn't suitable to C++. I'll need to rethink things from the ground up in future cores. I think I'll probably ditch the C++ core. (I'll remove it from the code base but keep it locally in case I need it in the future.) With a few more optimizations to the C# core I'll probably be up around where I was anyway. And the optimizations also help out the linked modes, which was my original goal anyway.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
I've got most of GBHawk ported to C++ (still not accessible in the Dev builds yet though.) With basically a one-to-one port and only minor optimizations, I get only a 60 fps boost from the conversion. This is much less then I was hoping for and hardly even worth it. I'm going to spend some time seeing what else I can do to speed things up, but probably this is the end of the road for my one cycle at a time approach. But anyway my goal is to get a 2x boost over the current C# core, right now that goal is a very long way off. @jlun2 I'll look into that stuff once this process is over.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Cool thanks for testing, I'll start looking into those.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
I have started the process of converting GBHawk to C++. It should be a lengthy but relatively easy process compared to porting the z80 core. Nothing will change for now, and nothing will change from the user interface side regardless. This transition will free up much needed overhead for the linked modes and lay the foundation for future work.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Yup that's it.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
adelikat wrote:
Another keyboard question From the looks of it in this picture: This picture There's a top row of buttons that I can't quite tell what they do but they aren't represented by the currently controller button options. Do you know anything about these?
That is the videopac G7400. It is the successor to the Videopac G7000. The G7000 is equivalent to the Odyssey2. The G7400 would have been equivalent to the Odyssey 3 which was never released. G7400 is not currently emulated so those buttons are not accounted for in the current core. G7400 only has a couple of unique games, the others are just G7000 games with additional high res graphics, so I consider it low priority follow on work similar to the Chess and voice modules.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
They are the same, perhaps I should rename them (Y)es and (N)o or some similar distinction. Or is it easier to just add in two more distinct entries and map them to the same place?
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
keyboard is fixed, thanks for testing.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
I updated memory domains to be consistent between GBHawk and Gambatte. Mostly this was just changing GBHawk names and ordering. But I did make one change to Gambatte, I moved CartRAM to the end because it doesn't always exist. This is consistent with how SRAM domains are handled in other cores. So @jlun2 you'll have to update your script to reflect this.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Fortranm wrote:
How feasible is it to make the Sameboy SGB core read bios and display the actual SGB intro, for aesthetics if nothing else?
No idea, there was talk of updating the sameboy core but not sure how far along that is.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
I added PAL mode to O2Hawk (i.e. a videopac G7000 mode) so any testing of PAL games would be helpful. Particularly audio since that is usually a weakness.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
TiKevin83 wrote:
Maybe we just reorder the settings in the UI to give console mode that top priority?
yeah i think that is worth doing. EDIT: Done