mgba-emu / mgba

mGBA Game Boy Advance Emulator
https://mgba.io/
Mozilla Public License 2.0
5.62k stars 771 forks source link

GBC-only games boot when forced to run in DMG (or SGB) mode #2963

Closed keiyakins closed 1 year ago

keiyakins commented 1 year ago

Loading a GBC game after using the game overrides to force the model to DMG or SGB, the game still boots, though of course running slowly and with very broken visuals, since it's supposed to be on a GBC. Tested on 0.10.2 and 0.11-8139-125db5bbe, with Grimace's Birthday 1.6 and Catz (USA).

Admittedly, not the highest priority, it's not too often a weirdo like me comes along and wants to get a screenshot of an "only for Game Boy Color" screen, but it is an emulation bug so I figured I'd best report it.

endrift commented 1 year ago

I'm unsure what the expected behavior here is? I would expect the same as putting a GBC-only game in a DMG (or MGB so you don't have to remove the tab): exactly what happens in mGBA; it breaks.

keiyakins commented 1 year ago

The expected behavior is that it would show the "this game can only be played on Game Boy Color" screen, like it would on a pre-Color Game Boy. http://www.vgmuseum.com/features/warn/ has a bunch of examples. Instead, the game keeps running as if it were on a GBC, just... broken, because it's not.

endrift commented 1 year ago

I set the GBC-only model to DMG, loaded Pokémon Crystal and am indeed greeted by that screen. Is it possible those games just don't do the detection?

LunarLambda commented 1 year ago

Grimace's Birthday was made with GB Studio as far as I know, so it's quite possible it lacks detection.

keiyakins commented 1 year ago

It does, https://twitter.com/WamesGames/status/1669073813366095878 has an example on an SGB, and it works in gambatte. I also tested with Catz, which was a retail release from back in the day so should work.

endrift commented 1 year ago

I loaded it in mGBA and got that image. Are you booting through the (wrong) BIOS? That fucks it up, as the state that gets detected is set up by the BIOS.

bX4TvUeiUEfKRw8bkPGaB-0

keiyakins commented 1 year ago

No, I tested it in a fresh copy with none of the boot roms set up. Shuffling files around a bit, having it use the boot rom from a Game Boy Pocket does work.

endrift commented 1 year ago

Okay, it looks like forcing the model through a game override instead of the wholesale model override in Settings > Game Boy seems to work differently on this game, which it's not supposed to. I can reproduce if and only if the GBC model is set to GBC (or AGB) but the override model is set to DMG.