-dataeast/karnov.cpp: Updated ROM labels for Japanese version based on auction photo.

-midway/williams.cpp: Tidy a little more.
This commit is contained in:
Vas Crabb 2024-04-20 03:58:08 +10:00
parent 30f8b80f57
commit a09cb30067
5 changed files with 49 additions and 51 deletions

View File

@ -842,8 +842,8 @@ void karnov_state::chelnovjbl(machine_config &config)
*
*************************************/
ROM_START( karnov ) /* DE-0248-3 main board, DE-259-0 sub/rom board */
ROM_REGION( 0x60000, "maincpu", 0 ) /* 6*64k for 68000 code */
ROM_START( karnov ) // DE-0248-3 main board, DE-259-0 sub/rom board
ROM_REGION( 0x60000, "maincpu", 0 ) // 6*64k for 68000 code
ROM_LOAD16_BYTE( "dn08-6.j15", 0x00000, 0x10000, CRC(4c60837f) SHA1(6886e6ee1d1563c3011b8fea79e7435f983a3ee0) )
ROM_LOAD16_BYTE( "dn11-6.j20", 0x00001, 0x10000, CRC(cd4abb99) SHA1(b4482175f5d90941ad3aec6c2269a50f57a465ed) )
ROM_LOAD16_BYTE( "dn07-.j14", 0x20000, 0x10000, CRC(fc14291b) SHA1(c92207cf70d4c887cd0f53208e8090c7f614c1d3) )
@ -851,7 +851,7 @@ ROM_START( karnov ) /* DE-0248-3 main board, DE-259-0 sub/rom board */
ROM_LOAD16_BYTE( "dn06-5.j13", 0x40000, 0x10000, CRC(29d64e42) SHA1(c07ff5f29b7ccd5fc97b5086bcae57ab6eb29330) )
ROM_LOAD16_BYTE( "dn09-5.j17", 0x40001, 0x10000, CRC(072d7c49) SHA1(92195b89274d066a9c1f87dd810683ea66edaff4) )
ROM_REGION( 0x10000, "audiocpu", 0 ) /* 6502 Sound CPU */
ROM_REGION( 0x10000, "audiocpu", 0 ) // 6502 Sound CPU
ROM_LOAD( "dn05-5.f3", 0x8000, 0x8000, CRC(fa1a31a8) SHA1(5007a625be03c546d2a78444d72c28761b10cdb0) )
ROM_REGION( 0x1000, "mcu", 0 ) // i8751 MCU (Note: Dump taken from a Rev 5 board)
@ -877,14 +877,14 @@ ROM_START( karnov ) /* DE-0248-3 main board, DE-259-0 sub/rom board */
ROM_LOAD( "dn19-5.f18", 0x58000, 0x08000, CRC(8fd4fa40) SHA1(1870fb0c5c64fbc53a10115f0f3c7624cf2465db) )
ROM_REGION( 0x0800, "proms", 0 )
ROM_LOAD( "dn-21.k8", 0x0000, 0x0400, CRC(aab0bb93) SHA1(545707fbb1007fca1fe297c5fce61e485e7084fc) ) /* MB7132E BPROM */
ROM_LOAD( "dn-20.l6", 0x0400, 0x0400, CRC(02f78ffb) SHA1(cb4dd8b0ce3c404195321b17e10f51352f506958) ) /* MB7122E BPROM */
ROM_LOAD( "dn-21.k8", 0x0000, 0x0400, CRC(aab0bb93) SHA1(545707fbb1007fca1fe297c5fce61e485e7084fc) ) // MB7132E BPROM
ROM_LOAD( "dn-20.l6", 0x0400, 0x0400, CRC(02f78ffb) SHA1(cb4dd8b0ce3c404195321b17e10f51352f506958) ) // MB7122E BPROM
ROM_END
ROM_START( karnova ) /* DE-0248-3 main board, DE-259-0 sub/rom board */
ROM_REGION( 0x60000, "maincpu", 0 ) /* 6*64k for 68000 code */
ROM_LOAD16_BYTE( "dn08-5.j15", 0x00000, 0x10000, CRC(db92c264) SHA1(bd4bcd984a3455eedd2b78dc2090c9d625025671) ) /* also known to be labeled DN08-5E */
ROM_LOAD16_BYTE( "dn11-5.j20", 0x00001, 0x10000, CRC(05669b4b) SHA1(c78d0da5afc66750dd9841a7d4f8f244d878c081) ) /* also known to be labeled DN11-5E */
ROM_START( karnova ) // DE-0248-3 main board, DE-259-0 sub/rom board
ROM_REGION( 0x60000, "maincpu", 0 ) // 6*64k for 68000 code
ROM_LOAD16_BYTE( "dn08-5.j15", 0x00000, 0x10000, CRC(db92c264) SHA1(bd4bcd984a3455eedd2b78dc2090c9d625025671) ) // also known to be labeled DN08-5E
ROM_LOAD16_BYTE( "dn11-5.j20", 0x00001, 0x10000, CRC(05669b4b) SHA1(c78d0da5afc66750dd9841a7d4f8f244d878c081) ) // also known to be labeled DN11-5E
ROM_LOAD16_BYTE( "dn07-.j14", 0x20000, 0x10000, CRC(fc14291b) SHA1(c92207cf70d4c887cd0f53208e8090c7f614c1d3) )
ROM_LOAD16_BYTE( "dn10-.j18", 0x20001, 0x10000, CRC(a4a34e37) SHA1(f40b680cc7312c844f81d01997f9a47c48d36e88) )
ROM_LOAD16_BYTE( "dn06-5.j13", 0x40000, 0x10000, CRC(29d64e42) SHA1(c07ff5f29b7ccd5fc97b5086bcae57ab6eb29330) )
@ -916,24 +916,24 @@ ROM_START( karnova ) /* DE-0248-3 main board, DE-259-0 sub/rom board */
ROM_LOAD( "dn19-5.f18", 0x58000, 0x08000, CRC(8fd4fa40) SHA1(1870fb0c5c64fbc53a10115f0f3c7624cf2465db) )
ROM_REGION( 0x0800, "proms", 0 )
ROM_LOAD( "dn-21.k8", 0x0000, 0x0400, CRC(aab0bb93) SHA1(545707fbb1007fca1fe297c5fce61e485e7084fc) ) /* MB7132E BPROM */
ROM_LOAD( "dn-20.l6", 0x0400, 0x0400, CRC(02f78ffb) SHA1(cb4dd8b0ce3c404195321b17e10f51352f506958) ) /* MB7122E BPROM */
ROM_LOAD( "dn-21.k8", 0x0000, 0x0400, CRC(aab0bb93) SHA1(545707fbb1007fca1fe297c5fce61e485e7084fc) ) // MB7132E BPROM
ROM_LOAD( "dn-20.l6", 0x0400, 0x0400, CRC(02f78ffb) SHA1(cb4dd8b0ce3c404195321b17e10f51352f506958) ) // MB7122E BPROM
ROM_END
ROM_START( karnovj ) /* DE-0248-3 main board, DE-259-0 sub/rom board */
ROM_REGION( 0x60000, "maincpu", 0 ) /* 6*64k for 68000 code */
ROM_LOAD16_BYTE( "kar8.j15", 0x00000, 0x10000, CRC(3e17e268) SHA1(3a63928bb0148175519540f9d891b03590094dfb) )
ROM_LOAD16_BYTE( "kar11.j20", 0x00001, 0x10000, CRC(417c936d) SHA1(d31f9291f18c3d5e3c4430768396e1ac10fd9ea3) )
ROM_START( karnovj ) // DE-0248-3 main board, DE-259-0 sub/rom board
ROM_REGION( 0x60000, "maincpu", 0 ) // 6*64k for 68000 code
ROM_LOAD16_BYTE( "dn08-.j15", 0x00000, 0x10000, CRC(3e17e268) SHA1(3a63928bb0148175519540f9d891b03590094dfb) )
ROM_LOAD16_BYTE( "dn11-.j20", 0x00001, 0x10000, CRC(417c936d) SHA1(d31f9291f18c3d5e3c4430768396e1ac10fd9ea3) )
ROM_LOAD16_BYTE( "dn07-.j14", 0x20000, 0x10000, CRC(fc14291b) SHA1(c92207cf70d4c887cd0f53208e8090c7f614c1d3) )
ROM_LOAD16_BYTE( "dn10-.j18", 0x20001, 0x10000, CRC(a4a34e37) SHA1(f40b680cc7312c844f81d01997f9a47c48d36e88) )
ROM_LOAD16_BYTE( "kar6.j13", 0x40000, 0x10000, CRC(c641e195) SHA1(fa7a2eba70e730f72a8d868160af9c41f9b2e5b0) )
ROM_LOAD16_BYTE( "kar9.j17", 0x40001, 0x10000, CRC(d420658d) SHA1(4c7e67a80e419b8b94eb015f7f0af0a01f00c28e) )
ROM_LOAD16_BYTE( "dn06-.j13", 0x40000, 0x10000, CRC(c641e195) SHA1(fa7a2eba70e730f72a8d868160af9c41f9b2e5b0) )
ROM_LOAD16_BYTE( "dn09-.j17", 0x40001, 0x10000, CRC(d420658d) SHA1(4c7e67a80e419b8b94eb015f7f0af0a01f00c28e) )
ROM_REGION( 0x10000, "audiocpu", 0 ) /* 6502 Sound CPU */
ROM_LOAD( "kar5.f3", 0x8000, 0x8000, CRC(7c9158f1) SHA1(dfba7b3abd6b8d6991f0207cd252ee652a6050c2) )
ROM_REGION( 0x10000, "audiocpu", 0 ) // 6502 Sound CPU
ROM_LOAD( "dn05-.f3", 0x8000, 0x8000, CRC(7c9158f1) SHA1(dfba7b3abd6b8d6991f0207cd252ee652a6050c2) )
ROM_REGION( 0x1000, "mcu", 0 ) // i8751 MCU (BAD_DUMP because it was created from the US version)
ROM_LOAD( "karnovj_i8751.k14", 0x0000, 0x1000, BAD_DUMP CRC(5a8c4d28) SHA1(58cc912d91e569503d5a20fa3180fbdca595e39f) )
ROM_REGION( 0x1000, "mcu", 0 ) // i8751 MCU - seen with DN-3 label on Japanese PCB, "3" is handwritten
ROM_LOAD( "dn-3.k14", 0x0000, 0x1000, BAD_DUMP CRC(5a8c4d28) SHA1(58cc912d91e569503d5a20fa3180fbdca595e39f) ) // hand-crafted based on US version
ROM_REGION( 0x08000, "char", 0 )
ROM_LOAD( "dn00-.c5", 0x00000, 0x08000, CRC(0ed77c6d) SHA1(4ec86ac56c01c158a580dc13dea3e5cbdf90d0e9) )

