openMSX bugs

Page 14/15
7 | 8 | 9 | 10 | 11 | 12 | 13 | | 15

By Manuel

Ascended (18941)

Manuel's picture

15-08-2022, 23:18

By gdx

Enlighted (5694)

gdx's picture

19-09-2022, 09:02

There is something badly emulated in v9938/v9958 that makes Rockn' Bolt work on emulated MSX2/2+/turbo R too.

By Manuel

Ascended (18941)

Manuel's picture

19-09-2022, 19:30

But what is it? So what makes it fail on real MSX 2?

By gdx

Enlighted (5694)

gdx's picture

19-09-2022, 22:19

I just know platforms do not display correctly on real MSX2s. That makes the game unplayable.

By Manuel

Ascended (18941)

Manuel's picture

19-09-2022, 23:48

Okay, if someone can help to investigate why, we might be able to improve the emulation.

By mcolom

Champion (259)

mcolom's picture

20-09-2022, 21:40

I tried with the debugger, and it seems to be messing around with the M3 bit, R#0 mode register of the VDP (nice feature of the debugger, to see immediate changes in the video tables, by the way!)
It seems to switch quickly from mode Graphic 1 and 2 all the time, without a good reason. Perhaps that's corrupting the tables in a real VDP?
I tried the game in a real Sony HB-F1XDmk2 and yes... you can see the corruption. But not in openMSX, and not in the SX-1 FPGA with KdL's firmware.

By gdx

Enlighted (5694)

gdx's picture

21-09-2022, 09:55

M3 is reseted only once during game initialization (by the routine called at 08057h). The screen always remains in SCREEN2 thereafter. I even tried setting this bit to see what happens. It does not change anything. So there is no switching between graphics modes 1 and 2. Besides, BlueMSX always indicates SCREEN2 mode. The cause is different.

By mcolom

Champion (259)

mcolom's picture

21-09-2022, 10:11

gdx wrote:

M3 is reseted only once during game initialization (by the routine called at 08057h). The screen always remains in SCREEN2 thereafter. I even tried setting this bit to see what happens. It does not change anything. So there is no switching between graphics modes 1 and 2. Besides, BlueMSX always indicates SCREEN2 mode. The cause is different.

Yes, at 8057 it call makes the call with BC=0000 (register 0, value 0). BUT then at 8727 it sets BC=0002 (register 0, value 2), changing the screen mode. And it does it all the time, during gameplay.

By Manuel

Ascended (18941)

Manuel's picture

21-09-2022, 10:11

Note that you can also monitor the screen mode in openMSX with the info panel widget. Console: toggle_info_panel or use the Toys submenu of the OSD menu.

By mcolom

Champion (259)

mcolom's picture

21-09-2022, 10:26

Manuel wrote:

Note that you can also monitor the screen mode in openMSX with the info panel widget. Console: toggle_info_panel or use the Toys submenu of the OSD menu.

I'll give a try! I think I've never used those.
I found the addresses where it changes the screen mode with "debug set_condition {[vdpreg 0] == 0}" (or 2) in the debugger.

Page 14/15
7 | 8 | 9 | 10 | 11 | 12 | 13 | | 15