bus/nes: Added support for Chinese translations of Genghis Khan, Square's Tom Sawyer, and Tenchi wo Kurau II. (#9569)

Software list items promoted to working (nes.xml)
---------------------------------------
Dàtáng Fēngyún VI Dài (China)
Chéngjísīhán (China)
Fēngsè Huànxiǎng (China)
Tāngmǔ Lìxiǎn Jì (China)
Tenchi wo Kurau II - Shokatsu Koumei Den (China)
Tenchi wo Kurau II - Shokatsu Koumei Den (China, alt)
Tūnshí Tiāndì II (China)
Tūnshí Tiāndì II (China, alt)
Tūnshí Tiāndì II (China, alt 2)
Tūnshí Tiāndì III (China)
This commit is contained in:
0kmg 2022-04-14 18:10:32 -08:00 committed by GitHub
parent acb30d42ba
commit 2aeed0b4fa
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 143 additions and 133 deletions

View File

@ -57904,21 +57904,24 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
</part> </part>
</software> </software>
<software name="chengji" supported="no"> <software name="chengji" cloneof="genghis">
<description>Cheng Ji Si Han (Chi)</description> <description>Chéngjísīhán (China)</description>
<year>19??</year> <year>2005</year>
<publisher>Waixing</publisher> <publisher>Waixing</publisher>
<info name="serial" value="ES-1110"/> <info name="serial" value="ES-1110"/>
<info name="alt_title" value="成吉思汗"/> <info name="alt_title" value="成吉思汗"/>
<part name="cart" interface="nes_cart"> <part name="cart" interface="nes_cart">
<feature name="slot" value="waixing_a" /> <feature name="slot" value="waixing_f1" />
<feature name="pcb" value="WAIXING-A" /> <!-- Wrong pcb, but header says mapper 198 which is wrong too --> <feature name="pcb" value="WAIXING-F1" />
<dataarea name="prg" size="524288"> <dataarea name="prg" size="524288">
<rom name="[es-1110] cheng ji si han (c).prg" size="524288" crc="935f2119" sha1="ca7fe978a1926827c6d3eb670d8e1ff9903614b7" offset="00000" status="baddump" /> <rom name="[es-1110] cheng ji si han (c).prg" size="524288" crc="935f2119" sha1="ca7fe978a1926827c6d3eb670d8e1ff9903614b7" offset="00000" status="baddump" />
</dataarea> </dataarea>
<!-- 8k VRAM on cartridge --> <!-- 8k VRAM on cartridge -->
<dataarea name="vram" size="8192"> <dataarea name="vram" size="8192">
</dataarea> </dataarea>
<!-- 4k WRAM on cartridge -->
<dataarea name="wram" size="4096">
</dataarea>
<!-- 8k WRAM on cartridge, battery backed up --> <!-- 8k WRAM on cartridge, battery backed up -->
<dataarea name="bwram" size="8192"> <dataarea name="bwram" size="8192">
<rom value="0x00" size="8192" offset="0" loadflag="fill" /> <rom value="0x00" size="8192" offset="0" loadflag="fill" />
@ -57926,21 +57929,24 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
</part> </part>
</software> </software>
<software name="tmlxj" cloneof="sqtomsaw" supported="no"> <software name="tmlxj" cloneof="sqtomsaw">
<description>Tang Mu Li Xian Ji (Chi)</description> <description>Tāngmǔ Lìxiǎn Jì (China)</description>
<year>19??</year> <year>2005</year>
<publisher>Waixing</publisher> <publisher>Waixing</publisher>
<info name="serial" value="ES-1111"/> <info name="serial" value="ES-1111"/>
<info name="alt_title" value="汤姆历险记"/> <info name="alt_title" value="湯姆歷險記"/>
<part name="cart" interface="nes_cart"> <part name="cart" interface="nes_cart">
<feature name="slot" value="waixing_i" /> <feature name="slot" value="waixing_f1" />
<feature name="pcb" value="WAIXING-I" /> <feature name="pcb" value="WAIXING-F1" />
<dataarea name="prg" size="524288"> <dataarea name="prg" size="524288">
<rom name="tang mu li xian ji (ch).prg" size="524288" crc="2ca9bf7f" sha1="b9f444ff60f60c177eeec8671bec3731b0f6fe49" offset="00000" status="baddump" /> <rom name="tang mu li xian ji (ch).prg" size="524288" crc="2ca9bf7f" sha1="b9f444ff60f60c177eeec8671bec3731b0f6fe49" offset="00000" status="baddump" />
</dataarea> </dataarea>
<!-- 8k VRAM on cartridge --> <!-- 8k VRAM on cartridge -->
<dataarea name="vram" size="8192"> <dataarea name="vram" size="8192">
</dataarea> </dataarea>
<!-- 4k WRAM on cartridge -->
<dataarea name="wram" size="4096">
</dataarea>
<!-- 8k WRAM on cartridge, battery backed up --> <!-- 8k WRAM on cartridge, battery backed up -->
<dataarea name="bwram" size="8192"> <dataarea name="bwram" size="8192">
<rom value="0x00" size="8192" offset="0" loadflag="fill" /> <rom value="0x00" size="8192" offset="0" loadflag="fill" />
@ -58102,21 +58108,28 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
</part> </part>
</software> </software>
<software name="fengshx" supported="no"> <software name="fengshx" cloneof="sqtomsaw">
<description>Feng Se Huan Xiang (Chi)</description> <description>Fēngsè Huànxiǎng (China)</description>
<year>19??</year> <year>2005</year>
<publisher>Waixing</publisher> <publisher>Waixing</publisher>
<info name="serial" value="ES-1138"/> <info name="serial" value="ES-1138"/>
<info name="alt_title" value="风色幻想"/> <info name="alt_title" value="风色幻想"/>
<part name="cart" interface="nes_cart"> <part name="cart" interface="nes_cart">
<feature name="slot" value="txrom" /> <feature name="slot" value="waixing_f1" />
<feature name="pcb" value="NES-TLROM" /> <!-- Header says mapper 4 but there are tons of unmapped accesses --> <feature name="pcb" value="WAIXING-F1" />
<dataarea name="prg" size="524288"> <dataarea name="prg" size="524288">
<rom name="[es-1138] feng se huan xiang (c).prg" size="524288" crc="2389335f" sha1="8148813ca6225c01088bbc9a4af2031176632b4d" offset="00000" status="baddump" /> <rom name="[es-1138] feng se huan xiang (c).prg" size="524288" crc="2389335f" sha1="8148813ca6225c01088bbc9a4af2031176632b4d" offset="00000" status="baddump" />
</dataarea> </dataarea>
<!-- 8k VRAM on cartridge --> <!-- 8k VRAM on cartridge -->
<dataarea name="vram" size="8192"> <dataarea name="vram" size="8192">
</dataarea> </dataarea>
<!-- 4k WRAM on cartridge -->
<dataarea name="wram" size="4096">
</dataarea>
<!-- 8k WRAM on cartridge, battery backed up -->
<dataarea name="bwram" size="8192">
<rom value="0x00" size="8192" offset="0" loadflag="fill" />
</dataarea>
</part> </part>
</software> </software>
@ -62301,9 +62314,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
</part> </part>
</software> </software>
<software name="tenchik2c" cloneof="tenchik2" supported="no"> <software name="tenchik2c" cloneof="tenchik2">
<description>Tenchi wo Kurau II - Shokatsu Koumei Den (Chi, Simplified)</description> <description>Tenchi wo Kurau II - Shokatsu Koumei Den (China)</description>
<year>19??</year> <year>1994</year>
<publisher>Waixing?</publisher> <publisher>Waixing?</publisher>
<part name="cart" interface="nes_cart"> <part name="cart" interface="nes_cart">
<feature name="slot" value="waixing_f" /> <feature name="slot" value="waixing_f" />
@ -62314,6 +62327,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
<!-- 8k VRAM on cartridge --> <!-- 8k VRAM on cartridge -->
<dataarea name="vram" size="8192"> <dataarea name="vram" size="8192">
</dataarea> </dataarea>
<!-- 4k WRAM on cartridge -->
<dataarea name="wram" size="4096">
</dataarea>
<!-- 8k WRAM on cartridge, battery backed up --> <!-- 8k WRAM on cartridge, battery backed up -->
<dataarea name="bwram" size="8192"> <dataarea name="bwram" size="8192">
<rom value="0x00" size="8192" offset="0" loadflag="fill" /> <rom value="0x00" size="8192" offset="0" loadflag="fill" />
@ -62321,9 +62337,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
</part> </part>
</software> </software>
<software name="tenchik2c1" cloneof="tenchik2" supported="no"> <software name="tenchik2c1" cloneof="tenchik2">
<description>Tenchi wo Kurau II - Shokatsu Koumei Den (Chi, Traditional)</description> <description>Tenchi wo Kurau II - Shokatsu Koumei Den (China, alt)</description>
<year>19??</year> <year>1994</year>
<publisher>Waixing?</publisher> <publisher>Waixing?</publisher>
<part name="cart" interface="nes_cart"> <part name="cart" interface="nes_cart">
<feature name="slot" value="waixing_f" /> <feature name="slot" value="waixing_f" />
@ -62334,6 +62350,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
<!-- 8k VRAM on cartridge --> <!-- 8k VRAM on cartridge -->
<dataarea name="vram" size="8192"> <dataarea name="vram" size="8192">
</dataarea> </dataarea>
<!-- 4k WRAM on cartridge -->
<dataarea name="wram" size="4096">
</dataarea>
<!-- 8k WRAM on cartridge, battery backed up --> <!-- 8k WRAM on cartridge, battery backed up -->
<dataarea name="bwram" size="8192"> <dataarea name="bwram" size="8192">
<rom value="0x00" size="8192" offset="0" loadflag="fill" /> <rom value="0x00" size="8192" offset="0" loadflag="fill" />
@ -62341,9 +62360,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
</part> </part>
</software> </software>
<software name="tstd2b" cloneof="tenchik2" supported="no"> <software name="tstd2b" cloneof="tenchik2">
<description>Tun Shi Tian Di II (Chi, Alt 2)</description> <description>Tūnshí Tiāndì II (China, alt 2)</description>
<year>19??</year> <year>1994</year>
<publisher>XianFeng Katong</publisher> <publisher>XianFeng Katong</publisher>
<part name="cart" interface="nes_cart"> <part name="cart" interface="nes_cart">
<feature name="slot" value="waixing_f" /> <feature name="slot" value="waixing_f" />
@ -62354,6 +62373,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
<!-- 8k VRAM on cartridge --> <!-- 8k VRAM on cartridge -->
<dataarea name="vram" size="8192"> <dataarea name="vram" size="8192">
</dataarea> </dataarea>
<!-- 4k WRAM on cartridge -->
<dataarea name="wram" size="4096">
</dataarea>
<!-- 8k WRAM on cartridge, battery backed up --> <!-- 8k WRAM on cartridge, battery backed up -->
<dataarea name="bwram" size="8192"> <dataarea name="bwram" size="8192">
<rom value="0x00" size="8192" offset="0" loadflag="fill" /> <rom value="0x00" size="8192" offset="0" loadflag="fill" />
@ -62361,9 +62383,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
</part> </part>
</software> </software>
<software name="tstd2" cloneof="tenchik2" supported="no"> <software name="tstd2" cloneof="tenchik2">
<description>Tun Shi Tian Di II (Chi)</description> <description>Tūnshí Tiāndì II (China)</description>
<year>19??</year> <year>1994</year>
<publisher>XianFeng Katong</publisher> <publisher>XianFeng Katong</publisher>
<info name="alt_title" value="吞食天地II-诸葛孔明传"/> <info name="alt_title" value="吞食天地II-诸葛孔明传"/>
<part name="cart" interface="nes_cart"> <part name="cart" interface="nes_cart">
@ -62375,6 +62397,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
<!-- 8k VRAM on cartridge --> <!-- 8k VRAM on cartridge -->
<dataarea name="vram" size="8192"> <dataarea name="vram" size="8192">
</dataarea> </dataarea>
<!-- 4k WRAM on cartridge -->
<dataarea name="wram" size="4096">
</dataarea>
<!-- 8k WRAM on cartridge, battery backed up --> <!-- 8k WRAM on cartridge, battery backed up -->
<dataarea name="bwram" size="8192"> <dataarea name="bwram" size="8192">
<rom value="0x00" size="8192" offset="0" loadflag="fill" /> <rom value="0x00" size="8192" offset="0" loadflag="fill" />
@ -62382,9 +62407,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
</part> </part>
</software> </software>
<software name="tstd2a" cloneof="tenchik2" supported="no"> <software name="tstd2a" cloneof="tenchik2">
<description>Tun Shi Tian Di II (Chi, Alt)</description> <description>Tūnshí Tiāndì II (China, alt)</description>
<year>19??</year> <year>1994</year>
<publisher>XianFeng Katong</publisher> <publisher>XianFeng Katong</publisher>
<info name="alt_title" value="吞食天地II-诸葛孔明传"/> <info name="alt_title" value="吞食天地II-诸葛孔明传"/>
<part name="cart" interface="nes_cart"> <part name="cart" interface="nes_cart">
@ -62396,6 +62421,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
<!-- 8k VRAM on cartridge --> <!-- 8k VRAM on cartridge -->
<dataarea name="vram" size="8192"> <dataarea name="vram" size="8192">
</dataarea> </dataarea>
<!-- 4k WRAM on cartridge -->
<dataarea name="wram" size="4096">
</dataarea>
<!-- 8k WRAM on cartridge, battery backed up --> <!-- 8k WRAM on cartridge, battery backed up -->
<dataarea name="bwram" size="8192"> <dataarea name="bwram" size="8192">
<rom value="0x00" size="8192" offset="0" loadflag="fill" /> <rom value="0x00" size="8192" offset="0" loadflag="fill" />
@ -62403,11 +62431,11 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
</part> </part>
</software> </software>
<software name="tstd3" cloneof="tenchik2" supported="no"> <software name="tstd3" cloneof="tenchik2">
<description>Tun Shi Tian Di III (Chi)</description> <description>Tūnshí Tiāndì III (China)</description>
<year>19??</year> <year>1994</year>
<publisher>Waixing?</publisher> <publisher>Waixing?</publisher>
<info name="alt_title" value="吞Ⅲ"/> <info name="alt_title" value="吞食天地Ⅲ"/>
<part name="cart" interface="nes_cart"> <part name="cart" interface="nes_cart">
<feature name="slot" value="waixing_f" /> <feature name="slot" value="waixing_f" />
<feature name="pcb" value="WAIXING-F" /> <feature name="pcb" value="WAIXING-F" />
@ -62417,6 +62445,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
<!-- 8k VRAM on cartridge --> <!-- 8k VRAM on cartridge -->
<dataarea name="vram" size="8192"> <dataarea name="vram" size="8192">
</dataarea> </dataarea>
<!-- 4k WRAM on cartridge -->
<dataarea name="wram" size="4096">
</dataarea>
<!-- 8k WRAM on cartridge, battery backed up --> <!-- 8k WRAM on cartridge, battery backed up -->
<dataarea name="bwram" size="8192"> <dataarea name="bwram" size="8192">
<rom value="0x00" size="8192" offset="0" loadflag="fill" /> <rom value="0x00" size="8192" offset="0" loadflag="fill" />
@ -64214,20 +64245,23 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
</part> </part>
</software> </software>
<software name="datangf6" supported="no"> <software name="datangf6" cloneof="genghis">
<description>Da Tang Feng Yun VI Dai (Chi)</description> <description>Dàtáng Fēngyún VI Dài (China)</description>
<year>19??</year> <year>19??</year>
<publisher>HengGedianzi</publisher> <publisher>HengGedianzi</publisher>
<info name="alt_title" value="大唐风云VI代"/> <info name="alt_title" value="大唐风云VI代"/> <!-- Is 代 really in the title? -->
<part name="cart" interface="nes_cart"> <part name="cart" interface="nes_cart">
<feature name="slot" value="waixing_a" /> <feature name="slot" value="waixing_f1" />
<feature name="pcb" value="WAIXING-A" /> <feature name="pcb" value="WAIXING-F1" />
<dataarea name="prg" size="524288"> <dataarea name="prg" size="524288">
<rom name="[hengge] da tang feng yun vi dai (c).prg" size="524288" crc="92a14846" sha1="3660539682971d5727140d3cd298c3fdd979208a" offset="00000" status="baddump" /> <rom name="[hengge] da tang feng yun vi dai (c).prg" size="524288" crc="92a14846" sha1="3660539682971d5727140d3cd298c3fdd979208a" offset="00000" status="baddump" />
</dataarea> </dataarea>
<!-- 8k VRAM on cartridge --> <!-- 8k VRAM on cartridge -->
<dataarea name="vram" size="8192"> <dataarea name="vram" size="8192">
</dataarea> </dataarea>
<!-- 4k WRAM on cartridge -->
<dataarea name="wram" size="4096">
</dataarea>
<!-- 8k WRAM on cartridge, battery backed up --> <!-- 8k WRAM on cartridge, battery backed up -->
<dataarea name="bwram" size="8192"> <dataarea name="bwram" size="8192">
<rom value="0x00" size="8192" offset="0" loadflag="fill" /> <rom value="0x00" size="8192" offset="0" loadflag="fill" />

