summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Vas Crabb <vas@vastheman.com>2025-08-29 16:17:53 +1000
committer Vas Crabb <vas@vastheman.com>2025-08-29 16:17:53 +1000
commitc3b4bb1897b8fec14a7f481fcfdc9bbaa5a6c1d9 (patch)
treea58a8c5b1d8afc2ea57f7db7f26e245da364ee6f
parentc41bc7a44cc542231edda5fb533e7ac0d9691aec (diff)
input/input_common.cpp: Fixed "Application" key with SDL keyboard provider.
Also improved support for rare higher F-keys with SDL and Win32 providers.
-rw-r--r--hash/sg1000.xml4
-rw-r--r--src/mame/dataeast/btime.cpp16
-rw-r--r--src/mame/dataeast/decocass.cpp13
-rw-r--r--src/mame/dataeast/decocass.h2
-rw-r--r--src/mame/dataeast/decocass_m.cpp33
-rw-r--r--src/osd/modules/input/input_common.cpp15
6 files changed, 50 insertions, 33 deletions
diff --git a/hash/sg1000.xml b/hash/sg1000.xml
index 2ea53c7248a..e422405fd74 100644
--- a/hash/sg1000.xml
+++ b/hash/sg1000.xml
@@ -776,7 +776,7 @@ A135 : 森林歷險記 / Sēnlín lìxiǎn jì -> Pitfall II (same as R-049 by A
</software>
<software name="cloderunta" cloneof="cloderun">
- <description>Xun Bao Er Dai (Taiwan, Alt)</description>
+ <description>Xun Bao Er Dai (Taiwan, alt)</description>
<!-- This version has a Chinese title screen -->
<year>1985?</year>
<publisher>Aaronix</publisher>
@@ -2459,7 +2459,7 @@ A135 : 森林歷險記 / Sēnlín lìxiǎn jì -> Pitfall II (same as R-049 by A
</software>
<software name="spacearmt" cloneof="spacearm">
- <description>Space Armor (Taiwan, v20, Alt)</description>
+ <description>Space Armor (Taiwan, v20, alt)</description>
<year>1984</year>
<publisher>Aaronix</publisher>
<info name="serial" value="W-016"/>
diff --git a/src/mame/dataeast/btime.cpp b/src/mame/dataeast/btime.cpp
index 904e62a8c5d..d83a0715c01 100644
--- a/src/mame/dataeast/btime.cpp
+++ b/src/mame/dataeast/btime.cpp
@@ -343,9 +343,11 @@ private:
void draw_chars(bitmap_ind16 &bitmap, const rectangle &cliprect, uint8_t transparency, uint8_t color, int priority);
void draw_background(bitmap_ind16 &bitmap, const rectangle &cliprect, uint8_t *tmap, uint8_t color);
- void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, uint8_t color,
- uint8_t sprite_y_adjust, uint8_t sprite_y_adjust_flip_screen,
- uint8_t *sprite_ram, offs_t interleave);
+ void draw_sprites(
+ bitmap_ind16 &bitmap, const rectangle &cliprect,
+ uint8_t color,
+ uint8_t sprite_y_adjust, uint8_t sprite_y_adjust_flip_screen,
+ uint8_t const *sprite_ram, offs_t interleave);
void audio_map(address_map &map) ATTR_COLD;
void bnj_map(address_map &map) ATTR_COLD;
@@ -680,9 +682,11 @@ void btime_state::draw_chars(bitmap_ind16 &bitmap, const rectangle &cliprect, ui
}
}
-void btime_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, uint8_t color,
- uint8_t sprite_y_adjust, uint8_t sprite_y_adjust_flip_screen,
- uint8_t *sprite_ram, offs_t interleave)
+void btime_state::draw_sprites(
+ bitmap_ind16 &bitmap, const rectangle &cliprect,
+ uint8_t color,
+ uint8_t sprite_y_adjust, uint8_t sprite_y_adjust_flip_screen,
+ uint8_t const *sprite_ram, offs_t interleave)
{
int i;
offs_t offs;
diff --git a/src/mame/dataeast/decocass.cpp b/src/mame/dataeast/decocass.cpp
index 2ab953e9c5d..0061ed1871d 100644
--- a/src/mame/dataeast/decocass.cpp
+++ b/src/mame/dataeast/decocass.cpp
@@ -130,7 +130,7 @@ void decocass_state::decocass_map(address_map &map)
void decocass_state::decocrom_map(address_map &map)
{
decocass_map(map);
- map(0x6000, 0xafff).bankr("bank").w(FUNC(decocass_state::decocass_de0091_w));
+ map(0x6000, 0xafff).bankr(m_rombank).w(FUNC(decocass_state::decocass_de0091_w));
map(0xe900, 0xe900).w(FUNC(decocass_state::decocass_e900_w));
}
@@ -2106,17 +2106,10 @@ void decocass_state::init_decocrom()
uint8_t decocass_state::cdsteljn_input_r(offs_t offset)
{
- uint8_t res;
- static const char *const portnames[2][4] = {
- {"P1_MP0", "P1_MP1", "P1_MP2", "P1_MP3"},
- {"P2_MP0", "P2_MP1", "P2_MP2", "P2_MP3"} };
-
if(offset & 6)
return decocass_input_r(offset);
-
- res = ioport(portnames[offset & 1][m_mux_data])->read();
-
- return res;
+ else
+ return m_muxport[BIT(offset, 0)][m_mux_data]->read();
}
void decocass_state::cdsteljn_mux_w(uint8_t data)
diff --git a/src/mame/dataeast/decocass.h b/src/mame/dataeast/decocass.h
index 74a52a32dee..f199827cd70 100644
--- a/src/mame/dataeast/decocass.h
+++ b/src/mame/dataeast/decocass.h
@@ -49,6 +49,7 @@ public:
, m_inputs(*this, "IN%u", 0)
, m_analog(*this, "AN%u", 0)
, m_dsw(*this, "DSW%u", 1)
+ , m_muxport{ { *this, "P1_MP%u", 0U }, { *this, "P2_MP%u", 0U } }
, m_rambase(*this, "rambase")
, m_charram(*this, "charram")
, m_fgvideoram(*this, "fgvideoram")
@@ -101,6 +102,7 @@ private:
required_ioport_array<3> m_inputs;
required_ioport_array<4> m_analog;
required_ioport_array<2> m_dsw;
+ optional_ioport_array<4> m_muxport[2];
/* memory pointers */
required_shared_ptr<uint8_t> m_rambase;
diff --git a/src/mame/dataeast/decocass_m.cpp b/src/mame/dataeast/decocass_m.cpp
index 17c1f3ae179..f2b35a59c01 100644
--- a/src/mame/dataeast/decocass_m.cpp
+++ b/src/mame/dataeast/decocass_m.cpp
@@ -11,19 +11,28 @@
#include "cpu/m6502/m6502.h"
-/* dongle type #1: jumpers C and D assignments */
-#define MAKE_MAP(m0,m1,m2,m3,m4,m5,m6,m7) \
- ((uint32_t)(m0)) | \
- ((uint32_t)(m1) << 3) | \
- ((uint32_t)(m2) << 6) | \
- ((uint32_t)(m3) << 9) | \
- ((uint32_t)(m4) << 12) | \
- ((uint32_t)(m5) << 15) | \
- ((uint32_t)(m6) << 18) | \
- ((uint32_t)(m7) << 21)
+namespace {
-#define T1MAP(x, m) (((m) >> (x * 3)) & 7)
+// dongle type #1: jumpers C and D assignments
+constexpr uint32_t MAKE_MAP(
+ uint32_t m0,
+ uint32_t m1,
+ uint32_t m2,
+ uint32_t m3,
+ uint32_t m4,
+ uint32_t m5,
+ uint32_t m6,
+ uint32_t m7)
+{
+ return m0 | (m1 << 3) | (m2 << 6) | (m3 << 9) | (m4 << 12) | (m5 << 15) | (m6 << 18) | (m7 << 21);
+}
+
+
+constexpr uint32_t T1MAP(unsigned x, uint32_t m)
+{
+ return (m >> (x * 3)) & 7;
+}
@@ -41,6 +50,8 @@ enum {
TYPE3_SWAP_67
};
+} // anonymous namespace
+
void decocass_state::decocass_coin_counter_w(uint8_t data)
{
diff --git a/src/osd/modules/input/input_common.cpp b/src/osd/modules/input/input_common.cpp
index f3de3ca186e..ddcd3805640 100644
--- a/src/osd/modules/input/input_common.cpp
+++ b/src/osd/modules/input/input_common.cpp
@@ -90,9 +90,7 @@ key_trans_entry keyboard_trans_table::s_default_table[] =
KEY_TRANS_ENTRY1(TILDE, GRAVE, GRAVE, VK_OEM_3, '`'),
KEY_TRANS_ENTRY1(LSHIFT, LSHIFT, LSHIFT, VK_LSHIFT, 0),
KEY_TRANS_ENTRY1(BACKSLASH, BACKSLASH, BACKSLASH, VK_OEM_5, '\\'),
-// KEY_TRANS_ENTRY1(BACKSLASH2, NONUSHASH, UNKNOWN, OEM_102, VK_OEM_102, '<'),
-// This is the additional key that ISO keyboards have over ANSI ones, located between left shift and Y.
- KEY_TRANS_ENTRY1(BACKSLASH2, NONUSBACKSLASH, OEM_102, VK_OEM_102, '<'),
+ KEY_TRANS_ENTRY1(BACKSLASH2, NONUSBACKSLASH, OEM_102, VK_OEM_102, '<'), // immediately to the right of left shift on ISO keyboards
KEY_TRANS_ENTRY1(Z, Z, Z, 'Z', 'Z'),
KEY_TRANS_ENTRY1(X, X, X, 'X', 'X'),
KEY_TRANS_ENTRY1(C, C, C, 'C', 'C'),
@@ -138,6 +136,11 @@ key_trans_entry keyboard_trans_table::s_default_table[] =
KEY_TRANS_ENTRY1(F13, F13, F13, VK_F13, 0),
KEY_TRANS_ENTRY1(F14, F14, F14, VK_F14, 0),
KEY_TRANS_ENTRY1(F15, F15, F15, VK_F15, 0),
+ KEY_TRANS_ENTRY1(F16, F16, UNKNOWN, VK_F16, 0),
+ KEY_TRANS_ENTRY1(F17, F17, UNKNOWN, VK_F17, 0),
+ KEY_TRANS_ENTRY1(F18, F18, UNKNOWN, VK_F18, 0),
+ KEY_TRANS_ENTRY1(F19, F19, UNKNOWN, VK_F19, 0),
+ KEY_TRANS_ENTRY1(F20, F20, UNKNOWN, VK_F20, 0),
KEY_TRANS_ENTRY1(ENTER_PAD, KP_ENTER, NUMPADENTER, VK_RETURN, 0),
KEY_TRANS_ENTRY1(RCONTROL, RCTRL, RCONTROL, VK_RCONTROL, 0),
KEY_TRANS_ENTRY1(SLASH_PAD, KP_DIVIDE, DIVIDE, VK_DIVIDE, 0),
@@ -155,7 +158,7 @@ key_trans_entry keyboard_trans_table::s_default_table[] =
KEY_TRANS_ENTRY0(DEL, DELETE, DELETE, VK_DELETE, 0, "DELETE"),
KEY_TRANS_ENTRY1(LWIN, LGUI, LWIN, VK_LWIN, 0),
KEY_TRANS_ENTRY1(RWIN, RGUI, RWIN, VK_RWIN, 0),
- KEY_TRANS_ENTRY1(MENU, MENU, APPS, VK_APPS, 0),
+ KEY_TRANS_ENTRY1(MENU, APPLICATION, APPS, VK_APPS, 0),
KEY_TRANS_ENTRY1(PAUSE, PAUSE, PAUSE, VK_PAUSE, 0),
KEY_TRANS_ENTRY1(CANCEL, CANCEL, UNKNOWN, 0, 0),
KEY_TRANS_ENTRY1(BS_PAD, KP_BACKSPACE, UNKNOWN, 0, 0),
@@ -166,6 +169,10 @@ key_trans_entry keyboard_trans_table::s_default_table[] =
KEY_TRANS_ENTRY1(EQUALS_PAD, KP_EQUALS, NUMPADEQUALS, VK_OEM_NEC_EQUAL, 0),
// keys that have no specific MAME input item IDs
+ KEY_TRANS_ENTRY0(OTHER_SWITCH, F21, UNKNOWN, VK_F21, 0, "F21"),
+ KEY_TRANS_ENTRY0(OTHER_SWITCH, F22, UNKNOWN, VK_F22, 0, "F22"),
+ KEY_TRANS_ENTRY0(OTHER_SWITCH, F23, UNKNOWN, VK_F23, 0, "F23"),
+ KEY_TRANS_ENTRY0(OTHER_SWITCH, F24, UNKNOWN, VK_F24, 0, "F24"),
KEY_TRANS_ENTRY0(OTHER_SWITCH, AUDIONEXT, NEXTTRACK, VK_MEDIA_NEXT_TRACK, 0, "AUDIONEXT"),
KEY_TRANS_ENTRY0(OTHER_SWITCH, AUDIOMUTE, MUTE, VK_VOLUME_MUTE, 0, "VOLUMEMUTE"),
KEY_TRANS_ENTRY0(OTHER_SWITCH, AUDIOPLAY, PLAYPAUSE, VK_MEDIA_PLAY_PAUSE, 0, "AUDIOPLAY"),