diff --git a/hash/vidbrain.xml b/hash/vidbrain.xml index d318db3e5ec..b09a3d502a7 100644 --- a/hash/vidbrain.xml +++ b/hash/vidbrain.xml @@ -37,9 +37,9 @@ Entertainment Series: - + - + @@ -196,23 +196,23 @@ Entertainment Series: - + The Computational Language 1978 VideoBrain Computer Company - - - - - - - - - + + + + + + + + + - + @@ -229,16 +229,16 @@ Entertainment Series: - Money Minder + Money Minder 1978 VideoBrain Computer Company - + - + - + @@ -248,13 +248,13 @@ Entertainment Series: VideoBrain Computer Company - - - - - + + + + + - + diff --git a/scripts/src/bus.lua b/scripts/src/bus.lua index da275298754..73fa27a7f6a 100644 --- a/scripts/src/bus.lua +++ b/scripts/src/bus.lua @@ -2588,6 +2588,10 @@ if (BUSES["VIDBRAIN"]~=null) then MAME_DIR .. "src/devices/bus/vidbrain/exp.h", MAME_DIR .. "src/devices/bus/vidbrain/std.cpp", MAME_DIR .. "src/devices/bus/vidbrain/std.h", + MAME_DIR .. "src/devices/bus/vidbrain/comp_language.cpp", + MAME_DIR .. "src/devices/bus/vidbrain/comp_language.h", + MAME_DIR .. "src/devices/bus/vidbrain/info_manager.cpp", + MAME_DIR .. "src/devices/bus/vidbrain/info_manager.h", MAME_DIR .. "src/devices/bus/vidbrain/money_minder.cpp", MAME_DIR .. "src/devices/bus/vidbrain/money_minder.h", MAME_DIR .. "src/devices/bus/vidbrain/timeshare.cpp", diff --git a/src/devices/bus/vidbrain/comp_language.cpp b/src/devices/bus/vidbrain/comp_language.cpp new file mode 100644 index 00000000000..10e7728c715 --- /dev/null +++ b/src/devices/bus/vidbrain/comp_language.cpp @@ -0,0 +1,101 @@ +// license:BSD-3-Clause +// copyright-holders:hap +// thanks-to:Sean Riddle +/********************************************************************** + + VideoBrain The Computational Language cartridge emulation + 14KB PROM (7*Intel B2616), 1KB RAM (2*Intel P2114L) + +**********************************************************************/ + +#include "emu.h" +#include "comp_language.h" + + + +//************************************************************************** +// DEVICE DEFINITIONS +//************************************************************************** + +DEFINE_DEVICE_TYPE(VB_COMP_LANGUAGE, videobrain_comp_language_cartridge_device, "vb_comp_language", "VideoBrain The Computational Language cartridge") + + + +//************************************************************************** +// LIVE DEVICE +//************************************************************************** + +//------------------------------------------------- +// videobrain_comp_language_cartridge_device - constructor +//------------------------------------------------- + +videobrain_comp_language_cartridge_device::videobrain_comp_language_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : + device_t(mconfig, VB_COMP_LANGUAGE, tag, owner, clock), + device_videobrain_expansion_card_interface(mconfig, *this) +{ +} + + +//------------------------------------------------- +// device_start - device-specific startup +//------------------------------------------------- + +void videobrain_comp_language_cartridge_device::device_start() +{ + m_bank = 0; + save_item(NAME(m_bank)); +} + + +//------------------------------------------------- +// videobrain_bo_r - cartridge data read +//------------------------------------------------- + +uint8_t videobrain_comp_language_cartridge_device::videobrain_bo_r(offs_t offset, int cs1, int cs2) +{ + uint8_t data = 0; + + if (!cs1 || !cs2) + { + // fixed ROM A/B and RAM + if (offset >= 0x1c00) + data = m_ram[offset & m_ram_mask]; + else + data = m_rom[offset & 0xfff & m_rom_mask]; + } + else if (offset >= 0x3000) + { + // banked ROM + const int lut_roms[8] = { 2, 3, 4, 6, 4, 5 }; // C/D, E/G, E/F + const int bank = lut_roms[(m_bank << 1 | BIT(offset, 11)) % 6]; + data = m_rom[((bank * 0x800) | (offset & 0x7ff)) & m_rom_mask]; + } + + return data; +} + + +//------------------------------------------------- +// videobrain_bo_w - cartridge data write +//------------------------------------------------- + +void videobrain_comp_language_cartridge_device::videobrain_bo_w(offs_t offset, uint8_t data, int cs1, int cs2) +{ + if (!cs1) + { + // bus conflict issue + const int lut_bank[4][4] = + { + // 1000 1001 100A 100F + { 0, 1, 2, 0 }, // 00 + { 2, 1, 2, 1 }, // 55 + { 0, 2, 2, 0 }, // AA + { 2, 2, 2, 2 } // FF + }; + m_bank = lut_bank[data & 3][offset & 3]; + } + else if (!cs2 && offset >= 0x1c00) + { + m_ram[offset & m_ram_mask] = data; + } +} diff --git a/src/devices/bus/vidbrain/comp_language.h b/src/devices/bus/vidbrain/comp_language.h new file mode 100644 index 00000000000..146e2238efa --- /dev/null +++ b/src/devices/bus/vidbrain/comp_language.h @@ -0,0 +1,46 @@ +// license:BSD-3-Clause +// copyright-holders:hap +/********************************************************************** + + VideoBrain The Computational Language cartridge emulation + +**********************************************************************/ + +#ifndef MAME_BUS_VIDBRAIN_COMP_LANGUAGE_H +#define MAME_BUS_VIDBRAIN_COMP_LANGUAGE_H + +#pragma once + +#include "exp.h" + + + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +// ======================> videobrain_comp_language_cartridge_device + +class videobrain_comp_language_cartridge_device : public device_t, public device_videobrain_expansion_card_interface +{ +public: + // construction/destruction + videobrain_comp_language_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + +protected: + // device-level overrides + virtual void device_start() override; + + // device_videobrain_expansion_card_interface overrides + virtual uint8_t videobrain_bo_r(offs_t offset, int cs1, int cs2) override; + virtual void videobrain_bo_w(offs_t offset, uint8_t data, int cs1, int cs2) override; + +private: + uint8_t m_bank; +}; + + +// device type definition +DECLARE_DEVICE_TYPE(VB_COMP_LANGUAGE, videobrain_comp_language_cartridge_device) + +#endif // MAME_BUS_VIDBRAIN_COMP_LANGUAGE_H diff --git a/src/devices/bus/vidbrain/exp.cpp b/src/devices/bus/vidbrain/exp.cpp index c04ebb6828a..4423ae3a385 100644 --- a/src/devices/bus/vidbrain/exp.cpp +++ b/src/devices/bus/vidbrain/exp.cpp @@ -142,12 +142,16 @@ std::string videobrain_expansion_slot_device::get_default_card_software(get_defa // slot devices #include "std.h" +#include "comp_language.h" +#include "info_manager.h" #include "money_minder.h" #include "timeshare.h" void vidbrain_expansion_cards(device_slot_interface &device) { device.option_add_internal("standard", VB_STD); - device.option_add_internal("moneyminder", VB_MONEY_MINDER); + device.option_add_internal("comp_language", VB_COMP_LANGUAGE); + device.option_add_internal("info_manager", VB_INFO_MANAGER); + device.option_add_internal("money_minder", VB_MONEY_MINDER); device.option_add_internal("timeshare", VB_TIMESHARE); } diff --git a/src/devices/bus/vidbrain/exp.h b/src/devices/bus/vidbrain/exp.h index e07a439a1f2..f4c75d1e169 100644 --- a/src/devices/bus/vidbrain/exp.h +++ b/src/devices/bus/vidbrain/exp.h @@ -129,7 +129,7 @@ protected: // device_slot_interface implementation virtual std::string get_default_card_software(get_default_card_software_hook &hook) const override; - devcb_write_line m_write_extres; + devcb_write_line m_write_extres; device_videobrain_expansion_card_interface *m_cart; }; diff --git a/src/devices/bus/vidbrain/info_manager.cpp b/src/devices/bus/vidbrain/info_manager.cpp new file mode 100644 index 00000000000..506fe28bb32 --- /dev/null +++ b/src/devices/bus/vidbrain/info_manager.cpp @@ -0,0 +1,77 @@ +// license:BSD-3-Clause +// copyright-holders:hap +/********************************************************************** + + VideoBrain Info Manager cartridge emulation + 6KB EPROM (3*B2716), 1KB RAM (2*2114) + + It has the same PCB layout as comp_language, with wire mods to put + the ROM/RAM at fixed addresses. There's a big orange label saying + "TEST UNIT NO. 14", and a handwritten one with "INFO. MGR SPECIAL". + +**********************************************************************/ + +#include "emu.h" +#include "info_manager.h" + + + +//************************************************************************** +// DEVICE DEFINITIONS +//************************************************************************** + +DEFINE_DEVICE_TYPE(VB_INFO_MANAGER, videobrain_info_manager_cartridge_device, "vb_info_manager", "VideoBrain Info Manager cartridge") + + + +//************************************************************************** +// LIVE DEVICE +//************************************************************************** + +//------------------------------------------------- +// videobrain_info_manager_cartridge_device - constructor +//------------------------------------------------- + +videobrain_info_manager_cartridge_device::videobrain_info_manager_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : + device_t(mconfig, VB_INFO_MANAGER, tag, owner, clock), + device_videobrain_expansion_card_interface(mconfig, *this) +{ +} + + +//------------------------------------------------- +// videobrain_bo_r - cartridge data read +//------------------------------------------------- + +uint8_t videobrain_info_manager_cartridge_device::videobrain_bo_r(offs_t offset, int cs1, int cs2) +{ + uint8_t data = 0; + + if (!cs1) + { + data = m_rom[offset & 0x7ff & m_rom_mask]; + } + else if (!cs2) + { + data = m_ram[offset & m_ram_mask]; + } + else if (offset >= 0x3000) + { + data = m_rom[offset & m_rom_mask]; + } + + return data; +} + + +//------------------------------------------------- +// videobrain_bo_w - cartridge data write +//------------------------------------------------- + +void videobrain_info_manager_cartridge_device::videobrain_bo_w(offs_t offset, uint8_t data, int cs1, int cs2) +{ + if (!cs2) + { + m_ram[offset & m_ram_mask] = data; + } +} diff --git a/src/devices/bus/vidbrain/info_manager.h b/src/devices/bus/vidbrain/info_manager.h new file mode 100644 index 00000000000..b47103ce242 --- /dev/null +++ b/src/devices/bus/vidbrain/info_manager.h @@ -0,0 +1,43 @@ +// license:BSD-3-Clause +// copyright-holders:hap +/********************************************************************** + + VideoBrain Info Manager cartridge emulation + +**********************************************************************/ + +#ifndef MAME_BUS_VIDBRAIN_INFO_MANAGER_H +#define MAME_BUS_VIDBRAIN_INFO_MANAGER_H + +#pragma once + +#include "exp.h" + + + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +// ======================> videobrain_info_manager_cartridge_device + +class videobrain_info_manager_cartridge_device : public device_t, public device_videobrain_expansion_card_interface +{ +public: + // construction/destruction + videobrain_info_manager_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + +protected: + // device-level overrides + virtual void device_start() override { } + + // device_videobrain_expansion_card_interface overrides + virtual uint8_t videobrain_bo_r(offs_t offset, int cs1, int cs2) override; + virtual void videobrain_bo_w(offs_t offset, uint8_t data, int cs1, int cs2) override; +}; + + +// device type definition +DECLARE_DEVICE_TYPE(VB_INFO_MANAGER, videobrain_info_manager_cartridge_device) + +#endif // MAME_BUS_VIDBRAIN_INFO_MANAGER_H diff --git a/src/devices/bus/vidbrain/money_minder.cpp b/src/devices/bus/vidbrain/money_minder.cpp index b0f4826ca5d..305973a5d29 100644 --- a/src/devices/bus/vidbrain/money_minder.cpp +++ b/src/devices/bus/vidbrain/money_minder.cpp @@ -3,6 +3,7 @@ /********************************************************************** VideoBrain Money Minder cartridge emulation + 4KB ROM (Rockwell R2332C), 1KB RAM (2*Synertek 2114) **********************************************************************/ @@ -35,16 +36,7 @@ videobrain_money_minder_cartridge_device::videobrain_money_minder_cartridge_devi //------------------------------------------------- -// device_start - device-specific startup -//------------------------------------------------- - -void videobrain_money_minder_cartridge_device::device_start() -{ -} - - -//------------------------------------------------- -// videobrain_cd_r - cartridge data read +// videobrain_bo_r - cartridge data read //------------------------------------------------- uint8_t videobrain_money_minder_cartridge_device::videobrain_bo_r(offs_t offset, int cs1, int cs2) diff --git a/src/devices/bus/vidbrain/money_minder.h b/src/devices/bus/vidbrain/money_minder.h index 23f219c4962..dcecdb83853 100644 --- a/src/devices/bus/vidbrain/money_minder.h +++ b/src/devices/bus/vidbrain/money_minder.h @@ -21,8 +21,7 @@ // ======================> videobrain_money_minder_cartridge_device -class videobrain_money_minder_cartridge_device : public device_t, - public device_videobrain_expansion_card_interface +class videobrain_money_minder_cartridge_device : public device_t, public device_videobrain_expansion_card_interface { public: // construction/destruction @@ -30,7 +29,7 @@ public: protected: // device-level overrides - virtual void device_start() override; + virtual void device_start() override { } // device_videobrain_expansion_card_interface overrides virtual uint8_t videobrain_bo_r(offs_t offset, int cs1, int cs2) override; diff --git a/src/devices/bus/vidbrain/std.cpp b/src/devices/bus/vidbrain/std.cpp index f1e820eefaa..cb48b513e7d 100644 --- a/src/devices/bus/vidbrain/std.cpp +++ b/src/devices/bus/vidbrain/std.cpp @@ -34,15 +34,6 @@ videobrain_standard_cartridge_device::videobrain_standard_cartridge_device(const } -//------------------------------------------------- -// device_start - device-specific startup -//------------------------------------------------- - -void videobrain_standard_cartridge_device::device_start() -{ -} - - //------------------------------------------------- // videobrain_bo_r - cartridge data read //------------------------------------------------- diff --git a/src/devices/bus/vidbrain/std.h b/src/devices/bus/vidbrain/std.h index 7939501909f..d4a805fb591 100644 --- a/src/devices/bus/vidbrain/std.h +++ b/src/devices/bus/vidbrain/std.h @@ -21,8 +21,7 @@ // ======================> videobrain_standard_cartridge_device -class videobrain_standard_cartridge_device : public device_t, - public device_videobrain_expansion_card_interface +class videobrain_standard_cartridge_device : public device_t, public device_videobrain_expansion_card_interface { public: // construction/destruction @@ -30,7 +29,7 @@ public: protected: // device-level overrides - virtual void device_start() override; + virtual void device_start() override { } // device_videobrain_expansion_card_interface overrides virtual uint8_t videobrain_bo_r(offs_t offset, int cs1, int cs2) override; diff --git a/src/devices/bus/vidbrain/timeshare.cpp b/src/devices/bus/vidbrain/timeshare.cpp index 709f16f5c74..614b66749a0 100644 --- a/src/devices/bus/vidbrain/timeshare.cpp +++ b/src/devices/bus/vidbrain/timeshare.cpp @@ -3,6 +3,7 @@ /********************************************************************** VideoBrain Timeshare cartridge emulation + 2KB mask ROM (AMI), 1KB RAM (2*NatSemi MM2114N) **********************************************************************/ @@ -34,15 +35,6 @@ videobrain_timeshare_cartridge_device::videobrain_timeshare_cartridge_device(con } -//------------------------------------------------- -// device_start - device-specific startup -//------------------------------------------------- - -void videobrain_timeshare_cartridge_device::device_start() -{ -} - - //------------------------------------------------- // videobrain_bo_r - cartridge data read //------------------------------------------------- diff --git a/src/devices/bus/vidbrain/timeshare.h b/src/devices/bus/vidbrain/timeshare.h index 7885772149d..3dccdf189e1 100644 --- a/src/devices/bus/vidbrain/timeshare.h +++ b/src/devices/bus/vidbrain/timeshare.h @@ -21,8 +21,7 @@ // ======================> videobrain_timeshare_cartridge_device -class videobrain_timeshare_cartridge_device : public device_t, - public device_videobrain_expansion_card_interface +class videobrain_timeshare_cartridge_device : public device_t, public device_videobrain_expansion_card_interface { public: // construction/destruction @@ -30,7 +29,7 @@ public: protected: // device-level overrides - virtual void device_start() override; + virtual void device_start() override { } // device_videobrain_expansion_card_interface overrides virtual uint8_t videobrain_bo_r(offs_t offset, int cs1, int cs2) override; diff --git a/src/mame/vidbrain/vidbrain.h b/src/mame/vidbrain/vidbrain.h index 0fffbe9402e..17609329f24 100644 --- a/src/mame/vidbrain/vidbrain.h +++ b/src/mame/vidbrain/vidbrain.h @@ -81,7 +81,7 @@ private: // keyboard state uint8_t m_keylatch = 0; - bool m_joy_enable = 0; + bool m_joy_enable = false; // sound state int m_sound_clk = 0; diff --git a/src/mame/zaccaria/seabattl.cpp b/src/mame/zaccaria/seabattl.cpp index a5d435a1f1a..7db141e22f4 100644 --- a/src/mame/zaccaria/seabattl.cpp +++ b/src/mame/zaccaria/seabattl.cpp @@ -538,27 +538,27 @@ void seabattl_state::armada(machine_config &config) ROM_START( seabattl ) ROM_REGION( 0x8000, "maincpu", 0 ) - ROM_LOAD( "sea b b_1 1.prg", 0x0000, 0x0400, CRC(16a475c0) SHA1(5380d3be39c421227e52012d1bcf0516e99f6a3f) ) - ROM_CONTINUE( 0x2000, 0x0400 ) - ROM_LOAD( "sea b b_1 2.prg", 0x0400, 0x0400, CRC(4bd73a82) SHA1(9ab4edf24fcd437ecd8e9e551ce0ed33be3bbad7) ) - ROM_CONTINUE( 0x2400, 0x0400 ) - ROM_LOAD( "sea b b_1 3.prg", 0x0800, 0x0400, CRC(e251492b) SHA1(a152f9b6f189909ff478b4d95ee764f1898405b5) ) - ROM_CONTINUE( 0x2800, 0x0400 ) - ROM_LOAD( "sea b b_1 4.prg", 0x0c00, 0x0400, CRC(6012b83f) SHA1(57de9e45253609b71f14fb3541760fd33647a651) ) - ROM_CONTINUE( 0x2c00, 0x0400 ) - ROM_LOAD( "sea b b_1 5.prg", 0x1000, 0x0400, CRC(55c263f6) SHA1(33eba61cb8c9318cf19b771c93a14397b4ee0ace) ) - ROM_CONTINUE( 0x3000, 0x0400 ) + ROM_LOAD( "sea_b_b_1_1.2b", 0x0000, 0x0400, CRC(16a475c0) SHA1(5380d3be39c421227e52012d1bcf0516e99f6a3f) ) + ROM_CONTINUE( 0x2000, 0x0400 ) + ROM_LOAD( "sea_b_b_1_2.2c", 0x0400, 0x0400, CRC(4bd73a82) SHA1(9ab4edf24fcd437ecd8e9e551ce0ed33be3bbad7) ) + ROM_CONTINUE( 0x2400, 0x0400 ) + ROM_LOAD( "sea_b_b_1_3.2d", 0x0800, 0x0400, CRC(e251492b) SHA1(a152f9b6f189909ff478b4d95ee764f1898405b5) ) + ROM_CONTINUE( 0x2800, 0x0400 ) + ROM_LOAD( "sea_b_b_1_4.4b", 0x0c00, 0x0400, CRC(6012b83f) SHA1(57de9e45253609b71f14fb3541760fd33647a651) ) + ROM_CONTINUE( 0x2c00, 0x0400 ) + ROM_LOAD( "sea_b_b_1_5.4c", 0x1000, 0x0400, CRC(55c263f6) SHA1(33eba61cb8c9318cf19b771c93a14397b4ee0ace) ) + ROM_CONTINUE( 0x3000, 0x0400 ) ROM_REGION( 0x1800, "gfx1", 0 ) - ROM_LOAD( "sea b red.prg", 0x0000, 0x0800, CRC(fe7192df) SHA1(0b262bc1ac959d8dd79d71780e16237075f4a099) ) - ROM_LOAD( "sea b green.prg", 0x0800, 0x0800, CRC(cea4c0c9) SHA1(697c136ef363676b346692740d3c3a482dde6207) ) - ROM_LOAD( "sea b blu.prg", 0x1000, 0x0800, CRC(cd972c4a) SHA1(fcb8149bc462912c8393431ccb792ea4b1b1109d) ) + ROM_LOAD( "sea_b_red.8d", 0x0000, 0x0800, CRC(fe7192df) SHA1(0b262bc1ac959d8dd79d71780e16237075f4a099) ) + ROM_LOAD( "sea_b_green.8c", 0x0800, 0x0800, CRC(cea4c0c9) SHA1(697c136ef363676b346692740d3c3a482dde6207) ) + ROM_LOAD( "sea_b_blu.8a", 0x1000, 0x0800, CRC(cd972c4a) SHA1(fcb8149bc462912c8393431ccb792ea4b1b1109d) ) ROM_REGION( 0x0800, "gfx2", 0 ) - ROM_LOAD( "sea b screen.prg", 0x0000, 0x0800, CRC(8e4391dd) SHA1(f5698d66e5a3c46082b515ce86f9d3e96fd9ff77) ) + ROM_LOAD( "sea_b_screen.7f", 0x0000, 0x0800, CRC(8e4391dd) SHA1(f5698d66e5a3c46082b515ce86f9d3e96fd9ff77) ) ROM_REGION( 0x0800, "gfx3", 0 ) - ROM_LOAD( "sea b wawe.prg", 0x0000, 0x0800, CRC(7e356dc5) SHA1(71d34fa39ff0b7d0fa6d32ba2b9dc0006a03d1bb) ) + ROM_LOAD( "sea_b_wawe.10k", 0x0000, 0x0800, CRC(7e356dc5) SHA1(71d34fa39ff0b7d0fa6d32ba2b9dc0006a03d1bb) ) // sic ROM_END /* @@ -567,7 +567,7 @@ Zaccaria Armada Serial No.: V143107 -Main PCB looks like it's a revised Sea Scare main PCB (I.G.R. LC26 C) +Main PCB looks like it's a revised Sea Battle main PCB (I.G.R. LC26 C) - 2650 CPU - 2636 PVI - DIP switch block (8) (at IC11) @@ -614,8 +614,8 @@ ROM_START( armada ) ROM_LOAD( "sound-3.ic14", 0x2000, 0x1000, CRC(6409f99b) SHA1(e8d7f457e9a315d7f89b817c2b7cda1f2f3e5877) ) ROM_REGION( 0x2000, "speech", 0 ) - ROM_LOAD( "speach-1.ic25", 0x0000, 0x1000, CRC(b72a8559) SHA1(08c60b950c2ed345840a65b427b19788c66d1e27) ) - ROM_LOAD( "speach-2.ic24", 0x1000, 0x1000, CRC(93133519) SHA1(12848b80eb313df9cd552122fdee9d335b32972f) ) + ROM_LOAD( "speach-1.ic25", 0x0000, 0x1000, CRC(b72a8559) SHA1(08c60b950c2ed345840a65b427b19788c66d1e27) ) // sic + ROM_LOAD( "speach-2.ic24", 0x1000, 0x1000, CRC(93133519) SHA1(12848b80eb313df9cd552122fdee9d335b32972f) ) // " ROM_END } // anonymous namespace