View File

@ -345,7 +345,7 @@ void nes_txrom_device::write_m(offs_t offset, uint8_t data)
{ {
if (!m_battery.empty()) if (!m_battery.empty())
m_battery[offset & (m_battery.size() - 1)] = data; m_battery[offset & (m_battery.size() - 1)] = data;
if (!m_prgram.empty()) else if (!m_prgram.empty())
m_prgram[offset & (m_prgram.size() - 1)] = data; m_prgram[offset & (m_prgram.size() - 1)] = data;
} }
} }

View File

@ -237,6 +237,7 @@ void nes_cart(device_slot_interface &device)
device.option_add_internal("waixing_d", NES_WAIXING_D); device.option_add_internal("waixing_d", NES_WAIXING_D);
device.option_add_internal("waixing_e", NES_WAIXING_E); device.option_add_internal("waixing_e", NES_WAIXING_E);
device.option_add_internal("waixing_f", NES_WAIXING_F); device.option_add_internal("waixing_f", NES_WAIXING_F);
device.option_add_internal("waixing_f1", NES_WAIXING_F1);
device.option_add_internal("waixing_g", NES_WAIXING_G); device.option_add_internal("waixing_g", NES_WAIXING_G);
device.option_add_internal("waixing_h", NES_WAIXING_H); device.option_add_internal("waixing_h", NES_WAIXING_H);
device.option_add_internal("waixing_h1", NES_WAIXING_H1); // FIXME: Made up boards the different WRAM protect banks (see Shen Mi Jin San Jiao) device.option_add_internal("waixing_h1", NES_WAIXING_H1); // FIXME: Made up boards the different WRAM protect banks (see Shen Mi Jin San Jiao)

