From 96125d797087140fa1f70ffda578ea56b597749f Mon Sep 17 00:00:00 2001 From: MooglyGuy Date: Sun, 27 Mar 2022 19:42:17 +0200 Subject: [PATCH 1/6] -timetrv: Hooked up 1-bit audio DAC. [Ryan Holtz] (#9476) Co-authored-by: MooglyGuy --- src/mame/drivers/timetrv.cpp | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/src/mame/drivers/timetrv.cpp b/src/mame/drivers/timetrv.cpp index 1ad98d23b3d..94eb862a535 100644 --- a/src/mame/drivers/timetrv.cpp +++ b/src/mame/drivers/timetrv.cpp @@ -28,6 +28,7 @@ CPU is an Intel 80188 #include "machine/i8255.h" #include "machine/ins8250.h" #include "machine/ldv4200hle.h" +#include "sound/dac.h" #include "emupal.h" #include "speaker.h" @@ -46,6 +47,7 @@ public: , m_maincpu(*this, "maincpu") , m_uart(*this, "uart") , m_laserdisc(*this, "laserdisc") + , m_audiodac(*this, "audiodac") , m_digits(*this, "digit%u", 0U) , m_decimals(*this, "decimal%u", 0U) , m_cube_lamp(*this, "cube_lamp") @@ -61,6 +63,7 @@ private: void timetrv_io(address_map &map); void ppi1_pc_w(uint8_t data); + void tmrout1_w(int state); uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); @@ -69,9 +72,10 @@ private: required_shared_ptr m_led_vram_lo; required_shared_ptr m_led_vram_hi; - required_device m_maincpu; + required_device m_maincpu; required_device m_uart; required_device m_laserdisc; + required_device m_audiodac; output_finder<16> m_digits; output_finder<16> m_decimals; output_finder<> m_cube_lamp; @@ -86,6 +90,16 @@ void timetrv_state::machine_start() m_player_lamps.resolve(); } +void timetrv_state::tmrout1_w(int state) +{ + static int old_state = 1; + if (state != old_state) + { + printf("T1: %d\n", state); + } + old_state = state; +} + void timetrv_state::ppi1_pc_w(uint8_t data) { // Bit 3: 2P Start lamp @@ -298,6 +312,8 @@ void timetrv_state::timetrv(machine_config &config) I80188(config, m_maincpu, 16_MHz_XTAL); // Confirmed from PCB layout diagram m_maincpu->set_addrmap(AS_PROGRAM, &timetrv_state::timetrv_map); m_maincpu->set_addrmap(AS_IO, &timetrv_state::timetrv_io); + m_maincpu->tmrout0_handler().set(m_audiodac, FUNC(dac_1bit_device::write)); + m_maincpu->tmrout1_handler().set(FUNC(timetrv_state::tmrout1_w)); // interrupts are generated by internally-driven timers EEPROM_2816(config, "eeprom"); @@ -324,6 +340,8 @@ void timetrv_state::timetrv(machine_config &config) m_laserdisc->serial_tx().set(m_uart, FUNC(ns16450_device::rx_w)); /* sound hardware */ + DAC_1BIT(config, m_audiodac, 0).add_route(ALL_OUTPUTS, "mono", 0.25); + SPEAKER(config, "mono").front_center(); } @@ -353,5 +371,5 @@ ROM_END -GAMEL( 1991, timetrv, 0, timetrv, timetrv, timetrv_state, empty_init, ORIENTATION_FLIP_Y, "Virtual Image Productions (Sega license)", "Time Traveler (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_timetrv ) -GAMEL( 1991, timetrv2, timetrv, timetrv, timetrv, timetrv_state, empty_init, ORIENTATION_FLIP_Y, "Virtual Image Productions (Sega license)", "Time Traveler (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND, layout_timetrv ) // Different frame indices; Europe? +GAMEL( 1991, timetrv, 0, timetrv, timetrv, timetrv_state, empty_init, ORIENTATION_FLIP_Y, "Virtual Image Productions (Sega license)", "Time Traveler (set 1)", MACHINE_SUPPORTS_SAVE, layout_timetrv ) +GAMEL( 1991, timetrv2, timetrv, timetrv, timetrv, timetrv_state, empty_init, ORIENTATION_FLIP_Y, "Virtual Image Productions (Sega license)", "Time Traveler (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING, layout_timetrv ) // Different frame indices; Europe? From 80e6e42a7440453bff8c663b06f2797efc99bade Mon Sep 17 00:00:00 2001 From: MooglyGuy Date: Sun, 27 Mar 2022 20:58:28 +0200 Subject: [PATCH 2/6] -timetrv: Removed stray debugging printf. (#9477) Co-authored-by: MooglyGuy --- src/mame/drivers/timetrv.cpp | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/src/mame/drivers/timetrv.cpp b/src/mame/drivers/timetrv.cpp index 94eb862a535..9a6ef43c49a 100644 --- a/src/mame/drivers/timetrv.cpp +++ b/src/mame/drivers/timetrv.cpp @@ -63,7 +63,6 @@ private: void timetrv_io(address_map &map); void ppi1_pc_w(uint8_t data); - void tmrout1_w(int state); uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); @@ -90,16 +89,6 @@ void timetrv_state::machine_start() m_player_lamps.resolve(); } -void timetrv_state::tmrout1_w(int state) -{ - static int old_state = 1; - if (state != old_state) - { - printf("T1: %d\n", state); - } - old_state = state; -} - void timetrv_state::ppi1_pc_w(uint8_t data) { // Bit 3: 2P Start lamp @@ -313,7 +302,6 @@ void timetrv_state::timetrv(machine_config &config) m_maincpu->set_addrmap(AS_PROGRAM, &timetrv_state::timetrv_map); m_maincpu->set_addrmap(AS_IO, &timetrv_state::timetrv_io); m_maincpu->tmrout0_handler().set(m_audiodac, FUNC(dac_1bit_device::write)); - m_maincpu->tmrout1_handler().set(FUNC(timetrv_state::tmrout1_w)); // interrupts are generated by internally-driven timers EEPROM_2816(config, "eeprom"); From a8e76831f89f815473e038c565ee967ce5d5c6eb Mon Sep 17 00:00:00 2001 From: MooglyGuy Date: Tue, 29 Mar 2022 22:52:34 +0200 Subject: [PATCH 3/6] -ldv4200hle: Fixed overshoot issue with Multi-Speed Forward/Reverse. [Ryan Holtz] (#9483) Co-authored-by: MooglyGuy --- src/devices/machine/ldv4200hle.cpp | 79 +++++++++++++++++++++++------- 1 file changed, 62 insertions(+), 17 deletions(-) diff --git a/src/devices/machine/ldv4200hle.cpp b/src/devices/machine/ldv4200hle.cpp index c86b3e4cee7..f6a6e373bf6 100644 --- a/src/devices/machine/ldv4200hle.cpp +++ b/src/devices/machine/ldv4200hle.cpp @@ -394,26 +394,60 @@ uint8_t pioneer_ldv4200hle_device::process_command(uint8_t cmd_index, uint32_t v break; case CMD_MULTISPEED_FORWARD: LOGMASKED(LOG_COMMANDS, "%s: Command: Multi-Speed Forward (%d) (cancelling search)\n", machine().describe_context(), value == ~0U ? 0 : value); - m_mode = MODE_MS_FORWARD; m_search_frame = ~0U; m_search_chapter = ~0U; - if (value != ~0U) + if (value + 1 == m_curr_frame) { - LOGMASKED(LOG_COMMANDS, "%s: Setting stop frame\n", machine().describe_context()); - m_mark_frame = value + 1; - m_cmd_running = true; + LOGMASKED(LOG_COMMANDS, "%s: Already at desired frame, entering still/pause\n", machine().describe_context(), value == ~0U ? 0 : value); + if (is_cav_disc()) + { + m_mode = MODE_STILL; + update_video_enable(); + } + else + { + m_mode = MODE_PAUSE; + video_enable(false); + } + } + else + { + m_mode = MODE_MS_FORWARD; + if (value != ~0U) + { + LOGMASKED(LOG_COMMANDS, "%s: Setting stop frame\n", machine().describe_context()); + m_mark_frame = value + 1; + m_cmd_running = true; + } } break; case CMD_MULTISPEED_REVERSE: LOGMASKED(LOG_COMMANDS, "%s: Command: Multi-Speed Reverse (%d) (cancelling search)\n", machine().describe_context(), value == ~0U ? 0 : value); - m_mode = MODE_MS_REVERSE; m_search_frame = ~0U; m_search_chapter = ~0U; - if (value != ~0U) + if (value + 1 == m_curr_frame) { - LOGMASKED(LOG_COMMANDS, "%s: Setting stop frame\n", machine().describe_context()); - m_mark_frame = value + 1; - m_cmd_running = true; + LOGMASKED(LOG_COMMANDS, "%s: Already at desired frame, entering still/pause\n", machine().describe_context(), value == ~0U ? 0 : value); + if (is_cav_disc()) + { + m_mode = MODE_STILL; + update_video_enable(); + } + else + { + m_mode = MODE_PAUSE; + video_enable(false); + } + } + else + { + m_mode = MODE_MS_REVERSE; + if (value != ~0U) + { + LOGMASKED(LOG_COMMANDS, "%s: Setting stop frame\n", machine().describe_context()); + m_mark_frame = value + 1; + m_cmd_running = true; + } } break; case CMD_SPEED_SET: @@ -768,8 +802,8 @@ void pioneer_ldv4200hle_device::device_timer(emu_timer &timer, device_timer_id i { if (m_mark_frame != ~0U && m_search_frame == ~0U) { - int32_t old_delta = (int32_t)old_frame - (int32_t)m_mark_frame; - int32_t curr_delta = (int32_t)m_curr_frame - (int32_t)m_mark_frame; + int32_t old_delta = (int32_t)m_mark_frame - (int32_t)old_frame; + int32_t curr_delta = (int32_t)m_mark_frame - (int32_t)m_curr_frame; LOGMASKED(LOG_STOPS, "%s: Stop Mark is currently %d, old frame is %d, current frame is %d, old delta %d, curr delta %d\n", machine().describe_context(), m_mark_frame, old_frame, m_curr_frame, old_delta, curr_delta); if (curr_delta == 0 || std::signbit(old_delta) != std::signbit(curr_delta)) { @@ -801,7 +835,7 @@ void pioneer_ldv4200hle_device::device_timer(emu_timer &timer, device_timer_id i if (m_search_frame != ~0U) { // TODO: Chapter-search support - int32_t delta = (int32_t)m_curr_frame - (int32_t)m_search_frame; + int32_t delta = (int32_t)m_search_frame - (int32_t)m_curr_frame; LOGMASKED(LOG_SEARCHES, "%s: Searching from current frame %d with delta %d\n", machine().describe_context(), m_curr_frame, delta); if (delta == 0) { @@ -829,20 +863,20 @@ void pioneer_ldv4200hle_device::device_timer(emu_timer &timer, device_timer_id i queue_reply("R\x0d"); } } - else if (delta >= -2 && delta < 0) + else if (delta <= 2 && delta > 0) { - LOGMASKED(LOG_SEARCHES, "%s: Negative-near delta, letting disc run to current\n", machine().describe_context()); + LOGMASKED(LOG_SEARCHES, "%s: Positive near delta, letting disc run to current\n", machine().describe_context()); // We're approaching our frame, let it run up. } else { if (delta < 0) { - advance_slider(std::max(1, -delta / 2)); + advance_slider(std::min(-2, delta / 2)); } else { - advance_slider(std::min(-2, -delta / 2)); + advance_slider(std::max(1, delta / 2)); } } } @@ -891,6 +925,17 @@ int32_t pioneer_ldv4200hle_device::player_update(const vbi_metadata &vbi, int fi m_speed_accum -= elapsed_tracks * 60; if (m_mode == MODE_MS_REVERSE) elapsed_tracks *= -1; + + if (m_mark_frame != ~0U) + { + int32_t jump_frame = (int32_t)m_curr_frame + elapsed_tracks; + int32_t curr_delta = (int32_t)m_mark_frame - (int32_t)m_curr_frame; + int32_t next_delta = (int32_t)m_mark_frame - (int32_t)jump_frame; + if (std::signbit(curr_delta) != std::signbit(next_delta)) + { + elapsed_tracks = curr_delta; + } + } return elapsed_tracks; } From c68e8da1f905b8d81ae4524c5dd15f1252ee538f Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Thu, 31 Mar 2022 02:13:59 +1100 Subject: [PATCH 4/6] apple2_flop_orig.xml: Removed a stray space --- hash/apple2_flop_orig.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hash/apple2_flop_orig.xml b/hash/apple2_flop_orig.xml index 81bab64237b..5e0a8593654 100644 --- a/hash/apple2_flop_orig.xml +++ b/hash/apple2_flop_orig.xml @@ -18852,7 +18852,7 @@ license:CC0 - Nibbles Away III (Version 1.25B) + Nibbles Away III (Version 1.25B) 1985 COMPUTER:applications From ec426cd79c9f2a024b4bdb5194ef9af4a15ea4fd Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Fri, 1 Apr 2022 00:27:57 +1100 Subject: [PATCH 5/6] s7.cpp: Removed Spellbinder as it isn't an original game. This is an incomplete homebrew made for a one-off prototype playfield that was nto developed further or put into production. --- src/mame/drivers/s7.cpp | 23 +---------------------- src/mame/mame.lst | 1 - 2 files changed, 1 insertion(+), 23 deletions(-) diff --git a/src/mame/drivers/s7.cpp b/src/mame/drivers/s7.cpp index 26b1e92a252..dce45e9e33f 100644 --- a/src/mame/drivers/s7.cpp +++ b/src/mame/drivers/s7.cpp @@ -48,7 +48,6 @@ Thunderball 508 1 unknown HyperBall 509 1 unknown Barracora 510 ASD hit 1 ASD Varkon 512 AX hit 1 AX -Spellbinder (unreleased) 513 (mnw) Reflex (unreleased) 514 Time Fantasy 515 1 X Warlok 516 1 X @@ -66,17 +65,13 @@ Starlight 530 AS hit 1 AS *Wild Texas is a clone/bootleg of Firepower II, and shows the same game number. Status: -- All machines are playable (except Spellbinder). +- All machines are playable - Thunderball: turn Speech DIP off, or you get corrupt sound. ToDo: - Some games have an additional alphanumeric display, or different display arrangements - Mechanical sounds vary per machine - Hyperball, status display is different -- Spellbinder, appears to be a non-working beta, runs into the weeds. If num-0 pressed it - fills everything with FF and freezes. Uses another PIA at 4000. Display is bad. If - game started it will soon end by itself. Makes random loud noises even in attract - mode. Doesn't display the game number on first boot, unlike every other game. *****************************************************************************************/ @@ -981,21 +976,6 @@ ROM_START(vrkon_l1) ROM_LOAD("sound12.716", 0x4800, 0x0800, CRC(d13db2bb) SHA1(862546bbdd1476906948f7324b7434c29df79baa) ) ROM_END -/*---------------------------------------------------------------------- -/ Spellbinder (#513) Not-working beta. -/ Reconstructed from the source by jessakey -/ No soundrom supplied, using one from hyperball (as PinMAME has done). -/----------------------------------------------------------------------*/ -ROM_START(splbn_l0) - ROM_REGION(0x3000, "maincpu", ROMREGION_ERASEFF) - ROM_LOAD("ic20.532", 0x0000, 0x1000, CRC(ff765ebf) SHA1(14d42735291c3f6e112f19bd49a39e00059cf907) ) - ROM_LOAD("ic14.532", 0x1000, 0x1000, CRC(940a817a) SHA1(2583ff6f6b6985d3ac85b4f120ebb002a10b65af) ) - ROM_LOAD("ic17.532", 0x2000, 0x1000, CRC(b38fde72) SHA1(17ef3ca354431307b6a79992c50cb2491b8a7631) ) - - ROM_REGION(0x5000, "s6sound:audiocpu", ROMREGION_ERASEFF) - ROM_LOAD("sound12.532", 0x4000, 0x1000, CRC(06051e5e) SHA1(f0ab4be812ceaf771829dd549f2a612156102a93) ) -ROM_END - /*----------------------------- / Time Fantasy (#515) /-----------------------------*/ @@ -1138,7 +1118,6 @@ GAME( 1981, hypbl_l3, hypbl_l4, s7, hypbl, s7_state, empty_init, ROT0, "Williams GAME( 1981, hypbl_l2, hypbl_l4, s7, hypbl, s7_state, empty_init, ROT0, "Williams", "HyperBall (L-2)", MACHINE_IS_SKELETON_MECHANICAL ) GAME( 1981, barra_l1, 0, s7, barra, s7_state, empty_init, ROT0, "Williams", "Barracora (L-1)", MACHINE_IS_SKELETON_MECHANICAL ) GAME( 1982, vrkon_l1, 0, s7, vrkon, s7_state, empty_init, ROT0, "Williams", "Varkon (L-1)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 1982, splbn_l0, 0, s7, s7, s7_state, empty_init, ROT0, "Williams", "Spellbinder (L-0)", MACHINE_IS_SKELETON_MECHANICAL ) GAME( 1982, tmfnt_l5, 0, s7, tmfnt, s7_state, empty_init, ROT0, "Williams", "Time Fantasy (L-5)", MACHINE_IS_SKELETON_MECHANICAL ) GAME( 1982, wrlok_l3, 0, s7, wrlok, s7_state, empty_init, ROT0, "Williams", "Warlok (L-3)", MACHINE_IS_SKELETON_MECHANICAL ) GAME( 1982, dfndr_l4, 0, s7, dfndr, s7_state, empty_init, ROT0, "Williams", "Defender (L-4)", MACHINE_IS_SKELETON_MECHANICAL ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 99419029193..79a0d62b99e 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -37068,7 +37068,6 @@ jst_l2 // lsrcu_l2 // pharo_l2 // solar_l2 // -splbn_l0 // strlt_l1 // thund_p1 // thund_p2 // From e8166b52740880cedfee0b779eb71c5994ff0334 Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Fri, 1 Apr 2022 01:07:51 +1100 Subject: [PATCH 6/6] Bump version to 0.242 --- android-project/app/src/main/AndroidManifest.xml | 4 ++-- docs/source/conf.py | 4 ++-- makefile | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/android-project/app/src/main/AndroidManifest.xml b/android-project/app/src/main/AndroidManifest.xml index cf45f3a8987..5066ba30bc8 100644 --- a/android-project/app/src/main/AndroidManifest.xml +++ b/android-project/app/src/main/AndroidManifest.xml @@ -4,8 +4,8 @@ --> diff --git a/docs/source/conf.py b/docs/source/conf.py index bbe71ce6c72..6be8a143e39 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -63,9 +63,9 @@ copyright = u'1997-2022, MAMEdev and contributors' # built documents. # # The short X.Y version. -version = '0.241' +version = '0.242' # The full version, including alpha/beta/rc tags. -release = '0.241' +release = '0.242' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/makefile b/makefile index 0f3e1e7d356..efed4e0bbb3 100644 --- a/makefile +++ b/makefile @@ -1546,7 +1546,7 @@ endif ifeq (posix,$(SHELLTYPE)) $(GENDIR)/version.cpp: makefile $(GENDIR)/git_desc | $(GEN_FOLDERS) - @echo '#define BARE_BUILD_VERSION "0.241"' > $@ + @echo '#define BARE_BUILD_VERSION "0.242"' > $@ @echo '#define BARE_VCS_REVISION "$(NEW_GIT_VERSION)"' >> $@ @echo 'extern const char bare_build_version[];' >> $@ @echo 'extern const char bare_vcs_revision[];' >> $@ @@ -1556,7 +1556,7 @@ $(GENDIR)/version.cpp: makefile $(GENDIR)/git_desc | $(GEN_FOLDERS) @echo 'const char build_version[] = BARE_BUILD_VERSION " (" BARE_VCS_REVISION ")";' >> $@ else $(GENDIR)/version.cpp: makefile $(GENDIR)/git_desc | $(GEN_FOLDERS) - @echo #define BARE_BUILD_VERSION "0.241" > $@ + @echo #define BARE_BUILD_VERSION "0.242" > $@ @echo #define BARE_VCS_REVISION "$(NEW_GIT_VERSION)" >> $@ @echo extern const char bare_build_version[]; >> $@ @echo extern const char bare_vcs_revision[]; >> $@