Added helpers for loading file for slot determination (no whatsnew)

This commit is contained in:
Miodrag Milanovic 2012-02-21 10:27:17 +00:00
parent d9303a9a03
commit dab559f2aa
2 changed files with 27 additions and 4 deletions

View File

@ -38,6 +38,7 @@
***************************************************************************/
#include "emu.h"
#include "emuopts.h"
#include "ui.h"
#include "zippath.h"
#include "uiimage.h"
@ -845,7 +846,7 @@ bool device_image_interface::load_software(char *swlist, char *swname, rom_entry
load_internal - core image loading
-------------------------------------------------*/
bool device_image_interface::load_internal(const char *path, bool is_create, int create_format, option_resolution *create_args)
bool device_image_interface::load_internal(const char *path, bool is_create, int create_format, option_resolution *create_args, bool just_load)
{
UINT32 open_plan[4];
int i;
@ -926,6 +927,10 @@ bool device_image_interface::load_internal(const char *path, bool is_create, int
/* success! */
done:
if (just_load) {
if(m_err) clear();
return m_err ? IMAGE_INIT_FAIL : IMAGE_INIT_PASS;
}
if (m_err!=0) {
if (!m_init_phase)
{
@ -962,9 +967,26 @@ done:
bool device_image_interface::load(const char *path)
{
return load_internal(path, FALSE, 0, NULL);
return load_internal(path, FALSE, 0, NULL, FALSE);
}
/*-------------------------------------------------
load_for_slot - load an image for slot device
-------------------------------------------------*/
bool device_image_interface::load_for_slot(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;
}
/*-------------------------------------------------
image_finish_load - special call - only use
@ -1016,7 +1038,7 @@ bool device_image_interface::finish_load()
bool device_image_interface::create(const char *path, const image_device_format *create_format, option_resolution *create_args)
{
int format_index = (create_format != NULL) ? create_format->m_index : 0;
return load_internal(path, TRUE, format_index, create_args);
return load_internal(path, TRUE, format_index, create_args, FALSE);
}

View File

@ -246,6 +246,7 @@ public:
image_device_format *formatlist() const { return m_formatlist; }
bool load(const char *path);
bool load_for_slot(emu_options &options);
bool finish_load();
void unload();
bool create(const char *path, const image_device_format *create_format, option_resolution *create_args);
@ -253,7 +254,7 @@ public:
int reopen_for_write(const char *path);
protected:
bool load_internal(const char *path, bool is_create, int create_format, option_resolution *create_args);
bool load_internal(const char *path, bool is_create, int create_format, option_resolution *create_args, bool just_load);
void determine_open_plan(int is_create, UINT32 *open_plan);
image_error_t load_image_by_path(UINT32 open_flags, const char *path);
void clear();