View File

@ -232,7 +232,7 @@ static const nes_mmc mmc_list[] =
{ 196, BTL_SBROS11 }, { 196, BTL_SBROS11 },
{ 197, UNL_SF3 }, { 197, UNL_SF3 },
{ 198, WAIXING_TYPE_F }, { 198, WAIXING_TYPE_F },
{ 199, WAIXING_TYPE_G }, { 199, WAIXING_TYPE_F1 },
{ 200, BMC_36IN1 }, { 200, BMC_36IN1 },
{ 201, BMC_21IN1 }, { 201, BMC_21IN1 },
{ 202, BMC_150IN1 }, { 202, BMC_150IN1 },

View File

@ -145,6 +145,7 @@ static const nes_pcb pcb_list[] =
{ "waixing_d", WAIXING_TYPE_D }, { "waixing_d", WAIXING_TYPE_D },
{ "waixing_e", WAIXING_TYPE_E }, { "waixing_e", WAIXING_TYPE_E },
{ "waixing_f", WAIXING_TYPE_F }, { "waixing_f", WAIXING_TYPE_F },
{ "waixing_f1", WAIXING_TYPE_F1 },
{ "waixing_g", WAIXING_TYPE_G }, { "waixing_g", WAIXING_TYPE_G },
{ "waixing_h", WAIXING_TYPE_H }, { "waixing_h", WAIXING_TYPE_H },
{ "waixing_h1", WAIXING_TYPE_H1 }, { "waixing_h1", WAIXING_TYPE_H1 },

