mgba-emu / mgba

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

Boktai 1 using 10 solar sensor levels instead of 8 #523

Open Prof9 opened 7 years ago

Prof9 commented 7 years ago

All three Boktai games on GBA feature a solar sensor which affects your sun gauge in the game. mGBA implements solar sensor emulation, and provides 10 different levels of sunlight, which equals the number of bars in the sun gauge in Boktai 2 and Boktai 3. However, the sun gauge in Boktai 1 uses only 8 bars, so increasing/decreasing the solar sensor level sometimes causes it to get 'stuck' -- even though the sunlight increases internally, the change is not reflected in the sun gauge.

Here are some GIFs to illustrate what I mean. I mapped the increase/decrease sunlight level to a shortcut key and pressed increase sunlight together with the Taiyoh action (where the character raises his hand) and pressed decrease sunlight together with the shoot action. (Note that the change in sunlight level is slightly delayed since the game does not poll the solar sensor on every frame.)

Boktai 1, where the sun gauge gets 'stuck' on level 3-4 and level 9-10: http://i.imgur.com/KfusLrb.gif

Boktai 2 and 3, where the sun gauge updates correctly: http://i.imgur.com/mRWSciD.gif http://i.imgur.com/guDH7cl.gif

All GIFs recorded on clean dumps of the US version of Boktai 1 and 2, and the JP version of Boktai 3.

This is really just a minor nitpick, but it would be nice if 8 levels of sunlight could be used for Boktai 1 instead of 10. It's not too big an issue since one can use a solar sensor patch instead, which has the additional benefit that the sun gauge updates immediately.

endrift commented 7 years ago

Yeah, this is a known issue and...it really is a nitpick to fix it because this is a really minor issue :P But it should be possible and would be a usability enhancement.

Prof9 commented 7 years ago

Another thought: while mGBA (and the solar sensor patches) take one values from every 'bar', the range of the solar sensor level is much larger. Even though every discrete value might not show on the sun gauge, it may still affect some behind-the-scenes stuff, such as the rates of your gun 'overheating' and Soll collected in the background. (I've not thoroughly tested this, though). It might be nice to let the user define their own sunlight levels (similar to the option in the Game Pak Sensors menu) or just have a radio box to select 8 or 10 levels?

endrift commented 7 years ago

You mean to be able to set their own presets, or just do the exact same thing as in the Sensors dialog, but elsewhere?

Prof9 commented 7 years ago

To be able to set their own presets, yeah.

rzumer commented 5 years ago

As a first/alleviating step, I would suggest labeling the option (at least in the libretro core, and in the standalone version's option menu if it is an option) in terms of percentage rather than discrete 0-10 value, or divide the full range of discrete values, assuming the three games use the same one internally. This would make more sense in terms of how it actually works.