sindbadm: add note about version with different sound hw

This commit is contained in:
hap 2025-03-29 22:22:53 +01:00
parent f5ac6aaa54
commit 481002e640
3 changed files with 47 additions and 51 deletions

View File

@ -75,6 +75,10 @@
* Unknown boardset (background doesn't match consolidated) * Unknown boardset (background doesn't match consolidated)
* System 1 Sound (Z80, 2xSN76496) * System 1 Sound (Z80, 2xSN76496)
From the way this PCB recording sounds (notably the hole open/close sound
effect), there's also a Sindbad Mystery with different sound hardware,
possibly Sega USB: https://x.com/ZAVIGA84/status/1905972208390062179
**************************************************************************** ****************************************************************************
See also segag80v.cpp for the Sega G-80 Vector games. See also segag80v.cpp for the Sega G-80 Vector games.
@ -124,7 +128,6 @@
#define CPU_CLOCK 8_MHz_XTAL /* not used when video board is connected */ #define CPU_CLOCK 8_MHz_XTAL /* not used when video board is connected */
#define VIDEO_CLOCK 15.46848_MHz_XTAL #define VIDEO_CLOCK 15.46848_MHz_XTAL
#define SINDBADM_SOUND_CLOCK 8_MHz_XTAL
#define PIXEL_CLOCK (VIDEO_CLOCK/3) #define PIXEL_CLOCK (VIDEO_CLOCK/3)
@ -312,13 +315,10 @@ void segag80r_state::sindbadm_misc_w(uint8_t data)
/* the data lines are flipped */ /* the data lines are flipped */
void segag80r_state::sindbadm_sn1_SN76496_w(uint8_t data) template <int N>
void segag80r_state::sindbadm_sn_w(uint8_t data)
{ {
m_sn1->write(bitswap<8>(data, 0,1,2,3,4,5,6,7)); m_sn[N]->write(bitswap<8>(data, 0,1,2,3,4,5,6,7));
}
void segag80r_state::sindbadm_sn2_SN76496_w(uint8_t data)
{
m_sn2->write(bitswap<8>(data, 0,1,2,3,4,5,6,7));
} }
@ -395,8 +395,8 @@ void segag80r_state::sindbadm_sound_map(address_map &map)
{ {
map(0x0000, 0x1fff).rom(); map(0x0000, 0x1fff).rom();
map(0x8000, 0x87ff).mirror(0x1800).ram(); map(0x8000, 0x87ff).mirror(0x1800).ram();
map(0xa000, 0xa003).mirror(0x1ffc).w(FUNC(segag80r_state::sindbadm_sn1_SN76496_w)); map(0xa000, 0xa003).mirror(0x1ffc).w(FUNC(segag80r_state::sindbadm_sn_w<0>));
map(0xc000, 0xc003).mirror(0x1ffc).w(FUNC(segag80r_state::sindbadm_sn2_SN76496_w)); map(0xc000, 0xc003).mirror(0x1ffc).w(FUNC(segag80r_state::sindbadm_sn_w<1>));
map(0xe000, 0xe000).mirror(0x1fff).r("ppi8255", FUNC(i8255_device::acka_r)); map(0xe000, 0xe000).mirror(0x1fff).r("ppi8255", FUNC(i8255_device::acka_r));
} }
@ -973,14 +973,13 @@ void segag80r_state::sindbadm(machine_config &config)
SPEAKER(config, "speaker").front_center(); SPEAKER(config, "speaker").front_center();
/* sound boards */ /* sound boards */
Z80(config, m_audiocpu, SINDBADM_SOUND_CLOCK/2); Z80(config, m_audiocpu, 8_MHz_XTAL/2);
m_audiocpu->set_addrmap(AS_PROGRAM, &segag80r_state::sindbadm_sound_map); m_audiocpu->set_addrmap(AS_PROGRAM, &segag80r_state::sindbadm_sound_map);
m_audiocpu->set_periodic_int(FUNC(segag80r_state::irq0_line_hold), attotime::from_hz(4*60)); m_audiocpu->set_periodic_int(FUNC(segag80r_state::irq0_line_hold), attotime::from_hz(4*60));
/* sound hardware */ /* sound hardware */
SN76496(config, m_sn1, SINDBADM_SOUND_CLOCK/2).add_route(ALL_OUTPUTS, "speaker", 1.0); /* matches PCB videos, correct? */ SN76496(config, m_sn[0], 8_MHz_XTAL/2).add_route(ALL_OUTPUTS, "speaker", 1.0); // matches PCB videos, correct?
SN76496(config, m_sn[1], 8_MHz_XTAL/4).add_route(ALL_OUTPUTS, "speaker", 1.0); // "
SN76496(config, m_sn2, SINDBADM_SOUND_CLOCK/4).add_route(ALL_OUTPUTS, "speaker", 1.0); /* matches PCB videos, correct? */
} }

