bardeci / gambatte-dms

Gambatte-DMS is a GB/GBC emulator for handheld devices, using a modified Gambatte core.
GNU General Public License v2.0
66 stars 21 forks source link

Roms not loading-stuck in loop #20

Closed 31337-4554551n closed 3 years ago

31337-4554551n commented 3 years ago

This issue is for gameboy color games on the the gambatte-dms-pocketgo on powkiddy v90. Both the latest from this repo, and the one that comes stock on cfw 1.3.3

The issue is the same with and without bios files.

The issue is: Rom opens Bios splash happens (if bios files are in place) The roms splash happens The roms start new/load etc game screen comes up It loops back to the roms splash screen regardless of option chosen.

This happens for every rom, and they work on other emulators gambatte-sdl, ohboy for example. But here, they just get into an infinite loop of game splash screen, start new game.

bardeci commented 3 years ago

That behaviour does not happen in any of the compatible devices i own (i own every single compatible device except the powkiddy v90). Since the rom boots successfully, and you say that it "resets" when you input any option (i assume when you press a button), the issue could be related to input mappings. Which firmware are you using?

31337-4554551n commented 3 years ago

Miyoo CFW v1.3.3 Happens with start button, or A button, whichever button activates the menu item to start the game. Pressing up/down etc to change starting options works. Doesn't reset all the way back to bios though, just the game splash

bardeci commented 3 years ago

That behaviour is a "soft reset" of the ROM. I recall there are some specific keymaps bound to the "soft-reset" function, although those keys shouldn't be used by the consoles. Since the v90 has more buttons than the bittboy or pocketgo, it could be possible that the keymappings on the v90 are different and the button press is bound to a keymap which triggers a soft-reset. Since i dont have a v90 to test, could you please install IOTester (an app which tells you the mappings of the buttons as you press them) and tell me the SDL keymaps of the different buttons of the v90?

I'm interested on the mappings of the select/start/A/B/X/Y/L1/L2/R1/R2/ and the central menu button.

The app is here: https://drive.google.com/file/d/18W0MuuU9pSLyD9jyuE5tQDSbj1by0ZwR/view Just install, execute it, press a key and look at what says in the screen (when you press a button, it should say "SDLK-whatever").

31337-4554551n commented 3 years ago

Sure, how do I install it? Do I need to copy the zip (or contents of it) to a particular folder in the CFW? But yes, now that you've said that, I've tested all the buttons, and the A (which is normally the button for OK) and Y buttons reset it, B and X start the game. From which point, all the buttons function as they should. If you tell me how to install the software, I can give you the specifics you asked for. Also, if it the program just tells me what the button presses are, how do I then quit it?

bardeci commented 3 years ago

1- Download the zip. 2- Create a new folder called "iotester" inside the "apps" folder of your SD card. 3- Unpack the contents of the zip file into the "apps/iotester" folder. 4- Put the SD card back into your console and turn the console on. 5- Create a shortcut to the iotester app:

31337-4554551n commented 3 years ago

OK, value, Keysym.sym(whatever that means, am curious): L: tab, 9 L2: Doesn't work R:backspace, 8 R2: Doesn't work select: escape, 27 start: return, 13 A: left alt, 308 B: left ctrl, 306 X: left shift, 304 Y: space, 32 Middle button: right ctrl, 305

Notable: When clicking the buttons, the buttons on the background picture light up. ABXY doesn't match the lightup sequence. A(right) makes the bottom light up B(bottom)>right X(top)>left Y(left)>top

bardeci commented 3 years ago

Hmmm, button mappings look ok (ignore the ABXY order, the original iotester app was meant for a different device). So the mappings are not the issue there.

Which roms have you tried? I'll try to reproduce the issue.

31337-4554551n commented 3 years ago

This was on all my roms. It looks like the issue was just that hitting the A or Y button reset the rom,which was unexpected, as A is usually the go button. But hitting B instead made it all load properly, and worked from there. Changing the settings>controls>button layout>alternative now produces the expected result, so I am good to go. So it looks like it was a mapping issue after all.

While I have you though, on an unrelated issue, I am having trouble making sense of this with google, perhaps you could please quickly explain:

What is settings>system>priority dmg and gbc? Which should I be using? Doesn't seem to make a difference Also settings>ghosting? off, dmg, fbc, all Also doesn't seem to matter which option I pick. The default was dmg on both, so I just left it.

bardeci commented 3 years ago

The "priority" option:

Most of the GBC games were not compatible with the classic, monochrome GB. However, there are some GBC games which are also backwards compatible with the classic Game Boy (they usually had a black cartridge). Those games would be displayed in color if played in a GBC, and they would be displayed in monochrome mode if played in a monochrome (DMG) Game Boy.

A lot of those games were exclusive from Japan, but if you want a complete list of all these games, they are marked here as "Dual Mode" games: https://en.wikipedia.org/wiki/List_of_Game_Boy_Color_games

The priority option sets the default mode (monochrome or color) to use with those specific ROMS. It is set to "DMG" (monochrome) by default because of personal preference (i grew up with the monochrome GB), but you can set it to GBC if you want all those games to be played in GBC (color) mode by default.

The "ghosting" option: As you may know, the LCD screens of the original GB/GBC hardware suffered from severe ghosting. Some game developers exploited this hardware issue to simulate more colors or transparencies by displaying flickering sprites which, thanks to the screen ghosting, looked like semi-transparent images to the player. The "ghosting" option blends the frames to achieve the same effect.

This kind of hardware exploit was used only on a handful of games, and the only ones i know about are DMG (monochrome) games, so that's why it's set to "DMG" by default.

A good example of this is the first level of the DMG game "Chikyuu Kaihou Gun ZAS" (it's a vertical space shooter). Here is a video of it with ghosting disabled: https://www.youtube.com/watch?v=NMrvjJBeTZc And here is a video of it with ghosting enabled: https://www.youtube.com/watch?v=t4jwNbdADoY

31337-4554551n commented 3 years ago

Thank you so much, you've been wonderful