trunk/hash/megadriv.xml
| r23571 | r23572 | |
| 14036 | 14036 | <year>199?</year> |
| 14037 | 14037 | <publisher><unlicensed></publisher> |
| 14038 | 14038 | <part name="cart" interface="megadriv_cart"> |
| 14039 | <feature name="slot" value="rom_mjlov"/> |
| 14039 | 14040 | <dataarea name="rom" size="1048576"> |
| 14041 | <rom name="insane paradise (ch) [a2].bin" size="1048576" crc="2f15bb22" sha1="59e3cf744636e4a27876f271f302d2620bbcbf39" offset="0x000000" loadflag="load16_word_swap"/> |
| 14042 | </dataarea> |
| 14043 | </part> |
| 14044 | </software> |
| 14045 | |
| 14046 | <software name="fengkuan1" cloneof="fengkuan"> |
| 14047 | <description>Feng Kuang Tao Hua Yuan (Chi, Unprotected)</description> |
| 14048 | <year>199?</year> |
| 14049 | <publisher><unlicensed></publisher> |
| 14050 | <part name="cart" interface="megadriv_cart"> |
| 14051 | <dataarea name="rom" size="1048576"> |
| 14040 | 14052 | <rom name="feng kuang tao hua yuan (chi) (unl).bin" size="1048576" crc="8d40d64f" sha1="0330611a5fcb1f3ca173fcb3387fd35b865f1131" offset="0x000000" loadflag="load16_word_swap"/> |
| 14041 | 14053 | </dataarea> |
| 14042 | 14054 | </part> |
| r23571 | r23572 | |
| 25560 | 25572 | </part> |
| 25561 | 25573 | </software> |
| 25562 | 25574 | |
| 25575 | <software name="tekkensp"> |
| 25576 | <description>Tekken Special</description> |
| 25577 | <year>199?</year> |
| 25578 | <publisher><unlicensed></publisher> |
| 25579 | <part name="cart" interface="megadriv_cart"> |
| 25580 | <feature name="slot" value="rom_tekkensp"/> |
| 25581 | <dataarea name="rom" size="2097152"> |
| 25582 | <rom name="tekken special (unl).bin" size="2097152" crc="010f6369" sha1="403a33cfbf72cc98c23c45850897e1e6185b7237" offset="0x000000" loadflag="load16_word_swap"/> |
| 25583 | </dataarea> |
| 25584 | </part> |
| 25585 | </software> |
| 25586 | |
| 25563 | 25587 | <software name="tekkn3sp"> |
| 25564 | 25588 | <description>Tekken 3 Special</description> |
| 25565 | 25589 | <year>199?</year> |
| r23571 | r23572 | |
| 28292 | 28316 | <year>1996</year> |
| 28293 | 28317 | <publisher>Ming</publisher> |
| 28294 | 28318 | <part name="cart" interface="megadriv_cart"> |
| 28319 | <feature name="slot" value="rom_yasech"/> |
| 28320 | <dataarea name="rom" size="2097152"> |
| 28321 | <rom name="wu kong wai zhuan (chi) [a4].bin" size="2097152" crc="0bd70e54" sha1="7e35547d0505e83e3a6b05ad34c1db3a65998532" offset="0x000000" loadflag="load16_word_swap"/> |
| 28322 | </dataarea> |
| 28323 | <dataarea name="sram" size="16384"> |
| 28324 | </dataarea> |
| 28325 | </part> |
| 28326 | </software> |
| 28327 | |
| 28328 | <software name="wukongc1" cloneof="wukong"> |
| 28329 | <description>Wu Kong Wai Zhuan (Chi, Unprotected)</description> |
| 28330 | <year>1996</year> |
| 28331 | <publisher>Ming</publisher> |
| 28332 | <part name="cart" interface="megadriv_cart"> |
| 28295 | 28333 | <feature name="slot" value="rom_sram"/> |
| 28296 | 28334 | <dataarea name="rom" size="2097152"> |
| 28297 | 28335 | <rom name="wu kong wai zhuan (chi) (unl).bin" size="2097152" crc="880a916e" sha1="dd4d7f7433ab82680d7d36124beca0bacebcd6e4" offset="0x000000" loadflag="load16_word_swap"/> |
| r23571 | r23572 | |
| 29328 | 29366 | </part> |
| 29329 | 29367 | </software> |
| 29330 | 29368 | |
| 29369 | <software name="mjclub"> |
| 29370 | <description>Super Mahjong Club</description> |
| 29371 | <year>199?</year> |
| 29372 | <publisher><unlicensed></publisher> |
| 29373 | <part name="cart" interface="megadriv_cart"> |
| 29374 | <feature name="slot" value="rom_mjlov"/> |
| 29375 | <dataarea name="rom" size="1048576"> |
| 29376 | <rom name="super majon club (unl).bin" size="1048576" crc="1d81a67c" sha1="03f48da0541dac5a11788460c427d5fdb34bbd1b" offset="0x000000" loadflag="load16_word_swap"/> |
| 29377 | </dataarea> |
| 29378 | </part> |
| 29379 | </software> |
| 29380 | |
| 29331 | 29381 | <software name="smario2"> |
| 29332 | 29382 | <description>Super Mario 2 1998</description> |
| 29333 | 29383 | <year>199?</year> |
| r23571 | r23572 | |
| 30375 | 30425 | </part> |
| 30376 | 30426 | </software> |
| 30377 | 30427 | |
| 30428 | <software name="plantzom"> |
| 30429 | <description>Plants Vs Zombies (Rus)</description> |
| 30430 | <year>199?</year> |
| 30431 | <publisher><unlicensed></publisher> |
| 30432 | <part name="cart" interface="megadriv_cart"> |
| 30433 | <dataarea name="rom" size="524288"> |
| 30434 | <rom name="plants vs zombies (rus).bin" size="524288" crc="414648d2" sha1="aa4596a19aad478647b480151401cf60c6612458" offset="00000" loadflag="load16_word_swap"/> |
| 30435 | </dataarea> |
| 30436 | </part> |
| 30437 | </software> |
| 30438 | |
| 30378 | 30439 | <software name="pokecda" cloneof="pokecd"> |
| 30379 | 30440 | <description>Pokemon Crazy Drummer (Alt)</description> |
| 30380 | 30441 | <year>199?</year> |
| r23571 | r23572 | |
| 30638 | 30699 | </part> |
| 30639 | 30700 | </software> |
| 30640 | 30701 | |
| 30702 | <software name="wotanks"> |
| 30703 | <description>World of Tanks (Rus)</description> |
| 30704 | <year>199?</year> |
| 30705 | <publisher><unlicensed></publisher> |
| 30706 | <part name="cart" interface="megadriv_cart"> |
| 30707 | <dataarea name="rom" size="1048576"> |
| 30708 | <rom name="world of tanks (rus).bin" size="1048576" crc="7ac9e951" sha1="d96484af69fce78dc3e038df72b73b37584db3b7" offset="00000" loadflag="load16_word_swap"/> |
| 30709 | </dataarea> |
| 30710 | </part> |
| 30711 | </software> |
| 30712 | |
| 30641 | 30713 | <software name="winx" cloneof="valis"> |
| 30642 | 30714 | <description>Winx - Shkola Volshyebnits (Rus)</description> |
| 30643 | 30715 | <year>199?</year> |
trunk/src/mess/machine/md_rom.c
| r23571 | r23572 | |
| 51 | 51 | const device_type MD_ROM_REALTEC = &device_creator<md_rom_realtec_device>; |
| 52 | 52 | const device_type MD_ROM_REDCL = &device_creator<md_rom_redcl_device>; |
| 53 | 53 | const device_type MD_ROM_SQUIR = &device_creator<md_rom_squir_device>; |
| 54 | const device_type MD_ROM_TEKKENSP = &device_creator<md_rom_tekkensp_device>; |
| 54 | 55 | const device_type MD_ROM_TOPF = &device_creator<md_rom_topf_device>; |
| 55 | 56 | const device_type MD_ROM_RADICA = &device_creator<md_rom_radica_device>; |
| 56 | 57 | const device_type MD_ROM_BEGGARP = &device_creator<md_rom_beggarp_device>; |
| r23571 | r23572 | |
| 204 | 205 | { |
| 205 | 206 | } |
| 206 | 207 | |
| 208 | md_rom_tekkensp_device::md_rom_tekkensp_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) |
| 209 | : md_std_rom_device(mconfig, MD_ROM_TEKKENSP, "MD Tekken Special", tag, owner, clock, "md_rom_tekkensp", __FILE__) |
| 210 | { |
| 211 | } |
| 212 | |
| 207 | 213 | md_rom_topf_device::md_rom_topf_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) |
| 208 | 214 | : md_std_rom_device(mconfig, MD_ROM_TOPF, "MD Top Fighter", tag, owner, clock, "md_rom_topf", __FILE__) |
| 209 | 215 | { |
| r23571 | r23572 | |
| 351 | 357 | memset(m_ctrl, 0, sizeof(m_ctrl)); |
| 352 | 358 | } |
| 353 | 359 | |
| 360 | void md_rom_tekkensp_device::device_start() |
| 361 | { |
| 362 | save_item(NAME(m_reg)); |
| 363 | } |
| 364 | |
| 365 | void md_rom_tekkensp_device::device_reset() |
| 366 | { |
| 367 | m_reg = 0; |
| 368 | } |
| 369 | |
| 354 | 370 | void md_rom_topf_device::device_start() |
| 355 | 371 | { |
| 356 | 372 | save_item(NAME(m_latch)); |
| r23571 | r23572 | |
| 1161 | 1177 | } |
| 1162 | 1178 | |
| 1163 | 1179 | /*------------------------------------------------- |
| 1180 | TEKKEN SPECIAL |
| 1181 | -------------------------------------------------*/ |
| 1182 | |
| 1183 | READ16_MEMBER(md_rom_tekkensp_device::read) |
| 1184 | { |
| 1185 | if (offset < 0x400000/2) |
| 1186 | return m_rom[MD_ADDR(offset)]; |
| 1187 | else if ((offset & 0x07) == 1 && m_reg) |
| 1188 | return (m_reg - 1) << 8; |
| 1189 | else |
| 1190 | return 0xffff; |
| 1191 | } |
| 1192 | |
| 1193 | WRITE16_MEMBER(md_rom_tekkensp_device::write) |
| 1194 | { |
| 1195 | if (offset < 0x400000/2) |
| 1196 | return; |
| 1197 | |
| 1198 | // thanks to EkeEke for the documentation |
| 1199 | switch (offset & 0x07) |
| 1200 | { |
| 1201 | case 0x00: |
| 1202 | // data output reset ? (game writes $FF before & after protection check) |
| 1203 | m_reg = 0; |
| 1204 | break; |
| 1205 | case 0x01: |
| 1206 | // read only ? |
| 1207 | break; |
| 1208 | case 0x06: |
| 1209 | // data output mode bit 0 ? (game writes $01) |
| 1210 | break; |
| 1211 | case 0x07: |
| 1212 | // data output mode bit 1 ? (never written by game) |
| 1213 | break; |
| 1214 | default: |
| 1215 | if (data & 0x100) // data input (only connected to D0 ?) |
| 1216 | { |
| 1217 | // 4-bit hardware register ($400004 corresponds to bit0, $400006 to bit1, etc) |
| 1218 | int shift = (offset - 2) & 3; |
| 1219 | m_reg |= (1 << shift); |
| 1220 | } |
| 1221 | break; |
| 1222 | } |
| 1223 | } |
| 1224 | |
| 1225 | /*------------------------------------------------- |
| 1164 | 1226 | TOP FIGHTER |
| 1165 | 1227 | -------------------------------------------------*/ |
| 1166 | 1228 | |
trunk/src/mess/machine/md_rom.h
| r23571 | r23572 | |
| 440 | 440 | UINT16 m_latch; |
| 441 | 441 | }; |
| 442 | 442 | |
| 443 | // ======================> md_rom_tekkensp_device |
| 444 | |
| 445 | class md_rom_tekkensp_device : public md_std_rom_device |
| 446 | { |
| 447 | public: |
| 448 | // construction/destruction |
| 449 | md_rom_tekkensp_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); |
| 450 | |
| 451 | // device-level overrides |
| 452 | virtual void device_start(); |
| 453 | virtual void device_reset(); |
| 454 | |
| 455 | // reading and writing |
| 456 | virtual DECLARE_READ16_MEMBER(read); |
| 457 | virtual DECLARE_WRITE16_MEMBER(write); |
| 458 | |
| 459 | private: |
| 460 | UINT16 m_reg; |
| 461 | }; |
| 462 | |
| 443 | 463 | // ======================> md_rom_topf_device |
| 444 | 464 | |
| 445 | 465 | class md_rom_topf_device : public md_std_rom_device |
| r23571 | r23572 | |
| 554 | 574 | extern const device_type MD_ROM_SOULB; |
| 555 | 575 | extern const device_type MD_ROM_SSF2; |
| 556 | 576 | extern const device_type MD_ROM_SQUIR; |
| 577 | extern const device_type MD_ROM_TEKKENSP; |
| 557 | 578 | extern const device_type MD_ROM_TOPF; |
| 558 | 579 | extern const device_type MD_ROM_RADICA; |
| 559 | 580 | extern const device_type MD_ROM_BEGGARP; |
trunk/src/mame/machine/megadriv.c
| r23571 | r23572 | |
| 1148 | 1148 | m_megadrive_io_read_data_port_ptr = read8_delegate(FUNC(md_base_state::megadrive_io_read_data_port_3button),this); |
| 1149 | 1149 | m_megadrive_io_write_data_port_ptr = write16_delegate(FUNC(md_base_state::megadrive_io_write_data_port_3button),this); |
| 1150 | 1150 | |
| 1151 | | { |
| 1152 | | /* only really useful on official games, ea games etc. don't bother |
| 1153 | | some games specify a single address, (start 200001, end 200001) |
| 1154 | | this usually means there is serial eeprom instead */ |
| 1155 | | int i; |
| 1156 | | UINT16 *rom = (UINT16*)memregion("maincpu")->base(); |
| 1157 | | |
| 1158 | | mame_printf_debug("DEBUG:: Header: Backup RAM string (ignore for games without)\n"); |
| 1159 | | for (i=0;i<12;i++) |
| 1160 | | { |
| 1161 | | if (i==2) mame_printf_debug("\nstart: "); |
| 1162 | | if (i==4) mame_printf_debug("\nend : "); |
| 1163 | | if (i==6) mame_printf_debug("\n"); |
| 1164 | | |
| 1165 | | mame_printf_debug("%04x ",rom[(0x1b0/2)+i]); |
| 1166 | | } |
| 1167 | | mame_printf_debug("\n"); |
| 1168 | | } |
| 1169 | | |
| 1170 | 1151 | m_export = 0; |
| 1171 | 1152 | m_pal = 0; |
| 1172 | 1153 | } |