View File

@ -139,7 +139,7 @@ enum
CNE_DECATHLON, CNE_FSB, CNE_SHLZ, COCOMA_BOARD, CONY_BOARD, CONY1K_BOARD, SMD133_BOARD, YOKO_BOARD, CNE_DECATHLON, CNE_FSB, CNE_SHLZ, COCOMA_BOARD, CONY_BOARD, CONY1K_BOARD, SMD133_BOARD, YOKO_BOARD,
RCM_GS2015, RCM_GS2004, RCM_GS2013, RCM_TF9IN1, RCM_3DBLOCK, RCM_GS2015, RCM_GS2004, RCM_GS2013, RCM_TF9IN1, RCM_3DBLOCK,
WAIXING_TYPE_A, WAIXING_TYPE_A1, WAIXING_TYPE_B, WAIXING_TYPE_C, WAIXING_TYPE_D, WAIXING_TYPE_A, WAIXING_TYPE_A1, WAIXING_TYPE_B, WAIXING_TYPE_C, WAIXING_TYPE_D,
WAIXING_TYPE_E, WAIXING_TYPE_F, WAIXING_TYPE_G, WAIXING_TYPE_H, WAIXING_TYPE_H1, WAIXING_TYPE_E, WAIXING_TYPE_F, WAIXING_TYPE_F1, WAIXING_TYPE_G, WAIXING_TYPE_H, WAIXING_TYPE_H1,
WAIXING_TYPE_I, WAIXING_TYPE_J, WAIXING_FS304, WAIXING_TYPE_I, WAIXING_TYPE_J, WAIXING_FS304,
WAIXING_SGZLZ, WAIXING_SGZ, WAIXING_WXZS, WAIXING_SECURITY, WAIXING_SH2, WAIXING_SGZLZ, WAIXING_SGZ, WAIXING_WXZS, WAIXING_SECURITY, WAIXING_SH2,
WAIXING_DQ8, WAIXING_FFV, WAIXING_WXZS2, SUPERGAME_LIONKING, SUPERGAME_BOOGERMAN, WAIXING_DQ8, WAIXING_FFV, WAIXING_WXZS2, SUPERGAME_LIONKING, SUPERGAME_BOOGERMAN,