View File

@ -611,7 +611,7 @@ void williams_state::alienar_main_map(address_map &map)
*
*************************************/
void blaster_state::main_map(address_map &map)
void blaster_state::blaster_main_map(address_map &map)
{
map(0x0000, 0xbfff).ram().share(m_videoram);
map(0x0000, 0x8fff).view(m_rom_view);
@ -620,7 +620,7 @@ void blaster_state::main_map(address_map &map)
map(0xc000, 0xc00f).mirror(0x03f0).writeonly().share(m_paletteram);
map(0xc804, 0xc807).mirror(0x00f0).rw(m_pia[0], FUNC(pia6821_device::read), FUNC(pia6821_device::write));
map(0xc80c, 0xc80f).mirror(0x00f0).rw(m_pia[1], FUNC(pia6821_device::read), FUNC(pia6821_device::write));
map(0xc900, 0xc93f).w(FUNC(blaster_state::vram_select_w));
map(0xc900, 0xc93f).w(FUNC(blaster_state::blaster_vram_select_w));
map(0xc940, 0xc97f).w(FUNC(blaster_state::remap_select_w));
map(0xc980, 0xc9bf).w(FUNC(blaster_state::bank_select_w));
map(0xc9c0, 0xc9ff).w(FUNC(blaster_state::video_control_w));
@ -1789,12 +1789,14 @@ void blaster_state::blastkit(machine_config &config)
williams_b2(config);
m_blitter_clip_address = 0x9700;
m_maincpu->set_addrmap(AS_PROGRAM, &blaster_state::blaster_main_map);
// video hardware
m_screen->set_screen_update(FUNC(blaster_state::screen_update));
// pia
m_pia[0]->readpa_handler().set("mux_a", FUNC(ls157_x2_device::output_r));
m_pia[0]->cb2_handler().set("mux_a", FUNC(ls157_x2_device::select_w));
m_pia[0]->readpa_handler().set(m_muxa, FUNC(ls157_x2_device::output_r));
m_pia[0]->cb2_handler().set(m_muxa, FUNC(ls157_x2_device::select_w));
// All multiplexers on Blaster interface board are really LS257 with OC tied to GND (which is equivalent to LS157)
LS157_X2(config, m_muxa, 0);
@ -1813,16 +1815,15 @@ void blaster_state::blaster(machine_config &config)
// pia
m_pia[0]->readpb_handler().set("mux_b", FUNC(ls157_device::output_r)).mask(0x0f);
m_pia[0]->readpb_handler().append_ioport("IN1").mask(0xf0);
m_pia[0]->cb2_handler().set("mux_a", FUNC(ls157_x2_device::select_w));
m_pia[0]->cb2_handler().append("mux_b", FUNC(ls157_device::select_w));
// IC7 (for PA0-PA3) + IC5 (for PA4-PA7)
m_muxa->a_in_callback().set(FUNC(blaster_state::port_0_49way_r));
m_muxa->b_in_callback().set_ioport("IN3");
LS157(config, m_muxb, 0); // IC3
m_muxb->a_in_callback().set_ioport("INP1");
m_muxb->b_in_callback().set_ioport("INP2");
ls157_device &muxb(LS157(config, "mux_b", 0)); // IC3
muxb.a_in_callback().set_ioport("INP1");
muxb.b_in_callback().set_ioport("INP2");
INPUT_MERGER_ANY_HIGH(config, "soundirq_b").output_handler().set_inputline("soundcpu_b", M6808_IRQ_LINE);
@ -1944,9 +1945,9 @@ void tshoot_state::tshoot(machine_config &config)
m_maincpu->set_addrmap(AS_PROGRAM, &tshoot_state::d000_rom_map);
// pia
m_pia[0]->readpa_handler().set("mux", FUNC(ls157_x2_device::output_r));
m_pia[0]->readpa_handler().set(m_mux, FUNC(ls157_x2_device::output_r));
m_pia[0]->writepb_handler().set(FUNC(tshoot_state::lamp_w));
m_pia[0]->ca2_handler().set("mux", FUNC(ls157_x2_device::select_w));
m_pia[0]->ca2_handler().set(m_mux, FUNC(ls157_x2_device::select_w));
m_pia[0]->irqa_handler().set("mainirq", FUNC(input_merger_any_high_device::in_w<0>));
m_pia[0]->irqb_handler().set("mainirq", FUNC(input_merger_any_high_device::in_w<1>));
@ -1972,8 +1973,8 @@ void joust2_state::joust2(machine_config &config)
// pia
m_pia[0]->readpa_handler().set_ioport("IN0").mask(0xf0);
m_pia[0]->readpa_handler().append("mux", FUNC(ls157_device::output_r)).mask(0x0f);
m_pia[0]->ca2_handler().set("mux", FUNC(ls157_device::select_w));
m_pia[0]->readpa_handler().append(m_mux, FUNC(ls157_device::output_r)).mask(0x0f);
m_pia[0]->ca2_handler().set(m_mux, FUNC(ls157_device::select_w));
m_pia[1]->readpa_handler().set_ioport("IN2");
m_pia[1]->writepb_handler().set(FUNC(joust2_state::snd_cmd_w)); // this goes both to the sound cpu AND to the s11 bg cpu

View File

@ -123,7 +123,7 @@ protected:
virtual void video_start() override;
u8 port_0_49way_r();
virtual void vram_select_w(u8 data);
void vram_select_w(u8 data);
void sinistar_vram_select_w(u8 data);
void cmos_4bit_w(offs_t offset, u8 data);
void blitter_w(address_space &space, offs_t offset, u8 data);
@ -142,7 +142,7 @@ protected:
void williams_base(machine_config &config);
void williams_muxed(machine_config &config);
virtual void main_map(address_map &map);
void main_map(address_map &map);
void bubbles_main_map(address_map &map);
void sinistar_main_map(address_map &map);
void spdball_main_map(address_map &map);
@ -217,7 +217,6 @@ public:
blaster_state(const machine_config &mconfig, device_type type, const char *tag) :
williams_state(mconfig, type, tag),
m_muxa(*this, "mux_a"),
m_muxb(*this, "mux_b"),
m_mainbank(*this, "mainbank")
{ }
@ -231,13 +230,12 @@ protected:
private:
required_device<ls157_x2_device> m_muxa;
optional_device<ls157_device> m_muxb;
required_memory_bank m_mainbank;
rgb_t m_color0;
uint8_t m_video_control;
virtual void vram_select_w(u8 data) override;
void blaster_vram_select_w(u8 data);
void bank_select_w(u8 data);
void remap_select_w(u8 data);
void video_control_w(u8 data);
@ -246,7 +244,7 @@ private:
virtual uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) override;
virtual void main_map(address_map &map) override;
void blaster_main_map(address_map &map);
};
// base Williams 2nd gen hardware

