adelikat
He/Him
Emulator Coder, Site Developer, Site Owner, Expert player (3573)
Joined: 11/3/2004
Posts: 4754
Location: Tennessee
One more to report, about soft reset. If you pick Bowling + Basketball, and press 1 for bowling and play an entire game, it will "crash" like other games. But if you press soft reset it crashes trying to reset. (The other games that get in a crashed state seem to work fine with soft reset)
It's hard to look this good. My TAS projects
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3822)
Joined: 11/30/2014
Posts: 2832
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, Emulator Coder, Expert player (3822)
Joined: 11/30/2014
Posts: 2832
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, Emulator Coder, Expert player (3822)
Joined: 11/30/2014
Posts: 2832
Location: US
Here is an interesting case of a game that was made both in a console edition and also released as a 'emulator version' Happy Bird! is a homebrew game that has a console version that doesn't work right in O2EM, so an emulator version was made for it as well. I think this is a rather unique example of a combination of factors where existing emulation is sufficiently poor, and with too little demand for much attention, where game devs. have to re-target games to the emulator. Anyway, the 'emulator version' does not look correct in BizHawk (which it shouldn't) and the console version does look correct (which is good news for me since that game uses timing tricks similar to Blockout.) Here is a side by side of emulator version (left) and console version (right):
adelikat
He/Him
Emulator Coder, Site Developer, Site Owner, Expert player (3573)
Joined: 11/3/2004
Posts: 4754
Location: Tennessee
Man, that's awesome! Nice work!
It's hard to look this good. My TAS projects
adelikat
He/Him
Emulator Coder, Site Developer, Site Owner, Expert player (3573)
Joined: 11/3/2004
Posts: 4754
Location: Tennessee
So, I was investigating the savestate size for O2Hawk and noticed that the framebuffer is in the core state, is that intended? We control that on the client side, and this is about half the size of the savestate. [EDIT]: there is also a _vidBuffer being stored too which seems to also be the video frame contents that may not be necessary to save. Also, I assume PAL isn't ready for testing? Just let me know when you want those tested. Also also, there is still the issue that games "crash" at the end, have you looked into that? Maybe that's console behavior, but I haven't found that information one way or the other.
It's hard to look this good. My TAS projects
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3822)
Joined: 11/30/2014
Posts: 2832
Location: US
Oops yeah the buffers are left over copy-paste from other cores that have variable frames. I removed them now. I checked Bowling on both O2EM and MAME (via archive.org) and they have the same behaviour of no longer accepting input once the game over screen comes up. I checked trace logger and and vblank code is still running, it's just not checking for inputs. It looks like it's just waiting for a reset. It would be good to have a real hardware check, but I don't have a console. PAL should be ready for testing, it's probably got quite a few bugs still since the hardware is wired up slightly differently, but mostly it should be working.
adelikat
He/Him
Emulator Coder, Site Developer, Site Owner, Expert player (3573)
Joined: 11/3/2004
Posts: 4754
Location: Tennessee
Just clearing the buffer saving isn't enough it looks like. It seems the _vidbuffer lags behind a frame. When you load a state it updates the screen correctly (the client savestate framebuffer loads), then on the next frame the screen flashes to the frame before you loaded a state, then the following frame it is back to normal. I skimmed the code but I wasn't sure what to do about this.
It's hard to look this good. My TAS projects
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3822)
Joined: 11/30/2014
Posts: 2832
Location: US
yeah _videbuffer is needed in the state, it's different from framebuffer. (At some point I really should standardize things a bit more.) Well I added it back in, tested and is fine now.
adelikat
He/Him
Emulator Coder, Site Developer, Site Owner, Expert player (3573)
Joined: 11/3/2004
Posts: 4754
Location: Tennessee
It's a shame it's needed, the uncompressed savestate size is about 351kb (with) vs 2kb (without). Savestate size is part of the equation of equation of TAStudio performance. As well as the rewind feature (this is enough to bump it from a "small" to a "medium" savestate. Seems like it is just a cache of data too, maybe it could be recalculated on loadstate? Also does it need to be an int[] instead of a byte[]?
It's hard to look this good. My TAS projects
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3822)
Joined: 11/30/2014
Posts: 2832
Location: US
never mind it's not needed after all, I just needed to move the frame processing to the correct spot, not sure why I had it the other way around. Should be good now with _vidbuffer removed from the state.
Joined: 7/17/2012
Posts: 543
Location: Switzerland
BizHawk latest dev buid Frogger (Brazil) MDR: 893cec7b572160e81eab8a6dad37f7d3 SHA1: bedb714c88b9aa7a02da9ebcde12446ec8350d18 Frogger (Europe) MDR: 88fb5e81bf58bc1195b31906ccebeff8 SHA1: 0beda7b36259b3be84d34206a77a35cd3f04892f Brazilian version: Hitbox non detected? Bug on title screen European: Imputs don't work, no sound and lines on screen Link to video Popeye (Brazil) MD5: 3d8310d2ab62a5a7bcc0ecf088133291 SHA1: d12197942a99d5902de1352bbb5475ab4396c7d0 Popeye (Europe) MD5: 2a0a3e9aed2885a4e4798b380dbb64c3 SHA1: a13e7b338ba15820949f51eb862b381ddc6870af No music when Popeye got spinach "invincibility"
My Citra 3DS rerecording movie files test repositery: https://cutt.ly/vdM0jzl Youtube playlist "Citra Tests": https://cutt.ly/AdM0wg9 http://www.youtube.com/user/phoenix1291
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3822)
Joined: 11/30/2014
Posts: 2832
Location: US
I made quite a few bug fixes: - fixed collision detection - fixed 12k games - tuned the colors a bit - fixed some characters in the built in set - Fixed sound interrupts @phoenix1291: thanks for testing. I think the graphics at the bottom of frogger brazil are just because it's PAL 60 (BR) but emulated as PAL 50 (more scanlines), I haven't added a mode for that yet. Some of the other bugs should be cleared up though.
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3822)
Joined: 11/30/2014
Posts: 2832
Location: US
Here is one of the best homebrew games for the O2 that is now finally working in BizHawk. This is one of those games that relies on a lot of hardware edge cases and revealed several bugs in the core. Kill the Attacking Aliens uses some non-intuitive properties of quads to get some really detailed graphics effects that are unique to this game. It's one of those impressive homebrews that could really have helped define a system if it had come out in it's actual lifetime. This is probably one of the few O2 games that really would be interesting to TAS, so I'm glad it's looking correct now.
Joined: 9/12/2014
Posts: 541
Location: Waterford, MI
Nice! Yeah, a tas of that would be interesting. No missed shots, frame perfect timing. Be pretty amusing.
Joined: 7/17/2012
Posts: 543
Location: Switzerland
Alyosha wrote:
I made quite a few bug fixes: - fixed collision detection - fixed 12k games - tuned the colors a bit - fixed some characters in the built in set - Fixed sound interrupts @phoenix1291: thanks for testing. I think the graphics at the bottom of frogger brazil are just because it's PAL 60 (BR) but emulated as PAL 50 (more scanlines), I haven't added a mode for that yet. Some of the other bugs should be cleared up though.
Thanks for the explications. Popeye is not debugged: Popeye (Brazil) MD5: 3d8310d2ab62a5a7bcc0ecf088133291 SHA1: d12197942a99d5902de1352bbb5475ab4396c7d0 No music when Popeye got spinach "invincibility" Popeye (Europe) MD5: 2a0a3e9aed2885a4e4798b380dbb64c3 SHA1: a13e7b338ba15820949f51eb862b381ddc6870af No music when Popeye got spinach "invincibility"
My Citra 3DS rerecording movie files test repositery: https://cutt.ly/vdM0jzl Youtube playlist "Citra Tests": https://cutt.ly/AdM0wg9 http://www.youtube.com/user/phoenix1291
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3822)
Joined: 11/30/2014
Posts: 2832
Location: US
Any other bugs besides Popeye?
adelikat
He/Him
Emulator Coder, Site Developer, Site Owner, Expert player (3573)
Joined: 11/3/2004
Posts: 4754
Location: Tennessee
Tried some non-US games Gray screen, throws OUT and EXCEPTION logs in console 4 en 1 Ligne (1982)(Philips)(FR) - SHA1:0831C3212A9E0A588A242DCD2B136E350AACEAC9 4 in 1 Row (1982)(Philips)(EU) SHA1:E9A8996C4FB87120D8620AB8876B90DDB48335DB The blobbers (Europe) SHA1:CAE4E1F3EE090EC423AFF89102F359B9E14DBA41 Pick game 3, no input, no gameplay, flashing effects Bombardeio Submario (BR) SHA1:E15F778EFEB95530F8108854B14C404CF63F213A pick game 1, doesn't look like correct gameplay Catch the Ball + Noughts and Crosses (1980)(Philips)(EU) SHA1:671A43595B867B7877E723BE18825E9E5D5C4EE9 game 1 cant catch the ball (collision done messed up?) g3 just reboots to game selection Chat et Souris (1983)(Philips)(FR) SHA1:AFA67F2110647753DE9DFACB268D96E75D6D8657 gameplay broken
It's hard to look this good. My TAS projects
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3822)
Joined: 11/30/2014
Posts: 2832
Location: US
Thanks for testing, I can start looking at those in a couple weeks.
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3822)
Joined: 11/30/2014
Posts: 2832
Location: US
Fixed collision detection on catch the ball, maybe fixes other stuff. For catch the ball game 3, it just loads up the game restart sequence, so to me it looks like there is no game 3. Unless someone loads this up on an actual console and gets something for game 3, I'm thinking there is nothing to fix here.
adelikat
He/Him
Emulator Coder, Site Developer, Site Owner, Expert player (3573)
Joined: 11/3/2004
Posts: 4754
Location: Tennessee
Tested and confirmed Catch the Ball is working as intended now. For game 3, didn't think to check real behavior on that, I think you are right. Edited my post and crossed those off the list.
It's hard to look this good. My TAS projects
adelikat
He/Him
Emulator Coder, Site Developer, Site Owner, Expert player (3573)
Joined: 11/3/2004
Posts: 4754
Location: Tennessee
Any progress on this? It looks like non-US is still pretty broken, and this core is pretty close to releasable. And I'm particularly excited about this one, it's the best pre-nes era console, with some good TAS material.
It's hard to look this good. My TAS projects
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3822)
Joined: 11/30/2014
Posts: 2832
Location: US
No progress. All my time is spent on GBC double speed mode.
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3822)
Joined: 11/30/2014
Posts: 2832
Location: US
I was testing out the homebrew game Pong, and noticed it was failing the PAL console detection. Looking over the code it looked like just a timed loop in Vblank. In order to pass the time had to be significantly longer then nominal PAL vblank time. I think maybe PAL games just have the same resolution as NTSC games, meaning Vblank time goes from 240 to 312. That's a lot of time, so maybe that's why PAL games weren't working so well, since before I was only going from 288 to 312. I made this change in dev build, so please test some PAL games and let me know if there is any improvement. EDIT: also I'm going to be working on support for the G7400 as well.
adelikat
He/Him
Emulator Coder, Site Developer, Site Owner, Expert player (3573)
Joined: 11/3/2004
Posts: 4754
Location: Tennessee
I did some testing, of the non-US games I reported above, one was fixed, the others are still active. I updated the post accordingly.
It's hard to look this good. My TAS projects