View File

@ -34,8 +34,7 @@ public:
driver_device(mconfig, type, tag), driver_device(mconfig, type, tag),
m_mainram(*this, "mainram"), m_mainram(*this, "mainram"),
m_videoram(*this, "videoram"), m_videoram(*this, "videoram"),
m_sn1(*this, "sn1"), m_sn(*this, "sn%u", 1U),
m_sn2(*this, "sn2"),
m_maincpu(*this, "maincpu"), m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"), m_audiocpu(*this, "audiocpu"),
m_soundbrd(*this, "soundbrd"), m_soundbrd(*this, "soundbrd"),
@ -85,8 +84,7 @@ private:
required_shared_ptr<uint8_t> m_mainram; required_shared_ptr<uint8_t> m_mainram;
required_shared_ptr<uint8_t> m_videoram; required_shared_ptr<uint8_t> m_videoram;
optional_device<sn76496_device> m_sn1; optional_device_array<sn76496_device, 2> m_sn;
optional_device<sn76496_device> m_sn2;
required_device<cpu_device> m_maincpu; required_device<cpu_device> m_maincpu;
optional_device<cpu_device> m_audiocpu; optional_device<cpu_device> m_audiocpu;
optional_device<monsterb_sound_device> m_soundbrd; optional_device<monsterb_sound_device> m_soundbrd;
@ -152,8 +150,7 @@ private:
void usb_ram_w(offs_t offset, uint8_t data); void usb_ram_w(offs_t offset, uint8_t data);
void sindbadm_misc_w(uint8_t data); void sindbadm_misc_w(uint8_t data);
void sindbadm_sn1_SN76496_w(uint8_t data); template <int N> void sindbadm_sn_w(uint8_t data);
void sindbadm_sn2_SN76496_w(uint8_t data);
TILE_GET_INFO_MEMBER(spaceod_get_tile_info); TILE_GET_INFO_MEMBER(spaceod_get_tile_info);
TILEMAP_MAPPER_MEMBER(spaceod_scan_rows); TILEMAP_MAPPER_MEMBER(spaceod_scan_rows);
@ -191,8 +188,7 @@ private:
}; };
/*----------- defined in audio/segag80r.c -----------*/ /*----------- defined in segag80r_a.cpp -----------*/
class sega005_sound_device : public device_t, class sega005_sound_device : public device_t,
public device_sound_interface public device_sound_interface
@ -217,7 +213,8 @@ private:
DECLARE_DEVICE_TYPE(SEGA005, sega005_sound_device) DECLARE_DEVICE_TYPE(SEGA005, sega005_sound_device)
/*----------- defined in video/segag80r.c -----------*/
/*----------- defined in segag80r_v.cpp -----------*/
#define G80_BACKGROUND_NONE 0 #define G80_BACKGROUND_NONE 0
#define G80_BACKGROUND_SPACEOD 1 #define G80_BACKGROUND_SPACEOD 1