bool vic10_expansion_slot_device::call_load() { if (m_card) { size_t size; if (software_entry() == nullptr) { size = length(); if (!core_stricmp(filetype(), "80")) { fread(m_card->m_lorom, 0x2000); if (size == 0x4000) { fread(m_card->m_uprom, 0x2000); } } else if (!core_stricmp(filetype(), "e0")) { fread(m_card->m_uprom, size); } else if (!core_stricmp(filetype(), "crt")) { size_t roml_size = 0; size_t romh_size = 0; int exrom = 1; int game = 1; if (cbm_crt_read_header(m_file, &roml_size, &romh_size, &exrom, &game)) { UINT8 *roml = nullptr; UINT8 *romh = nullptr; m_card->m_lorom.allocate(roml_size); m_card->m_uprom.allocate(romh_size); if (roml_size) roml = m_card->m_lorom; if (romh_size) romh = m_card->m_lorom; cbm_crt_read_data(m_file, roml, romh); } } } else { load_software_region("lorom", m_card->m_lorom); load_software_region("exram", m_card->m_exram); load_software_region("uprom", m_card->m_uprom); } } return IMAGE_INIT_PASS; }
bool vic10_expansion_slot_device::call_load() { if (m_cart) { size_t size = 0; if (software_entry() == NULL) { size = length(); if (!mame_stricmp(filetype(), "80")) { fread(m_cart->vic10_lorom_pointer(machine(), 0x2000), 0x2000); if (size == 0x4000) { fread(m_cart->vic10_uprom_pointer(machine(), 0x2000), 0x2000); } } else if (!mame_stricmp(filetype(), "e0")) fread(m_cart->vic10_uprom_pointer(machine(), size), size); else if (!mame_stricmp(filetype(), "crt")) { size_t roml_size = 0; size_t romh_size = 0; int exrom = 1; int game = 1; if (cbm_crt_read_header(m_file, &roml_size, &romh_size, &exrom, &game)) { UINT8 *roml = NULL; UINT8 *romh = NULL; if (roml_size) roml = m_cart->vic10_lorom_pointer(machine(), roml_size); if (romh_size) romh = m_cart->vic10_uprom_pointer(machine(), romh_size); cbm_crt_read_data(m_file, roml, romh); } } } else { size = get_software_region_length("lorom"); if (size) memcpy(m_cart->vic10_lorom_pointer(machine(), size), get_software_region("lorom"), size); size = get_software_region_length("uprom"); if (size) memcpy(m_cart->vic10_uprom_pointer(machine(), size), get_software_region("uprom"), size); size = get_software_region_length("exram"); if (size) m_cart->vic10_exram_pointer(machine(), size); } } return IMAGE_INIT_PASS; }
bool c64_expansion_slot_device::call_load() { if (m_card) { size_t size = 0; if (software_entry() == NULL) { size = length(); if (!mame_stricmp(filetype(), "80")) { fread(m_card->m_roml, size); m_card->m_exrom = (0); if (size == 0x4000) { m_card->m_game = 0; } } else if (!mame_stricmp(filetype(), "a0")) { fread(m_card->m_romh, 0x2000); m_card->m_exrom = 0; m_card->m_game = 0; } else if (!mame_stricmp(filetype(), "e0")) { fread(m_card->m_romh, 0x2000); m_card->m_game = 0; } else if (!mame_stricmp(filetype(), "crt")) { size_t roml_size = 0; size_t romh_size = 0; int exrom = 1; int game = 1; if (cbm_crt_read_header(m_file, &roml_size, &romh_size, &exrom, &game)) { UINT8 *roml = NULL; UINT8 *romh = NULL; m_card->m_roml.allocate(roml_size); m_card->m_romh.allocate(romh_size); if (roml_size) roml = m_card->m_roml; if (romh_size) romh = m_card->m_roml; cbm_crt_read_data(m_file, roml, romh); } m_card->m_exrom = exrom; m_card->m_game = game; } } else { size = get_software_region_length("uprom"); if (size) { // Ultimax (VIC-10) cartridge load_software_region("lorom", m_card->m_roml); load_software_region("uprom", m_card->m_romh); m_card->m_exrom = 1; m_card->m_game = 0; } else { // Commodore 64/128 cartridge load_software_region("roml", m_card->m_roml); load_software_region("romh", m_card->m_romh); load_software_region("nvram", m_card->m_nvram); if (get_feature("exrom") != NULL) m_card->m_exrom = atol(get_feature("exrom")); if (get_feature("game") != NULL) m_card->m_game = atol(get_feature("game")); } } } return IMAGE_INIT_PASS; }
image_init_result c64_expansion_slot_device::call_load() { if (m_card) { size_t size; if (software_entry() == nullptr) { size = length(); if (is_filetype("80")) { fread(m_card->m_roml, size); m_card->m_exrom = (0); if (size == 0x4000) { m_card->m_game = 0; } } else if (is_filetype("a0")) { fread(m_card->m_romh, 0x2000); m_card->m_exrom = 0; m_card->m_game = 0; } else if (is_filetype("e0")) { fread(m_card->m_romh, 0x2000); m_card->m_game = 0; } else if (is_filetype("crt")) { size_t roml_size = 0; size_t romh_size = 0; int exrom = 1; int game = 1; if (cbm_crt_read_header(*m_file, &roml_size, &romh_size, &exrom, &game)) { uint8_t *roml = nullptr; uint8_t *romh = nullptr; m_card->m_roml.allocate(roml_size); m_card->m_romh.allocate(romh_size); if (roml_size) roml = m_card->m_roml; if (romh_size) romh = m_card->m_roml; cbm_crt_read_data(*m_file, roml, romh); } m_card->m_exrom = exrom; m_card->m_game = game; } } else { size = get_software_region_length("uprom"); if (size) { // Ultimax (VIC-10) cartridge load_software_region("lorom", m_card->m_roml); load_software_region("uprom", m_card->m_romh); m_card->m_exrom = 1; m_card->m_game = 0; } else { // Commodore 64/128 cartridge load_software_region("roml", m_card->m_roml); load_software_region("romh", m_card->m_romh); load_software_region("nvram", m_card->m_nvram); if (get_feature("exrom") != nullptr) m_card->m_exrom = atol(get_feature("exrom")); if (get_feature("game") != nullptr) m_card->m_game = atol(get_feature("game")); } } } return image_init_result::PASS; }