View File

@ -397,7 +397,7 @@ void blaster_state::machine_start()
{
williams_state::machine_start();
/* banking is different for blaster */
// banking is different for blaster
m_mainbank->configure_entries(0, 16, memregion("maincpu")->base() + 0x10000, 0x4000);
}
@ -409,18 +409,18 @@ void blaster_state::machine_reset()
}
void blaster_state::vram_select_w(u8 data)
void blaster_state::blaster_vram_select_w(u8 data)
{
/* VRAM/ROM banking from bit 0 */
// VRAM/ROM banking from bit 0
if (BIT(data, 0))
m_rom_view.select(0);
else
m_rom_view.disable();
/* cocktail flip from bit 1 */
// cocktail flip from bit 1
m_cocktail = BIT(data, 1);
/* window enable from bit 2 (clips to 0x9700) */
// window enable from bit 2 (clips to 0x9700)
m_blitter_window_enable = BIT(data, 2);
}

View File

@ -210,24 +210,23 @@ void williams2_state::video_start()
uint32_t williams_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
// precompute the palette
rgb_t pens[16];
/* precompute the palette */
for (int x = 0; x < 16; x++)
pens[x] = m_palette->pen_color(m_paletteram[x]);
/* loop over rows */
// loop over rows
for (int y = cliprect.min_y; y <= cliprect.max_y; y++)
{
uint8_t const *const source = &m_videoram[y];
uint32_t *const dest = &bitmap.pix(y);
/* loop over columns */
// loop over columns
for (int x = cliprect.min_x & ~1; x <= cliprect.max_x; x += 2)
{
uint8_t const pix = source[(x/2) * 256];
dest[x+0] = pens[pix >> 4];
dest[x+1] = pens[pix & 0x0f];
uint8_t const pix = source[(x / 2) * 256];
dest[x + 0] = pens[pix >> 4];
dest[x + 1] = pens[pix & 0x0f];
}
}
return 0;