summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author angelosa <lordkale4@gmail.com>2024-09-17 20:19:18 +0200
committer angelosa <lordkale4@gmail.com>2024-09-17 20:36:42 +0200
commit31efb55ddfa36bf140e54bd5f34d0caad67378fa (patch)
treed489d4d1f96a49bce5815a83689d47e4fedfc731
parent5a700fc2c9ba78c68e15333f2b72f89a92d7ff38 (diff)
hitachi/bmjr.cpp: preliminary DAC sound
-rw-r--r--src/mame/hitachi/bmjr.cpp18
1 files changed, 10 insertions, 8 deletions
diff --git a/src/mame/hitachi/bmjr.cpp b/src/mame/hitachi/bmjr.cpp
index 51191ac5061..5da41592624 100644
--- a/src/mame/hitachi/bmjr.cpp
+++ b/src/mame/hitachi/bmjr.cpp
@@ -5,12 +5,11 @@
Basic Master Jr. (MB-6885) (c) 1982? Hitachi
TODO:
-- Memory view control at $efd0;
-- Convert MP-1710 color adapter to device (bmjr specific);
-- Sound DAC;
+- Identify and improve Sound DAC details;
- Keyboard eats inputs if typed relatively fast (verify, particularly with emu.keypost);
- Break key is unemulated (tied with the NMI);
-- Downgrade for earlier variants (needs dump first);
+- Downgrade for earlier variants (needs dump first), convert MP-1710 color adapter to device
+ (bmjr specific);
**************************************************************************************************/
@@ -18,6 +17,7 @@ TODO:
#include "cpu/m6800/m6800.h"
#include "imagedev/cassette.h"
#include "machine/timer.h"
+#include "sound/dac.h"
#include "emupal.h"
#include "screen.h"
@@ -33,6 +33,7 @@ public:
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_cass(*this, "cassette")
+ , m_dac(*this, "dac")
, m_work_ram(*this, "work_ram")
, m_basic_view(*this, "basic_view")
, m_printer_view(*this, "printer_view")
@@ -68,6 +69,7 @@ private:
virtual void machine_reset() override;
required_device<cpu_device> m_maincpu;
required_device<cassette_image_device> m_cass;
+ required_device<dac_5bit_binary_weighted_device> m_dac;
required_shared_ptr<u8> m_work_ram;
memory_view m_basic_view;
memory_view m_printer_view;
@@ -185,8 +187,7 @@ void bmjr_state::tape_w(u8 data)
{
if(!m_tape_switch)
{
- // TODO: to five bit DAC, --xx xxx-
- //m_beep->set_state(!BIT(data, 7));
+ m_dac->write((data >> 1) & 0x1f);
}
else
{
@@ -469,7 +470,8 @@ void bmjr_state::bmjr(machine_config &config)
GFXDECODE(config, "gfxdecode", "palette", gfx_bmjr);
SPEAKER(config, "mono").front_center();
- // TODO: DAC_5BIT_?
+ // TODO: unknown DAC type, likely connected to discrete circuitry.
+ DAC_5BIT_BINARY_WEIGHTED(config, m_dac).add_route(ALL_OUTPUTS, "mono", 0.25);
}
/* ROM definition */
@@ -493,4 +495,4 @@ ROM_END
// 1979 Basic Master MB-6880 (retroactively Level 1)
// 1979 Basic Master Level 2 MB-6880L2
// 1980 Basic Master Level 2 II MB-6881
-COMP( 1981, bmjr, 0, 0, bmjr, bmjr, bmjr_state, empty_init, "Hitachi", "Basic Master Jr. (MB-6885)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
+COMP( 1981, bmjr, 0, 0, bmjr, bmjr, bmjr_state, empty_init, "Hitachi", "Basic Master Jr. (MB-6885)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )