Mednafen PCE button mapping and a few observations

Hi there Team Retro,

Congratulations on a super solid 0.97.(1) The Wii port is impressive to say the least and judging by the comments at GBATemp, you made a lot of people happy with this release =)

I just have a few observations to report after dabbling with all the cores (Win7 x64 - all cores compiled from git).

  1. libretro-fceu
  • Even though 2 player support in fceumm works flawlessly in the Wii port, it is still broken in the PC port.
  1. libretro-genplus
  • In order for the Mega CD to work, it is necessary to disable rewind or you get an appcrash. I haven’t seen this mentioned in the documentation though so I’m wondering if it is expected behavior. I seem to remember the FBA core behaves similarly with NeoGeo roms.
  1. mednafen-pce-libretro

The default button mapping is sort of counter-intuitive. Looking at libretro.cpp and gamepad.cpp I seem to understand that the current mapping is as is follows:

PCE I -> SNES Y PCE II -> SNES B PCE III -> SNES A PCE IV -> SNES X PCE V -> SNES L PCE VI -> SNES R

I understand how this is an ideal mapping for 3 button systems such as the megadrive but the PCE is primarily a 2 button system like the NES. The current mapping makes a lot of platformers hard to play.

However, the PCE 6 button pad layout is also unorthodox. Buttons for SFII’ CE, arguably the only 6 button game people will care about, are mapped like this:

IV V VI LP MP HP

III II I LK MK HK

If we were to reproduce the traditional SNES layout, we would need the buttons to be:

PCE I -> SNES R PCE II -> SNES B PCE III -> SNES A PCE IV -> SNES Y PCE V -> SNES X PCE VI -> SNES L

The problem with this is that 2 button games which only make us of “I” and “II” become almost unplayable.

Personally, I have edited libretro.cpp to reflect my Mednafen configuration:

PCE I -> SNES A PCE II -> SNES B PCE III -> SNES R PCE IV -> SNES L PCE V -> SNES Y PCE VI -> SNES X

Of course, this makes things in Street Fighter II’ CE a bit strange with low punch and low kick bound to the shoulder buttons but it I find it a good compromise to ensure smooth compatibilty with the 2 button mode when pressing the 2/6 button switch.

To be honest, I don’t think you should even bother with supporting the 6 button pad. As long as “I” and “II” are mapped to “A” and “B” respectively, 98% of the games will control as intended.

Just a suggestion though, maybe you guys will come up with a better idea!

Thank you very much again for all you do, I can’t wait for the Android port!