mirror of
https://github.com/holub/mame
synced 2025-04-16 21:44:32 +03:00
-Filled out most of the Slovak translation. [Milan Galcik]
-Cleaned up various bits and pieces. [Vas Crabb]
This commit is contained in:
parent
e8fbcd5000
commit
c2a18887b0
File diff suppressed because it is too large
Load Diff
@ -2586,8 +2586,6 @@ files {
|
|||||||
MAME_DIR .. "src/mame/drivers/nwk-tr.cpp",
|
MAME_DIR .. "src/mame/drivers/nwk-tr.cpp",
|
||||||
MAME_DIR .. "src/mame/drivers/otomedius.cpp",
|
MAME_DIR .. "src/mame/drivers/otomedius.cpp",
|
||||||
MAME_DIR .. "src/mame/drivers/overdriv.cpp",
|
MAME_DIR .. "src/mame/drivers/overdriv.cpp",
|
||||||
MAME_DIR .. "src/mame/includes/overdriv.h",
|
|
||||||
MAME_DIR .. "src/mame/video/overdriv.cpp",
|
|
||||||
MAME_DIR .. "src/mame/drivers/pandoras.cpp",
|
MAME_DIR .. "src/mame/drivers/pandoras.cpp",
|
||||||
MAME_DIR .. "src/mame/includes/pandoras.h",
|
MAME_DIR .. "src/mame/includes/pandoras.h",
|
||||||
MAME_DIR .. "src/mame/video/pandoras.cpp",
|
MAME_DIR .. "src/mame/video/pandoras.cpp",
|
||||||
|
@ -148,13 +148,13 @@ void albazc_state::out_2_w(uint8_t data)
|
|||||||
|
|
||||||
void albazc_state::vregs_w(offs_t offset, uint8_t data)
|
void albazc_state::vregs_w(offs_t offset, uint8_t data)
|
||||||
{
|
{
|
||||||
#ifdef UNUSED_FUNCTION
|
#if 0
|
||||||
{
|
{
|
||||||
static uint8_t x[5];
|
static uint8_t x[5];
|
||||||
x[offset] = data;
|
x[offset] = data;
|
||||||
popmessage("%02x %02x %02x %02x %02x",x[0],x[1],x[2],x[3],x[4]);
|
popmessage("%02x %02x %02x %02x %02x",x[0],x[1],x[2],x[3],x[4]);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (offset == 0)
|
if (offset == 0)
|
||||||
flip_screen_set((data & 0x40) >> 6);
|
flip_screen_set((data & 0x40) >> 6);
|
||||||
|
@ -985,11 +985,11 @@ INPUT_PORTS_END
|
|||||||
#if 0
|
#if 0
|
||||||
void nc_state::nc150_init_machine()
|
void nc_state::nc150_init_machine()
|
||||||
{
|
{
|
||||||
m_membank_internal_ram_mask = 7;
|
m_membank_internal_ram_mask = 7;
|
||||||
|
|
||||||
m_membank_card_ram_mask = 0x03f;
|
m_membank_card_ram_mask = 0x03f;
|
||||||
|
|
||||||
nc_state::machine_reset();
|
nc_state::machine_reset();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -998,18 +998,16 @@ void nc_state::nc150_init_machine()
|
|||||||
/**********************************************************************************************************/
|
/**********************************************************************************************************/
|
||||||
/* NC200 hardware */
|
/* NC200 hardware */
|
||||||
|
|
||||||
#ifdef UNUSED_FUNCTION
|
|
||||||
void nc200_state::nc200_display_memory_start_w(uint8_t data)
|
void nc200_state::nc200_display_memory_start_w(uint8_t data)
|
||||||
{
|
{
|
||||||
/* bit 7: A15 */
|
/* bit 7: A15 */
|
||||||
/* bit 6: A14 */
|
/* bit 6: A14 */
|
||||||
/* bit 5: A13 */
|
/* bit 5: A13 */
|
||||||
/* bit 4-0: not used */
|
/* bit 4-0: not used */
|
||||||
m_display_memory_start = (data & 0x0e0)<<(12-4);
|
m_display_memory_start = (data & 0x0e0) << (12 - 4);
|
||||||
|
|
||||||
LOG("disp memory w: %04x\n", m_display_memory_start);
|
LOG("disp memory w: %04x\n", m_display_memory_start);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
WRITE_LINE_MEMBER(nc200_state::write_nc200_centronics_ack)
|
WRITE_LINE_MEMBER(nc200_state::write_nc200_centronics_ack)
|
||||||
@ -1085,15 +1083,13 @@ WRITE_LINE_MEMBER(nc200_state::nc200_fdc_interrupt)
|
|||||||
nc_update_interrupts();
|
nc_update_interrupts();
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef UNUSED_FUNCTION
|
void nc200_state::nc200_floppy_drive_index_callback(int drive_id)
|
||||||
void nc_state::nc200_floppy_drive_index_callback(int drive_id)
|
|
||||||
{
|
{
|
||||||
LOGDEBUG("nc200 index pulse\n");
|
LOGDEBUG("nc200 index pulse\n");
|
||||||
// m_irq_status |= (1<<4);
|
// m_irq_status |= (1<<4);
|
||||||
|
|
||||||
// nc_update_interrupts(Machine);
|
// nc_update_interrupts(Machine);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
void nc200_state::machine_reset()
|
void nc200_state::machine_reset()
|
||||||
{
|
{
|
||||||
|
@ -27,7 +27,13 @@
|
|||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
#include "emu.h"
|
#include "emu.h"
|
||||||
#include "includes/overdriv.h"
|
|
||||||
|
#include "machine/k053252.h"
|
||||||
|
#include "machine/timer.h"
|
||||||
|
#include "video/k051316.h"
|
||||||
|
#include "video/k053246_k053247_k055673.h"
|
||||||
|
#include "video/k053251.h"
|
||||||
|
#include "video/konami_helper.h"
|
||||||
|
|
||||||
#include "cpu/m68000/m68000.h"
|
#include "cpu/m68000/m68000.h"
|
||||||
#include "cpu/m6809/m6809.h"
|
#include "cpu/m6809/m6809.h"
|
||||||
@ -37,11 +43,85 @@
|
|||||||
#include "sound/k053260.h"
|
#include "sound/k053260.h"
|
||||||
#include "sound/ymopm.h"
|
#include "sound/ymopm.h"
|
||||||
#include "video/k053250.h"
|
#include "video/k053250.h"
|
||||||
|
|
||||||
#include "emupal.h"
|
#include "emupal.h"
|
||||||
|
#include "screen.h"
|
||||||
#include "speaker.h"
|
#include "speaker.h"
|
||||||
|
|
||||||
#include "overdriv.lh"
|
#include "overdriv.lh"
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
class overdriv_state : public driver_device
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
overdriv_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||||
|
: driver_device(mconfig, type, tag)
|
||||||
|
, m_maincpu(*this, "maincpu")
|
||||||
|
, m_subcpu(*this, "sub")
|
||||||
|
, m_audiocpu(*this, "audiocpu")
|
||||||
|
, m_k051316_1(*this, "k051316_1")
|
||||||
|
, m_k051316_2(*this, "k051316_2")
|
||||||
|
, m_k053246(*this, "k053246")
|
||||||
|
, m_k053251(*this, "k053251")
|
||||||
|
, m_k053252(*this, "k053252")
|
||||||
|
, m_screen(*this, "screen")
|
||||||
|
, m_led(*this, "led0")
|
||||||
|
{ }
|
||||||
|
|
||||||
|
void overdriv(machine_config &config);
|
||||||
|
|
||||||
|
private:
|
||||||
|
void eeprom_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
|
||||||
|
void cpuA_ctrl_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
|
||||||
|
uint16_t cpuB_ctrl_r();
|
||||||
|
void cpuB_ctrl_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
|
||||||
|
void overdriv_soundirq_w(uint16_t data);
|
||||||
|
void sound_ack_w(uint8_t data);
|
||||||
|
void slave_irq4_assert_w(uint16_t data);
|
||||||
|
void slave_irq5_assert_w(uint16_t data);
|
||||||
|
void objdma_w(uint8_t data);
|
||||||
|
TIMER_CALLBACK_MEMBER(objdma_end_cb);
|
||||||
|
|
||||||
|
uint32_t screen_update_overdriv(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||||
|
[[maybe_unused]] INTERRUPT_GEN_MEMBER(cpuB_interrupt);
|
||||||
|
TIMER_DEVICE_CALLBACK_MEMBER(overdriv_cpuA_scanline);
|
||||||
|
|
||||||
|
K051316_CB_MEMBER(zoom_callback_1);
|
||||||
|
K051316_CB_MEMBER(zoom_callback_2);
|
||||||
|
K053246_CB_MEMBER(sprite_callback);
|
||||||
|
void overdriv_master_map(address_map &map);
|
||||||
|
void overdriv_slave_map(address_map &map);
|
||||||
|
void overdriv_sound_map(address_map &map);
|
||||||
|
|
||||||
|
|
||||||
|
virtual void machine_start() override;
|
||||||
|
virtual void machine_reset() override;
|
||||||
|
|
||||||
|
/* video-related */
|
||||||
|
int m_zoom_colorbase[2];
|
||||||
|
int m_road_colorbase[2];
|
||||||
|
int m_sprite_colorbase;
|
||||||
|
emu_timer *m_objdma_end_timer;
|
||||||
|
|
||||||
|
/* misc */
|
||||||
|
uint16_t m_cpuB_ctrl;
|
||||||
|
|
||||||
|
/* devices */
|
||||||
|
required_device<cpu_device> m_maincpu;
|
||||||
|
required_device<cpu_device> m_subcpu;
|
||||||
|
required_device<cpu_device> m_audiocpu;
|
||||||
|
required_device<k051316_device> m_k051316_1;
|
||||||
|
required_device<k051316_device> m_k051316_2;
|
||||||
|
required_device<k053247_device> m_k053246;
|
||||||
|
required_device<k053251_device> m_k053251;
|
||||||
|
required_device<k053252_device> m_k053252;
|
||||||
|
required_device<screen_device> m_screen;
|
||||||
|
output_finder<> m_led;
|
||||||
|
int m_fake_timer;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
|
|
||||||
EEPROM
|
EEPROM
|
||||||
@ -95,12 +175,10 @@ TIMER_DEVICE_CALLBACK_MEMBER(overdriv_state::overdriv_cpuA_scanline)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef UNUSED_FUNCTION
|
|
||||||
INTERRUPT_GEN_MEMBER(overdriv_state::cpuB_interrupt)
|
INTERRUPT_GEN_MEMBER(overdriv_state::cpuB_interrupt)
|
||||||
{
|
{
|
||||||
// this doesn't get turned on until the irq has happened? wrong irq?
|
// this doesn't get turned on until the irq has happened? wrong irq?
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
void overdriv_state::cpuA_ctrl_w(offs_t offset, uint16_t data, uint16_t mem_mask)
|
void overdriv_state::cpuA_ctrl_w(offs_t offset, uint16_t data, uint16_t mem_mask)
|
||||||
{
|
{
|
||||||
@ -159,6 +237,70 @@ void overdriv_state::slave_irq5_assert_w(uint16_t data)
|
|||||||
m_subcpu->set_input_line(5, HOLD_LINE);
|
m_subcpu->set_input_line(5, HOLD_LINE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
|
|
||||||
|
Callbacks for the K053247
|
||||||
|
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
K053246_CB_MEMBER(overdriv_state::sprite_callback)
|
||||||
|
{
|
||||||
|
int pri = (*color & 0xffe0) >> 5; /* ??????? */
|
||||||
|
if (pri)
|
||||||
|
*priority_mask = 0x02;
|
||||||
|
else
|
||||||
|
*priority_mask = 0x00;
|
||||||
|
|
||||||
|
*color = m_sprite_colorbase + (*color & 0x001f);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
|
|
||||||
|
Callbacks for the K051316
|
||||||
|
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
K051316_CB_MEMBER(overdriv_state::zoom_callback_1)
|
||||||
|
{
|
||||||
|
*flags = (*color & 0x40) ? TILE_FLIPX : 0;
|
||||||
|
*code |= ((*color & 0x03) << 8);
|
||||||
|
*color = m_zoom_colorbase[0] + ((*color & 0x3c) >> 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
K051316_CB_MEMBER(overdriv_state::zoom_callback_2)
|
||||||
|
{
|
||||||
|
*flags = (*color & 0x40) ? TILE_FLIPX : 0;
|
||||||
|
*code |= ((*color & 0x03) << 8);
|
||||||
|
*color = m_zoom_colorbase[1] + ((*color & 0x3c) >> 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
|
|
||||||
|
Display refresh
|
||||||
|
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
uint32_t overdriv_state::screen_update_overdriv(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||||
|
{
|
||||||
|
m_sprite_colorbase = m_k053251->get_palette_index(k053251_device::CI0);
|
||||||
|
m_road_colorbase[1] = m_k053251->get_palette_index(k053251_device::CI1);
|
||||||
|
m_road_colorbase[0] = m_k053251->get_palette_index(k053251_device::CI2);
|
||||||
|
m_zoom_colorbase[1] = m_k053251->get_palette_index(k053251_device::CI3);
|
||||||
|
m_zoom_colorbase[0] = m_k053251->get_palette_index(k053251_device::CI4);
|
||||||
|
|
||||||
|
screen.priority().fill(0, cliprect);
|
||||||
|
|
||||||
|
m_k051316_1->zoom_draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
|
||||||
|
m_k051316_2->zoom_draw(screen, bitmap, cliprect, 0, 1);
|
||||||
|
|
||||||
|
m_k053246->k053247_sprites_draw( bitmap,cliprect);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void overdriv_state::overdriv_master_map(address_map &map)
|
void overdriv_state::overdriv_master_map(address_map &map)
|
||||||
{
|
{
|
||||||
map(0x000000, 0x03ffff).rom();
|
map(0x000000, 0x03ffff).rom();
|
||||||
@ -187,31 +329,6 @@ void overdriv_state::overdriv_master_map(address_map &map)
|
|||||||
map(0x238000, 0x238001).w(FUNC(overdriv_state::slave_irq5_assert_w));
|
map(0x238000, 0x238001).w(FUNC(overdriv_state::slave_irq5_assert_w));
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef UNUSED_FUNCTION
|
|
||||||
void overdriv_state::overdriv_k053246_w(offs_t offset, uint8_t data)
|
|
||||||
{
|
|
||||||
m_k053246->k053246_w(offset,data);
|
|
||||||
|
|
||||||
uint16_t *src, *dst;
|
|
||||||
|
|
||||||
m_k053246->k053247_get_ram(&dst);
|
|
||||||
|
|
||||||
src = m_sprram;
|
|
||||||
|
|
||||||
// this should be the sprite dma/irq bit...
|
|
||||||
// but it is already turned off by the time overdriv_state::cpuB_interrupt is executed?
|
|
||||||
// even now it rarely gets set, I imagine because the communication / irq is actually
|
|
||||||
// worse than we thought. (drive very slowly and things update..)
|
|
||||||
if (m_k053246->k053246_is_irq_enabled())
|
|
||||||
{
|
|
||||||
memcpy(dst,src,0x1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
//printf("%02x %04x %04x\n", offset, data, mem_mask);
|
|
||||||
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
TIMER_CALLBACK_MEMBER(overdriv_state::objdma_end_cb )
|
TIMER_CALLBACK_MEMBER(overdriv_state::objdma_end_cb )
|
||||||
{
|
{
|
||||||
m_subcpu->set_input_line(6, HOLD_LINE);
|
m_subcpu->set_input_line(6, HOLD_LINE);
|
||||||
@ -519,6 +636,9 @@ ROM_START( overdrivb )
|
|||||||
ROM_LOAD( "789e02.f1", 0x100000, 0x100000, CRC(bdd3b5c6) SHA1(412332d64052c0a3714f4002c944b0e7d32980a4) )
|
ROM_LOAD( "789e02.f1", 0x100000, 0x100000, CRC(bdd3b5c6) SHA1(412332d64052c0a3714f4002c944b0e7d32980a4) )
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
|
} // anonymous namespace
|
||||||
|
|
||||||
|
|
||||||
GAMEL( 1990, overdriv, 0, overdriv, overdriv, overdriv_state, empty_init, ROT90, "Konami", "Over Drive (set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_overdriv ) // US version
|
GAMEL( 1990, overdriv, 0, overdriv, overdriv, overdriv_state, empty_init, ROT90, "Konami", "Over Drive (set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_overdriv ) // US version
|
||||||
GAMEL( 1990, overdriva, overdriv, overdriv, overdriv, overdriv_state, empty_init, ROT90, "Konami", "Over Drive (set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_overdriv ) // Overseas?
|
GAMEL( 1990, overdriva, overdriv, overdriv, overdriv, overdriv_state, empty_init, ROT90, "Konami", "Over Drive (set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_overdriv ) // Overseas?
|
||||||
GAMEL( 1990, overdrivb, overdriv, overdriv, overdriv, overdriv_state, empty_init, ROT90, "Konami", "Over Drive (set 3)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_overdriv ) // Overseas?
|
GAMEL( 1990, overdrivb, overdriv, overdriv, overdriv, overdriv_state, empty_init, ROT90, "Konami", "Over Drive (set 3)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_overdriv ) // Overseas?
|
||||||
|
@ -398,9 +398,7 @@ void ssv_state::dsp_w(offs_t offset, uint16_t data)
|
|||||||
|
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
#ifdef UNUSED_FUNCTION
|
uint16_t ssv_state::fake_r(offs_t offset) { return m_scroll[offset]; }
|
||||||
uint16_t ssv_state::fake_r(offs_t offset){ return ssv_scroll[offset]; }
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void ssv_state::ssv_map(address_map &map, u32 rom)
|
void ssv_state::ssv_map(address_map &map, u32 rom)
|
||||||
{
|
{
|
||||||
|
@ -885,7 +885,7 @@ image_init_result tx0_magtape_image_device::call_load()
|
|||||||
{
|
{
|
||||||
m_tx0->m_magtape.img = this;
|
m_tx0->m_magtape.img = this;
|
||||||
|
|
||||||
m_tx0->m_magtape.irg_pos = MTIRGP_END;
|
m_tx0->m_magtape.irg_pos = tx0_state::MTIRGP_END;
|
||||||
|
|
||||||
/* restart IO when necessary */
|
/* restart IO when necessary */
|
||||||
/* note that this function may be called before tx0_init_machine, therefore
|
/* note that this function may be called before tx0_init_machine, therefore
|
||||||
@ -893,7 +893,7 @@ image_init_result tx0_magtape_image_device::call_load()
|
|||||||
nullptr parameter! */
|
nullptr parameter! */
|
||||||
if (m_tx0->m_magtape.timer)
|
if (m_tx0->m_magtape.timer)
|
||||||
{
|
{
|
||||||
if (m_tx0->m_magtape.state == MTS_SELECTING)
|
if (m_tx0->m_magtape.state == tx0_state::MTS_SELECTING)
|
||||||
m_tx0->schedule_select();
|
m_tx0->schedule_select();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -909,12 +909,12 @@ void tx0_magtape_image_device::call_unload()
|
|||||||
|
|
||||||
if (m_tx0->m_magtape.timer)
|
if (m_tx0->m_magtape.timer)
|
||||||
{
|
{
|
||||||
if (m_tx0->m_magtape.state == MTS_SELECTING)
|
if (m_tx0->m_magtape.state == tx0_state::MTS_SELECTING)
|
||||||
/* I/O has not actually started, we can cancel the selection */
|
/* I/O has not actually started, we can cancel the selection */
|
||||||
m_tx0->m_tape_reader.timer->enable(0);
|
m_tx0->m_tape_reader.timer->enable(0);
|
||||||
if ((m_tx0->m_magtape.state == MTS_SELECTED) || ((m_tx0->m_magtape.state == MTS_SELECTING) && (m_tx0->m_magtape.command == 2)))
|
if ((m_tx0->m_magtape.state == tx0_state::MTS_SELECTED) || ((m_tx0->m_magtape.state == tx0_state::MTS_SELECTING) && (m_tx0->m_magtape.command == 2)))
|
||||||
{ /* unit has become unavailable */
|
{ /* unit has become unavailable */
|
||||||
m_tx0->m_magtape.state = MTS_UNSELECTING;
|
m_tx0->m_magtape.state = tx0_state::MTS_UNSELECTING;
|
||||||
m_tx0->m_maincpu->set_state_int(TX0_PF, m_tx0->m_maincpu->state_int(TX0_PF) | PF_RWC);
|
m_tx0->m_maincpu->set_state_int(TX0_PF, m_tx0->m_maincpu->state_int(TX0_PF) | PF_RWC);
|
||||||
m_tx0->schedule_unselect();
|
m_tx0->schedule_unselect();
|
||||||
}
|
}
|
||||||
|
@ -36,12 +36,10 @@ void zn_state::machine_start()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifdef UNUSED_FUNCTION
|
[[maybe_unused]] inline uint16_t zn_state::psxreadword( uint32_t *p_n_psxram, uint32_t n_address )
|
||||||
inline uint16_t zn_state::psxreadword( uint32_t *p_n_psxram, uint32_t n_address )
|
|
||||||
{
|
{
|
||||||
return *( (uint16_t *)( (uint8_t *)p_n_psxram + WORD_XOR_LE( n_address ) ) );
|
return *( (uint16_t *)( (uint8_t *)p_n_psxram + WORD_XOR_LE( n_address ) ) );
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
inline void zn_state::psxwriteword( uint32_t *p_n_psxram, uint32_t n_address, uint16_t n_data )
|
inline void zn_state::psxwriteword( uint32_t *p_n_psxram, uint32_t n_address, uint16_t n_data )
|
||||||
{
|
{
|
||||||
|
@ -62,12 +62,12 @@ private:
|
|||||||
tilemap_t *m_bg_tilemap[2][4];
|
tilemap_t *m_bg_tilemap[2][4];
|
||||||
int m_visible_page;
|
int m_visible_page;
|
||||||
int m_priority;
|
int m_priority;
|
||||||
uint8_t m_reikaids_which;
|
uint8_t m_reikaids_which;
|
||||||
int m_flipscreen;
|
int m_flipscreen;
|
||||||
uint8_t m_gfx_bank[2]; // pteacher only uses the first one
|
uint8_t m_gfx_bank[2]; // pteacher only uses the first one
|
||||||
uint8_t m_blitter_bank;
|
uint8_t m_blitter_bank;
|
||||||
int m_blitter_param_count;
|
int m_blitter_param_count;
|
||||||
uint8_t m_blitter_param[4]; /* buffers last 4 writes to 0x8006 */
|
uint8_t m_blitter_param[4]; /* buffers last 4 writes to 0x8006 */
|
||||||
|
|
||||||
|
|
||||||
/* misc */
|
/* misc */
|
||||||
|
@ -1,5 +1,10 @@
|
|||||||
// license:BSD-3-Clause
|
// license:BSD-3-Clause
|
||||||
// copyright-holders:Takahiro Nogi
|
// copyright-holders:Takahiro Nogi
|
||||||
|
#ifndef MAME_INCLUDES_NBMJ8900_H
|
||||||
|
#define MAME_INCLUDES_NBMJ8900_H
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
#include "machine/nb1413m3.h"
|
#include "machine/nb1413m3.h"
|
||||||
#include "emupal.h"
|
#include "emupal.h"
|
||||||
#include "screen.h"
|
#include "screen.h"
|
||||||
@ -7,14 +12,13 @@
|
|||||||
class nbmj8900_state : public driver_device
|
class nbmj8900_state : public driver_device
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
nbmj8900_state(const machine_config &mconfig, device_type type, const char *tag) :
|
||||||
|
driver_device(mconfig, type, tag) ,
|
||||||
nbmj8900_state(const machine_config &mconfig, device_type type, const char *tag)
|
|
||||||
: driver_device(mconfig, type, tag) ,
|
|
||||||
m_maincpu(*this, "maincpu"),
|
m_maincpu(*this, "maincpu"),
|
||||||
m_nb1413m3(*this, "nb1413m3"),
|
m_nb1413m3(*this, "nb1413m3"),
|
||||||
m_screen(*this, "screen"),
|
m_screen(*this, "screen"),
|
||||||
m_palette(*this, "palette") { }
|
m_palette(*this, "palette")
|
||||||
|
{ }
|
||||||
|
|
||||||
void ohpaipee(machine_config &config);
|
void ohpaipee(machine_config &config);
|
||||||
void togenkyo(machine_config &config);
|
void togenkyo(machine_config &config);
|
||||||
@ -61,6 +65,10 @@ private:
|
|||||||
|
|
||||||
uint8_t palette_type1_r(offs_t offset);
|
uint8_t palette_type1_r(offs_t offset);
|
||||||
void palette_type1_w(offs_t offset, uint8_t data);
|
void palette_type1_w(offs_t offset, uint8_t data);
|
||||||
|
[[maybe_unused]] uint8_t palette_type2_r(offs_t offset);
|
||||||
|
[[maybe_unused]] void palette_type2_w(offs_t offset, uint8_t data);
|
||||||
|
[[maybe_unused]] uint8_t palette_type3_r(offs_t offset);
|
||||||
|
[[maybe_unused]] void palette_type3_w(offs_t offset, uint8_t data);
|
||||||
void clutsel_w(uint8_t data);
|
void clutsel_w(uint8_t data);
|
||||||
uint8_t clut_r(offs_t offset);
|
uint8_t clut_r(offs_t offset);
|
||||||
void clut_w(offs_t offset, uint8_t data);
|
void clut_w(offs_t offset, uint8_t data);
|
||||||
@ -84,3 +92,5 @@ private:
|
|||||||
|
|
||||||
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
|
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#endif // MAME_INCLUDES_NBMJ8900_H
|
||||||
|
@ -185,12 +185,15 @@ protected:
|
|||||||
void nc200_uart_control_w(uint8_t data);
|
void nc200_uart_control_w(uint8_t data);
|
||||||
void nc200_memory_card_wait_state_w(uint8_t data);
|
void nc200_memory_card_wait_state_w(uint8_t data);
|
||||||
void nc200_poweroff_control_w(uint8_t data);
|
void nc200_poweroff_control_w(uint8_t data);
|
||||||
|
[[maybe_unused]] void nc200_display_memory_start_w(uint8_t data);
|
||||||
|
|
||||||
DECLARE_WRITE_LINE_MEMBER(write_nc200_centronics_ack);
|
DECLARE_WRITE_LINE_MEMBER(write_nc200_centronics_ack);
|
||||||
DECLARE_WRITE_LINE_MEMBER(nc200_txrdy_callback);
|
DECLARE_WRITE_LINE_MEMBER(nc200_txrdy_callback);
|
||||||
DECLARE_WRITE_LINE_MEMBER(nc200_rxrdy_callback);
|
DECLARE_WRITE_LINE_MEMBER(nc200_rxrdy_callback);
|
||||||
DECLARE_WRITE_LINE_MEMBER(nc200_fdc_interrupt);
|
DECLARE_WRITE_LINE_MEMBER(nc200_fdc_interrupt);
|
||||||
|
|
||||||
|
[[maybe_unused]] void nc200_floppy_drive_index_callback(int drive_id);
|
||||||
|
|
||||||
virtual void machine_reset() override;
|
virtual void machine_reset() override;
|
||||||
|
|
||||||
uint32_t screen_update_nc200(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
uint32_t screen_update_nc200(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||||
|
@ -1,90 +0,0 @@
|
|||||||
// license:BSD-3-Clause
|
|
||||||
// copyright-holders:Nicola Salmoria
|
|
||||||
/*************************************************************************
|
|
||||||
|
|
||||||
Over Drive
|
|
||||||
|
|
||||||
*************************************************************************/
|
|
||||||
#ifndef MAME_INCLUDES_OVERDRIV_H
|
|
||||||
#define MAME_INCLUDES_OVERDRIV_H
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "machine/k053252.h"
|
|
||||||
#include "machine/timer.h"
|
|
||||||
#include "video/k051316.h"
|
|
||||||
#include "video/k053246_k053247_k055673.h"
|
|
||||||
#include "video/k053251.h"
|
|
||||||
#include "video/konami_helper.h"
|
|
||||||
#include "screen.h"
|
|
||||||
|
|
||||||
class overdriv_state : public driver_device
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
overdriv_state(const machine_config &mconfig, device_type type, const char *tag)
|
|
||||||
: driver_device(mconfig, type, tag)
|
|
||||||
, m_maincpu(*this, "maincpu")
|
|
||||||
, m_subcpu(*this, "sub")
|
|
||||||
, m_audiocpu(*this, "audiocpu")
|
|
||||||
, m_k051316_1(*this, "k051316_1")
|
|
||||||
, m_k051316_2(*this, "k051316_2")
|
|
||||||
, m_k053246(*this, "k053246")
|
|
||||||
, m_k053251(*this, "k053251")
|
|
||||||
, m_k053252(*this, "k053252")
|
|
||||||
, m_screen(*this, "screen")
|
|
||||||
, m_led(*this, "led0")
|
|
||||||
{ }
|
|
||||||
|
|
||||||
void overdriv(machine_config &config);
|
|
||||||
|
|
||||||
private:
|
|
||||||
void eeprom_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
|
|
||||||
void cpuA_ctrl_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
|
|
||||||
uint16_t cpuB_ctrl_r();
|
|
||||||
void cpuB_ctrl_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
|
|
||||||
void overdriv_soundirq_w(uint16_t data);
|
|
||||||
void sound_ack_w(uint8_t data);
|
|
||||||
void slave_irq4_assert_w(uint16_t data);
|
|
||||||
void slave_irq5_assert_w(uint16_t data);
|
|
||||||
void objdma_w(uint8_t data);
|
|
||||||
TIMER_CALLBACK_MEMBER(objdma_end_cb);
|
|
||||||
|
|
||||||
uint32_t screen_update_overdriv(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
|
||||||
//INTERRUPT_GEN_MEMBER(cpuB_interrupt);
|
|
||||||
TIMER_DEVICE_CALLBACK_MEMBER(overdriv_cpuA_scanline);
|
|
||||||
|
|
||||||
K051316_CB_MEMBER(zoom_callback_1);
|
|
||||||
K051316_CB_MEMBER(zoom_callback_2);
|
|
||||||
K053246_CB_MEMBER(sprite_callback);
|
|
||||||
void overdriv_master_map(address_map &map);
|
|
||||||
void overdriv_slave_map(address_map &map);
|
|
||||||
void overdriv_sound_map(address_map &map);
|
|
||||||
|
|
||||||
|
|
||||||
virtual void machine_start() override;
|
|
||||||
virtual void machine_reset() override;
|
|
||||||
|
|
||||||
/* video-related */
|
|
||||||
int m_zoom_colorbase[2];
|
|
||||||
int m_road_colorbase[2];
|
|
||||||
int m_sprite_colorbase;
|
|
||||||
emu_timer *m_objdma_end_timer;
|
|
||||||
|
|
||||||
/* misc */
|
|
||||||
uint16_t m_cpuB_ctrl;
|
|
||||||
|
|
||||||
/* devices */
|
|
||||||
required_device<cpu_device> m_maincpu;
|
|
||||||
required_device<cpu_device> m_subcpu;
|
|
||||||
required_device<cpu_device> m_audiocpu;
|
|
||||||
required_device<k051316_device> m_k051316_1;
|
|
||||||
required_device<k051316_device> m_k051316_2;
|
|
||||||
required_device<k053247_device> m_k053246;
|
|
||||||
required_device<k053251_device> m_k053251;
|
|
||||||
required_device<k053252_device> m_k053252;
|
|
||||||
required_device<screen_device> m_screen;
|
|
||||||
output_finder<> m_led;
|
|
||||||
int m_fake_timer;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // MAME_INCLUDES_OVERDRIV_H
|
|
@ -95,6 +95,7 @@ protected:
|
|||||||
uint16_t dsp_dr_r();
|
uint16_t dsp_dr_r();
|
||||||
void dsp_dr_w(uint16_t data);
|
void dsp_dr_w(uint16_t data);
|
||||||
uint16_t dsp_r(offs_t offset);
|
uint16_t dsp_r(offs_t offset);
|
||||||
|
[[maybe_unused]] uint16_t fake_r(offs_t offset);
|
||||||
void dsp_w(offs_t offset, uint16_t data);
|
void dsp_w(offs_t offset, uint16_t data);
|
||||||
uint16_t drifto94_unknown_r();
|
uint16_t drifto94_unknown_r();
|
||||||
uint16_t hypreact_input_r();
|
uint16_t hypreact_input_r();
|
||||||
|
@ -10,130 +10,129 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "video/crt.h"
|
|
||||||
#include "cpu/tx0/tx0.h"
|
#include "cpu/tx0/tx0.h"
|
||||||
|
#include "video/crt.h"
|
||||||
|
|
||||||
#include "emupal.h"
|
#include "emupal.h"
|
||||||
|
|
||||||
enum state_t
|
|
||||||
{
|
|
||||||
MTS_UNSELECTED,
|
|
||||||
MTS_SELECTING,
|
|
||||||
MTS_SELECTED,
|
|
||||||
MTS_UNSELECTING
|
|
||||||
};
|
|
||||||
|
|
||||||
enum backspace_state_t
|
|
||||||
{
|
|
||||||
MTBSS_STATE0,
|
|
||||||
MTBSS_STATE1,
|
|
||||||
MTBSS_STATE2,
|
|
||||||
MTBSS_STATE3,
|
|
||||||
MTBSS_STATE4,
|
|
||||||
MTBSS_STATE5,
|
|
||||||
MTBSS_STATE6
|
|
||||||
};
|
|
||||||
|
|
||||||
enum state_2_t
|
|
||||||
{
|
|
||||||
MTRDS_STATE0,
|
|
||||||
MTRDS_STATE1,
|
|
||||||
MTRDS_STATE2,
|
|
||||||
MTRDS_STATE3,
|
|
||||||
MTRDS_STATE4,
|
|
||||||
MTRDS_STATE5,
|
|
||||||
MTRDS_STATE6
|
|
||||||
};
|
|
||||||
|
|
||||||
enum state_3_t
|
|
||||||
{
|
|
||||||
MTWTS_STATE0,
|
|
||||||
MTWTS_STATE1,
|
|
||||||
MTWTS_STATE2,
|
|
||||||
MTWTS_STATE3
|
|
||||||
};
|
|
||||||
|
|
||||||
enum irg_pos_t
|
|
||||||
{
|
|
||||||
MTIRGP_START,
|
|
||||||
MTIRGP_ENDMINUS1,
|
|
||||||
MTIRGP_END
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* tape reader registers */
|
|
||||||
struct tx0_tape_reader_t
|
|
||||||
{
|
|
||||||
device_image_interface *fd; /* file descriptor of tape image */
|
|
||||||
|
|
||||||
int motor_on; /* 1-bit reader motor on */
|
|
||||||
|
|
||||||
int rcl; /* 1-bit reader clutch */
|
|
||||||
int rc; /* 2-bit reader counter */
|
|
||||||
|
|
||||||
emu_timer *timer; /* timer to simulate reader timing */
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* tape puncher registers */
|
|
||||||
struct tape_puncher_t
|
|
||||||
{
|
|
||||||
device_image_interface *fd; /* file descriptor of tape image */
|
|
||||||
|
|
||||||
emu_timer *timer; /* timer to generate completion pulses */
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* typewriter registers */
|
|
||||||
struct tx0_typewriter_t
|
|
||||||
{
|
|
||||||
device_image_interface *fd; /* file descriptor of output image */
|
|
||||||
|
|
||||||
emu_timer *prt_timer;/* timer to generate completion pulses */
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/* magnetic tape unit registers */
|
|
||||||
struct magtape_t
|
|
||||||
{
|
|
||||||
device_image_interface *img; /* image descriptor */
|
|
||||||
|
|
||||||
state_t state;
|
|
||||||
|
|
||||||
int command;
|
|
||||||
int binary_flag;
|
|
||||||
|
|
||||||
union
|
|
||||||
{
|
|
||||||
backspace_state_t backspace_state;
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
state_2_t state;
|
|
||||||
int space_flag;
|
|
||||||
} read;
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
state_3_t state;
|
|
||||||
int counter;
|
|
||||||
} write;
|
|
||||||
} u;
|
|
||||||
|
|
||||||
int sel_pending;
|
|
||||||
int cpy_pending;
|
|
||||||
|
|
||||||
irg_pos_t irg_pos; /* position relative to inter-record gap */
|
|
||||||
|
|
||||||
int long_parity;
|
|
||||||
|
|
||||||
emu_timer *timer; /* timer to simulate reader timing */
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
class tx0_state : public driver_device
|
class tx0_state : public driver_device
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
enum state_t
|
||||||
|
{
|
||||||
|
MTS_UNSELECTED,
|
||||||
|
MTS_SELECTING,
|
||||||
|
MTS_SELECTED,
|
||||||
|
MTS_UNSELECTING
|
||||||
|
};
|
||||||
|
|
||||||
|
enum backspace_state_t
|
||||||
|
{
|
||||||
|
MTBSS_STATE0,
|
||||||
|
MTBSS_STATE1,
|
||||||
|
MTBSS_STATE2,
|
||||||
|
MTBSS_STATE3,
|
||||||
|
MTBSS_STATE4,
|
||||||
|
MTBSS_STATE5,
|
||||||
|
MTBSS_STATE6
|
||||||
|
};
|
||||||
|
|
||||||
|
enum state_2_t
|
||||||
|
{
|
||||||
|
MTRDS_STATE0,
|
||||||
|
MTRDS_STATE1,
|
||||||
|
MTRDS_STATE2,
|
||||||
|
MTRDS_STATE3,
|
||||||
|
MTRDS_STATE4,
|
||||||
|
MTRDS_STATE5,
|
||||||
|
MTRDS_STATE6
|
||||||
|
};
|
||||||
|
|
||||||
|
enum state_3_t
|
||||||
|
{
|
||||||
|
MTWTS_STATE0,
|
||||||
|
MTWTS_STATE1,
|
||||||
|
MTWTS_STATE2,
|
||||||
|
MTWTS_STATE3
|
||||||
|
};
|
||||||
|
|
||||||
|
enum irg_pos_t
|
||||||
|
{
|
||||||
|
MTIRGP_START,
|
||||||
|
MTIRGP_ENDMINUS1,
|
||||||
|
MTIRGP_END
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/* tape reader registers */
|
||||||
|
struct tx0_tape_reader_t
|
||||||
|
{
|
||||||
|
device_image_interface *fd; /* file descriptor of tape image */
|
||||||
|
|
||||||
|
int motor_on; /* 1-bit reader motor on */
|
||||||
|
|
||||||
|
int rcl; /* 1-bit reader clutch */
|
||||||
|
int rc; /* 2-bit reader counter */
|
||||||
|
|
||||||
|
emu_timer *timer; /* timer to simulate reader timing */
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/* tape puncher registers */
|
||||||
|
struct tape_puncher_t
|
||||||
|
{
|
||||||
|
device_image_interface *fd; /* file descriptor of tape image */
|
||||||
|
|
||||||
|
emu_timer *timer; /* timer to generate completion pulses */
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/* typewriter registers */
|
||||||
|
struct tx0_typewriter_t
|
||||||
|
{
|
||||||
|
device_image_interface *fd; /* file descriptor of output image */
|
||||||
|
|
||||||
|
emu_timer *prt_timer;/* timer to generate completion pulses */
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/* magnetic tape unit registers */
|
||||||
|
struct magtape_t
|
||||||
|
{
|
||||||
|
device_image_interface *img; /* image descriptor */
|
||||||
|
|
||||||
|
state_t state;
|
||||||
|
|
||||||
|
int command;
|
||||||
|
int binary_flag;
|
||||||
|
|
||||||
|
union
|
||||||
|
{
|
||||||
|
backspace_state_t backspace_state;
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
state_2_t state;
|
||||||
|
int space_flag;
|
||||||
|
} read;
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
state_3_t state;
|
||||||
|
int counter;
|
||||||
|
} write;
|
||||||
|
} u;
|
||||||
|
|
||||||
|
int sel_pending;
|
||||||
|
int cpy_pending;
|
||||||
|
|
||||||
|
irg_pos_t irg_pos; /* position relative to inter-record gap */
|
||||||
|
|
||||||
|
int long_parity;
|
||||||
|
|
||||||
|
emu_timer *timer; /* timer to simulate reader timing */
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
tx0_state(const machine_config &mconfig, device_type type, const char *tag) :
|
tx0_state(const machine_config &mconfig, device_type type, const char *tag) :
|
||||||
driver_device(mconfig, type, tag),
|
driver_device(mconfig, type, tag),
|
||||||
m_maincpu(*this, "maincpu"),
|
m_maincpu(*this, "maincpu"),
|
||||||
@ -191,6 +190,7 @@ protected:
|
|||||||
void tx0_draw_char(bitmap_ind16 &bitmap, char character, int x, int y, int color);
|
void tx0_draw_char(bitmap_ind16 &bitmap, char character, int x, int y, int color);
|
||||||
void tx0_draw_string(bitmap_ind16 &bitmap, const char *buf, int x, int y, int color);
|
void tx0_draw_string(bitmap_ind16 &bitmap, const char *buf, int x, int y, int color);
|
||||||
void tx0_draw_vline(bitmap_ind16 &bitmap, int x, int y, int height, int color);
|
void tx0_draw_vline(bitmap_ind16 &bitmap, int x, int y, int height, int color);
|
||||||
|
[[maybe_unused]] void tx0_draw_hline(bitmap_ind16 &bitmap, int x, int y, int width, int color);
|
||||||
void tx0_draw_panel_backdrop(bitmap_ind16 &bitmap);
|
void tx0_draw_panel_backdrop(bitmap_ind16 &bitmap);
|
||||||
void tx0_draw_panel(bitmap_ind16 &bitmap);
|
void tx0_draw_panel(bitmap_ind16 &bitmap);
|
||||||
void tx0_typewriter_linefeed();
|
void tx0_typewriter_linefeed();
|
||||||
|
@ -78,8 +78,9 @@ protected:
|
|||||||
|
|
||||||
virtual void machine_start() override;
|
virtual void machine_start() override;
|
||||||
|
|
||||||
inline void ATTR_PRINTF(3,4) verboselog( int n_level, const char *s_fmt, ... );
|
void ATTR_PRINTF(3,4) verboselog( int n_level, const char *s_fmt, ... );
|
||||||
inline void psxwriteword( uint32_t *p_n_psxram, uint32_t n_address, uint16_t n_data );
|
static uint16_t psxreadword( uint32_t *p_n_psxram, uint32_t n_address );
|
||||||
|
static void psxwriteword( uint32_t *p_n_psxram, uint32_t n_address, uint16_t n_data );
|
||||||
|
|
||||||
uint8_t m_n_znsecsel;
|
uint8_t m_n_znsecsel;
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -21,7 +21,7 @@ static uint16_t CX4_readw(uint16_t addr);
|
|||||||
static uint32_t CX4_readl(uint16_t addr);
|
static uint32_t CX4_readl(uint16_t addr);
|
||||||
|
|
||||||
static void CX4_writew(address_space &space, uint16_t addr, uint16_t data);
|
static void CX4_writew(address_space &space, uint16_t addr, uint16_t data);
|
||||||
//static void CX4_writel(address_space &space, uint16_t addr, uint32_t data);
|
[[maybe_unused]] static void CX4_writel(address_space &space, uint16_t addr, uint32_t data);
|
||||||
|
|
||||||
static void CX4_C4DrawLine(int32_t X1, int32_t Y1, int16_t Z1, int32_t X2, int32_t Y2, int16_t Z2, uint8_t Color);
|
static void CX4_C4DrawLine(int32_t X1, int32_t Y1, int16_t Z1, int32_t X2, int32_t Y2, int16_t Z2, uint8_t Color);
|
||||||
|
|
||||||
@ -191,12 +191,10 @@ void CX4_write(address_space &space, uint32_t addr, uint8_t data)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef UNUSED_FUNCTION
|
[[maybe_unused]] static void CX4_writeb(address_space &space, uint16_t addr, uint8_t data)
|
||||||
void CX4_writeb(address_space &space, uint16_t addr, uint8_t data)
|
|
||||||
{
|
{
|
||||||
CX4_write(space, addr, data);
|
CX4_write(space, addr, data);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
static void CX4_writew(address_space &space, uint16_t addr, uint16_t data)
|
static void CX4_writew(address_space &space, uint16_t addr, uint16_t data)
|
||||||
{
|
{
|
||||||
@ -204,14 +202,12 @@ static void CX4_writew(address_space &space, uint16_t addr, uint16_t data)
|
|||||||
CX4_write(space, addr + 1, data >> 8);
|
CX4_write(space, addr + 1, data >> 8);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef UNUSED_FUNCTION
|
static void CX4_writel(address_space &space, uint16_t addr, uint32_t data)
|
||||||
void CX4_writel(address_space &space, uint16_t addr, uint32_t data)
|
|
||||||
{
|
{
|
||||||
CX4_write(space, addr + 0, data >> 0);
|
CX4_write(space, addr + 0, data >> 0);
|
||||||
CX4_write(space, addr + 1, data >> 8);
|
CX4_write(space, addr + 1, data >> 8);
|
||||||
CX4_write(space, addr + 2, data >> 16);
|
CX4_write(space, addr + 2, data >> 16);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
uint8_t CX4_read(uint32_t addr)
|
uint8_t CX4_read(uint32_t addr)
|
||||||
{
|
{
|
||||||
@ -230,12 +226,10 @@ uint8_t CX4_read(uint32_t addr)
|
|||||||
return 0xff;
|
return 0xff;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef UNUSED_FUNCTION
|
[[maybe_unused]] static uint8_t CX4_readb(uint16_t addr)
|
||||||
uint8_t CX4_readb(uint16_t addr)
|
|
||||||
{
|
{
|
||||||
return CX4_read(addr);
|
return CX4_read(addr);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
static uint16_t CX4_readw(uint16_t addr)
|
static uint16_t CX4_readw(uint16_t addr)
|
||||||
{
|
{
|
||||||
@ -247,10 +241,8 @@ static uint32_t CX4_readl(uint16_t addr)
|
|||||||
return CX4_read(addr) | (CX4_read(addr + 1) << 8) | (CX4_read(addr + 2) << 16);
|
return CX4_read(addr) | (CX4_read(addr + 1) << 8) | (CX4_read(addr + 2) << 16);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef UNUSED_FUNCTION
|
[[maybe_unused]] void CX4_reset()
|
||||||
void CX4_reset()
|
|
||||||
{
|
{
|
||||||
memset(cx4.ram, 0, 0x0c00);
|
memset(cx4.ram, 0, 0x0c00);
|
||||||
memset(cx4.reg, 0, 0x0100);
|
memset(cx4.reg, 0, 0x0100);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
@ -233,6 +233,7 @@ uint8_t bfm_dm01_device::comm_r()
|
|||||||
void bfm_dm01_device::comm_w(uint8_t data)
|
void bfm_dm01_device::comm_w(uint8_t data)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
uint8_t bfm_dm01_device::unknown_r()
|
uint8_t bfm_dm01_device::unknown_r()
|
||||||
|
@ -790,8 +790,6 @@ void homedata_state::pteacher_blitter_start_w(uint8_t data)
|
|||||||
|
|
||||||
uint32_t homedata_state::screen_update_mrokumei(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
uint32_t homedata_state::screen_update_mrokumei(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||||
{
|
{
|
||||||
int flags,width;
|
|
||||||
|
|
||||||
/* blank screen */
|
/* blank screen */
|
||||||
if (m_vreg[0x3] == 0xc1 && m_vreg[0x4] == 0xc0 && m_vreg[0x5] == 0xff)
|
if (m_vreg[0x3] == 0xc1 && m_vreg[0x4] == 0xc0 && m_vreg[0x5] == 0xff)
|
||||||
{
|
{
|
||||||
@ -799,13 +797,14 @@ uint32_t homedata_state::screen_update_mrokumei(screen_device &screen, bitmap_in
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
flags = (m_vreg[1] & 0x80) ? (TILE_FLIPX | TILE_FLIPY) : 0;
|
int const flags = (m_vreg[1] & 0x80) ? (TILE_FLIPX | TILE_FLIPY) : 0;
|
||||||
if (flags != m_flipscreen)
|
if (flags != m_flipscreen)
|
||||||
{
|
{
|
||||||
m_flipscreen = flags;
|
m_flipscreen = flags;
|
||||||
machine().tilemap().mark_all_dirty();
|
machine().tilemap().mark_all_dirty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int width;
|
||||||
switch (m_vreg[0x3])
|
switch (m_vreg[0x3])
|
||||||
{
|
{
|
||||||
case 0xb7: width = 54; break; // mjclinic
|
case 0xb7: width = 54; break; // mjclinic
|
||||||
@ -828,14 +827,14 @@ uint32_t homedata_state::screen_update_mrokumei(screen_device &screen, bitmap_in
|
|||||||
|
|
||||||
m_bg_tilemap[m_visible_page][0]->draw(screen, bitmap, cliprect, 0, 0);
|
m_bg_tilemap[m_visible_page][0]->draw(screen, bitmap, cliprect, 0, 0);
|
||||||
m_bg_tilemap[m_visible_page][1]->draw(screen, bitmap, cliprect, 0, 0);
|
m_bg_tilemap[m_visible_page][1]->draw(screen, bitmap, cliprect, 0, 0);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef UNUSED_FUNCTION
|
|
||||||
uint32_t homedata_state::screen_update_reikaids(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
uint32_t homedata_state::screen_update_reikaids(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||||
{
|
{
|
||||||
int flags;
|
#if 0
|
||||||
static const int pritable[8][4] =
|
static constexpr int pritable[8][4] =
|
||||||
{
|
{
|
||||||
{ 3,1,0,2 },
|
{ 3,1,0,2 },
|
||||||
{ 1,3,0,2 },
|
{ 1,3,0,2 },
|
||||||
@ -846,77 +845,56 @@ uint32_t homedata_state::screen_update_reikaids(screen_device &screen, bitmap_in
|
|||||||
{ 2,3,1,0 }, // (bg color should be taken from 1)
|
{ 2,3,1,0 }, // (bg color should be taken from 1)
|
||||||
{ 3,1,2,0 }, // (bg color should be taken from 1)
|
{ 3,1,2,0 }, // (bg color should be taken from 1)
|
||||||
};
|
};
|
||||||
int pri, i;
|
#else
|
||||||
|
static constexpr int pritable[2][8][4] = /* table of priorities derived from the PROM */
|
||||||
|
|
||||||
flags = (m_vreg[1] & 0x80) ? (TILE_FLIPX | TILE_FLIPY) : 0;
|
|
||||||
if (flags != m_flipscreen)
|
|
||||||
{
|
{
|
||||||
m_flipscreen = flags;
|
{
|
||||||
machine().tilemap().mark_all_dirty();
|
{ 3,1,0,2 },
|
||||||
}
|
{ 1,3,0,2 },
|
||||||
|
{ 0,3,1,2 },
|
||||||
|
{ 0,1,3,2 },
|
||||||
bitmap.fill(m_palette->black_pen(), cliprect);
|
{ 3,0,1,2 },
|
||||||
|
{ 1,0,3,2 },
|
||||||
pri = (m_bank & 0x70) >> 4;
|
{ 2,3,1,0 }, // (bg color should be taken from 1)
|
||||||
for (i = 0; i < 4; i++)
|
{ 3,1,2,0 } // (bg color should be taken from 1)
|
||||||
m_bg_tilemap[m_visible_page][pritable[pri][3 - i]]->draw(bitmap, cliprect, 0, 0);
|
},
|
||||||
return 0;
|
{
|
||||||
}
|
{ 2,3,0,1 },
|
||||||
|
{ 2,0,3,1 },
|
||||||
|
{ 3,0,2,1 },
|
||||||
|
{ 0,3,2,1 },
|
||||||
|
{ 3,0,1,2 },
|
||||||
|
{ 2,1,3,0 },
|
||||||
|
{ 0,2,3,1 },
|
||||||
|
{ 3,2,0,1 }
|
||||||
|
}
|
||||||
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
uint32_t homedata_state::screen_update_reikaids(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
int const flags = (m_vreg[1] & 0x80) ? (TILE_FLIPX | TILE_FLIPY) : 0;
|
||||||
{
|
|
||||||
int flags;
|
|
||||||
static const int pritable[2][8][4] = /* table of priorities derived from the PROM */
|
|
||||||
{
|
|
||||||
{
|
|
||||||
{ 3,1,0,2 },
|
|
||||||
{ 1,3,0,2 },
|
|
||||||
{ 0,3,1,2 },
|
|
||||||
{ 0,1,3,2 },
|
|
||||||
{ 3,0,1,2 },
|
|
||||||
{ 1,0,3,2 },
|
|
||||||
{ 2,3,1,0 }, // (bg color should be taken from 1)
|
|
||||||
{ 3,1,2,0 } // (bg color should be taken from 1)
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{2,3,0,1},
|
|
||||||
{2,0,3,1},
|
|
||||||
{3,0,2,1},
|
|
||||||
{0,3,2,1},
|
|
||||||
{3,0,1,2},
|
|
||||||
{2,1,3,0},
|
|
||||||
{0,2,3,1},
|
|
||||||
{3,2,0,1}
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
int pri, i;
|
|
||||||
|
|
||||||
flags = (m_vreg[1] & 0x80) ? (TILE_FLIPX | TILE_FLIPY) : 0;
|
|
||||||
if (flags != m_flipscreen)
|
if (flags != m_flipscreen)
|
||||||
{
|
{
|
||||||
m_flipscreen = flags;
|
m_flipscreen = flags;
|
||||||
machine().tilemap().mark_all_dirty();
|
machine().tilemap().mark_all_dirty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bitmap.fill(m_palette->black_pen(), cliprect);
|
bitmap.fill(m_palette->black_pen(), cliprect);
|
||||||
|
|
||||||
pri = (m_blitter_bank & 0x70) >> 4;
|
int const pri = (m_blitter_bank & 0x70) >> 4;
|
||||||
for (i = 0; i < 4; i++)
|
#if 0
|
||||||
|
for (int i = 0; i < 4; i++)
|
||||||
|
m_bg_tilemap[m_visible_page][pritable[pri][3 - i]]->draw(bitmap, cliprect, 0, 0);
|
||||||
|
#else
|
||||||
|
for (int i = 0; i < 4; i++)
|
||||||
m_bg_tilemap[m_visible_page][pritable[m_priority][pri][3 - i]]->draw(screen, bitmap, cliprect, 0, 0);
|
m_bg_tilemap[m_visible_page][pritable[m_priority][pri][3 - i]]->draw(screen, bitmap, cliprect, 0, 0);
|
||||||
|
#endif
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
uint32_t homedata_state::screen_update_pteacher(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
uint32_t homedata_state::screen_update_pteacher(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||||
{
|
{
|
||||||
int flags, scroll_low, scroll_high;
|
|
||||||
|
|
||||||
|
|
||||||
/* blank screen */
|
/* blank screen */
|
||||||
if (m_vreg[0x3] == 0xc1 && m_vreg[0x4] == 0xc0 && m_vreg[0x5] == 0xff)
|
if (m_vreg[0x3] == 0xc1 && m_vreg[0x4] == 0xc0 && m_vreg[0x5] == 0xff)
|
||||||
{
|
{
|
||||||
@ -924,7 +902,7 @@ uint32_t homedata_state::screen_update_pteacher(screen_device &screen, bitmap_in
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
flags = (m_vreg[1] & 0x80) ? (TILE_FLIPX | TILE_FLIPY) : 0;
|
int const flags = (m_vreg[1] & 0x80) ? (TILE_FLIPX | TILE_FLIPY) : 0;
|
||||||
if (flags != m_flipscreen)
|
if (flags != m_flipscreen)
|
||||||
{
|
{
|
||||||
m_flipscreen = flags;
|
m_flipscreen = flags;
|
||||||
@ -957,6 +935,7 @@ uint32_t homedata_state::screen_update_pteacher(screen_device &screen, bitmap_in
|
|||||||
blanked = c1 c0 ff --
|
blanked = c1 c0 ff --
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
int scroll_low;
|
||||||
if (m_blitter_bank & 0x04)
|
if (m_blitter_bank & 0x04)
|
||||||
{
|
{
|
||||||
if (m_vreg[0x4] == 0xae || m_vreg[0x4] == 0xb8)
|
if (m_vreg[0x4] == 0xae || m_vreg[0x4] == 0xb8)
|
||||||
@ -998,13 +977,14 @@ uint32_t homedata_state::screen_update_pteacher(screen_device &screen, bitmap_in
|
|||||||
scroll_low = 7 - (m_vreg[0x4] & 0x0f);
|
scroll_low = 7 - (m_vreg[0x4] & 0x0f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
scroll_high = m_vreg[0xb] >> 2;
|
int const scroll_high = m_vreg[0xb] >> 2;
|
||||||
|
|
||||||
m_bg_tilemap[m_visible_page][0]->set_scrollx(0, scroll_high * 8 + scroll_low);
|
m_bg_tilemap[m_visible_page][0]->set_scrollx(0, scroll_high * 8 + scroll_low);
|
||||||
m_bg_tilemap[m_visible_page][1]->set_scrollx(0, scroll_high * 8 + scroll_low);
|
m_bg_tilemap[m_visible_page][1]->set_scrollx(0, scroll_high * 8 + scroll_low);
|
||||||
|
|
||||||
m_bg_tilemap[m_visible_page][0]->draw(screen, bitmap, cliprect, 0, 0);
|
m_bg_tilemap[m_visible_page][0]->draw(screen, bitmap, cliprect, 0, 0);
|
||||||
m_bg_tilemap[m_visible_page][1]->draw(screen, bitmap, cliprect, 0, 0);
|
m_bg_tilemap[m_visible_page][1]->draw(screen, bitmap, cliprect, 0, 0);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -69,16 +69,6 @@ void ladyfrog_state::ladyfrog_gfxctrl2_w(uint8_t data)
|
|||||||
m_bg_tilemap->mark_all_dirty();
|
m_bg_tilemap->mark_all_dirty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifdef UNUSED_FUNCTION
|
|
||||||
int gfxctrl;
|
|
||||||
|
|
||||||
uint8_t ladyfrog_state::ladyfrog_gfxctrl_r()
|
|
||||||
{
|
|
||||||
return gfxctrl;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
uint8_t ladyfrog_state::ladyfrog_scrlram_r(offs_t offset)
|
uint8_t ladyfrog_state::ladyfrog_scrlram_r(offs_t offset)
|
||||||
{
|
{
|
||||||
return m_scrlram[offset];
|
return m_scrlram[offset];
|
||||||
|
@ -37,7 +37,6 @@ void nbmj8900_state::palette_type1_w(offs_t offset, uint8_t data)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef UNUSED_FUNCTION
|
|
||||||
uint8_t nbmj8900_state::palette_type2_r(offs_t offset)
|
uint8_t nbmj8900_state::palette_type2_r(offs_t offset)
|
||||||
{
|
{
|
||||||
return m_palette_ptr[offset];
|
return m_palette_ptr[offset];
|
||||||
@ -81,7 +80,6 @@ void nbmj8900_state::palette_type3_w(offs_t offset, uint8_t data)
|
|||||||
|
|
||||||
m_palette->set_pen_color((offset >> 1), pal4bit(r), pal4bit(g), pal4bit(b));
|
m_palette->set_pen_color((offset >> 1), pal4bit(r), pal4bit(g), pal4bit(b));
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
void nbmj8900_state::clutsel_w(uint8_t data)
|
void nbmj8900_state::clutsel_w(uint8_t data)
|
||||||
{
|
{
|
||||||
|
@ -1,66 +0,0 @@
|
|||||||
// license:BSD-3-Clause
|
|
||||||
// copyright-holders:Nicola Salmoria
|
|
||||||
#include "emu.h"
|
|
||||||
#include "includes/overdriv.h"
|
|
||||||
|
|
||||||
/***************************************************************************
|
|
||||||
|
|
||||||
Callbacks for the K053247
|
|
||||||
|
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
K053246_CB_MEMBER(overdriv_state::sprite_callback)
|
|
||||||
{
|
|
||||||
int pri = (*color & 0xffe0) >> 5; /* ??????? */
|
|
||||||
if (pri)
|
|
||||||
*priority_mask = 0x02;
|
|
||||||
else
|
|
||||||
*priority_mask = 0x00;
|
|
||||||
|
|
||||||
*color = m_sprite_colorbase + (*color & 0x001f);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************
|
|
||||||
|
|
||||||
Callbacks for the K051316
|
|
||||||
|
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
K051316_CB_MEMBER(overdriv_state::zoom_callback_1)
|
|
||||||
{
|
|
||||||
*flags = (*color & 0x40) ? TILE_FLIPX : 0;
|
|
||||||
*code |= ((*color & 0x03) << 8);
|
|
||||||
*color = m_zoom_colorbase[0] + ((*color & 0x3c) >> 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
K051316_CB_MEMBER(overdriv_state::zoom_callback_2)
|
|
||||||
{
|
|
||||||
*flags = (*color & 0x40) ? TILE_FLIPX : 0;
|
|
||||||
*code |= ((*color & 0x03) << 8);
|
|
||||||
*color = m_zoom_colorbase[1] + ((*color & 0x3c) >> 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************
|
|
||||||
|
|
||||||
Display refresh
|
|
||||||
|
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
uint32_t overdriv_state::screen_update_overdriv(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
|
||||||
{
|
|
||||||
m_sprite_colorbase = m_k053251->get_palette_index(k053251_device::CI0);
|
|
||||||
m_road_colorbase[1] = m_k053251->get_palette_index(k053251_device::CI1);
|
|
||||||
m_road_colorbase[0] = m_k053251->get_palette_index(k053251_device::CI2);
|
|
||||||
m_zoom_colorbase[1] = m_k053251->get_palette_index(k053251_device::CI3);
|
|
||||||
m_zoom_colorbase[0] = m_k053251->get_palette_index(k053251_device::CI4);
|
|
||||||
|
|
||||||
screen.priority().fill(0, cliprect);
|
|
||||||
|
|
||||||
m_k051316_1->zoom_draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
|
|
||||||
m_k051316_2->zoom_draw(screen, bitmap, cliprect, 0, 1);
|
|
||||||
|
|
||||||
m_k053246->k053247_sprites_draw( bitmap,cliprect);
|
|
||||||
return 0;
|
|
||||||
}
|
|
@ -7,8 +7,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "emu.h"
|
#include "emu.h"
|
||||||
|
|
||||||
#include "includes/tx0.h"
|
#include "includes/tx0.h"
|
||||||
|
|
||||||
#include "video/crt.h"
|
#include "video/crt.h"
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
@ -222,14 +222,12 @@ void tx0_state::tx0_draw_vline(bitmap_ind16 &bitmap, int x, int y, int height, i
|
|||||||
tx0_plot_pixel(bitmap, x, y++, color);
|
tx0_plot_pixel(bitmap, x, y++, color);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef UNUSED_FUNCTION
|
|
||||||
/* draw a horizontal line */
|
/* draw a horizontal line */
|
||||||
void tx0_state::tx0_draw_hline(bitmap_ind16 &bitmap, int x, int y, int width, int color)
|
void tx0_state::tx0_draw_hline(bitmap_ind16 &bitmap, int x, int y, int width, int color)
|
||||||
{
|
{
|
||||||
while (width--)
|
while (width--)
|
||||||
tx0_plot_pixel(bitmap, x++, y, color);
|
tx0_plot_pixel(bitmap, x++, y, color);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
draw the operator control panel (fixed backdrop)
|
draw the operator control panel (fixed backdrop)
|
||||||
|
Loading…
Reference in New Issue
Block a user