trunk/hash/a7800.xml
| r32168 | r32169 | |
| 1180 | 1180 | <dataarea name="rom" size="131072"> |
| 1181 | 1181 | <rom name="impssble.bin" size="131072" crc="3b1f2f47" sha1="5437c0efb63a349953ec047efe6ec24144ed6914" offset="0" /> |
| 1182 | 1182 | </dataarea> |
| 1183 | <dataarea name="ram" size="16384"> |
| 1184 | </dataarea> |
| 1183 | 1185 | </part> |
| 1184 | 1186 | </software> |
| 1185 | 1187 | |
| r32168 | r32169 | |
| 1195 | 1197 | <dataarea name="rom" size="131072"> |
| 1196 | 1198 | <rom name="impssbeu.bin" size="131072" crc="994af6e0" sha1="9770b61472510aba1cf3ea35ceca1859c3493676" offset="0" /> |
| 1197 | 1199 | </dataarea> |
| 1200 | <dataarea name="ram" size="16384"> |
| 1201 | </dataarea> |
| 1198 | 1202 | </part> |
| 1199 | 1203 | </software> |
| 1200 | 1204 | |
| r32168 | r32169 | |
| 1210 | 1214 | <dataarea name="rom" size="131072"> |
| 1211 | 1215 | <rom name="jinks.bin" size="131072" crc="0818d8cd" sha1="472bc12c437b015a9e317bac092529f3295033b8" offset="0" /> |
| 1212 | 1216 | </dataarea> |
| 1217 | <dataarea name="ram" size="16384"> |
| 1218 | </dataarea> |
| 1213 | 1219 | </part> |
| 1214 | 1220 | </software> |
| 1215 | 1221 | |
| r32168 | r32169 | |
| 1225 | 1231 | <dataarea name="rom" size="131072"> |
| 1226 | 1232 | <rom name="jinkseu.bin" size="131072" crc="9207ed3b" sha1="eb16de0c3d5c4e769ae2314ba21c4dd3bca33c88" offset="0" /> |
| 1227 | 1233 | </dataarea> |
| 1234 | <dataarea name="ram" size="16384"> |
| 1235 | </dataarea> |
| 1228 | 1236 | </part> |
| 1229 | 1237 | </software> |
| 1230 | 1238 | |
| r32168 | r32169 | |
| 1826 | 1834 | <dataarea name="rom" size="131072"> |
| 1827 | 1835 | <rom name="plutos.bin" size="131072" crc="2f211f7f" sha1="fa55d6a366b237917f18487fc51817394839a3bc" offset="0" /> |
| 1828 | 1836 | </dataarea> |
| 1837 | <dataarea name="ram" size="16384"> |
| 1838 | </dataarea> |
| 1829 | 1839 | </part> |
| 1830 | 1840 | </software> |
| 1831 | 1841 | |
| r32168 | r32169 | |
| 1902 | 1912 | <dataarea name="rom" size="32768"> |
| 1903 | 1913 | <rom name="rescuefr.bin" size="32768" crc="9a74fbf2" sha1="6653022f38e553d475896a918850158eaf8f77ff" offset="0" /> |
| 1904 | 1914 | </dataarea> |
| 1915 | <dataarea name="ram" size="16384"> |
| 1916 | </dataarea> |
| 1905 | 1917 | </part> |
| 1906 | 1918 | </software> |
| 1907 | 1919 | |
| r32168 | r32169 | |
| 2021 | 2033 | <dataarea name="rom" size="131072"> |
| 2022 | 2034 | <rom name="sirius.bin" size="131072" crc="65ae616e" sha1="cd9f6dea96f102262065d7472e73121b67f9e244" offset="0" /> |
| 2023 | 2035 | </dataarea> |
| 2036 | <dataarea name="ram" size="16384"> |
| 2037 | </dataarea> |
| 2024 | 2038 | </part> |
| 2025 | 2039 | </software> |
| 2026 | 2040 | |
| r32168 | r32169 | |
| 2119 | 2133 | <dataarea name="rom" size="131072"> |
| 2120 | 2134 | <rom name="smmrgame.bin" size="131072" crc="65c6df3f" sha1="31d46b32a2aa8d5bd6028cff1f41037426b22409" offset="0" /> |
| 2121 | 2135 | </dataarea> |
| 2136 | <dataarea name="ram" size="16384"> |
| 2137 | </dataarea> |
| 2122 | 2138 | </part> |
| 2123 | 2139 | </software> |
| 2124 | 2140 | |
| r32168 | r32169 | |
| 2283 | 2299 | <dataarea name="rom" size="65536"> |
| 2284 | 2300 | <rom name="twrtpllr.bin" size="65536" crc="4407ba04" sha1="53976013986e0ad3694ab9c021420b8172465de7" offset="0" /> |
| 2285 | 2301 | </dataarea> |
| 2302 | <dataarea name="ram" size="16384"> |
| 2303 | </dataarea> |
| 2286 | 2304 | </part> |
| 2287 | 2305 | </software> |
| 2288 | 2306 | |
| r32168 | r32169 | |
| 2298 | 2316 | <dataarea name="rom" size="65536"> |
| 2299 | 2317 | <rom name="twrtpleu.bin" size="65536" crc="0f87fd7b" sha1="56e1b795e80382edb376e4536d1dee539d4ac548" offset="0" /> |
| 2300 | 2318 | </dataarea> |
| 2319 | <dataarea name="ram" size="16384"> |
| 2320 | </dataarea> |
| 2301 | 2321 | </part> |
| 2302 | 2322 | </software> |
| 2303 | 2323 | |
| r32168 | r32169 | |
| 2342 | 2362 | <dataarea name="rom" size="131072"> |
| 2343 | 2363 | <rom name="wntrgame.bin" size="131072" crc="8981b531" sha1="b3725d6f0834c68ac62ce13eb9eb0d01d1124e5e" offset="0" /> |
| 2344 | 2364 | </dataarea> |
| 2365 | <dataarea name="ram" size="16384"> |
| 2366 | </dataarea> |
| 2345 | 2367 | </part> |
| 2346 | 2368 | </software> |
| 2347 | 2369 | |
| r32168 | r32169 | |
| 2417 | 2439 | <dataarea name="rom" size="4096"> |
| 2418 | 2440 | <rom name="highscre.bin" size="4096" crc="9be408d3" sha1="a3af676991391a6dd716c79022d4947206b78164" offset="0" /> |
| 2419 | 2441 | </dataarea> |
| 2442 | <dataarea name="nvram" size="2048"> |
| 2443 | </dataarea> |
| 2420 | 2444 | </part> |
| 2421 | 2445 | </software> |
| 2422 | 2446 | |
| r32168 | r32169 | |
| 2430 | 2454 | <dataarea name="rom" size="1"> |
| 2431 | 2455 | <!-- this entry behaves just as passthrough, even if in fact the chips shall be socketed on the PCB! --> |
| 2432 | 2456 | </dataarea> |
| 2457 | <dataarea name="ram" size="131072"> |
| 2458 | </dataarea> |
| 2433 | 2459 | </part> |
| 2434 | 2460 | </software> |
| 2435 | 2461 | |
| 2436 | | <!-- Chip adding 128K of RAM + POKEY+HighScore onboard --> |
| 2462 | <!-- Chip adding 128K of RAM + POKEY + HighScore onboard --> |
| 2437 | 2463 | <software name="xm"> |
| 2438 | 2464 | <description>XM Expansion Module</description> |
| 2439 | 2465 | <year>2015?</year> |
| r32168 | r32169 | |
| 2443 | 2469 | <dataarea name="rom" size="4096"> |
| 2444 | 2470 | <rom name="highscre.bin" size="4096" crc="9be408d3" sha1="a3af676991391a6dd716c79022d4947206b78164" offset="0" /> |
| 2445 | 2471 | </dataarea> |
| 2472 | <dataarea name="ram" size="131072"> |
| 2473 | </dataarea> |
| 2474 | <dataarea name="nvram" size="2048"> |
| 2475 | </dataarea> |
| 2446 | 2476 | </part> |
| 2447 | 2477 | </software> |
| 2448 | 2478 | |
trunk/src/emu/bus/a7800/a78_slot.c
| r32168 | r32169 | |
| 357 | 357 | if (software_entry() != NULL) |
| 358 | 358 | { |
| 359 | 359 | const char *pcb_name; |
| 360 | bool has_ram = get_software_region("ram") ? TRUE : FALSE; |
| 361 | bool has_nvram = get_software_region("nvram") ? TRUE : FALSE; |
| 360 | 362 | len = get_software_region_length("rom"); |
| 361 | 363 | |
| 362 | 364 | m_cart->rom_alloc(len); |
| r32168 | r32169 | |
| 367 | 369 | m_type = a78_get_pcb_id(pcb_name); |
| 368 | 370 | else |
| 369 | 371 | m_type = A78_TYPE0; |
| 372 | |
| 373 | if (has_ram) |
| 374 | m_cart->ram_alloc(get_software_region_length("ram")); |
| 375 | if (has_nvram) |
| 376 | { |
| 377 | m_cart->nvram_alloc(get_software_region_length("nvram")); |
| 378 | battery_load(m_cart->get_nvram_base(), get_software_region_length("nvram"), 0xff); |
| 379 | } |
| 370 | 380 | } |
| 371 | 381 | else |
| 372 | 382 | { |
| r32168 | r32169 | |
| 388 | 398 | // let's try to auto-fix some common errors in the header |
| 389 | 399 | mapper = validate_header((head[53] << 8) | head[54], TRUE); |
| 390 | 400 | |
| 391 | | switch (mapper & 0xfe) |
| 401 | switch (mapper & 0x2e) |
| 392 | 402 | { |
| 393 | 403 | case 0x0000: |
| 394 | 404 | m_type = BIT(mapper, 0) ? A78_TYPE1 : A78_TYPE0; |
| r32168 | r32169 | |
| 410 | 420 | m_type = A78_VERSABOARD; |
| 411 | 421 | break; |
| 412 | 422 | } |
| 413 | | |
| 414 | | // check special bits, which override the previous |
| 415 | | if ((mapper & 0xff00) == 0x0100) |
| 416 | | m_type = A78_ACTIVISION; |
| 417 | | else if ((mapper & 0xff00) == 0x0200) |
| 418 | | m_type = A78_ABSOLUTE; |
| 419 | | else if ((mapper & 0xff00) == 0x0300) |
| 423 | |
| 424 | // check if cart has a POKEY at $0450 (typically a VersaBoard variant)! |
| 425 | if (mapper & 0x40) |
| 420 | 426 | { |
| 421 | | // the cart has a POKEY at $0450 (typically a VersaBoard variant)! |
| 422 | 427 | if (m_type != A78_TYPE2) |
| 423 | 428 | { |
| 424 | 429 | m_type &= ~0x02; |
| 425 | 430 | m_type += A78_POKEY0450; |
| 426 | 431 | } |
| 427 | 432 | } |
| 433 | |
| 434 | // check special bits, which override the previous |
| 435 | if ((mapper & 0xff00) == 0x0100) |
| 436 | m_type = A78_ACTIVISION; |
| 437 | else if ((mapper & 0xff00) == 0x0200) |
| 438 | m_type = A78_ABSOLUTE; |
| 428 | 439 | |
| 429 | 440 | logerror("Cart type: 0x%x\n", m_type); |
| 430 | 441 | |
| r32168 | r32169 | |
| 450 | 461 | m_cart->rom_alloc(len); |
| 451 | 462 | ROM = m_cart->get_rom_base(); |
| 452 | 463 | fread(ROM, len); |
| 464 | |
| 465 | if (m_type == A78_TYPE6) |
| 466 | m_cart->ram_alloc(0x4000); |
| 467 | if (m_type == A78_MEGACART || (m_type >= A78_VERSABOARD && m_type <= A78_VERSA_POK450)) |
| 468 | m_cart->ram_alloc(0x8000); |
| 469 | if (m_type == A78_XB_BOARD || m_type == A78_XM_BOARD) |
| 470 | m_cart->ram_alloc(0x20000); |
| 471 | if (m_type == A78_HSC || m_type == A78_XM_BOARD) |
| 472 | { |
| 473 | m_cart->nvram_alloc(0x800); |
| 474 | battery_load(m_cart->get_nvram_base(), 0x800, 0xff); |
| 475 | } |
| 453 | 476 | } |
| 454 | 477 | |
| 455 | 478 | //printf("Type: %s\n", a78_get_slot(m_type)); |
| 456 | | |
| 457 | | if (m_type == A78_TYPE6) |
| 458 | | m_cart->ram_alloc(0x4000); |
| 459 | | if (m_type == A78_MEGACART || (m_type >= A78_VERSABOARD && m_type <= A78_VERSA_POK450)) |
| 460 | | m_cart->ram_alloc(0x8000); |
| 461 | | if (m_type == A78_XB_BOARD || m_type == A78_XM_BOARD) |
| 462 | | m_cart->ram_alloc(0x20000); |
| 463 | | if (m_type == A78_HSC || m_type == A78_XM_BOARD) |
| 464 | | { |
| 465 | | m_cart->nvram_alloc(0x800); |
| 466 | | battery_load(m_cart->get_nvram_base(), 0x800, 0xff); |
| 467 | | } |
| 468 | 479 | } |
| 469 | 480 | return IMAGE_INIT_PASS; |
| 470 | 481 | } |
| r32168 | r32169 | |
| 539 | 550 | // let's try to auto-fix some common errors in the header |
| 540 | 551 | mapper = validate_header((head[53] << 8) | head[54], FALSE); |
| 541 | 552 | |
| 542 | | switch (mapper & 0xfe) |
| 553 | switch (mapper & 0x2e) |
| 543 | 554 | { |
| 544 | 555 | case 0x0000: |
| 545 | 556 | type = BIT(mapper, 0) ? A78_TYPE1 : A78_TYPE0; |
| r32168 | r32169 | |
| 562 | 573 | break; |
| 563 | 574 | } |
| 564 | 575 | |
| 565 | | // check special bits, which override the previous |
| 566 | | if ((mapper & 0xff00) == 0x0100) |
| 567 | | type = A78_ACTIVISION; |
| 568 | | else if ((mapper & 0xff00) == 0x0200) |
| 569 | | type = A78_ABSOLUTE; |
| 570 | | else if ((mapper & 0xff00) == 0x0300) |
| 576 | // check if cart has a POKEY at $0450 (typically a VersaBoard variant)! |
| 577 | if (mapper & 0x40) |
| 571 | 578 | { |
| 572 | | // the cart has a POKEY at $0450 (typically a VersaBoard variant)! |
| 573 | 579 | if (type != A78_TYPE2) |
| 574 | 580 | { |
| 575 | 581 | type &= ~0x02; |
| 576 | 582 | type += A78_POKEY0450; |
| 577 | 583 | } |
| 578 | 584 | } |
| 579 | | |
| 585 | |
| 586 | // check special bits, which override the previous |
| 587 | if ((mapper & 0xff00) == 0x0100) |
| 588 | type = A78_ACTIVISION; |
| 589 | else if ((mapper & 0xff00) == 0x0200) |
| 590 | type = A78_ABSOLUTE; |
| 591 | |
| 580 | 592 | logerror("Cart type: %x\n", type); |
| 581 | 593 | slot_string = a78_get_slot(type); |
| 582 | 594 | |