libretro / common-overlays

Collection of overlay files for use with libretro frontends, such as RetroArch.

Home Page:http://www.libretro.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Flip phone device overlay

XerTheSquirrel opened this issue · comments

A new overlay for flip phone device emulation is needed (currently by SquirrelJME). Note that any overlays for ColecoVision, Intellivision, and Atari Jaguar systems will not work here due to lack of information on buttons and the number of available buttons.

Specifically the following keys are required:

  • Up
  • Down
  • Left
  • Right
  • Select
  • Soft 1 (Top-left button)
  • Soft 2 (Top-right button)
  • Talk/Call (vertical green phone facing left)
  • End/Hangup (horizontal red phone facing down)
  • Camera
  • Back
  • Speaker
  • Volume Up
  • Volume Down
  • 1 🖂 or 1 ➿ (Voicemail)
  • 2 ABC
  • 3 DEF
  • 4 GHI
  • 5 JKL (tactile aid)
  • 6 MNO
  • 7 PQRS
  • 8 TUV
  • 9 WXYZ
  • * Shift (Star, Shift)
  • One of these pairs:
    • Space on zero:
      • 0 + ␣ (Zero, Plus, Space)
      • # (Pound)
    • Space on pound:
      • 0 + (Zero, Plus)
      • # ␣ (Pound, Space)

This can be seen in the following picture of a Kyocera Dura XT:
image

I can probably help out with this, though my overlays are typically pretty ugly, unfortunately. I can at least get the functionality and layout and someone else can pretty it up.

I do have some questions, though: what are you mapping these functions to in the core? It looks like too many things for the retropad, so I'm assuming retrokeyboard?

Modifier keys like shift are weird in RetroArch. You can't just call shift plus whatever and have it do what it's supposed to, but if someone presses and holds shift on the overlay and then presses another key, it should work. Is that good enough?

Modifier keys like shift are weird in RetroArch. You can't just call shift plus whatever and have it do what it's supposed to, but if someone presses and holds shift on the overlay and then presses another key, it should work. Is that good enough?

There is no actual shift key on phones, that key is just the star key. If you press it, it would send * to the device (same with the number keys and pound for their respective symbol). The stuff below the big number part is just a helper because there will be text input on the device where you have to press a button to enter in a letter (for example b requires pressing 2 twice, but the device will only ever know that 2 was pressed). I will note though that having the extra letters and symbols below the primary symbol just have to be on the key graphic itself.

I do have some questions, though: what are you mapping these functions to in the core? It looks like too many things for the retropad, so I'm assuming retrokeyboard?

That is to be determined whether it be a Retropad or Retrokeyboard. The minimum set of buttons are: Up, Down, Left, Right, Select, Back, End, Soft 1 (L), Soft 2 (R), 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, Star, and Pound.

SquirrelJME right now (outside of RetroArch) has the following key bindings on the keyboard:

  • Up/Down/Left/Right/0/1/2/3/4/5/6/7/8/9/Star/Pound to their respective keys.
  • Back to Backspace.
  • End to Escape.
  • Select to Enter.
  • Soft 1 (L) to F1.
  • Soft 2 (R) to F2.

Okay, so I defined a bare minimum that will fit on RetroPad and it is defined as follows:

/* SOFT LEFT. */
{0, RETRO_DEVICE_JOYPAD, 0,
	RETRO_DEVICE_ID_JOYPAD_SELECT, "Soft 1 (Left Shoulder)"},

/* SOFT LEFT. */
{0, RETRO_DEVICE_JOYPAD, 0,
	RETRO_DEVICE_ID_JOYPAD_START, "Soft 2 (Right Shoulder)"},

/* [1  o~o] */
{0, RETRO_DEVICE_JOYPAD, 0,
	RETRO_DEVICE_ID_JOYPAD_X, "1 Voicemail (Game A)"},

/* [2  abc] */
{0, RETRO_DEVICE_JOYPAD, 0,
	RETRO_DEVICE_ID_JOYPAD_UP, "2 ABC (Game Up)"},

/* [3  def] */
{0, RETRO_DEVICE_JOYPAD, 0,
	RETRO_DEVICE_ID_JOYPAD_A, "3 DEF (Game B)"},

/* [4  ghi] */
{0, RETRO_DEVICE_JOYPAD, 0,
	RETRO_DEVICE_ID_JOYPAD_LEFT, "4 GHI (Game Left)"},

/* [5  jkl] */
{0, RETRO_DEVICE_JOYPAD, 0,
	RETRO_DEVICE_ID_JOYPAD_L2, "5 JKL (Game Fire/Select)"},

/* [6  mno] */
{0, RETRO_DEVICE_JOYPAD, 0,
	RETRO_DEVICE_ID_JOYPAD_RIGHT, "6 MNO (Game Right)"},

/* [7 pqrs] */
{0, RETRO_DEVICE_JOYPAD, 0,
	RETRO_DEVICE_ID_JOYPAD_Y, "7 PQRS (Game C)"},

/* [8  tuv] */
{0, RETRO_DEVICE_JOYPAD, 0,
	RETRO_DEVICE_ID_JOYPAD_DOWN, "8 TUV (Game Down)"},

/* [9 wxyz] */
{0, RETRO_DEVICE_JOYPAD, 0,
	RETRO_DEVICE_ID_JOYPAD_B, "9 WXYZ (Game D)"},

/* [*  shf] */
{0, RETRO_DEVICE_JOYPAD, 0,
	RETRO_DEVICE_ID_JOYPAD_L, "Star (Shift)"},

/* [0    +] */
{0, RETRO_DEVICE_JOYPAD, 0,
	RETRO_DEVICE_ID_JOYPAD_R2, "0 Operator (Plus)"},

/* [# spac] */
{0, RETRO_DEVICE_JOYPAD, 0,
	RETRO_DEVICE_ID_JOYPAD_R, "Pound (Space)"},

It looks like this:

image

Ok, that's very doable. Would you care to try this one I whipped up? It's meant for portrait orientation:
https://www.mediafire.com/file/brvy3w3fnmnxfm9/j2me_overlay.zip/file

Ok, that's very doable. Would you care to try this one I whipped up? It's meant for portrait orientation:
https://www.mediafire.com/file/brvy3w3fnmnxfm9/j2me_overlay.zip/file

Hi! This one will work! Thank you!

hey, no problem :)

I'll get it pushed into the repo tomorrow.

hey, no problem :)

I'll get it pushed into the repo tomorrow.

Cool! Thank you!

Alright, closed by ecccb45

Let me know if it needs anything else added to it in the future.