本文整理汇总了C++中software_entry函数的典型用法代码示例。如果您正苦于以下问题:C++ software_entry函数的具体用法?C++ software_entry怎么用?C++ software_entry使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了software_entry函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的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;
}
开发者ID:Robbbert,项目名称:store1,代码行数:40,代码来源:slot.cpp
示例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;
}
开发者ID:LeWoY,项目名称:MAMEHub,代码行数:52,代码来源:harddriv.c
示例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;
}
开发者ID:NastyNoah,项目名称:groovyarcade.groovymame,代码行数:13,代码来源:diimage.c
示例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;
}
开发者ID:RalfVB,项目名称:mame,代码行数:13,代码来源:diimage.cpp
示例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;
}
开发者ID:GiuseppeGorgoglione,项目名称:mame,代码行数:51,代码来源:harddriv.cpp
示例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;
}
开发者ID:antervud,项目名称:MAMEHub,代码行数:44,代码来源:cbm2exp.c
示例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;
}
开发者ID:BrandoCommando,项目名称:mame,代码行数:19,代码来源:exp.c
示例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;
}
开发者ID:Enverex,项目名称:mame,代码行数:42,代码来源:exp.cpp
示例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;
}
开发者ID:DanielAeolusLaude,项目名称:mame,代码行数:42,代码来源:exp.c
示例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;
}
开发者ID:dinkc64,项目名称:mame,代码行数:21,代码来源:rom.c
示例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;
}
开发者ID:jiangzhonghui,项目名称:mame,代码行数:39,代码来源:chd_cd.c
示例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);
}
开发者ID:BrandoCommando,项目名称:mame,代码行数:40,代码来源:aladdin.c
示例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;
}
开发者ID:Robbbert,项目名称:store1,代码行数:38,代码来源:chd_cd.cpp
示例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;
}
开发者ID:antervud,项目名称:MAMEHub,代码行数:23,代码来源:cococart.c
示例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;
}
开发者ID:coinhelper,项目名称:jsmess,代码行数:24,代码来源:adamexp.c
示例16: if
bool cbm2_expansion_slot_device::call_load()
{
size_t size = 0;
if (m_card)
{
if (software_entry() == NULL)
{
size = length();
if (!core_stricmp(filetype(), "20"))
{
m_card->m_bank1.allocate(size);
fread(m_card->m_bank1, size);
}
else if (!core_stricmp(filetype(), "40"))
{
m_card->m_bank2.allocate(size);
fread(m_card->m_bank2, size);
}
else if (!core_stricmp(filetype(), "60"))
{
m_card->m_bank3.allocate(size);
fread(m_card->m_bank3, size);
}
}
else
{
load_software_region("bank1", m_card->m_bank1);
load_software_region("bank2", m_card->m_bank2);
load_software_region("bank3", m_card->m_bank3);
}
}
return IMAGE_INIT_PASS;
}
开发者ID:BrandoCommando,项目名称:mame,代码行数:36,代码来源:exp.c
示例17: if
image_init_result cbm2_expansion_slot_device::call_load()
{
size_t size;
if (m_card)
{
if (software_entry() == nullptr)
{
size = length();
if (is_filetype("20"))
{
m_card->m_bank1.allocate(size);
fread(m_card->m_bank1, size);
}
else if (is_filetype("40"))
{
m_card->m_bank2.allocate(size);
fread(m_card->m_bank2, size);
}
else if (is_filetype("60"))
{
m_card->m_bank3.allocate(size);
fread(m_card->m_bank3, size);
}
}
else
{
load_software_region("bank1", m_card->m_bank1);
load_software_region("bank2", m_card->m_bank2);
load_software_region("bank3", m_card->m_bank3);
}
}
return image_init_result::PASS;
}
开发者ID:GiuseppeGorgoglione,项目名称:mame,代码行数:36,代码来源:exp.cpp
示例18: call_load
image_init_result videobrain_expansion_slot_device::call_load()
{
if (m_cart)
{
size_t size;
if (software_entry() == nullptr)
{
size = length();
fread(m_cart->videobrain_rom_pointer(machine(), size), size);
}
else
{
size = get_software_region_length("rom");
if (size) memcpy(m_cart->videobrain_rom_pointer(machine(), size), get_software_region("rom"), size);
size = get_software_region_length("ram");
if (size) memset(m_cart->videobrain_ram_pointer(machine(), size), 0, size);
}
}
return image_init_result::PASS;
}
开发者ID:Enverex,项目名称:mame,代码行数:24,代码来源:exp.cpp
示例19: if
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;
}
开发者ID:dezi,项目名称:mame-libretro-odroid,代码行数:86,代码来源:exp.c
示例20: get_software_region_length
bool vcs_cart_slot_device::call_load()
{
UINT8 *ROM;
UINT32 len;
if (software_entry() != NULL)
len = get_software_region_length("rom");
else
len = length();
//printf("Size: 0x%X\n", len);
// check that filesize is among the supported ones
switch (len)
{
case 0x00800:
case 0x01000:
case 0x02000:
case 0x028ff:
case 0x02900:
case 0x03000:
case 0x04000:
case 0x08000:
case 0x10000:
case 0x80000:
break;
default:
seterror(IMAGE_ERROR_UNSUPPORTED, "Invalid rom file size" );
return IMAGE_INIT_FAIL;
}
m_cart->rom_alloc(len);
ROM = m_cart->get_rom_base();
if (software_entry() != NULL)
{
const char *pcb_name;
memcpy(ROM, get_software_region("rom"), len);
if ((pcb_name = get_feature("slot")) != NULL)
m_type = vcs_get_pcb_id(pcb_name);
else
{
// identify type based on size
switch (len)
{
case 0x800:
m_type = A26_2K;
break;
case 0x1000:
m_type = A26_4K;
break;
case 0x2000:
m_type = A26_F8;
break;
case 0x28ff:
case 0x2900:
m_type = A26_DPC;
break;
case 0x3000:
m_type = A26_FA;
break;
case 0x4000:
m_type = A26_F6;
break;
case 0x8000:
m_type = A26_F4;
break;
case 0x10000:
m_type = A26_32IN1;
break;
case 0x80000:
m_type = A26_3F;
break;
default:
m_type = A26_4K;
printf("Unrecognized cart type!\n");
break;
}
}
}
else
{
fread(ROM, len);
m_type = identify_cart_type(ROM, len);
}
//printf("Type: %s\n", vcs_get_slot(m_type));
// check for Special Chip (128bytes of RAM)
if (len == 0x2000 || len == 0x4000 || len == 0x8000)
if (detect_super_chip(ROM, len))
{
m_cart->ram_alloc(0x80);
//printf("Super Chip detected!\n");
}
// Super chip games:
// dig dig, crystal castles, millipede, stargate, defender ii, jr. Pac Man,
//.........这里部分代码省略.........
开发者ID:jbaicoianu,项目名称:mame,代码行数:101,代码来源:vcs_slot.c
注:本文中的software_entry函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论