mirror of
https://github.com/holub/mame
synced 2025-06-06 12:53:46 +03:00
(MESS) visicom: Fixed colors and video. [Curt Coder]
(MESS) visicom.xml: Fixed cartridge data bit order. [Charles MacDonald, Marcel van Tongeren]
This commit is contained in:
parent
411919feff
commit
302dc32c63
@ -6,12 +6,12 @@ Toshiba Visicom games list
|
|||||||
ID Title Dumped
|
ID Title Dumped
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
CAS-110 Arithmetic Drill (Math Fun & Fun with Numbers) no
|
CAS-110 Arithmetic Drill (Math Fun & Fun with Numbers) no 算数ドリル
|
||||||
CAS-130 Sports Fan (Baseball & Sumo Wrestling) yes
|
CAS-130 Sports Fan (Baseball & Sumo Wrestling) yes スポーツファン
|
||||||
CAS-140 Gambler I (Blackjack) no
|
CAS-140 Gambler I (Blackjack) no ギャンブラーI
|
||||||
CAS-141 Gambler II (Slot Machine and Dice) no
|
CAS-141 Gambler II (Slot Machine and Dice) no ギャンブラーII
|
||||||
CAS-160 Space Command (Space War) no
|
CAS-160 Space Command (Space War) no スペースコマンド
|
||||||
CAS-190 Inspiration (Bagua and Biorhythm) no
|
CAS-190 Inspiration (Bagua and Biorhythm) no 霊感
|
||||||
-->
|
-->
|
||||||
<softwarelist name="visicom" description="Toshiba Visicom cartridges">
|
<softwarelist name="visicom" description="Toshiba Visicom cartridges">
|
||||||
|
|
||||||
@ -20,10 +20,11 @@ CAS-190 Inspiration (Bagua and Biorhythm) no
|
|||||||
<year>1978</year>
|
<year>1978</year>
|
||||||
<publisher>Toshiba</publisher>
|
<publisher>Toshiba</publisher>
|
||||||
<info name="serial" value="CAS-130" />
|
<info name="serial" value="CAS-130" />
|
||||||
|
<info name="alt_title" value="スポーツファン"/>
|
||||||
|
|
||||||
<part name="cart" interface="visicom_cart">
|
<part name="cart" interface="visicom_cart">
|
||||||
<dataarea name="rom" size="0x800">
|
<dataarea name="rom" size="0x800">
|
||||||
<rom name="cas130.rom" size="0x800" crc="be86b65c" sha1="fdbcdf6b69de0ced2dea7695a777ec255b5df109" offset="0" />
|
<rom name="cas130.rom" size="0x800" crc="9da5c845" sha1="438d9fc67de1ef408718b4737c0d0fd48844dacb" offset="0" />
|
||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
@ -44,7 +44,11 @@ cdp1861_device::cdp1861_device(const machine_config &mconfig, const char *tag, d
|
|||||||
device_video_interface(mconfig, *this),
|
device_video_interface(mconfig, *this),
|
||||||
m_write_irq(*this),
|
m_write_irq(*this),
|
||||||
m_write_dma_out(*this),
|
m_write_dma_out(*this),
|
||||||
m_write_efx(*this)
|
m_write_efx(*this),
|
||||||
|
m_disp(0),
|
||||||
|
m_dispon(0),
|
||||||
|
m_dispoff(0),
|
||||||
|
m_dmaout(CLEAR_LINE)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -165,7 +169,7 @@ void cdp1861_device::device_timer(emu_timer &timer, device_timer_id id, int para
|
|||||||
|
|
||||||
m_dma_timer->adjust(clocks_to_attotime(CDP1861_CYCLES_DMA_WAIT));
|
m_dma_timer->adjust(clocks_to_attotime(CDP1861_CYCLES_DMA_WAIT));
|
||||||
|
|
||||||
m_dmaout = 0;
|
m_dmaout = CLEAR_LINE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -179,7 +183,7 @@ void cdp1861_device::device_timer(emu_timer &timer, device_timer_id id, int para
|
|||||||
|
|
||||||
m_dma_timer->adjust(clocks_to_attotime(CDP1861_CYCLES_DMA_ACTIVE));
|
m_dma_timer->adjust(clocks_to_attotime(CDP1861_CYCLES_DMA_ACTIVE));
|
||||||
|
|
||||||
m_dmaout = 1;
|
m_dmaout = ASSERT_LINE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -102,6 +102,8 @@ public:
|
|||||||
|
|
||||||
UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
||||||
|
|
||||||
|
bitmap_rgb32 m_bitmap;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// device-level overrides
|
// device-level overrides
|
||||||
virtual void device_start();
|
virtual void device_start();
|
||||||
@ -120,8 +122,6 @@ private:
|
|||||||
devcb2_write_line m_write_dma_out;
|
devcb2_write_line m_write_dma_out;
|
||||||
devcb2_write_line m_write_efx;
|
devcb2_write_line m_write_efx;
|
||||||
|
|
||||||
bitmap_rgb32 m_bitmap; // bitmap
|
|
||||||
|
|
||||||
int m_disp; // display enabled
|
int m_disp; // display enabled
|
||||||
int m_dispon; // display on latch
|
int m_dispon; // display on latch
|
||||||
int m_dispoff; // display off latch
|
int m_dispoff; // display off latch
|
||||||
|
@ -177,8 +177,6 @@ Notes:
|
|||||||
|
|
||||||
TODO:
|
TODO:
|
||||||
|
|
||||||
- mpt02 clones' colors
|
|
||||||
- visicom colors
|
|
||||||
- NE555 discrete sound
|
- NE555 discrete sound
|
||||||
|
|
||||||
*/
|
*/
|
||||||
@ -299,8 +297,8 @@ ADDRESS_MAP_END
|
|||||||
static ADDRESS_MAP_START( visicom_map, AS_PROGRAM, 8, visicom_state )
|
static ADDRESS_MAP_START( visicom_map, AS_PROGRAM, 8, visicom_state )
|
||||||
AM_RANGE(0x0000, 0x0fff) AM_ROM
|
AM_RANGE(0x0000, 0x0fff) AM_ROM
|
||||||
AM_RANGE(0x1000, 0x10ff) AM_RAM
|
AM_RANGE(0x1000, 0x10ff) AM_RAM
|
||||||
AM_RANGE(0x1100, 0x11ff) AM_RAM AM_SHARE("color_ram")
|
AM_RANGE(0x1100, 0x11ff) AM_RAM AM_SHARE("color0_ram")
|
||||||
AM_RANGE(0x1300, 0x13ff) AM_RAM AM_SHARE("color_ram1")
|
AM_RANGE(0x1300, 0x13ff) AM_RAM AM_SHARE("color1_ram")
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
static ADDRESS_MAP_START( visicom_io_map, AS_IO, 8, visicom_state )
|
static ADDRESS_MAP_START( visicom_io_map, AS_IO, 8, visicom_state )
|
||||||
@ -364,12 +362,21 @@ INPUT_PORTS_END
|
|||||||
|
|
||||||
static const rgb_t VISICOM_PALETTE[] =
|
static const rgb_t VISICOM_PALETTE[] =
|
||||||
{
|
{
|
||||||
MAKE_RGB(0x00, 0x80, 0x00),
|
MAKE_RGB(0x00, 0x40, 0x00),
|
||||||
MAKE_RGB(0x00, 0x00, 0xff),
|
MAKE_RGB(0xaf, 0xdf, 0xe4),
|
||||||
MAKE_RGB(0x00, 0xff, 0x00),
|
MAKE_RGB(0xb9, 0xc4, 0x2f),
|
||||||
MAKE_RGB(0xff, 0x00, 0x00)
|
MAKE_RGB(0xef, 0x45, 0x4a)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
UINT32 visicom_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
|
||||||
|
{
|
||||||
|
m_vdc->screen_update(screen, bitmap, cliprect);
|
||||||
|
|
||||||
|
m_vdc->m_bitmap.fill(VISICOM_PALETTE[0], cliprect);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
READ_LINE_MEMBER( mpt02_state::rdata_r )
|
READ_LINE_MEMBER( mpt02_state::rdata_r )
|
||||||
{
|
{
|
||||||
return BIT(m_color, 0);
|
return BIT(m_color, 0);
|
||||||
@ -423,6 +430,40 @@ static COSMAC_INTERFACE( studio2_cosmac_intf )
|
|||||||
DEVCB_NULL
|
DEVCB_NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
WRITE8_MEMBER( visicom_state::dma_w )
|
||||||
|
{
|
||||||
|
int sx = m_screen->hpos() + 4;
|
||||||
|
int y = m_screen->vpos();
|
||||||
|
|
||||||
|
UINT8 addr = offset & 0xff;
|
||||||
|
UINT8 color0 = m_color0_ram[addr];
|
||||||
|
UINT8 color1 = m_color1_ram[addr];
|
||||||
|
|
||||||
|
for (int x = 0; x < 8; x++)
|
||||||
|
{
|
||||||
|
int color = (BIT(color1, 7) << 1) | BIT(color0, 7);
|
||||||
|
m_vdc->m_bitmap.pix32(y, sx + x) = VISICOM_PALETTE[color];
|
||||||
|
color0 <<= 1;
|
||||||
|
color1 <<= 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static COSMAC_INTERFACE( visicom_cosmac_intf )
|
||||||
|
{
|
||||||
|
DEVCB_LINE_VCC,
|
||||||
|
DEVCB_DRIVER_LINE_MEMBER(studio2_state, clear_r),
|
||||||
|
DEVCB_NULL,
|
||||||
|
DEVCB_NULL,
|
||||||
|
DEVCB_DRIVER_LINE_MEMBER(studio2_state, ef3_r),
|
||||||
|
DEVCB_DRIVER_LINE_MEMBER(studio2_state, ef4_r),
|
||||||
|
DEVCB_DRIVER_LINE_MEMBER(studio2_state, q_w),
|
||||||
|
DEVCB_NULL,
|
||||||
|
DEVCB_DRIVER_MEMBER(visicom_state, dma_w),
|
||||||
|
NULL,
|
||||||
|
DEVCB_NULL,
|
||||||
|
DEVCB_NULL
|
||||||
|
};
|
||||||
|
|
||||||
WRITE8_MEMBER( mpt02_state::dma_w )
|
WRITE8_MEMBER( mpt02_state::dma_w )
|
||||||
{
|
{
|
||||||
UINT8 addr = ((offset & 0xe0) >> 2) | (offset & 0x07);
|
UINT8 addr = ((offset & 0xe0) >> 2) | (offset & 0x07);
|
||||||
@ -511,7 +552,7 @@ DEVICE_IMAGE_LOAD_MEMBER( visicom_state, visicom_cart_load )
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
size_t size = image.get_software_region_length("rom");
|
size_t size = image.get_software_region_length("rom");
|
||||||
if (size) memcpy(ptr, image.get_software_region("rom_800"), MAX(size, 0x800));
|
if (size) memcpy(ptr, image.get_software_region("rom"), MAX(size, 0x800));
|
||||||
}
|
}
|
||||||
|
|
||||||
return IMAGE_INIT_PASS;
|
return IMAGE_INIT_PASS;
|
||||||
@ -554,11 +595,12 @@ static MACHINE_CONFIG_START( visicom, visicom_state )
|
|||||||
MCFG_CPU_ADD(CDP1802_TAG, CDP1802, XTAL_3_579545MHz/2)
|
MCFG_CPU_ADD(CDP1802_TAG, CDP1802, XTAL_3_579545MHz/2)
|
||||||
MCFG_CPU_PROGRAM_MAP(visicom_map)
|
MCFG_CPU_PROGRAM_MAP(visicom_map)
|
||||||
MCFG_CPU_IO_MAP(visicom_io_map)
|
MCFG_CPU_IO_MAP(visicom_io_map)
|
||||||
MCFG_CPU_CONFIG(studio2_cosmac_intf)
|
MCFG_CPU_CONFIG(visicom_cosmac_intf)
|
||||||
|
|
||||||
/* video hardware */
|
/* video hardware */
|
||||||
MCFG_CDP1861_SCREEN_ADD(CDP1861_TAG, SCREEN_TAG, XTAL_3_579545MHz/2)
|
MCFG_CDP1861_SCREEN_ADD(CDP1861_TAG, SCREEN_TAG, XTAL_3_579545MHz/2)
|
||||||
MCFG_CDP1861_ADD(CDP1861_TAG, SCREEN_TAG, XTAL_3_579545MHz/2/8, INPUTLINE(CDP1802_TAG, COSMAC_INPUT_LINE_INT), INPUTLINE(CDP1802_TAG, COSMAC_INPUT_LINE_DMAOUT), INPUTLINE(CDP1802_TAG, COSMAC_INPUT_LINE_EF1))
|
MCFG_SCREEN_UPDATE_DRIVER(visicom_state, screen_update)
|
||||||
|
MCFG_CDP1861_ADD(CDP1861_TAG, SCREEN_TAG, XTAL_3_579545MHz/2, INPUTLINE(CDP1802_TAG, COSMAC_INPUT_LINE_INT), INPUTLINE(CDP1802_TAG, COSMAC_INPUT_LINE_DMAOUT), INPUTLINE(CDP1802_TAG, COSMAC_INPUT_LINE_EF1))
|
||||||
|
|
||||||
/* sound hardware */
|
/* sound hardware */
|
||||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||||
@ -653,12 +695,12 @@ DRIVER_INIT_MEMBER(studio2_state,studio2)
|
|||||||
|
|
||||||
/* Game Drivers */
|
/* Game Drivers */
|
||||||
|
|
||||||
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
|
// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS
|
||||||
CONS( 1977, studio2, 0, 0, studio2, studio2, studio2_state, studio2, "RCA", "Studio II", GAME_SUPPORTS_SAVE )
|
CONS( 1977, studio2, 0, 0, studio2, studio2, studio2_state, studio2, "RCA", "Studio II", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
|
||||||
CONS( 1978, visicom, studio2,0, visicom, studio2, studio2_state, studio2, "Toshiba", "Visicom COM-100 (Japan)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
|
CONS( 1978, visicom, studio2,0, visicom, studio2, studio2_state, studio2, "Toshiba", "Visicom COM-100 (Japan)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
|
||||||
CONS( 1978, mpt02, studio2,0, mpt02, studio2, studio2_state, studio2, "Soundic", "Victory MPT-02 Home TV Programmer (Austria)", GAME_SUPPORTS_SAVE )
|
CONS( 1978, mpt02, studio2,0, mpt02, studio2, studio2_state, studio2, "Soundic", "Victory MPT-02 Home TV Programmer (Austria)", GAME_SUPPORTS_SAVE )
|
||||||
CONS( 1978, mpt02h, studio2,0, mpt02, studio2, studio2_state, studio2, "Hanimex", "MPT-02 Jeu TV Programmable (France)", GAME_SUPPORTS_SAVE)
|
CONS( 1978, mpt02h, studio2,0, mpt02, studio2, studio2_state, studio2, "Hanimex", "MPT-02 Jeu TV Programmable (France)", GAME_SUPPORTS_SAVE )
|
||||||
CONS( 1978, mtc9016, studio2,0, mpt02, studio2, studio2_state, studio2, "Mustang", "9016 Telespiel Computer (Germany)", GAME_SUPPORTS_SAVE )
|
CONS( 1978, mtc9016, studio2,0, mpt02, studio2, studio2_state, studio2, "Mustang", "9016 Telespiel Computer (Germany)", GAME_SUPPORTS_SAVE )
|
||||||
CONS( 1978, shmc1200, studio2,0, mpt02, studio2, studio2_state, studio2, "Sheen", "1200 Micro Computer (Australia)", GAME_SUPPORTS_SAVE )
|
CONS( 1978, shmc1200, studio2,0, mpt02, studio2, studio2_state, studio2, "Sheen", "1200 Micro Computer (Australia)", GAME_SUPPORTS_SAVE )
|
||||||
CONS( 1978, cm1200, studio2,0, mpt02, studio2, studio2_state, studio2, "Conic", "M-1200 (?)", GAME_SUPPORTS_SAVE )
|
CONS( 1978, cm1200, studio2,0, mpt02, studio2, studio2_state, studio2, "Conic", "M-1200 (?)", GAME_SUPPORTS_SAVE )
|
||||||
CONS( 1978, apollo80, studio2,0, mpt02, studio2, studio2_state, studio2, "Academy", "Apollo 80 (Germany)", GAME_SUPPORTS_SAVE )
|
CONS( 1978, apollo80, studio2,0, mpt02, studio2, studio2_state, studio2, "Academy", "Apollo 80 (Germany)", GAME_SUPPORTS_SAVE )
|
||||||
|
@ -69,13 +69,17 @@ class visicom_state : public studio2_state
|
|||||||
public:
|
public:
|
||||||
visicom_state(const machine_config &mconfig, device_type type, const char *tag)
|
visicom_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||||
: studio2_state(mconfig, type, tag),
|
: studio2_state(mconfig, type, tag),
|
||||||
m_color_ram(*this, "color_ram"),
|
m_color0_ram(*this, "color0_ram"),
|
||||||
m_color_ram1(*this, "color_ram1")
|
m_color1_ram(*this, "color1_ram")
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
required_shared_ptr<UINT8> m_color_ram;
|
virtual UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
||||||
required_shared_ptr<UINT8> m_color_ram1;
|
|
||||||
|
|
||||||
|
required_shared_ptr<UINT8> m_color0_ram;
|
||||||
|
required_shared_ptr<UINT8> m_color1_ram;
|
||||||
|
|
||||||
|
DECLARE_WRITE8_MEMBER( dma_w );
|
||||||
|
|
||||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER( visicom_cart_load );
|
DECLARE_DEVICE_IMAGE_LOAD_MEMBER( visicom_cart_load );
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user