mirror of
https://github.com/holub/mame
synced 2025-04-19 15:11:37 +03:00
flower: remove unneeded vblank irq trampoline,
vidbrain: fix regression with ext interrupt, invert joystick select pins, bus/vidbrain: unmap_r/w shouldn't lower cs2 pin Software list items promoted to working --------------------------------------- vidbrain: Money Minder [hap] New software list items marked not working ------------------------------------------ vidbrain: The Computational Language [Sean Riddle, Ianoid]
This commit is contained in:
parent
a5f3663a4d
commit
0cae4d6d40
@ -3,34 +3,31 @@
|
||||
<!--
|
||||
license:CC0-1.0
|
||||
|
||||
Undumped cartridges
|
||||
All officially released cartridges have been dumped.
|
||||
|
||||
Money Management Series:
|
||||
APL/S The Computational Language
|
||||
Advertised but never released cartridges:
|
||||
|
||||
Money Management Series:
|
||||
- VB-59 The Programmable
|
||||
- VB-1100 Budget System
|
||||
- VB-1200 Information Manager
|
||||
|
||||
Advertised but never released cartridges
|
||||
Education Series:
|
||||
- ED07 Musicianship 1
|
||||
- ED08 Number Cross
|
||||
- ED09 Historical Simulation: France in the Old Regime
|
||||
|
||||
Money Management Series:
|
||||
VB-59 The Programmable
|
||||
VB-1100 Budget System
|
||||
VB-1200 Information Manager
|
||||
|
||||
Education Series:
|
||||
ED07 Musicianship 1
|
||||
ED08 Number Cross
|
||||
ED09 Historical Simulation - France in the Old Regime
|
||||
|
||||
Entertainment Series:
|
||||
EN07 Challenge Racer
|
||||
EN08 Music Programmer
|
||||
EN09 Programmable Football
|
||||
EN10 Computer Life
|
||||
Entertainment Series:
|
||||
- EN07 Challenge Racer
|
||||
- EN08 Music Programmer
|
||||
- EN09 Programmable Football
|
||||
- EN10 Computer Life
|
||||
|
||||
-->
|
||||
|
||||
<softwarelist name="vidbrain" description="VideoBrain Family Computer cartridges">
|
||||
|
||||
<!-- Communication Series -->
|
||||
<!-- Communications Series (orange) -->
|
||||
|
||||
<software name="timeshar" supported="no">
|
||||
<description>Timeshare</description>
|
||||
@ -40,13 +37,14 @@ license:CC0-1.0
|
||||
<part name="cart" interface="vidbrain_cart">
|
||||
<feature name="slot" value="timeshare" />
|
||||
<dataarea name="rom" size="0x800">
|
||||
<rom name="timeshare (1978)(videobrain computer company)(videobrain)(cart)[cm01].bin" size="0x800" crc="957d7246" sha1="cb8eb48f7bf895b87975f2386451286143087fff" offset="0" />
|
||||
<rom name="timeshare-cm01.bin" size="0x800" crc="957d7246" sha1="cb8eb48f7bf895b87975f2386451286143087fff" />
|
||||
</dataarea>
|
||||
<dataarea name="ram" size="0x800"/>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<!-- Education Series -->
|
||||
|
||||
<!-- Education Series (blue) -->
|
||||
|
||||
<software name="musictch">
|
||||
<description>Music Teacher 1</description>
|
||||
@ -55,7 +53,7 @@ license:CC0-1.0
|
||||
<info name="serial" value="ED01"/>
|
||||
<part name="cart" interface="vidbrain_cart">
|
||||
<dataarea name="rom" size="0x800">
|
||||
<rom name="musicteacher1-ed01.bin" size="0x800" crc="c8fee8cd" sha1="1a0a19ecedfb2d918e4e1a4eb604a07dc5e1113f" offset="0" />
|
||||
<rom name="musicteacher1-ed01.bin" size="0x800" crc="c8fee8cd" sha1="1a0a19ecedfb2d918e4e1a4eb604a07dc5e1113f" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
@ -67,7 +65,7 @@ license:CC0-1.0
|
||||
<info name="serial" value="ED02"/>
|
||||
<part name="cart" interface="vidbrain_cart">
|
||||
<dataarea name="rom" size="0x1000">
|
||||
<rom name="mathtutor1-ed02.bin" size="0x1000" crc="db47f770" sha1="efe9e5f7ee95e157af892b84de5653c0f85a13b0" offset="0" />
|
||||
<rom name="mathtutor1-ed02.bin" size="0x1000" crc="db47f770" sha1="efe9e5f7ee95e157af892b84de5653c0f85a13b0" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
@ -79,7 +77,7 @@ license:CC0-1.0
|
||||
<info name="serial" value="ED03"/>
|
||||
<part name="cart" interface="vidbrain_cart">
|
||||
<dataarea name="rom" size="0x800">
|
||||
<rom name="wordwise1-ed03.bin" size="0x800" crc="d1546212" sha1="91594485442e2dfad059e4ce42aa60b7a0519d91" offset="0" />
|
||||
<rom name="wordwise1-ed03.bin" size="0x800" crc="d1546212" sha1="91594485442e2dfad059e4ce42aa60b7a0519d91" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
@ -91,7 +89,7 @@ license:CC0-1.0
|
||||
<info name="serial" value="ED04"/>
|
||||
<part name="cart" interface="vidbrain_cart">
|
||||
<dataarea name="rom" size="0x800">
|
||||
<rom name="wordwise2-ed04.bin" size="0x800" crc="4a08e999" sha1="0b17ead29aea643da84d495ebab5220e547abf99" offset="0" />
|
||||
<rom name="wordwise2-ed04.bin" size="0x800" crc="4a08e999" sha1="0b17ead29aea643da84d495ebab5220e547abf99" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
@ -103,7 +101,7 @@ license:CC0-1.0
|
||||
<info name="serial" value="ED05"/>
|
||||
<part name="cart" interface="vidbrain_cart">
|
||||
<dataarea name="rom" size="0x800">
|
||||
<rom name="videoartist-ed05.bin" size="0x800" crc="d68795f8" sha1="dfb118d6bba837aa8e6b7feb19be7de40cd1e4fa" offset="0" />
|
||||
<rom name="videoartist-ed05.bin" size="0x800" crc="d68795f8" sha1="dfb118d6bba837aa8e6b7feb19be7de40cd1e4fa" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
@ -115,12 +113,13 @@ license:CC0-1.0
|
||||
<info name="serial" value="ED06"/>
|
||||
<part name="cart" interface="vidbrain_cart">
|
||||
<dataarea name="rom" size="0x1000">
|
||||
<rom name="lemonadestand-ed06.bin" size="0x1000" crc="27c08d93" sha1="faf47261797692e9081dc24f957f8f38dc1a975d" offset="0" />
|
||||
<rom name="lemonadestand-ed06.bin" size="0x1000" crc="27c08d93" sha1="faf47261797692e9081dc24f957f8f38dc1a975d" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<!-- Entertainment Series -->
|
||||
|
||||
<!-- Entertainment Series (red) -->
|
||||
|
||||
<software name="gladiatr">
|
||||
<description>Gladiator</description>
|
||||
@ -129,7 +128,7 @@ license:CC0-1.0
|
||||
<info name="serial" value="EN01"/>
|
||||
<part name="cart" interface="vidbrain_cart">
|
||||
<dataarea name="rom" size="0x1000">
|
||||
<rom name="gladiator-en01.bin" size="0x1000" crc="e6a88a49" sha1="ffdb06a714cc5bafa980db0742d0364ee5658c05" offset="0" />
|
||||
<rom name="gladiator-en01.bin" size="0x1000" crc="e6a88a49" sha1="ffdb06a714cc5bafa980db0742d0364ee5658c05" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
@ -141,7 +140,7 @@ license:CC0-1.0
|
||||
<info name="serial" value="EN02"/>
|
||||
<part name="cart" interface="vidbrain_cart">
|
||||
<dataarea name="rom" size="0x800">
|
||||
<rom name="pinball-en02.bin" size="0x800" crc="484331ff" sha1="0bd04368692a55bf89f8ec7ff1a29cff3a398b9f" offset="0" />
|
||||
<rom name="pinball-en02.bin" size="0x800" crc="484331ff" sha1="0bd04368692a55bf89f8ec7ff1a29cff3a398b9f" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
@ -153,7 +152,7 @@ license:CC0-1.0
|
||||
<info name="serial" value="EN03"/>
|
||||
<part name="cart" interface="vidbrain_cart">
|
||||
<dataarea name="rom" size="0x1000">
|
||||
<rom name="tennis-en03.bin" size="0x1000" crc="1942f852" sha1="74e8304d8ad0328655627e21c0305b72c11a5dda" offset="0" />
|
||||
<rom name="tennis-en03.bin" size="0x1000" crc="1942f852" sha1="74e8304d8ad0328655627e21c0305b72c11a5dda" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
@ -165,7 +164,7 @@ license:CC0-1.0
|
||||
<info name="serial" value="EN04"/>
|
||||
<part name="cart" interface="vidbrain_cart">
|
||||
<dataarea name="rom" size="0x1000">
|
||||
<rom name="checkers-en04.bin" size="0x1000" crc="24c53410" sha1="f12f448d1f62b56318cb94b8f802180d561e3ee5" offset="0" />
|
||||
<rom name="checkers-en04.bin" size="0x1000" crc="24c53410" sha1="f12f448d1f62b56318cb94b8f802180d561e3ee5" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
@ -177,7 +176,7 @@ license:CC0-1.0
|
||||
<info name="serial" value="EN05"/>
|
||||
<part name="cart" interface="vidbrain_cart">
|
||||
<dataarea name="rom" size="0x800">
|
||||
<rom name="blackjack-en05.bin" size="0x800" crc="47f02b92" sha1="23fd10c9674d304f2a0a4ae37e3afb6a25906b1c" offset="0" />
|
||||
<rom name="blackjack-en05.bin" size="0x800" crc="47f02b92" sha1="23fd10c9674d304f2a0a4ae37e3afb6a25906b1c" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
@ -189,12 +188,33 @@ license:CC0-1.0
|
||||
<info name="serial" value="EN06"/>
|
||||
<part name="cart" interface="vidbrain_cart">
|
||||
<dataarea name="rom" size="0x1000">
|
||||
<rom name="viceversa-en06.bin" size="0x1000" crc="e23504ee" sha1="c5b4b62c9e0db998c2c4df6f71713a1df35c8bf4" offset="0" />
|
||||
<rom name="viceversa-en06.bin" size="0x1000" crc="e23504ee" sha1="c5b4b62c9e0db998c2c4df6f71713a1df35c8bf4" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<!-- Money Management Series -->
|
||||
|
||||
<!-- Money Management Series (green) -->
|
||||
|
||||
<software name="complang" supported="no">
|
||||
<description>The Computational Language</description>
|
||||
<year>1978</year>
|
||||
<publisher>VideoBrain Computer Company</publisher>
|
||||
<info name="serial" value="APL/S"/>
|
||||
<part name="cart" interface="vidbrain_cart">
|
||||
<feature name="slot" value="complang" />
|
||||
<dataarea name="rom" size="0x3800">
|
||||
<rom name="apls_a.bin" offset="0x0000" size="0x800" crc="e0b883c8" sha1="30508b45d7120119e081a09433ee1eef4152b11a" />
|
||||
<rom name="apls_b.bin" offset="0x0800" size="0x800" crc="93c869d2" sha1="4c414d5b1df35dde1d816d502cb85f19977d3a71" />
|
||||
<rom name="apls_c.bin" offset="0x1000" size="0x800" crc="98fbf99c" sha1="9e45794f5b0f0b321ee7ee8fa7420816ab3ff52a" />
|
||||
<rom name="apls_d.bin" offset="0x1800" size="0x800" crc="31adadcc" sha1="deb38e30d09e3b8de93d3be4ae9a0f7aae718537" />
|
||||
<rom name="apls_e.bin" offset="0x2000" size="0x800" crc="47048589" sha1="43417af8a509f971f42616a0b9dbf9af3e977bb3" />
|
||||
<rom name="apls_f.bin" offset="0x2800" size="0x800" crc="b74e799e" sha1="67694da241fc336c01dfca9a81c0d334f343bb47" />
|
||||
<rom name="apls_g.bin" offset="0x3000" size="0x800" crc="6d5773fa" sha1="96401d934617bbf54af836c1efc0232e9718067b" />
|
||||
</dataarea>
|
||||
<dataarea name="ram" size="0x800"/>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="financie">
|
||||
<description>Financier</description>
|
||||
@ -203,12 +223,12 @@ license:CC0-1.0
|
||||
<info name="serial" value="VB-81"/>
|
||||
<part name="cart" interface="vidbrain_cart">
|
||||
<dataarea name="rom" size="0x1000">
|
||||
<rom name="financier (1978)(videobrain computer company)(videobrain)(cart)[vb-81].bin" size="0x1000" crc="721a4a14" sha1="d3b745106c736dcf44aeca533f22772aabff0a4f" offset="0" />
|
||||
<rom name="financier-vb81.bin" size="0x1000" crc="721a4a14" sha1="d3b745106c736dcf44aeca533f22772aabff0a4f" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="moneymin" supported="no">
|
||||
<software name="moneymin">
|
||||
<description>Money Minder</description>
|
||||
<year>1978</year>
|
||||
<publisher>VideoBrain Computer Company</publisher>
|
||||
@ -216,29 +236,30 @@ license:CC0-1.0
|
||||
<part name="cart" interface="vidbrain_cart">
|
||||
<feature name="slot" value="moneyminder" />
|
||||
<dataarea name="rom" size="0x1000">
|
||||
<rom name="moneymanager-vb1000.bin" size="0x1000" crc="4f588081" sha1="afb95754d4710b2989689c877b775706b2a7a43d" offset="0" />
|
||||
<rom name="moneymanager-vb1000.bin" size="0x1000" crc="4f588081" sha1="afb95754d4710b2989689c877b775706b2a7a43d" />
|
||||
</dataarea>
|
||||
<dataarea name="ram" size="0x800"/>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="infoman" supported="no">
|
||||
<description>Information Manager (Proto)</description>
|
||||
<description>Information Manager (prototype)</description>
|
||||
<year>1978</year>
|
||||
<publisher>VideoBrain Computer Company</publisher>
|
||||
<info name="serial" value="VB-1200"/>
|
||||
<part name="cart" interface="vidbrain_cart">
|
||||
<feature name="slot" value="infomanager" />
|
||||
<dataarea name="rom" size="0x1800">
|
||||
<rom name="vb1200a_1000-17ff_9_25_78.bin" size="0x800" crc="7fc58830" sha1="39c2821f73c86c3e368fe5429628672cfe594306" offset="0x0000" />
|
||||
<rom name="vb1200c_3000-37ff_9_25_78.bin" size="0x800" crc="e5d18447" sha1="d98b94ae1cce2ce6e6ae933180a7bf001b73932f" offset="0x0800" />
|
||||
<rom name="vb-1200_3800-3fff_9_26_78.bin" size="0x800" crc="df9d9437" sha1="3a38a889b552acaa1a284e2ca7447f142b494737" offset="0x1000" />
|
||||
<rom name="vb1200a_1000-17ff_9_25_78.bin" offset="0x0000" size="0x800" crc="7fc58830" sha1="39c2821f73c86c3e368fe5429628672cfe594306" />
|
||||
<rom name="vb1200c_3000-37ff_9_25_78.bin" offset="0x0800" size="0x800" crc="e5d18447" sha1="d98b94ae1cce2ce6e6ae933180a7bf001b73932f" />
|
||||
<rom name="vb-1200_3800-3fff_9_26_78.bin" offset="0x1000" size="0x800" crc="df9d9437" sha1="3a38a889b552acaa1a284e2ca7447f142b494737" />
|
||||
</dataarea>
|
||||
<dataarea name="ram" size="0x800"/>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<!-- Demonstration Series -->
|
||||
|
||||
<!-- Other (yellow) -->
|
||||
|
||||
<software name="demo">
|
||||
<description>Demonstration</description>
|
||||
@ -247,8 +268,9 @@ license:CC0-1.0
|
||||
<info name="serial" value="ST01"/>
|
||||
<part name="cart" interface="vidbrain_cart">
|
||||
<dataarea name="rom" size="0x1000">
|
||||
<rom name="demonstration (197x)(videobrain computer company)(videobrain)(cart)[st01].bin" size="0x1000" crc="a59eb765" sha1="ca8f8d2088477b901d5e7f04a1b6c6b71494eec3" offset="0" />
|
||||
<rom name="demonstration-st01.bin" size="0x1000" crc="a59eb765" sha1="ca8f8d2088477b901d5e7f04a1b6c6b71494eec3" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
</softwarelist>
|
||||
|
@ -37,7 +37,7 @@ device_videobrain_expansion_card_interface::device_videobrain_expansion_card_int
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// videobrain_roml_pointer - get low ROM pointer
|
||||
// videobrain_rom_pointer - get ROM pointer
|
||||
//-------------------------------------------------
|
||||
|
||||
uint8_t* device_videobrain_expansion_card_interface::videobrain_rom_pointer(running_machine &machine, size_t size)
|
||||
@ -45,7 +45,6 @@ uint8_t* device_videobrain_expansion_card_interface::videobrain_rom_pointer(runn
|
||||
if (m_rom.empty())
|
||||
{
|
||||
m_rom.resize(size);
|
||||
|
||||
m_rom_mask = size - 1;
|
||||
}
|
||||
|
||||
@ -62,7 +61,6 @@ uint8_t* device_videobrain_expansion_card_interface::videobrain_ram_pointer(runn
|
||||
if (m_ram.empty())
|
||||
{
|
||||
m_ram.resize(size);
|
||||
|
||||
m_ram_mask = size - 1;
|
||||
}
|
||||
|
||||
|
@ -89,8 +89,8 @@ class videobrain_expansion_slot_device : public device_t,
|
||||
public:
|
||||
// construction/destruction
|
||||
template <typename T>
|
||||
videobrain_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, T &&opts, char const* dflt)
|
||||
: videobrain_expansion_slot_device(mconfig, tag, owner, 0)
|
||||
videobrain_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, T &&opts, char const* dflt) :
|
||||
videobrain_expansion_slot_device(mconfig, tag, owner, 0)
|
||||
{
|
||||
option_reset();
|
||||
opts(*this);
|
||||
@ -109,8 +109,8 @@ public:
|
||||
void cs1_w(offs_t offset, uint8_t data) { bo_w(offset + 0x1000, data, 0, 1); }
|
||||
uint8_t cs2_r(offs_t offset) { return bo_r(offset + 0x1800, 1, 0); }
|
||||
void cs2_w(offs_t offset, uint8_t data) { bo_w(offset + 0x1800, data, 1, 0); }
|
||||
uint8_t unmap_r(offs_t offset) { return bo_r(offset + 0x3000, 1, 0); }
|
||||
void unmap_w(offs_t offset, uint8_t data) { bo_w(offset + 0x3000, data, 1, 0); }
|
||||
uint8_t unmap_r(offs_t offset) { return bo_r(offset + 0x3000, 1, 1); }
|
||||
void unmap_w(offs_t offset, uint8_t data) { bo_w(offset + 0x3000, data, 1, 1); }
|
||||
|
||||
// cartridge interface
|
||||
void extres_w(int state) { m_write_extres(state); }
|
||||
|
@ -51,11 +51,7 @@ uint8_t videobrain_standard_cartridge_device::videobrain_bo_r(offs_t offset, int
|
||||
{
|
||||
uint8_t data = 0;
|
||||
|
||||
if (!cs1)
|
||||
{
|
||||
data = m_rom[offset & m_rom_mask];
|
||||
}
|
||||
else if (!cs2)
|
||||
if (!cs1 || !cs2)
|
||||
{
|
||||
data = m_rom[offset & m_rom_mask];
|
||||
}
|
||||
|
@ -132,7 +132,6 @@ private:
|
||||
void txvram_w(offs_t offset, u8 data);
|
||||
void master_irq_ack_w(int state);
|
||||
void slave_irq_ack_w(int state);
|
||||
void vblank_irq_w(int state);
|
||||
TILE_GET_INFO_MEMBER(get_tx_tile_info);
|
||||
TILE_GET_INFO_MEMBER(get_bg_tile_info);
|
||||
TILE_GET_INFO_MEMBER(get_fg_tile_info);
|
||||
@ -501,15 +500,6 @@ void flower_state::slave_irq_ack_w(int state)
|
||||
m_slavecpu->set_input_line(0, CLEAR_LINE);
|
||||
}
|
||||
|
||||
void flower_state::vblank_irq_w(int state)
|
||||
{
|
||||
if (state)
|
||||
{
|
||||
m_mastercpu->set_input_line(0, ASSERT_LINE);
|
||||
m_slavecpu->set_input_line(0, ASSERT_LINE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void flower_state::flower(machine_config &config)
|
||||
{
|
||||
@ -537,7 +527,8 @@ void flower_state::flower(machine_config &config)
|
||||
m_screen->set_screen_update(FUNC(flower_state::screen_update));
|
||||
m_screen->set_raw(MASTER_CLOCK / 3, 384, 0, 288, 264, 16, 240); // derived from Galaxian HW, 60.606060
|
||||
m_screen->set_palette(m_palette);
|
||||
m_screen->screen_vblank().set(FUNC(flower_state::vblank_irq_w));
|
||||
m_screen->screen_vblank().set_inputline(m_mastercpu, 0, ASSERT_LINE);
|
||||
m_screen->screen_vblank().append_inputline(m_slavecpu, 0, ASSERT_LINE);
|
||||
|
||||
GFXDECODE(config, m_gfxdecode, m_palette, gfx_flower);
|
||||
PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 256);
|
||||
|
@ -464,7 +464,8 @@ uint8_t exidy_sound_device::sh6840_r(offs_t offset)
|
||||
|
||||
// offsets 2,4,6 read channel 0,1,2 MSBs and latch the LSB
|
||||
case 2: case 4: case 6:
|
||||
m_sh6840_LSB_latch = m_sh6840_timer[((offset>>1)-1)].counter.b.l;
|
||||
if (!machine().side_effects_disabled())
|
||||
m_sh6840_LSB_latch = m_sh6840_timer[((offset>>1)-1)].counter.b.l;
|
||||
return m_sh6840_timer[((offset>>1)-1)].counter.b.h;
|
||||
|
||||
// offsets 3,5,7 read the LSB latch
|
||||
|
@ -9,7 +9,7 @@
|
||||
#include "emu.h"
|
||||
#include "uv201.h"
|
||||
|
||||
#define VERBOSE (1)
|
||||
//#define VERBOSE (LOG_GENERAL)
|
||||
#include "logmacro.h"
|
||||
|
||||
//**************************************************************************
|
||||
@ -333,6 +333,7 @@ uint8_t uv201_device::read(offs_t offset)
|
||||
data = m_ram[offset];
|
||||
else
|
||||
LOG("Unknown VLSI read from %02x!\n", offset);
|
||||
break;
|
||||
}
|
||||
|
||||
return data;
|
||||
@ -437,6 +438,7 @@ void uv201_device::write(offs_t offset, uint8_t data)
|
||||
m_ram[offset] = data;
|
||||
else
|
||||
logerror("Unknown VLSI write %02x to %02x!\n", data, offset);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -17,8 +17,7 @@
|
||||
|
||||
/*
|
||||
|
||||
TODO:
|
||||
|
||||
TODO:
|
||||
- wait states (UV201: 2.9us, memory except RES1: 1.65us)
|
||||
- interlaced video?
|
||||
- pinball background colors
|
||||
@ -28,7 +27,6 @@
|
||||
- video interrupts
|
||||
- R-2R ladder DAC
|
||||
- reset on cartridge unload
|
||||
- use machine/f3853.h
|
||||
- joystick scan timer 555
|
||||
- expander 1 (F3870 CPU, cassette, RS-232)
|
||||
- expander 2 (modem)
|
||||
@ -59,13 +57,8 @@ Using the system:
|
||||
|
||||
#include "vidbrain.lh"
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// MACROS / CONSTANTS
|
||||
//**************************************************************************
|
||||
|
||||
#define LOG 1
|
||||
//#define VERBOSE (LOG_GENERAL)
|
||||
#include "logmacro.h"
|
||||
|
||||
|
||||
|
||||
@ -94,7 +87,7 @@ void vidbrain_state::keyboard_w(uint8_t data)
|
||||
|
||||
*/
|
||||
|
||||
if (LOG) logerror("Keyboard %02x\n", data);
|
||||
LOG("Keyboard %02x\n", data);
|
||||
|
||||
m_keylatch = data;
|
||||
}
|
||||
@ -155,7 +148,7 @@ void vidbrain_state::sound_w(uint8_t data)
|
||||
|
||||
*/
|
||||
|
||||
if (LOG) logerror("Sound %02x\n", data);
|
||||
LOG("Sound %02x\n", data);
|
||||
|
||||
// sound clock
|
||||
int sound_clk = BIT(data, 4);
|
||||
@ -168,7 +161,7 @@ void vidbrain_state::sound_w(uint8_t data)
|
||||
m_sound_clk = sound_clk;
|
||||
|
||||
// joystick enable
|
||||
m_joy_enable = BIT(data, 7);
|
||||
m_joy_enable = !BIT(data, 7);
|
||||
}
|
||||
|
||||
|
||||
@ -202,7 +195,7 @@ void vidbrain_state::vidbrain_io(address_map &map)
|
||||
{
|
||||
map(0x00, 0x00).w(FUNC(vidbrain_state::keyboard_w));
|
||||
map(0x01, 0x01).rw(FUNC(vidbrain_state::keyboard_r), FUNC(vidbrain_state::sound_w));
|
||||
map(0x0c, 0x0f).rw(F3853_TAG, FUNC(f3853_device::read), FUNC(f3853_device::write));
|
||||
map(0x0c, 0x0f).rw(m_smi, FUNC(f3853_device::read), FUNC(f3853_device::write));
|
||||
}
|
||||
|
||||
|
||||
@ -217,7 +210,7 @@ void vidbrain_state::vidbrain_io(address_map &map)
|
||||
|
||||
INPUT_CHANGED_MEMBER( vidbrain_state::trigger_reset )
|
||||
{
|
||||
m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? CLEAR_LINE : ASSERT_LINE);
|
||||
m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? ASSERT_LINE : CLEAR_LINE);
|
||||
}
|
||||
|
||||
|
||||
@ -320,28 +313,20 @@ INPUT_PORTS_END
|
||||
// DEVICE CONFIGURATION
|
||||
//**************************************************************************
|
||||
|
||||
void vidbrain_state::ext_int_w(int state)
|
||||
{
|
||||
if (state)
|
||||
{
|
||||
m_smi->ext_int_w(1);
|
||||
}
|
||||
}
|
||||
|
||||
void vidbrain_state::hblank_w(int state)
|
||||
{
|
||||
if (state && m_joy_enable)
|
||||
{
|
||||
uint8_t joydata = 0;
|
||||
|
||||
if (!BIT(m_keylatch, 0)) joydata = m_joy1_x->read();
|
||||
if (!BIT(m_keylatch, 1)) joydata = m_joy1_y->read();
|
||||
if (!BIT(m_keylatch, 2)) joydata = m_joy2_x->read();
|
||||
if (!BIT(m_keylatch, 3)) joydata = m_joy2_y->read();
|
||||
if (!BIT(m_keylatch, 4)) joydata = m_joy3_x->read();
|
||||
if (!BIT(m_keylatch, 5)) joydata = m_joy3_y->read();
|
||||
if (!BIT(m_keylatch, 6)) joydata = m_joy4_x->read();
|
||||
if (!BIT(m_keylatch, 7)) joydata = m_joy4_y->read();
|
||||
if (BIT(m_keylatch, 0)) joydata |= m_joy1_x->read();
|
||||
if (BIT(m_keylatch, 1)) joydata |= m_joy1_y->read();
|
||||
if (BIT(m_keylatch, 2)) joydata |= m_joy2_x->read();
|
||||
if (BIT(m_keylatch, 3)) joydata |= m_joy2_y->read();
|
||||
if (BIT(m_keylatch, 4)) joydata |= m_joy3_x->read();
|
||||
if (BIT(m_keylatch, 5)) joydata |= m_joy3_y->read();
|
||||
if (BIT(m_keylatch, 6)) joydata |= m_joy4_x->read();
|
||||
if (BIT(m_keylatch, 7)) joydata |= m_joy4_y->read();
|
||||
|
||||
// NE555 in monostable mode
|
||||
// R = 3K9 + 100K linear pot
|
||||
@ -372,7 +357,6 @@ uint8_t vidbrain_state::memory_read_byte(offs_t offset)
|
||||
TIMER_CALLBACK_MEMBER(vidbrain_state::joystick_tick)
|
||||
{
|
||||
m_uv->ext_int_w(0);
|
||||
m_smi->ext_int_w(0);
|
||||
}
|
||||
|
||||
|
||||
@ -411,7 +395,7 @@ void vidbrain_state::vidbrain(machine_config &config)
|
||||
F8(config, m_maincpu, XTAL(4'000'000)/2);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &vidbrain_state::vidbrain_mem);
|
||||
m_maincpu->set_addrmap(AS_IO, &vidbrain_state::vidbrain_io);
|
||||
m_maincpu->set_irq_acknowledge_callback(F3853_TAG, FUNC(f3853_device::int_acknowledge));
|
||||
m_maincpu->set_irq_acknowledge_callback(m_smi, FUNC(f3853_device::int_acknowledge));
|
||||
|
||||
// video hardware
|
||||
config.set_default_layout(layout_vidbrain);
|
||||
@ -421,13 +405,13 @@ void vidbrain_state::vidbrain(machine_config &config)
|
||||
screen.set_raw(3636363, 232, 18, 232, 262, 21, 262);
|
||||
UV201(config, m_uv, 3636363);
|
||||
m_uv->set_screen(SCREEN_TAG);
|
||||
m_uv->ext_int_wr_callback().set(FUNC(vidbrain_state::ext_int_w));
|
||||
m_uv->ext_int_wr_callback().set(m_smi, FUNC(f3853_device::ext_int_w));
|
||||
m_uv->hblank_wr_callback().set(FUNC(vidbrain_state::hblank_w));
|
||||
m_uv->db_rd_callback().set(FUNC(vidbrain_state::memory_read_byte));
|
||||
|
||||
// sound hardware
|
||||
SPEAKER(config, "speaker").front_center();
|
||||
DAC_2BIT_R2R(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.167); // 74ls74.u16 + 120k + 56k
|
||||
DAC_2BIT_R2R(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // 74ls74.u16 + 120k + 56k
|
||||
|
||||
// devices
|
||||
F3853(config, m_smi, XTAL(4'000'000)/2);
|
||||
@ -455,7 +439,7 @@ void vidbrain_state::vidbrain(machine_config &config)
|
||||
|
||||
ROM_START( vidbrain )
|
||||
ROM_REGION( 0x800, "res1", 0 )
|
||||
ROM_LOAD( "uvres 1n.d67", 0x000, 0x800, CRC(065fe7c2) SHA1(9776f9b18cd4d7142e58eff45ac5ee4bc1fa5a2a) )
|
||||
ROM_LOAD( "uvres_1n.d67", 0x000, 0x800, CRC(065fe7c2) SHA1(9776f9b18cd4d7142e58eff45ac5ee4bc1fa5a2a) )
|
||||
|
||||
ROM_REGION( 0x800, "res2", 0 )
|
||||
ROM_LOAD( "resn2.e5", 0x000, 0x800, CRC(1d85d7be) SHA1(26c5a25d1289dedf107fa43aa8dfc14692fd9ee6) )
|
||||
|
@ -59,7 +59,6 @@ private:
|
||||
uint8_t keyboard_r();
|
||||
void sound_w(uint8_t data);
|
||||
|
||||
void ext_int_w(int state);
|
||||
void hblank_w(int state);
|
||||
uint8_t memory_read_byte(offs_t offset);
|
||||
|
||||
@ -82,7 +81,7 @@ private:
|
||||
|
||||
// keyboard state
|
||||
uint8_t m_keylatch = 0;
|
||||
int m_joy_enable = 0;
|
||||
bool m_joy_enable = 0;
|
||||
|
||||
// sound state
|
||||
int m_sound_clk = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user