本文整理汇总了C++中software_entry函数的典型用法代码示例。如果您正苦于以下问题:C++ software_entry函数的具体用法?C++ software_entry怎么用?C++ software_entry使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了software_entry函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: length
image_init_result channelf_cart_slot_device::call_load()
{
if (m_cart)
{
uint32_t len = (software_entry() == nullptr) ? length() : get_software_region_length("rom");
m_cart->rom_alloc(len, tag());
if (software_entry() == nullptr)
fread(m_cart->get_rom_base(), len);
else
memcpy(m_cart->get_rom_base(), get_software_region("rom"), len);
if (software_entry() == nullptr)
{
// we default to "chess" slot because some homebrew programs have been written to run
// on PCBs with RAM at $2000-$2800 as Saba Schach!
if (len == 0x40000)
m_type = CF_MULTI; // TODO1: differentiate multicart final and earlier from fullpath
else
m_type = CF_CHESS; // TODO2: is there any way to detect Maze and Hangman from fullpath?
m_cart->ram_alloc(0x800);
}
else
{
const char *pcb_name = get_feature("slot");
if (pcb_name)
m_type = chanf_get_pcb_id(pcb_name);
if (get_software_region("ram"))
m_cart->ram_alloc(get_software_region_length("ram"));
}
//printf("Type: %s\n", chanf_get_slot(m_type));
return image_init_result::PASS;
}
return image_init_result::PASS;
}
示例2: hard_disk_close
int harddisk_image_device::internal_load_hd()
{
astring tempstring;
chd_error err = CHDERR_NONE;
m_chd = NULL;
if (m_hard_disk_handle)
hard_disk_close(m_hard_disk_handle);
/* open the CHD file */
if (software_entry() != NULL)
{
m_chd = get_disk_handle(device().machine(), device().subtag(tempstring,"harddriv"));
}
else
{
err = m_origchd.open(*image_core_file(), true);
if (err == CHDERR_NONE)
{
m_chd = &m_origchd;
}
else if (err == CHDERR_FILE_NOT_WRITEABLE)
{
err = m_origchd.open(*image_core_file(), false);
if (err == CHDERR_NONE)
{
err = open_disk_diff(device().machine().options(), basename_noext(), m_origchd, m_diffchd);
if (err == CHDERR_NONE)
{
m_chd = &m_diffchd;
}
}
}
}
if (m_chd != NULL)
{
/* open the hard disk file */
m_hard_disk_handle = hard_disk_open(m_chd);
if (m_hard_disk_handle != NULL)
return IMAGE_INIT_PASS;
}
/* if we had an error, close out the CHD */
m_origchd.close();
m_diffchd.close();
m_chd = NULL;
seterror(IMAGE_ERROR_UNSPECIFIED, chd_file::error_string(err));
return IMAGE_INIT_FAIL;
}
示例3: set_init_phase
bool device_image_interface::open_image_file(emu_options &options)
{
const char* path = options.value(instance_name());
if (strlen(path)>0)
{
set_init_phase();
if (load_internal(path, FALSE, 0, NULL, TRUE)==IMAGE_INIT_PASS)
{
if (software_entry()==NULL) return true;
}
}
return false;
}
示例4: set_init_phase
bool device_image_interface::open_image_file(emu_options &options)
{
const char* path = options.value(instance_name());
if (*path != 0)
{
set_init_phase();
if (load_internal(path, false, 0, nullptr, true) == image_init_result::PASS)
{
if (software_entry()==nullptr) return true;
}
}
return false;
}
示例5: hard_disk_close
image_init_result harddisk_image_device::internal_load_hd()
{
chd_error err = CHDERR_NONE;
m_chd = nullptr;
if (m_hard_disk_handle)
hard_disk_close(m_hard_disk_handle);
/* open the CHD file */
if (software_entry() != nullptr)
{
m_chd = machine().rom_load().get_disk_handle(device().subtag("harddriv").c_str());
}
else
{
err = m_origchd.open(image_core_file(), true);
if (err == CHDERR_NONE)
{
m_chd = &m_origchd;
}
else if (err == CHDERR_FILE_NOT_WRITEABLE)
{
err = m_origchd.open(image_core_file(), false);
if (err == CHDERR_NONE)
{
err = open_disk_diff(device().machine().options(), basename_noext(), m_origchd, m_diffchd);
if (err == CHDERR_NONE)
{
m_chd = &m_diffchd;
}
}
}
}
if (m_chd != nullptr)
{
/* open the hard disk file */
m_hard_disk_handle = hard_disk_open(m_chd);
if (m_hard_disk_handle != nullptr)
return image_init_result::PASS;
}
/* if we had an error, close out the CHD */
m_origchd.close();
m_diffchd.close();
m_chd = nullptr;
seterror(IMAGE_ERROR_UNSPECIFIED, chd_file::error_string(err));
return image_init_result::FAIL;
}
示例6: if
bool cbm2_expansion_slot_device::call_load()
{
size_t size = 0;
if (m_card)
{
if (software_entry() == NULL)
{
size = length();
if (!mame_stricmp(filetype(), "20"))
{
fread(m_card->cbm2_bank1_pointer(machine(), size), size);
}
else if (!mame_stricmp(filetype(), "40"))
{
fread(m_card->cbm2_bank2_pointer(machine(), size), size);
}
else if (!mame_stricmp(filetype(), "60"))
{
fread(m_card->cbm2_bank3_pointer(machine(), size), size);
}
}
else
{
size = get_software_region_length("bank1");
if (size) memcpy(m_card->cbm2_bank1_pointer(machine(), size), get_software_region("bank1"), size);
size = get_software_region_length("bank2");
if (size) memcpy(m_card->cbm2_bank2_pointer(machine(), size), get_software_region("bank2"), size);
size = get_software_region_length("bank3");
if (size) memcpy(m_card->cbm2_bank3_pointer(machine(), size), get_software_region("bank3"), size);
size = get_software_region_length("ram");
if (size) memset(m_card->cbm2_ram_pointer(machine(), size), 0, size);
size = get_software_region_length("nvram");
if (size) memset(m_card->cbm2_nvram_pointer(machine(), size), 0, size);
}
}
return IMAGE_INIT_PASS;
}
示例7:
bool plus4_expansion_slot_device::call_load()
{
if (m_card)
{
if (software_entry() == NULL)
{
// TODO
}
else
{
load_software_region("c1l", m_card->m_c1l);
load_software_region("c1h", m_card->m_c1h);
load_software_region("c2l", m_card->m_c2l);
load_software_region("c2h", m_card->m_c2h);
}
}
return IMAGE_INIT_PASS;
}
示例8: if
image_init_result vic20_expansion_slot_device::call_load()
{
if (m_card)
{
if (software_entry() == nullptr)
{
if (is_filetype("20")) fread(m_card->m_blk1, 0x2000);
else if (is_filetype("40")) fread(m_card->m_blk2, 0x2000);
else if (is_filetype("60")) fread(m_card->m_blk3, 0x2000);
else if (is_filetype("70")) fread(m_card->m_blk3, 0x2000, 0x1000);
else if (is_filetype("a0")) fread(m_card->m_blk5, 0x2000);
else if (is_filetype("b0")) fread(m_card->m_blk5, 0x2000, 0x1000);
else if (is_filetype("crt"))
{
// read the header
uint8_t header[2];
fread(&header, 2);
uint16_t address = (header[1] << 8) | header[0];
switch (address)
{
case 0x2000: fread(m_card->m_blk1, 0x2000); break;
case 0x4000: fread(m_card->m_blk2, 0x2000); break;
case 0x6000: fread(m_card->m_blk3, 0x2000); break;
case 0x7000: fread(m_card->m_blk3, 0x2000, 0x1000); break;
case 0xa000: fread(m_card->m_blk5, 0x2000); break;
case 0xb000: fread(m_card->m_blk5, 0x2000, 0x1000); break;
default: return image_init_result::FAIL;
}
}
}
else
{
load_software_region("blk1", m_card->m_blk1);
load_software_region("blk2", m_card->m_blk2);
load_software_region("blk3", m_card->m_blk3);
load_software_region("blk5", m_card->m_blk5);
}
}
return image_init_result::PASS;
}
示例9: if
bool vic20_expansion_slot_device::call_load()
{
if (m_card)
{
if (software_entry() == NULL)
{
if (!core_stricmp(filetype(), "20")) fread(m_card->m_blk1, 0x2000);
else if (!core_stricmp(filetype(), "40")) fread(m_card->m_blk2, 0x2000);
else if (!core_stricmp(filetype(), "60")) fread(m_card->m_blk3, 0x2000);
else if (!core_stricmp(filetype(), "70")) fread(m_card->m_blk3, 0x2000, 0x1000);
else if (!core_stricmp(filetype(), "a0")) fread(m_card->m_blk5, 0x2000);
else if (!core_stricmp(filetype(), "b0")) fread(m_card->m_blk5, 0x2000, 0x1000);
else if (!core_stricmp(filetype(), "crt"))
{
// read the header
UINT8 header[2];
fread(&header, 2);
UINT16 address = (header[1] << 8) | header[0];
switch (address)
{
case 0x2000: fread(m_card->m_blk1, 0x2000); break;
case 0x4000: fread(m_card->m_blk2, 0x2000); break;
case 0x6000: fread(m_card->m_blk3, 0x2000); break;
case 0x7000: fread(m_card->m_blk3, 0x2000, 0x1000); break;
case 0xa000: fread(m_card->m_blk5, 0x2000); break;
case 0xb000: fread(m_card->m_blk5, 0x2000, 0x1000); break;
default: return IMAGE_INIT_FAIL;
}
}
}
else
{
load_software_region("blk1", m_card->m_blk1);
load_software_region("blk2", m_card->m_blk2);
load_software_region("blk3", m_card->m_blk3);
load_software_region("blk5", m_card->m_blk5);
}
}
return IMAGE_INIT_PASS;
}
示例10: call_load
bool ql_rom_cartridge_slot_t::call_load()
{
if (m_card)
{
size_t size = 0;
if (software_entry() == NULL)
{
size = length();
m_card->m_rom.allocate(size);
fread(m_card->m_rom, size);
}
else
{
load_software_region("rom", m_card->m_rom);
}
}
return IMAGE_INIT_PASS;
}
示例11: cdrom_close
bool cdrom_image_device::call_load()
{
chd_error err = (chd_error)0;
chd_file *chd = NULL;
astring tempstring;
if (m_cdrom_handle)
cdrom_close(m_cdrom_handle);
if (software_entry() == NULL)
{
if (strstr(m_image_name,".chd") && is_loaded()) {
err = m_self_chd.open( *image_core_file() ); /* CDs are never writeable */
if ( err )
goto error;
chd = &m_self_chd;
}
} else {
chd = get_disk_handle(device().machine(), device().subtag(tempstring,"cdrom"));
}
/* open the CHD file */
if (chd) {
m_cdrom_handle = cdrom_open( chd );
} else {
m_cdrom_handle = cdrom_open( m_image_name );
}
if ( ! m_cdrom_handle )
goto error;
return IMAGE_INIT_PASS;
error:
if ( chd && chd == &m_self_chd )
m_self_chd.close( );
if ( err )
seterror( IMAGE_ERROR_UNSPECIFIED, chd_file::error_string( err ) );
return IMAGE_INIT_FAIL;
}
示例12: call_load
// 128K for Dizzy The Adventurer, 256K for the others
bool nes_aladdin_slot_device::call_load()
{
if (m_cart)
{
UINT8 *ROM = m_cart->get_cart_base();
UINT32 size = 0;
if (!ROM)
return IMAGE_INIT_FAIL;
if (software_entry() == NULL)
{
if (length() != 0x20010 && length() != 0x40010)
return IMAGE_INIT_FAIL;
UINT8 temp[0x40010];
size = length() - 0x10;
fread(&temp, length());
memcpy(ROM, temp + 0x10, size);
// double check that iNES files are really mapper 71 or 232
{
UINT8 mapper = (temp[6] & 0xf0) >> 4;
mapper |= temp[7] & 0xf0;
if (mapper != 71 && mapper != 232)
return IMAGE_INIT_FAIL;
}
}
else
{
if (get_software_region_length("rom") != 0x20000 && get_software_region_length("rom") != 0x40000)
return IMAGE_INIT_FAIL;
size = get_software_region_length("rom");
memcpy(ROM, get_software_region("rom"), size);
}
m_cart->set_cart_size(size);
}
示例13: cdrom_close
image_init_result cdrom_image_device::call_load()
{
chd_error err = (chd_error)0;
chd_file *chd = nullptr;
if (m_cdrom_handle)
cdrom_close(m_cdrom_handle);
if (software_entry() == nullptr)
{
if (is_filetype("chd") && is_loaded()) {
err = m_self_chd.open( image_core_file() ); /* CDs are never writeable */
if ( err )
goto error;
chd = &m_self_chd;
}
} else {
chd = device().machine().rom_load().get_disk_handle(device().subtag("cdrom").c_str());
}
/* open the CHD file */
if (chd) {
m_cdrom_handle = cdrom_open( chd );
} else {
m_cdrom_handle = cdrom_open(m_image_name.c_str());
}
if ( ! m_cdrom_handle )
goto error;
return image_init_result::PASS;
error:
if ( chd && chd == &m_self_chd )
m_self_chd.close( );
if ( err )
seterror( IMAGE_ERROR_UNSPECIFIED, chd_file::error_string( err ) );
return image_init_result::FAIL;
}
示例14: call_load
bool cococart_slot_device::call_load()
{
if (m_cart)
{
offs_t read_length = 0;
if (software_entry() == NULL)
{
read_length = fread(m_cart->get_cart_base(), 0x8000);
}
else
{
read_length = get_software_region_length("rom");
memcpy(m_cart->get_cart_base(), get_software_region("rom"), read_length);
}
while(read_length < 0x8000)
{
offs_t len = MIN(read_length, 0x8000 - read_length);
memcpy(m_cart->get_cart_base() + read_length, m_cart->get_cart_base(), len);
read_length += len;
}
}
return IMAGE_INIT_PASS;
}
示例15: call_load
bool adam_expansion_slot_device::call_load()
{
if (m_cart)
{
size_t size = 0;
if (software_entry() == NULL)
{
size = length();
fread(m_cart->adam_rom_pointer(machine(), size), size);
}
else
{
size = get_software_region_length("rom");
if (size) memcpy(m_cart->adam_rom_pointer(machine(), size), get_software_region("rom"), size);
size = get_software_region_length("ram");
if (size) memcpy(m_cart->adam_ram_pointer(machine(), size), get_software_region("ram"), size);
}
}
return IMAGE_INIT_PASS;
}