Exemplo n.º 1
0
int memcard_insert(running_machine &machine, int index)
{
    generic_machine_private *state = machine.generic_machine_data;
    char name[16];

    /* if a card is already inserted, eject it first */
    if (state->memcard_inserted != -1)
        memcard_eject(machine);
    assert(state->memcard_inserted == -1);

    /* create a name */
    memcard_name(index, name);

    /* open the file; if we can't, it's an error */
    emu_file file(machine.options().memcard_directory(), OPEN_FLAG_READ);
    file_error filerr = file.open(machine.basename(), PATH_SEPARATOR, name);
    if (filerr != FILERR_NONE)
        return 1;

    /* initialize and then load the card */
    if (machine.config().m_memcard_handler)
        (*machine.config().m_memcard_handler)(machine, file, MEMCARD_INSERT);

    /* close the file */
    state->memcard_inserted = index;
    return 0;
}
Exemplo n.º 2
0
void memcard_eject(running_machine &machine)
{
    generic_machine_private *state = machine.generic_machine_data;
    char name[16];

    /* if no card is preset, just ignore */
    if (state->memcard_inserted == -1)
        return;

    /* create a name */
    memcard_name(state->memcard_inserted, name);

    /* open the file; if we can't, it's an error */
    emu_file file(machine.options().memcard_directory(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS);
    file_error filerr = file.open(machine.basename(), PATH_SEPARATOR, name);
    if (filerr != FILERR_NONE)
        return;

    /* initialize and then load the card */
    if (machine.config().m_memcard_handler)
        (*machine.config().m_memcard_handler)(machine, file, MEMCARD_EJECT);

    /* close the file */
    state->memcard_inserted = -1;
}
Exemplo n.º 3
0
void memcard_eject(running_machine *machine)
{
	file_error filerr;
	mame_file *file;
	char name[16];
	astring *fname;

	/* if no card is preset, just ignore */
	if (memcard_inserted == -1)
		return;

	/* create a name */
	memcard_name(memcard_inserted, name);
	fname = astring_assemble_3(astring_alloc(), Machine->basename, PATH_SEPARATOR, name);

	/* open the file; if we can't, it's an error */
	filerr = mame_fopen(SEARCHPATH_MEMCARD, astring_c(fname), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS, &file);
	astring_free(fname);
	if (filerr != FILERR_NONE)
	{
		mame_fclose(file);
		return;
	}

	/* initialize and then load the card */
	if (machine->drv->memcard_handler)
		(*machine->drv->memcard_handler)(machine, file, MEMCARD_EJECT);

	/* close the file */
	mame_fclose(file);
	memcard_inserted = -1;
}
Exemplo n.º 4
0
int memcard_create(running_machine &machine, int index, int overwrite)
{
    char name[16];

    /* create a name */
    memcard_name(index, name);

    /* if we can't overwrite, fail if the file already exists */
    astring fname(machine.basename(), PATH_SEPARATOR, name);
    if (!overwrite)
    {
        emu_file testfile(machine.options().memcard_directory(), OPEN_FLAG_READ);
        if (testfile.open(fname) == FILERR_NONE)
            return 1;
    }

    /* create a new file */
    emu_file file(machine.options().memcard_directory(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS);
    file_error filerr = file.open(fname);
    if (filerr != FILERR_NONE)
        return 1;

    /* initialize and then save the card */
    if (machine.config().m_memcard_handler)
        (*machine.config().m_memcard_handler)(machine, file, MEMCARD_CREATE);

    /* close the file */
    return 0;
}
Exemplo n.º 5
0
int memcard_insert(int index)
{
	file_error filerr;
	mame_file *file;
	char name[16];
	astring *fname;

	/* if a card is already inserted, eject it first */
	if (memcard_inserted != -1)
		memcard_eject(Machine);
	assert(memcard_inserted == -1);

	/* create a name */
	memcard_name(index, name);
	fname = astring_assemble_3(astring_alloc(), Machine->basename, PATH_SEPARATOR, name);

	/* open the file; if we can't, it's an error */
	filerr = mame_fopen(SEARCHPATH_MEMCARD, astring_c(fname), OPEN_FLAG_READ, &file);
	astring_free(fname);
	if (filerr != FILERR_NONE)
		return 1;

	/* initialize and then load the card */
	if (Machine->drv->memcard_handler)
		(*Machine->drv->memcard_handler)(Machine, file, MEMCARD_INSERT);

	/* close the file */
	mame_fclose(file);
	memcard_inserted = index;
	return 0;
}
Exemplo n.º 6
0
void memcard_eject(void)
{
	mame_file *file;
	char name[16];

	/* if no card is preset, just ignore */
	if (memcard_inserted == -1)
		return;

	/* create a name */
	memcard_name(memcard_inserted, name);

	/* open the file; if we can't, it's an error */
	file = mame_fopen(Machine->gamedrv->name, name, FILETYPE_MEMCARD, TRUE);
	if (file == NULL)
	{
		mame_fclose(file);
		return;
	}

	/* initialize and then load the card */
	if (Machine->drv->memcard_handler)
		(*Machine->drv->memcard_handler)(file, MEMCARD_EJECT);

	/* close the file */
	mame_fclose(file);
	memcard_inserted = -1;
}
Exemplo n.º 7
0
int memcard_insert(int index)
{
	mame_file *file;
	char name[16];

	/* if a card is already inserted, eject it first */
	if (memcard_inserted != -1)
		memcard_eject();
	assert(memcard_inserted == -1);

	/* create a name */
	memcard_name(index, name);

	/* open the file; if we can't, it's an error */
	file = mame_fopen(Machine->gamedrv->name, name, FILETYPE_MEMCARD, FALSE);
	if (file == NULL)
		return 1;

	/* initialize and then load the card */
	if (Machine->drv->memcard_handler)
		(*Machine->drv->memcard_handler)(file, MEMCARD_INSERT);

	/* close the file */
	mame_fclose(file);
	memcard_inserted = index;
	return 0;
}
Exemplo n.º 8
0
int memcard_create(int index, int overwrite)
{
	mame_file *file;
	char name[16];

	/* create a name */
	memcard_name(index, name);

	/* if we can't overwrite, fail if the file already exists */
	if (!overwrite)
	{
		file = mame_fopen(Machine->gamedrv->name, name, FILETYPE_MEMCARD, FALSE);
		if (file != NULL)
		{
			mame_fclose(file);
			return 1;
		}
	}

	/* create a new file */
	file = mame_fopen(Machine->gamedrv->name, name, FILETYPE_MEMCARD, TRUE);
	if (file == NULL)
		return 1;

	/* initialize and then save the card */
	if (Machine->drv->memcard_handler)
		(*Machine->drv->memcard_handler)(file, MEMCARD_CREATE);

	/* close the file */
	mame_fclose(file);
	return 0;
}
Exemplo n.º 9
0
int memcard_create(int index, int overwrite)
{
	file_error filerr;
	mame_file *file;
	astring *fname;
	char name[16];

	/* create a name */
	memcard_name(index, name);

	/* if we can't overwrite, fail if the file already exists */
	fname = astring_assemble_3(astring_alloc(), Machine->basename, PATH_SEPARATOR, name);
	if (!overwrite)
	{
		filerr = mame_fopen(SEARCHPATH_MEMCARD, astring_c(fname), OPEN_FLAG_READ, &file);
		if (filerr == FILERR_NONE)
		{
			mame_fclose(file);
			astring_free(fname);
			return 1;
		}
	}

	/* create a new file */
	filerr = mame_fopen(SEARCHPATH_MEMCARD, astring_c(fname), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS, &file);
	astring_free(fname);
	if (filerr != FILERR_NONE)
		return 1;

	/* initialize and then save the card */
	if (Machine->drv->memcard_handler)
		(*Machine->drv->memcard_handler)(Machine, file, MEMCARD_CREATE);

	/* close the file */
	mame_fclose(file);
	return 0;
}