diff --git a/hash/nes.xml b/hash/nes.xml index 8d9ad57aaf5..0a57ed339f0 100644 --- a/hash/nes.xml +++ b/hash/nes.xml @@ -16488,7 +16488,7 @@ license:CC0 - + Highway Star (Jpn) 1987 Square @@ -30442,7 +30442,7 @@ license:CC0 - + Rad Racer (USA) 1987 Nintendo @@ -30462,7 +30462,7 @@ license:CC0 - + Rad Racer (Euro) 1988 Nintendo @@ -63266,6 +63266,38 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx + + Highway Star (Kaiser bootleg) + 19?? + Kaiser + + + + + + + + + + + + + + Highway Star (Whirlwind Manu bootleg) + 19?? + Whirlwind Manu + + + + + + + + + + + + High Way Star II (Ripped from F-646 HIGH K Power Sports 4-in-1) 19?? @@ -67406,22 +67438,6 @@ Also notice that VRAM & WRAM are probably incorrect for some of these sets, at t - - Highway Star (Asia, FDS conversion) - 19?? - Kaiser - - - - - - - - - - - - Hikari Shinwa - Palthena no Kagami (Asia, FDS conversion) 19?? @@ -69250,7 +69266,7 @@ Also notice that VRAM & WRAM are probably incorrect for some of these sets, at t - + Highway Star (FMG pirate) 1987 FMG diff --git a/src/devices/bus/nes/bootleg.cpp b/src/devices/bus/nes/bootleg.cpp index 4903f85ccf1..52fbf4b11f1 100644 --- a/src/devices/bus/nes/bootleg.cpp +++ b/src/devices/bus/nes/bootleg.cpp @@ -62,6 +62,7 @@ DEFINE_DEVICE_TYPE(NES_LH10, nes_lh10_device, "nes_lh10", "N DEFINE_DEVICE_TYPE(NES_LH28_LH54, nes_lh28_lh54_device, "nes_lh28_lh54", "NES Cart LH28/LH54 Pirate PCBs") DEFINE_DEVICE_TYPE(NES_LH31, nes_lh31_device, "nes_lh31", "NES Cart LH31 Pirate PCB") DEFINE_DEVICE_TYPE(NES_LH32, nes_lh32_device, "nes_lh32", "NES Cart LH32 Pirate PCB") +DEFINE_DEVICE_TYPE(NES_LH42, nes_lh42_device, "nes_lh42", "NES Cart LH42 Pirate PCB") DEFINE_DEVICE_TYPE(NES_LH51, nes_lh51_device, "nes_lh51", "NES Cart LH51 Pirate PCB") DEFINE_DEVICE_TYPE(NES_LH53, nes_lh53_device, "nes_lh53", "NES Cart LH53 Pirate PCB") DEFINE_DEVICE_TYPE(NES_2708, nes_2708_device, "nes_2708", "NES Cart BTL-2708 Pirate PCB") @@ -177,6 +178,11 @@ nes_lh32_device::nes_lh32_device(const machine_config &mconfig, const char *tag, { } +nes_lh42_device::nes_lh42_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) + : nes_nrom_device(mconfig, NES_LH42, tag, owner, clock), m_latch(0) +{ +} + nes_lg25_device::nes_lg25_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) : nes_nrom_device(mconfig, NES_LG25, tag, owner, clock), m_latch(0) { @@ -532,6 +538,21 @@ void nes_lh32_device::pcb_reset() m_latch = 0xf; } +void nes_lh42_device::device_start() +{ + common_start(); + save_item(NAME(m_latch)); +} + +void nes_lh42_device::pcb_reset() +{ + prg16_89ab(0); + prg16_cdef(m_prg_chunks - 1); // Last 16K is fixed + chr8(0, CHRRAM); + + m_latch = 0; +} + void nes_lg25_device::device_start() { common_start(); @@ -567,11 +588,6 @@ void nes_lh10_device::pcb_reset() std::fill(std::begin(m_reg), std::end(m_reg), 0x00); } -void nes_lh51_device::device_start() -{ - common_start(); -} - void nes_lh51_device::pcb_reset() { prg32((m_prg_chunks >> 1) - 1); // first 8K is switchable, the rest fixed @@ -1674,6 +1690,42 @@ void nes_lh32_device::write_h(offs_t offset, uint8_t data) m_prgram[offset & 0x1fff] = data; } +/*------------------------------------------------- + + UNL-LH42 + + Games: Highway Star (Whirlwind Manu bootleg) + + NES 2.0: mapper 418 + + In MAME: Preliminary supported. + + TODO: Investigate garbage tiles on bottom half of + course map screens. This should be car dashboard? + + -------------------------------------------------*/ + +void nes_lh42_device::write_h(offs_t offset, u8 data) +{ + LOG_MMC(("lh42 write_h, offset: %04x, data: %02x\n", offset, data)); + + if (BIT(offset, 0)) + { + switch (m_latch) + { + case 1: + set_nt_mirroring(BIT(data, 0) ? PPU_MIRROR_HORZ : PPU_MIRROR_VERT); + break; + case 2: + case 3: + prg8_x(m_latch & 1, data & 0x0f); + break; + } + } + else + m_latch = data & 0x03; +} + /*------------------------------------------------- UNL-LG25 diff --git a/src/devices/bus/nes/bootleg.h b/src/devices/bus/nes/bootleg.h index a53ffa6e4e6..88ec925d2ba 100644 --- a/src/devices/bus/nes/bootleg.h +++ b/src/devices/bus/nes/bootleg.h @@ -463,6 +463,27 @@ private: }; +// ======================> nes_lh42_device + +class nes_lh42_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_lh42_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); + + virtual void write_h(offs_t offset, u8 data) override; + + virtual void pcb_reset() override; + +protected: + // device-level overrides + virtual void device_start() override; + +private: + u8 m_latch; +}; + + // ======================> nes_lg25_device class nes_lg25_device : public nes_nrom_device @@ -520,10 +541,6 @@ public: virtual void write_h(offs_t offset, u8 data) override; virtual void pcb_reset() override; - -protected: - // device-level overrides - virtual void device_start() override; }; @@ -724,6 +741,7 @@ DECLARE_DEVICE_TYPE(NES_LH10, nes_lh10_device) DECLARE_DEVICE_TYPE(NES_LH28_LH54, nes_lh28_lh54_device) DECLARE_DEVICE_TYPE(NES_LH31, nes_lh31_device) DECLARE_DEVICE_TYPE(NES_LH32, nes_lh32_device) +DECLARE_DEVICE_TYPE(NES_LH42, nes_lh42_device) DECLARE_DEVICE_TYPE(NES_LH51, nes_lh51_device) DECLARE_DEVICE_TYPE(NES_LH53, nes_lh53_device) DECLARE_DEVICE_TYPE(NES_2708, nes_2708_device) diff --git a/src/devices/bus/nes/kaiser.cpp b/src/devices/bus/nes/kaiser.cpp index 1c55db49171..8d738e5e389 100644 --- a/src/devices/bus/nes/kaiser.cpp +++ b/src/devices/bus/nes/kaiser.cpp @@ -805,7 +805,7 @@ void nes_ks7012_device::write_h(offs_t offset, uint8_t data) Kaiser Board KS7013B - Games: Highway Star FDS Conversion + Games: Highway Star bootleg NES 2.0: mapper 312 diff --git a/src/devices/bus/nes/nes_carts.cpp b/src/devices/bus/nes/nes_carts.cpp index f42e319c292..329f9691e29 100644 --- a/src/devices/bus/nes/nes_carts.cpp +++ b/src/devices/bus/nes/nes_carts.cpp @@ -253,7 +253,7 @@ void nes_cart(device_slot_interface &device) device.option_add_internal("ks202", NES_KS202); // mapper 56 device.option_add_internal("ks7010", NES_KS7010); // used in Akumajo Dracula (FDS Conversion) device.option_add_internal("ks7012", NES_KS7012); // used in Zanac (FDS Conversion) - device.option_add_internal("ks7013b", NES_KS7013B); // used in Highway Star (FDS Conversion) + device.option_add_internal("ks7013b", NES_KS7013B); // used in Highway Star Kaiser bootleg device.option_add_internal("ks7016", NES_KS7016); // used in Exciting Basket (FDS Conversion) device.option_add_internal("ks7016b", NES_KS7016B); // used in Meikyu Jiin Dababa alt (FDS Conversion) device.option_add_internal("ks7017", NES_KS7017); @@ -318,6 +318,7 @@ void nes_cart(device_slot_interface &device) device.option_add_internal("unl_lh28_lh54", NES_LH28_LH54); // used in Falsion, Meikyuu Jiin Dababa FDS conversions device.option_add_internal("unl_lh31", NES_LH31); // used in Bubble Bobble alt FDS conversion device.option_add_internal("unl_lh32", NES_LH32); // used by Monty no Doki Doki Daidassou FDS conversion + device.option_add_internal("unl_lh42", NES_LH42); // used by Highway Star Whirlwind Manu bootleg device.option_add_internal("unl_lh51", NES_LH51); // used in Ai Senshi Nicol alt FDS conversion device.option_add_internal("unl_lh53", NES_LH53); // used in Nazo no Murasamejou (FDS Conversion); device.option_add_internal("unl_ac08", NES_AC08); // used by Green Beret FDS conversion diff --git a/src/devices/bus/nes/nes_ines.hxx b/src/devices/bus/nes/nes_ines.hxx index 63f435afc52..52825b6c55f 100644 --- a/src/devices/bus/nes/nes_ines.hxx +++ b/src/devices/bus/nes/nes_ines.hxx @@ -347,7 +347,7 @@ static const nes_mmc mmc_list[] = { 309, UNL_LH51 }, // Ai Senshi Nicol alt FDS conversion // 310 variant of mapper 125? // 311 Unused (previously assigned in error to a bad SMB2 pirate dump) - { 312, KAISER_KS7013B }, // Highway Star FDS conversion + { 312, KAISER_KS7013B }, // Highway Star Kaiser bootleg { 313, BMC_RESETTXROM0 }, { 314, BMC_64IN1NR }, // 315 820732C and 830134C multicarts, not in nes.xml? @@ -453,7 +453,7 @@ static const nes_mmc mmc_list[] = { 415, BTL_0353 }, // Lucky (Roger) Rabbit FDS conversion // 416 4-in-1 that includes mapper 50 SMB2j pirate { 417, BTL_BATMANFS }, // "Fine Studio" Batman bootleg - // { 418, UNL_LH42 } // Highway Star alt FDS conversion + { 418, UNL_LH42 }, // Highway Star Whirlwind Manu bootleg // 419 VT03 PnPs // 420 Kasheng A971210 board // 421 JY SC871115C board diff --git a/src/devices/bus/nes/nes_pcb.hxx b/src/devices/bus/nes/nes_pcb.hxx index c01f523125c..7750f1d6391 100644 --- a/src/devices/bus/nes/nes_pcb.hxx +++ b/src/devices/bus/nes/nes_pcb.hxx @@ -166,7 +166,7 @@ static const nes_pcb pcb_list[] = { "ks202", KAISER_KS202 }, // mapper 56 { "ks7010", KAISER_KS7010 }, // used in Akumajo Dracula (FDS Conversion) { "ks7012", KAISER_KS7012 }, // used in Zanac (FDS Conversion) - { "ks7013b", KAISER_KS7013B }, // used in Highway Star (FDS Conversion) + { "ks7013b", KAISER_KS7013B }, // used in Highway Star Kaiser bootleg { "ks7016", KAISER_KS7016 }, // used in Exciting Basketball (FDS Conversion) { "ks7016b", KAISER_KS7016B }, // used in Meikyuu Jiin Dababa alt (FDS Conversion) { "ks7017", KAISER_KS7017 }, @@ -342,6 +342,7 @@ static const nes_pcb pcb_list[] = { "unl_lh28_lh54", UNL_LH28_LH54 }, { "unl_lh31", UNL_LH31 }, { "unl_lh32", UNL_LH32 }, + { "unl_lh42", UNL_LH42 }, { "unl_lh51", UNL_LH51 }, { "unl_lh53", UNL_LH53 }, { "unl_ac08", UNL_AC08 }, diff --git a/src/devices/bus/nes/nes_slot.h b/src/devices/bus/nes/nes_slot.h index ee3f582ae2a..e51cdc5db08 100644 --- a/src/devices/bus/nes/nes_slot.h +++ b/src/devices/bus/nes/nes_slot.h @@ -124,7 +124,7 @@ enum KAISER_KS7032, KAISER_KS7037, KAISER_KS7057, KAISER_KS7058, // Whirlwind Manu UNL_DH08, UNL_LE05, UNL_LG25, UNL_LH10, UNL_LH28_LH54, - UNL_LH31, UNL_LH32, UNL_LH51, UNL_LH53, + UNL_LH31, UNL_LH32, UNL_LH42, UNL_LH51, UNL_LH53, // Misc: these are needed to convert mappers to boards, I will sort them later OPENCORP_DAOU306, HES_BOARD, SVISION16_BOARD, RUMBLESTATION_BOARD, JYCOMPANY_A, JYCOMPANY_B, JYCOMPANY_C, MAGICSERIES_MD, KASING_BOARD, FUTUREMEDIA_BOARD, FUKUTAKE_BOARD, SOMARI_SL12,