trunk/hash/bbcm_cart.xml
| r29287 | r29288 | |
| 15 | 15 | <year>198?</year> |
| 16 | 16 | <publisher>Acorn</publisher> |
| 17 | 17 | <part name="cart" interface="bbcm_cart"> |
| 18 | | <dataarea name="rom" size="32768"> |
| 18 | <dataarea name="uprom" size="16384"> |
| 19 | 19 | <rom name="bbcmasterdemonstrationcartridge_1.rom" size="16384" crc="fc40c0e8" sha1="970ff4721e707f3c843f4fb09ce7f03e7ab265ae" offset="0" /> |
| 20 | | <rom name="bbcmasterdemonstrationcartridge_2.rom" size="16384" crc="2e73522d" sha1="ff39620d93b18fd36a4718474495211a46ef8184" offset="0x4000" /> |
| 21 | 20 | </dataarea> |
| 21 | <dataarea name="lorom" size="16384"> |
| 22 | <rom name="bbcmasterdemonstrationcartridge_2.rom" size="16384" crc="2e73522d" sha1="ff39620d93b18fd36a4718474495211a46ef8184" offset="0" /> |
| 23 | </dataarea> |
| 22 | 24 | </part> |
| 23 | 25 | </software> |
| 24 | 26 | |
trunk/src/mess/machine/bbc.c
| r29287 | r29288 | |
| 2020 | 2020 | DEVICE_IMAGE_LOAD_MEMBER( bbc_state, bbcm_cart ) |
| 2021 | 2021 | { |
| 2022 | 2022 | UINT8 *RAM = m_region_user1->base(); |
| 2023 | | UINT32 size; |
| 2024 | 2023 | int addr = 0, index = 0; |
| 2025 | 2024 | |
| 2026 | 2025 | if (strcmp(image.device().tag(),":cart1") == 0) |
| r29287 | r29288 | |
| 2031 | 2030 | |
| 2032 | 2031 | if (image.software_entry() == NULL) |
| 2033 | 2032 | { |
| 2034 | | size = image.length(); |
| 2033 | UINT32 size = image.length(); |
| 2035 | 2034 | logerror("loading rom %s, size:%.4x\n", image.filename(), size); |
| 2036 | 2035 | |
| 2037 | 2036 | if (size != 0x8000) |
| r29287 | r29288 | |
| 2044 | 2043 | } |
| 2045 | 2044 | else |
| 2046 | 2045 | { |
| 2047 | | size = image.get_software_region_length("rom"); |
| 2048 | | logerror("loading rom %s, size:%.4x\n", image.filename(), size); |
| 2046 | UINT32 size_lo = image.get_software_region_length("lorom"); |
| 2047 | UINT32 size_hi = image.get_software_region_length("uprom"); |
| 2048 | logerror("loading rom %s, size:%.4x\n", image.filename(), size_lo + size_hi); |
| 2049 | 2049 | |
| 2050 | | memcpy(RAM + addr, image.get_software_region("rom"), size); |
| 2050 | if (size_lo + size_hi != 0x8000) |
| 2051 | { |
| 2052 | image.seterror(IMAGE_ERROR_UNSUPPORTED, "Invalid rom file size"); |
| 2053 | return IMAGE_INIT_FAIL; |
| 2054 | } |
| 2055 | |
| 2056 | memcpy(RAM + addr + 0, image.get_software_region("uprom"), size_hi); |
| 2057 | memcpy(RAM + addr + size_hi, image.get_software_region("lorom"), size_lo); |
| 2051 | 2058 | } |
| 2052 | 2059 | |
| 2053 | 2060 | return IMAGE_INIT_PASS; |