View File

@ -38,6 +38,7 @@ DEFINE_DEVICE_TYPE(NES_WAIXING_C, nes_waixing_c_device, "nes_waixing_c",
DEFINE_DEVICE_TYPE(NES_WAIXING_D, nes_waixing_d_device, "nes_waixing_d", "NES Cart Waixing Type D PCB") DEFINE_DEVICE_TYPE(NES_WAIXING_D, nes_waixing_d_device, "nes_waixing_d", "NES Cart Waixing Type D PCB")
DEFINE_DEVICE_TYPE(NES_WAIXING_E, nes_waixing_e_device, "nes_waixing_e", "NES Cart Waixing Type E PCB") DEFINE_DEVICE_TYPE(NES_WAIXING_E, nes_waixing_e_device, "nes_waixing_e", "NES Cart Waixing Type E PCB")
DEFINE_DEVICE_TYPE(NES_WAIXING_F, nes_waixing_f_device, "nes_waixing_f", "NES Cart Waixing Type F PCB") DEFINE_DEVICE_TYPE(NES_WAIXING_F, nes_waixing_f_device, "nes_waixing_f", "NES Cart Waixing Type F PCB")
DEFINE_DEVICE_TYPE(NES_WAIXING_F1, nes_waixing_f1_device, "nes_waixing_f1", "NES Cart Waixing Type F1 PCB")
DEFINE_DEVICE_TYPE(NES_WAIXING_G, nes_waixing_g_device, "nes_waixing_g", "NES Cart Waixing Type G PCB") DEFINE_DEVICE_TYPE(NES_WAIXING_G, nes_waixing_g_device, "nes_waixing_g", "NES Cart Waixing Type G PCB")
DEFINE_DEVICE_TYPE(NES_WAIXING_H, nes_waixing_h_device, "nes_waixing_h", "NES Cart Waixing Type H PCB") DEFINE_DEVICE_TYPE(NES_WAIXING_H, nes_waixing_h_device, "nes_waixing_h", "NES Cart Waixing Type H PCB")
DEFINE_DEVICE_TYPE(NES_WAIXING_H1, nes_waixing_h1_device, "nes_waixing_h1", "NES Cart Waixing Type H (Alt) PCB") DEFINE_DEVICE_TYPE(NES_WAIXING_H1, nes_waixing_h1_device, "nes_waixing_h1", "NES Cart Waixing Type H (Alt) PCB")
@ -88,8 +89,18 @@ nes_waixing_e_device::nes_waixing_e_device(const machine_config &mconfig, const
{ {
} }
nes_waixing_f_device::nes_waixing_f_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) nes_waixing_f_device::nes_waixing_f_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock)
: nes_waixing_a_device(mconfig, NES_WAIXING_F, tag, owner, clock) : nes_txrom_device(mconfig, type, tag, owner, clock)
{
}
nes_waixing_f_device::nes_waixing_f_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
: nes_waixing_f_device(mconfig, NES_WAIXING_F, tag, owner, clock)
{
}
nes_waixing_f1_device::nes_waixing_f1_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
: nes_waixing_f_device(mconfig, NES_WAIXING_F1, tag, owner, clock)
{ {
} }
@ -178,19 +189,6 @@ void nes_waixing_a_device::pcb_reset()
std::fill(std::begin(mapper_ram), std::end(mapper_ram), 0x00); std::fill(std::begin(mapper_ram), std::end(mapper_ram), 0x00);
} }
void nes_waixing_f_device::pcb_reset()
{
m_chr_source = m_vrom_chunks ? CHRROM : CHRRAM;
mmc3_common_initialize(0xff, 0xff, 0);
std::fill(std::begin(mapper_ram), std::end(mapper_ram), 0x00);
m_mmc_prg_bank[0] = 0x00;
m_mmc_prg_bank[1] = 0x01;
m_mmc_prg_bank[2] = 0x4e;
m_mmc_prg_bank[3] = 0x4f;
set_prg(m_prg_base, m_prg_mask);
}
void nes_waixing_g_device::pcb_reset() void nes_waixing_g_device::pcb_reset()
{ {
m_chr_source = m_vrom_chunks ? CHRROM : CHRRAM; m_chr_source = m_vrom_chunks ? CHRROM : CHRRAM;
@ -500,77 +498,49 @@ void nes_waixing_e_device::chr_cb(int start, int bank, int source)
chr1_x(start, bank, chr_src); chr1_x(start, bank, chr_src);
} }
/*------------------------------------------------- /*-------------------------------------------------
Waixing Board Type F Waixing Board Type F, F1
Games: Tenchi wo Kurau II (C) Games: Tenchi wo Kurau II translations (mapper 198),
and (mapper 199) Chengjisihan, Tangmu Lixian Ji,
Fengse Huanxiang, Datang Fengyun VI Dai
MMC3 clone. MMC3 clone with an extra 4K WRAM at 0x5000-0x5fff.
Mapper 198 banks its 8K CHR RAM and 199 does not.
iNES: mapper 198 iNES: mappers 198, 199
In MESS: Preliminary support. In MAME: Supported.
TODO: Sort out G board games which were assigned
to mapper 199 previously.
-------------------------------------------------*/ -------------------------------------------------*/
void nes_waixing_f_device::chr_cb(int start, int bank, int source) u8 nes_waixing_f_device::read_l(offs_t offset)
{ {
chr1_x(start, bank, CHRRAM); // LOG_MMC(("waixing_f read_l, offset: %04x\n", offset));
offset += 0x100;
if (!m_prgram.empty() && offset >= 0x1000)
return m_prgram[offset & 0x0fff & (m_prgram.size() - 1)];
return get_open_bus();
} }
void nes_waixing_f_device::prg_cb(int start, int bank) void nes_waixing_f_device::write_l(offs_t offset, u8 data)
{ {
// if (bank > 0x3f) // LOG_MMC(("waixing_f write_l, offset: %04x, data: %02x\n", offset, data));
// bank = 0x40 | (bank & 0xf);
prg8_x(start, bank); offset += 0x100;
if (!m_prgram.empty() && offset >= 0x1000)
m_prgram[offset & 0x0fff & (m_prgram.size() - 1)] = data;
} }
void nes_waixing_f_device::set_prg( int prg_base, int prg_mask ) void nes_waixing_f1_device::set_chr(u8 chr, int chr_base, int chr_mask)
{ {
uint8_t prg_flip = (m_latch & 0x40) ? 2 : 0; // ignore CHR banking as all F1 games use 8K unbanked CHR RAM
prg_cb(0, m_mmc_prg_bank[0 ^ prg_flip]);
prg_cb(1, m_mmc_prg_bank[1]);
prg_cb(2, m_mmc_prg_bank[2 ^ prg_flip]);
prg_cb(3, m_mmc_prg_bank[3]);
}
void nes_waixing_f_device::write_h(offs_t offset, uint8_t data)
{
uint8_t cmd;
LOG_MMC(("waixing_f write_h, offset: %04x, data: %02x\n", offset, data));
switch (offset & 0x6001)
{
case 0x0001:
cmd = m_latch & 0x07;
switch (cmd)
{
case 0: case 1: // these do not need to be separated: we take care of them in set_chr!
case 2: case 3: case 4: case 5:
m_mmc_vrom_bank[cmd] = data;
set_chr(m_chr_source, m_chr_base, m_chr_mask);
break;
case 6:
case 7:
case 8:
case 9:
m_mmc_prg_bank[cmd - 6] = data;
//printf("prg bank %d value %x\n", cmd - 6, data);
set_prg(m_prg_base, m_prg_mask);
break;
}
break;
case 0x2001:
break;
default:
waixing_write(offset, data);
break;
}
} }
/*------------------------------------------------- /*-------------------------------------------------

View File

@ -56,7 +56,6 @@ public:
// construction/destruction // construction/destruction
nes_waixing_b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); nes_waixing_b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
virtual void chr_cb(int start, int bank, int source) override; virtual void chr_cb(int start, int bank, int source) override;
}; };
@ -69,7 +68,6 @@ public:
// construction/destruction // construction/destruction
nes_waixing_c_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); nes_waixing_c_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
virtual void chr_cb(int start, int bank, int source) override; virtual void chr_cb(int start, int bank, int source) override;
}; };
@ -82,7 +80,6 @@ public:
// construction/destruction // construction/destruction
nes_waixing_d_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); nes_waixing_d_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
virtual void chr_cb(int start, int bank, int source) override; virtual void chr_cb(int start, int bank, int source) override;
}; };
@ -95,28 +92,37 @@ public:
// construction/destruction // construction/destruction
nes_waixing_e_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); nes_waixing_e_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
virtual void chr_cb(int start, int bank, int source) override; virtual void chr_cb(int start, int bank, int source) override;
}; };
// ======================> nes_waixing_f_device // ======================> nes_waixing_f_device
class nes_waixing_f_device : public nes_waixing_a_device class nes_waixing_f_device : public nes_txrom_device
{ {
public: public:
// construction/destruction // construction/destruction
nes_waixing_f_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); nes_waixing_f_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
// device-level overrides virtual u8 read_l(offs_t offset) override;
virtual void write_h(offs_t offset, uint8_t data) override; virtual void write_l(offs_t offset, u8 data) override;
virtual void prg_cb(int start, int bank) override;
virtual void chr_cb(int start, int bank, int source) override;
virtual void pcb_reset() override; protected:
// construction/destruction
nes_waixing_f_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock);
};
private:
virtual void set_prg(int prg_base, int prg_mask) override; // ======================> nes_waixing_f1_device
class nes_waixing_f1_device : public nes_waixing_f_device
{
public:
// construction/destruction
nes_waixing_f1_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
protected:
virtual void set_chr(uint8_t chr, int chr_base, int chr_mask) override;
}; };
@ -128,7 +134,6 @@ public:
// construction/destruction // construction/destruction
nes_waixing_g_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); nes_waixing_g_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
virtual void write_h(offs_t offset, uint8_t data) override; virtual void write_h(offs_t offset, uint8_t data) override;
virtual void chr_cb(int start, int bank, int source) override; virtual void chr_cb(int start, int bank, int source) override;
@ -147,15 +152,13 @@ public:
// construction/destruction // construction/destruction
nes_waixing_h_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); nes_waixing_h_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void write_h(offs_t offset, uint8_t data) override;
virtual void chr_cb(int start, int bank, int source) override; virtual void chr_cb(int start, int bank, int source) override;
// This PCB does not have 1K of internal RAM, so it's not derived from nes_waixing_a_device!! // This PCB does not have 1K of internal RAM, so it's not derived from nes_waixing_a_device!!
protected: protected:
nes_waixing_h_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); nes_waixing_h_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
virtual void write_h(offs_t offset, uint8_t data) override;
}; };
@ -167,7 +170,6 @@ public:
// construction/destruction // construction/destruction
nes_waixing_h1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); nes_waixing_h1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
virtual void write_h(offs_t offset, uint8_t data) override; virtual void write_h(offs_t offset, uint8_t data) override;
// This variant does not ignore the wram protect! // This variant does not ignore the wram protect!
@ -215,14 +217,15 @@ public:
// construction/destruction // construction/destruction
nes_waixing_sh2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); nes_waixing_sh2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
virtual void device_start() override;
virtual uint8_t chr_r(offs_t offset) override; virtual uint8_t chr_r(offs_t offset) override;
virtual void chr_cb(int start, int bank, int source) override; virtual void chr_cb(int start, int bank, int source) override;
virtual void pcb_reset() override; virtual void pcb_reset() override;
protected: protected:
// device-level overrides
virtual void device_start() override;
uint8_t m_reg[2]; uint8_t m_reg[2];
}; };
@ -355,6 +358,7 @@ DECLARE_DEVICE_TYPE(NES_WAIXING_C, nes_waixing_c_device)
DECLARE_DEVICE_TYPE(NES_WAIXING_D, nes_waixing_d_device) DECLARE_DEVICE_TYPE(NES_WAIXING_D, nes_waixing_d_device)
DECLARE_DEVICE_TYPE(NES_WAIXING_E, nes_waixing_e_device) DECLARE_DEVICE_TYPE(NES_WAIXING_E, nes_waixing_e_device)
DECLARE_DEVICE_TYPE(NES_WAIXING_F, nes_waixing_f_device) DECLARE_DEVICE_TYPE(NES_WAIXING_F, nes_waixing_f_device)
DECLARE_DEVICE_TYPE(NES_WAIXING_F1, nes_waixing_f1_device)
DECLARE_DEVICE_TYPE(NES_WAIXING_G, nes_waixing_g_device) DECLARE_DEVICE_TYPE(NES_WAIXING_G, nes_waixing_g_device)
DECLARE_DEVICE_TYPE(NES_WAIXING_H, nes_waixing_h_device) DECLARE_DEVICE_TYPE(NES_WAIXING_H, nes_waixing_h_device)
DECLARE_DEVICE_TYPE(NES_WAIXING_H1, nes_waixing_h1_device) DECLARE_DEVICE_TYPE(NES_WAIXING_H1, nes_waixing_h1_device)