mgba-emu / mgba

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

3DS: Bioses naming convention and modes priority #1863

Open Gregoras opened 4 years ago

Gregoras commented 4 years ago

I have two questions and one proposition.

Q1: Is there naming convention? GB, GBC or GBA should have any specyfic names or extension? Im trying names like: dmg0.bin, gbc.bin and so on, but only GBA startup screen appears, so only GBA bios is read corectly.

Q2: What are platforms priorities, when i.e. some games have SGB and GBC extensions, but runs also on regular GameBoy? The game will be running in SGB or GBC mode?

And my suggestion: Could we have some options for adjusting priority of modes? Would be nice if we have options for manualy choosing in which mode game run. For example I prefer to run classic GB games in monochromatic mode. So, any chances?

endrift commented 4 years ago

The BIOS names for it to autodetect are gba_bios.bin (or just bios.bin), gb_bios.bin, sgb_bios.bin and gbc_bios.bin. I should probably add this to the readme.

The priority list is GBC, SGB, GB. You can override them in config.ini using cgb.model, sgb.model and gb.model to set what ones that detect as GBC, SGB, and GB respectively should be played as. Valid models to set are DMG (original GB), SGB, MGB (GB Pocket/GB Light), SGB2, CGB and AGB, though the differences between e.g. DMG and MGB are only partially emulated at the moment. I should redo how this is done, though, as it's not very friendly. You can do it per game too, but it's a little difficult to explain how to do that.

Gregoras commented 4 years ago

All clear. Could you also describe how to works GBC emulation with original BIOS? Real GBC had predefined color settings for some GB games. Is that feature is also emulated? And if is, how to avoid that behavior? Setting GB games to play in GB mode is enaugh or those games are recognized as GBC games? How works "hybrid catridge" GB/GBC games?

endrift commented 4 years ago

Setting GB games as DMG or MGB will get them as 4-color grayscale. For "hybrid" carts, you want to set GBC games as DMG or MGB for them to run in GB mode (or SGB for SGB mode). The GBC colors for GB games is emulated but won't happen unless you set GB games to run as GBC (I thought; the code seems to disagree though). You can also disable it with the useCgbColors setting.

Gregoras commented 4 years ago

Thanks. I know I'm a nuisance and ask a lot of questions, but I simply want to play all classic GB games in monochrome but also be able to run standard, non-hybrid, GBC only games. So all I nedd is setting GB games to GB mode, disabling useCGBColors and also setiing CGB games as GB? And in that case all classic games will be run in GB mode and GBC games still will play?

endrift commented 4 years ago

That will break GBC-only games, unfortunately. I need to add a new setting for that to be doable.

endrift commented 4 years ago

I added the setting in 9dc6dc7e658be648d875d31098a577b58ad73c3a. You want cgb.hybridModel for GB-compatible GBC games, and cgb.sgbModel for SGB-compatible GBC games.