hp9k_3xx video improvements (#4129)
* hp98543: fix planemasks (nw) * hp9k_3xx: use 98543 dio card on certain models (nw) 320: the QA-2 ROM version doesn't know about the 98544 332: the internal card is logically a DIO card, so let's use the DIO implementation instead of duplicating all the code * hp9k_3xx: fix indent (nw)
This commit is contained in:
parent
a56f3ebf85
commit
4623ffc0a4
@ -38,13 +38,13 @@ MACHINE_CONFIG_START(dio16_98543_device::device_add_mconfig)
|
|||||||
topcat_device &topcat0(TOPCAT(config, "topcat0", XTAL(35904000)));
|
topcat_device &topcat0(TOPCAT(config, "topcat0", XTAL(35904000)));
|
||||||
topcat0.set_fb_width(1024);
|
topcat0.set_fb_width(1024);
|
||||||
topcat0.set_fb_height(400);
|
topcat0.set_fb_height(400);
|
||||||
topcat0.set_planemask(8);
|
topcat0.set_planemask(1);
|
||||||
topcat0.irq_out_cb().set(FUNC(dio16_98543_device::int0_w));
|
topcat0.irq_out_cb().set(FUNC(dio16_98543_device::int0_w));
|
||||||
|
|
||||||
topcat_device &topcat1(TOPCAT(config, "topcat1", XTAL(35904000)));
|
topcat_device &topcat1(TOPCAT(config, "topcat1", XTAL(35904000)));
|
||||||
topcat1.set_fb_width(1024);
|
topcat1.set_fb_width(1024);
|
||||||
topcat1.set_fb_height(400);
|
topcat1.set_fb_height(400);
|
||||||
topcat1.set_planemask(8);
|
topcat1.set_planemask(2);
|
||||||
topcat1.irq_out_cb().set(FUNC(dio16_98543_device::int1_w));
|
topcat1.irq_out_cb().set(FUNC(dio16_98543_device::int1_w));
|
||||||
|
|
||||||
topcat_device &topcat2(TOPCAT(config, "topcat2", XTAL(35904000)));
|
topcat_device &topcat2(TOPCAT(config, "topcat2", XTAL(35904000)));
|
||||||
@ -59,7 +59,7 @@ MACHINE_CONFIG_START(dio16_98543_device::device_add_mconfig)
|
|||||||
topcat3.set_planemask(8);
|
topcat3.set_planemask(8);
|
||||||
topcat3.irq_out_cb().set(FUNC(dio16_98543_device::int3_w));
|
topcat3.irq_out_cb().set(FUNC(dio16_98543_device::int3_w));
|
||||||
|
|
||||||
NEREID(config, "nereid", 0);
|
NEREID(config, m_nereid, 0);
|
||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
const tiny_rom_entry *dio16_98543_device::device_rom_region() const
|
const tiny_rom_entry *dio16_98543_device::device_rom_region() const
|
||||||
|
@ -77,8 +77,6 @@ public:
|
|||||||
hp9k3xx_state(const machine_config &mconfig, device_type type, const char *tag) :
|
hp9k3xx_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_TAG),
|
m_maincpu(*this, MAINCPU_TAG),
|
||||||
m_vram16(*this, "vram16"),
|
|
||||||
m_vram(*this, "vram"),
|
|
||||||
m_diag_led(*this, "led_diag_%u", 0U)
|
m_diag_led(*this, "led_diag_%u", 0U)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
@ -100,13 +98,8 @@ private:
|
|||||||
virtual void machine_start() override;
|
virtual void machine_start() override;
|
||||||
virtual void driver_start() override;
|
virtual void driver_start() override;
|
||||||
|
|
||||||
optional_shared_ptr<uint16_t> m_vram16;
|
|
||||||
optional_shared_ptr<uint32_t> m_vram;
|
|
||||||
output_finder<8> m_diag_led;
|
output_finder<8> m_diag_led;
|
||||||
|
|
||||||
uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
|
||||||
uint32_t hp_medres_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
|
||||||
|
|
||||||
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;
|
||||||
void set_bus_error(uint32_t address, bool write, uint16_t mem_mask);
|
void set_bus_error(uint32_t address, bool write, uint16_t mem_mask);
|
||||||
|
|
||||||
@ -142,30 +135,6 @@ private:
|
|||||||
emu_timer *m_bus_error_timer;
|
emu_timer *m_bus_error_timer;
|
||||||
};
|
};
|
||||||
|
|
||||||
uint32_t hp9k3xx_state::hp_medres_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
|
|
||||||
{
|
|
||||||
uint32_t *scanline;
|
|
||||||
int x, y;
|
|
||||||
uint32_t pixels;
|
|
||||||
uint32_t m_palette[2] = { 0x00000000, 0xffffffff };
|
|
||||||
|
|
||||||
for (y = 0; y < 390; y++)
|
|
||||||
{
|
|
||||||
scanline = &bitmap.pix32(y);
|
|
||||||
for (x = 0; x < 512/4; x++)
|
|
||||||
{
|
|
||||||
pixels = m_vram[(y * 256) + x];
|
|
||||||
|
|
||||||
*scanline++ = m_palette[(pixels>>24) & 1];
|
|
||||||
*scanline++ = m_palette[(pixels>>16) & 1];
|
|
||||||
*scanline++ = m_palette[(pixels>>8) & 1];
|
|
||||||
*scanline++ = m_palette[(pixels & 1)];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// shared mappings for all 9000/3xx systems
|
// shared mappings for all 9000/3xx systems
|
||||||
void hp9k3xx_state::hp9k3xx_common(address_map &map)
|
void hp9k3xx_state::hp9k3xx_common(address_map &map)
|
||||||
{
|
{
|
||||||
@ -214,9 +183,6 @@ void hp9k3xx_state::hp9k332_map(address_map &map)
|
|||||||
{
|
{
|
||||||
hp9k3xx_common(map);
|
hp9k3xx_common(map);
|
||||||
|
|
||||||
map(0x00200000, 0x002fffff).ram().share("vram"); // 98544 mono framebuffer
|
|
||||||
map(0x00560000, 0x00563fff).rom().region("graphics", 0x0000); // 98544 mono ROM
|
|
||||||
|
|
||||||
map(0xffb00000, 0xffbfffff).rw(FUNC(hp9k3xx_state::buserror_r), FUNC(hp9k3xx_state::buserror_w));
|
map(0xffb00000, 0xffbfffff).rw(FUNC(hp9k3xx_state::buserror_r), FUNC(hp9k3xx_state::buserror_w));
|
||||||
map(0xffc00000, 0xffffffff).ram();
|
map(0xffc00000, 0xffffffff).ram();
|
||||||
}
|
}
|
||||||
@ -260,11 +226,6 @@ void hp9k3xx_state::hp9k382_map(address_map &map)
|
|||||||
map(0x0051a000, 0x0051afff).rw(FUNC(hp9k3xx_state::buserror_r), FUNC(hp9k3xx_state::buserror_w)); // no "Alpha display"
|
map(0x0051a000, 0x0051afff).rw(FUNC(hp9k3xx_state::buserror_r), FUNC(hp9k3xx_state::buserror_w)); // no "Alpha display"
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t hp9k3xx_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Input ports */
|
/* Input ports */
|
||||||
static INPUT_PORTS_START( hp9k330 )
|
static INPUT_PORTS_START( hp9k330 )
|
||||||
INPUT_PORTS_END
|
INPUT_PORTS_END
|
||||||
@ -409,7 +370,7 @@ MACHINE_CONFIG_START(hp9k3xx_state::hp9k320)
|
|||||||
add_dio32_bus(config);
|
add_dio32_bus(config);
|
||||||
|
|
||||||
DIO32_SLOT(config, "sl0", 0, "diobus", dio16_cards, "human_interface", true);
|
DIO32_SLOT(config, "sl0", 0, "diobus", dio16_cards, "human_interface", true);
|
||||||
DIO32_SLOT(config, "sl1", 0, "diobus", dio16_cards, "98544", false);
|
DIO32_SLOT(config, "sl1", 0, "diobus", dio16_cards, "98543", false);
|
||||||
DIO32_SLOT(config, "sl2", 0, "diobus", dio16_cards, "98603b", false);
|
DIO32_SLOT(config, "sl2", 0, "diobus", dio16_cards, "98603b", false);
|
||||||
DIO32_SLOT(config, "sl3", 0, "diobus", dio16_cards, "98644", false);
|
DIO32_SLOT(config, "sl3", 0, "diobus", dio16_cards, "98644", false);
|
||||||
DIO32_SLOT(config, "sl4", 0, "diobus", dio32_cards, "98620", false);
|
DIO32_SLOT(config, "sl4", 0, "diobus", dio32_cards, "98620", false);
|
||||||
@ -441,16 +402,9 @@ MACHINE_CONFIG_START(hp9k3xx_state::hp9k332)
|
|||||||
DIO16_SLOT(config, "sl0", 0, "diobus", dio16_cards, "human_interface", true);
|
DIO16_SLOT(config, "sl0", 0, "diobus", dio16_cards, "human_interface", true);
|
||||||
DIO16_SLOT(config, "sl1", 0, "diobus", dio16_cards, "98603b", false);
|
DIO16_SLOT(config, "sl1", 0, "diobus", dio16_cards, "98603b", false);
|
||||||
DIO16_SLOT(config, "sl2", 0, "diobus", dio16_cards, "98644", false);
|
DIO16_SLOT(config, "sl2", 0, "diobus", dio16_cards, "98644", false);
|
||||||
DIO16_SLOT(config, "sl3", 0, "diobus", dio16_cards, nullptr, false);
|
DIO16_SLOT(config, "sl3", 0, "diobus", dio16_cards, "98543", false);
|
||||||
DIO16_SLOT(config, "sl4", 0, "diobus", dio16_cards, nullptr, false);
|
DIO16_SLOT(config, "sl4", 0, "diobus", dio16_cards, nullptr, false);
|
||||||
|
|
||||||
|
|
||||||
MCFG_SCREEN_ADD("screen", RASTER)
|
|
||||||
MCFG_SCREEN_UPDATE_DRIVER(hp9k3xx_state, hp_medres_update)
|
|
||||||
MCFG_SCREEN_SIZE(512,390)
|
|
||||||
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 390-1)
|
|
||||||
MCFG_SCREEN_REFRESH_RATE(70)
|
|
||||||
|
|
||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
MACHINE_CONFIG_START(hp9k3xx_state::hp9k340)
|
MACHINE_CONFIG_START(hp9k3xx_state::hp9k340)
|
||||||
@ -516,9 +470,6 @@ ROM_START( hp9k332 )
|
|||||||
ROM_REGION( 0x20000, MAINCPU_TAG, 0 )
|
ROM_REGION( 0x20000, MAINCPU_TAG, 0 )
|
||||||
ROM_LOAD16_BYTE( "1818-4796.bin", 0x000000, 0x010000, CRC(8a7642da) SHA1(7ba12adcea85916d18b021255391bec806c32e94) )
|
ROM_LOAD16_BYTE( "1818-4796.bin", 0x000000, 0x010000, CRC(8a7642da) SHA1(7ba12adcea85916d18b021255391bec806c32e94) )
|
||||||
ROM_LOAD16_BYTE( "1818-4797.bin", 0x000001, 0x010000, CRC(98129eb1) SHA1(f3451a854060f1be1bee9f17c5c198b4b1cd61ac) )
|
ROM_LOAD16_BYTE( "1818-4797.bin", 0x000001, 0x010000, CRC(98129eb1) SHA1(f3451a854060f1be1bee9f17c5c198b4b1cd61ac) )
|
||||||
|
|
||||||
ROM_REGION( 0x4000, "graphics", ROMREGION_ERASEFF | ROMREGION_BE | ROMREGION_32BIT )
|
|
||||||
ROM_LOAD16_BYTE( "5180-0471.bin", 0x000001, 0x002000, CRC(7256af2e) SHA1(584e8d4dcae8c898c1438125dc9c4709631b32f7) )
|
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
ROM_START( hp9k340 )
|
ROM_START( hp9k340 )
|
||||||
|
Loading…
Reference in New Issue
Block a user