diff options
| author | 2025-08-29 16:17:53 +1000 | |
|---|---|---|
| committer | 2025-08-29 16:17:53 +1000 | |
| commit | c3b4bb1897b8fec14a7f481fcfdc9bbaa5a6c1d9 (patch) | |
| tree | a58a8c5b1d8afc2ea57f7db7f26e245da364ee6f | |
| parent | c41bc7a44cc542231edda5fb533e7ac0d9691aec (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.xml | 4 | ||||
| -rw-r--r-- | src/mame/dataeast/btime.cpp | 16 | ||||
| -rw-r--r-- | src/mame/dataeast/decocass.cpp | 13 | ||||
| -rw-r--r-- | src/mame/dataeast/decocass.h | 2 | ||||
| -rw-r--r-- | src/mame/dataeast/decocass_m.cpp | 33 | ||||
| -rw-r--r-- | src/osd/modules/input/input_common.cpp | 15 |
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"), |
