Exemplo n.º 1
0
void PC80S31K::initialize()
{
	// init memory
	memset(rom, 0xff, sizeof(rom));
	memset(ram, 0, sizeof(ram));
	memset(rdmy, 0xff, sizeof(rdmy));
	
	// load rom image
	FILEIO* fio = new FILEIO();
	if(fio->Fopen(create_local_path(_T("PC88.ROM")), FILEIO_READ_BINARY)) {
		fio->Fseek(0x14000, FILEIO_SEEK_CUR);
		fio->Fread(rom, sizeof(rom), 1);
		fio->Fclose();
	} else if(fio->Fopen(create_local_path(_T("DISK.ROM")), FILEIO_READ_BINARY)) {
		fio->Fread(rom, sizeof(rom), 1);
		fio->Fclose();
	} else {
		// stop cpu
		d_cpu->write_signal(SIG_CPU_BUSREQ, 1, 1);
	}
	delete fio;
	
	// init memory map
	SET_BANK(0x0000, 0x1fff, wdmy, rom);
	SET_BANK(0x2000, 0x3fff, wdmy, rdmy);
	SET_BANK(0x4000, 0x7fff, ram, ram);
	SET_BANK(0x8000, 0xffff, wdmy, rdmy);
	
	// XM8 version 1.20
	// both drives always set force ready signal
	d_fdc->write_signal(SIG_UPD765A_FREADY, 1, 1);
}
Exemplo n.º 2
0
KANJIROM::KANJIROM(VM *parent_vm, EMU* parent_emu, bool type_2std): DEVICE(parent_vm, parent_emu)
{
	FILEIO *fio;
	read_ok = false;
	
	fio = new FILEIO();
	memset(data_table, 0xff, 0x20000); 
	//	read_table[0].memory = data_table;
	
	if(type_2std) {
		class2 = true;
		if(fio->Fopen(create_local_path(_T("KANJI2.ROM")), FILEIO_READ_BINARY)) {
		  fio->Fread(data_table, 0x20000, 1);
			fio->Fclose();
			read_ok = true;
		}
	} else {
		class2 = false;
		if(fio->Fopen(create_local_path(_T("KANJI1.ROM")), FILEIO_READ_BINARY)) {
		  fio->Fread(data_table, 0x20000, 1);
			fio->Fclose();
			read_ok = true;
		} else if(fio->Fopen(create_local_path(_T("KANJI.ROM")), FILEIO_READ_BINARY)) {
		  fio->Fread(data_table, 0x20000, 1);
			fio->Fclose();
			read_ok = true;
		} 
	}
	kanjiaddr.d = 0;
	delete fio;
	return;
}
Exemplo n.º 3
0
//
// initialize()
// initiailize
//
void DiskSub::initialize()
{
	FILEIO *fio;
	int high;
	int low;
	uint8 *ptr;
	uint8 eor;

	// clear rom & initialize (JR *)
	memset(&memory[0x0000], 0xff, 0x2000);
	memory[0x0000] = 0x18;
	memory[0x0001] = 0xfe;

	// clear higher memory
	memset(&memory[0x8000], 0xff, 0x8000);

	// inititlize 0x2000-0x7fff
	ptr = &memory[0x2000];
	for (high=0; high<0x60; high++) {
		// get xor data
		switch (init_table[high]) {
		case 0:
			eor = 0xf0;
			break;
		case 1:
			eor = 0x0f;
			break;
		case 2:
			eor = 0xff;
			break;
		default:
			eor = 0x00;
			break;
		}

		// fill memory
		for (low=0; low<0x10; low++) {
			memset(ptr, init_pattern[low] ^ eor, 0x10);
			ptr += 0x10;
		}
	}

	// read ROM (both PC88.ROM and DISK.ROM)
	fio = new FILEIO;
	if (fio->Fopen(emu->bios_path(_T("PC88.ROM")), FILEIO_READ_BINARY) == true) {
		fio->Fseek(0x14000, FILEIO_SEEK_CUR);
		fio->Fread(&memory[0], 1, 0x2000);
		fio->Fclose();
	}
	if (fio->Fopen(emu->bios_path(_T("DISK.ROM")), FILEIO_READ_BINARY) ==  true) {
		fio->Fread(&memory[0], 1, 0x2000);
		fio->Fclose();
	}
	delete fio;
}
Exemplo n.º 4
0
void RP5C01::initialize()
{
#ifndef HAS_RP5C15
	// load ram image
	memset(ram, 0, sizeof(ram));
	
	FILEIO* fio = new FILEIO();
	if(fio->Fopen(emu->bios_path(_T("RP5C01.BIN")), FILEIO_READ_BINARY)) {
		fio->Fread(ram, sizeof(ram), 1);
		fio->Fclose();
	}
	delete fio;
#endif
	
	// initialize rtc
	memset(regs, 0, sizeof(regs));
	regs[0x0a] = 1;
	regs[0x0d] = 8;
	regs[0x0f] = 0xc;
	alarm = pulse_1hz = pulse_16hz = false;
	count_16hz = 0;
	
	emu->get_host_time(&cur_time);
	read_from_cur_time();
	
	// register events
	register_event(this, EVENT_1SEC, 1000000, true, &register_id);
	register_event(this, EVENT_16HZ, 1000000 / 32, true, NULL);
}
Exemplo n.º 5
0
void MEMORY::initialize()
{
	memset(rom, 0xff, sizeof(rom));
	memset(rdmy, 0xff, sizeof(rdmy));
	
	// load rom image
	FILEIO* fio = new FILEIO();
	if(fio->Fopen(emu->bios_path(_T("BASIC.ROM")), FILEIO_READ_BINARY)) {
		fio->Fread(rom, sizeof(rom), 1);
		fio->Fclose();
	}
	delete fio;
	
	// set memory map
#ifdef _MAP1010
	SET_BANK(0x0000, 0x5fff, wdmy, rom );
	SET_BANK(0x6000, 0x77ff, vram, vram);
	SET_BANK(0x7800, 0x7fff, wdmy, rdmy);
	SET_BANK(0x8000, 0xffff, ram,  ram );
#else
	SET_BANK(0x0000, 0x5fff, wdmy, rom );
	SET_BANK(0x6000, 0x77ff, vram, vram);
	SET_BANK(0x7800, 0xbfff, wdmy, rdmy);
	SET_BANK(0xc000, 0xffff, ram,  ram );
#endif
}
Exemplo n.º 6
0
void DISPLAY::initialize()
{
	scanline = config.scan_line;
	
	// load rom image
	FILEIO* fio = new FILEIO();
	if(fio->Fopen(emu->bios_path(_T("FONT.ROM")), FILEIO_READ_BINARY)) {
		fio->Fread(font, sizeof(font), 1);
		fio->Fclose();
	}
	delete fio;
	
	// create pc palette
#ifdef _LCD
	for(int i = 1; i < 8; i++) {
		palette_pc[i] = RGB_COLOR(48, 56, 16);
	}
	palette_pc[0] = RGB_COLOR(160, 168, 160);
#else
	for(int i = 0; i < 8; i++) {
		palette_pc[i] = RGB_COLOR((i & 2) ? 255 : 0, (i & 4) ? 255 : 0, (i & 1) ? 255 : 0);
	}
#endif
	
	// initialize
	for(int i = 0; i < 16; i++) {
		pal[i] = i & 7;
	}
	mode = text_page = 0;
	cblink = flash_cnt = 0;
	blink = pal_dis = false;
	
	// register event
	register_frame_event(this);
}
Exemplo n.º 7
0
void MEMORY::initialize()
{
	memset(ram, 0, sizeof(ram));
	memset(ext, 0, sizeof(ext));
	memset(vram, 0, sizeof(vram));
	memset(ipl, 0xff, sizeof(ipl));
	memset(cart, 0xff, sizeof(cart));
	memset(rdmy, 0xff, sizeof(rdmy));
	
	// load ipl
	FILEIO* fio = new FILEIO();
	if(fio->Fopen(emu->bios_path(_T("IPL.ROM")), FILEIO_READ_BINARY)) {
		fio->Fread(ipl, sizeof(ipl), 1);
		fio->Fclose();
	}
	delete fio;
	
	// set memory map
	SET_BANK(0x0000, 0x1fff, wdmy, ipl );
	SET_BANK(0x2000, 0x5fff, wdmy, cart);
	SET_BANK(0x6000, 0xafff, ext,  ext );
	SET_BANK(0xb000, 0xefff, ram,  ram );
	SET_BANK(0xf000, 0xffff, wdmy, rdmy);
	
	for(int i = 0; i < 6; i++) {
		vbank[i] = vram + 0x2000 * i;
	}
	rpage = wpage = 0;
}
Exemplo n.º 8
0
void RTC::initialize()
{
	// load rtc regs image
	memset(regs, 0, sizeof(regs));
	regs[POWON] = 0x10;	// cleared
	
	FILEIO* fio = new FILEIO();
	if(fio->Fopen(create_local_path(_T("RTC.BIN")), FILEIO_READ_BINARY)) {
		fio->Fread(regs + 8, 32, 1);
		fio->Fclose();
	}
	delete fio;
	
	// init registers
//	regs[POWON] &= 0x1f;	// local power on
//	regs[POWOF] = 0x80;	// program power off
	regs[POWON] = 0x10;	// cleared
	regs[POWOF] = 0x20;	// illegal power off
	regs[TCNT] = 0;
	update_checksum();
	
	rtcmr = rtdsr = 0;
	
	// update calendar
	get_host_time(&cur_time);
	read_from_cur_time();
	
	// register event
	register_event_by_clock(this, EVENT_1HZ, CPU_CLOCKS, true, &register_id);
	register_event_by_clock(this, EVENT_32HZ, CPU_CLOCKS >> 5, true, NULL);
}
Exemplo n.º 9
0
void load_config()
{
	// initial settings
	init_config();
	
	// get application path
	_TCHAR app_path[_MAX_PATH], config_path[_MAX_PATH];
	GetModuleFileName(NULL, app_path, _MAX_PATH);
	int pt = _tcslen(app_path);
	while(pt >= 0 && app_path[pt] != _T('\\')) {
		pt--;
	}
	app_path[pt + 1] = _T('\0');
	
	// load config
	_stprintf(config_path, _T("%s%s.cfg"), app_path, _T(CONFIG_NAME));
	FILEIO* fio = new FILEIO();
	if(fio->Fopen(config_path, FILEIO_READ_BINARY)) {
		fio->Fread((void *)&config, sizeof(config), 1);
		fio->Fclose();
		
		// check config version
		if(!(config.version1 == FILE_VERSION && config.version2 == CONFIG_VERSION)) {
			init_config();
		}
#if defined(USE_BITMAP) || defined(USE_LED)
		config.window_mode = 0;
		config.use_d3d9 = false;
		config.stretch_screen = false;
#endif
		config.cpu_power = 0;
	}
	delete fio;
}
Exemplo n.º 10
0
void MEMORY::initialize()
{
	// init memory
	memset(ram, 0, sizeof(ram));
	memset(vram, 0, sizeof(vram));
	memset(cvram, 0, sizeof(cvram));
	memset(kvram, 0, sizeof(kvram));
	memset(ipl, 0xff, sizeof(ipl));
	memset(kanji16, 0xff, sizeof(kanji16));
	memset(rdmy, 0xff, sizeof(rdmy));
	
	// load rom image
	FILEIO* fio = new FILEIO();
	if(fio->Fopen(emu->bios_path(_T("IPL.ROM")), FILEIO_READ_BINARY)) {
		fio->Fread(ipl, sizeof(ipl), 1);
		fio->Fclose();
	}
	else {
		// load pseudo ipl
		memcpy(ipl + 0xc000, bios1, sizeof(bios1));
		memcpy(ipl + 0xfff0, bios2, sizeof(bios2));
		
		// ank8/16
		if(fio->Fopen(emu->bios_path(_T("ANK8.ROM")), FILEIO_READ_BINARY)) {
			fio->Fread(ipl, 0x800, 1);
			fio->Fclose();
		}
		if(fio->Fopen(emu->bios_path(_T("ANK16.ROM")), FILEIO_READ_BINARY)) {
			fio->Fread(ipl + 0x800, 0x1000, 1);
			fio->Fclose();
		}
	}
	if(fio->Fopen(emu->bios_path(_T("KANJI16.ROM")), FILEIO_READ_BINARY)) {
		fio->Fread(kanji16, sizeof(kanji16), 1);
		fio->Fclose();
	}
	delete fio;
	
	// set memory
	SET_BANK(0x000000, 0xffffff, wdmy, rdmy);
	SET_BANK(0x000000, sizeof(ram) - 1, ram, ram);
	SET_BANK(0xff0000, 0xffffff, wdmy, ipl);
	
	// register event
	register_frame_event(this);
}
Exemplo n.º 11
0
void CMOS::release()
{
	FILEIO* fio = new FILEIO();
	if(fio->Fopen(emu->bios_path(_T("CMOS.BIN")), FILEIO_WRITE_BINARY)) {
		fio->Fwrite(cmos, sizeof(cmos), 1);
		fio->Fclose();
	}
	delete fio;
}
Exemplo n.º 12
0
VM::VM(EMU* parent_emu) : emu(parent_emu)
{
	// create devices
	first_device = last_device = NULL;
	dummy = new DEVICE(this, emu);	// must be 1st device
	event = new EVENT(this, emu);	// must be 2nd device
	
	drec = new DATAREC(this, emu);
	cpu = new I8080(this, emu);	// i8085
	memory = new MEMORY(this, emu);
	rtc = new RP5C01(this, emu);
	
	io = new IO(this, emu);
	
	// set contexts
	event->set_context_cpu(cpu);
	event->set_context_sound(drec);
	
	drec->set_context_ear(io, SIG_IO_CMT, 1);
	cpu->set_context_sod(io, SIG_IO_SOD, 1);
	
	io->set_context_cpu(cpu);
	io->set_context_drec(drec);
	io->set_context_rtc(rtc);
	
	// cpu bus
	cpu->set_context_mem(memory);
	cpu->set_context_io(io);
	cpu->set_context_intr(io);
#ifdef USE_DEBUGGER
	cpu->set_context_debugger(new DEBUGGER(this, emu));
#endif
	
	// memory bus
	memset(rom, 0xff, sizeof(rom));
	memset(ram, 0, sizeof(ram));
	
	memory->read_bios(_T("BIOS.ROM"), rom, sizeof(rom));
	
	FILEIO* fio = new FILEIO();
	if(fio->Fopen(create_local_path(_T("RAM.BIN")), FILEIO_READ_BINARY)) {
		fio->Fread(ram, sizeof(ram), 1);
		fio->Fclose();
	}
	delete fio;
	
	memory->set_memory_r(0x0000, 0x7fff, rom);
	memory->set_memory_rw(0x8000, 0xffff, ram);
	memory->set_wait_rw(0x0000, 0xffff, 1);
	
	// initialize all devices
	for(DEVICE* device = first_device; device; device = device->next_device) {
		device->initialize();
	}
}
Exemplo n.º 13
0
Arquivo: font.cpp Projeto: tkochi/xm8
//
// Init()
// initialize
//
bool Font::Init(SDL_Window *win)
{
	FILEIO fio;
	_TCHAR *path;
	EMU_SDL *wrapper;
	Uint32 loop;

	// save window
	window = win;

	// check rom
	if (CheckROM() == false) {
		return false;
	}

	// get EMU_SDL instance
	wrapper = app->GetWrapper();

	// kanji 1
	path = wrapper->get_bios_path(KANJI1_FILE);
	if (fio.Fopen(path, FILEIO_READ_BINARY) == true) {
		fio.Fread(kanji_rom, 1, sizeof(kanji_rom) / 2);
		fio.Fclose();
	}

	// kanji 2
	path = wrapper->get_bios_path(KANJI2_FILE);
	if (fio.Fopen(path, FILEIO_READ_BINARY) == true) {
		fio.Fread(&kanji_rom[sizeof(kanji_rom) / 2], 1, sizeof(kanji_rom) / 2);
		fio.Fclose();
	}

	// shift-jis to kanji rom offst
	for (loop=0x8000; loop<0xa000; loop++) {
		kanji_offset[loop - 0x8000] = JisToOffset(SjisToJis(loop));
	}
	for (loop=0xe000; loop<0x10000; loop++) {
		kanji_offset[loop - 0xc000] = JisToOffset(SjisToJis(loop));
	}

	return true;
}
Exemplo n.º 14
0
void KANJIPAC2::initialize(int id)
{
	FILEIO* fio = new FILEIO();
	if(fio->Fopen(emu->bios_path(_T("KANJI.ROM")), FILEIO_READ_BINARY)) {
		fio->Fread(rom, sizeof(rom), 1);
		fio->Fclose();
	}
	delete fio;
	
	ptr = 0;
}
Exemplo n.º 15
0
void ROMPACK::initialize()
{
	memset(rom, 0xff, sizeof(rom));
	
	FILEIO* fio = new FILEIO();
	if(fio->Fopen(emu->bios_path(_T("ROMPACK.ROM")), FILEIO_READ_BINARY)) {
		fio->Fread(rom, sizeof(rom), 1);
		fio->Fclose();
	}
	delete fio;
}
Exemplo n.º 16
0
void CMOS::initialize()
{
	// load cmos image
	memset(cmos, 0, sizeof(cmos));
	
	FILEIO* fio = new FILEIO();
	if(fio->Fopen(emu->bios_path(_T("CMOS.BIN")), FILEIO_READ_BINARY)) {
		fio->Fread(cmos, sizeof(cmos), 1);
		fio->Fclose();
	}
	delete fio;
}
Exemplo n.º 17
0
void RP5C01::release()
{
#ifndef HAS_RP5C15
	// save ram image
	FILEIO* fio = new FILEIO();
	if(fio->Fopen(emu->bios_path(_T("RP5C01.BIN")), FILEIO_WRITE_BINARY)) {
		fio->Fwrite(ram, sizeof(ram), 1);
		fio->Fclose();
	}
	delete fio;
#endif
}
Exemplo n.º 18
0
void RAMPAC2::release()
{
	// save modified data
	if(opened && modified) {
		FILEIO* fio = new FILEIO();
		if(fio->Fopen(path, FILEIO_WRITE_BINARY)) {
			fio->Fwrite(ram, sizeof(ram), 1);
			fio->Fclose();
		}
		delete fio;
	}
}
Exemplo n.º 19
0
void MAIN::initialize()
{
	memset(rom, 0xff, sizeof(rom));
	memset(rdmy, 0xff, sizeof(rdmy));
	
	FILEIO* fio = new FILEIO();
	if(fio->Fopen(emu->bios_path(_T("BASIC.ROM")), FILEIO_READ_BINARY)) {
		fio->Fread(rom, sizeof(rom), 1);
		fio->Fclose();
	}
	delete fio;
	
	SET_BANK(0x0000, 0xffff, ram, ram);
}
Exemplo n.º 20
0
void MEMORY::load_ipl()
{
	// load ipl
	memset(rom, 0xff, sizeof(rom));
	
	_TCHAR file_path[_MAX_PATH];
	FILEIO* fio = new FILEIO();
	
	switch(config.boot_mode) {
	case MODE_TBASIC_V1_0:
		_stprintf(file_path, _T("%sTBASIC10.ROM"), emu->application_path());
		break;
	case MODE_TBASIC_V1_1:
		_stprintf(file_path, _T("%sTBASIC11.ROM"), emu->application_path());
		break;
	case MODE_OABASIC:
	case MODE_OABASIC_NO_DISK:
		_stprintf(file_path, _T("%sOABASIC.ROM"),  emu->application_path());
		break;
	case MODE_MINI_PASCAL:
		_stprintf(file_path, _T("%sPASCAL.ROM"),   emu->application_path());
		break;
	}
	if(fio->Fopen(file_path, FILEIO_READ_BINARY)) {
		fio->Fread(rom, sizeof(rom), 1);
		fio->Fclose();
	}
	else {
		// old bios file name
		if(fio->Fopen(emu->bios_path(_T("TBASIC.ROM")), FILEIO_READ_BINARY)) {
			fio->Fread(rom, sizeof(rom), 1);
			fio->Fclose();
		}
	}
	delete fio;
	
}
Exemplo n.º 21
0
void EXTROM::initialize()
{
	// init image
	memset(rom, 0, sizeof(rom));
	
	// load rom image
	FILEIO* fio = new FILEIO();
	if(fio->Fopen(emu->bios_path(_T("EXT.ROM")), FILEIO_READ_BINARY)) {
		fio->Fread(rom, sizeof(rom), 1);
		fio->Fclose();
	}
	delete fio;
	
	ptr = 0;
}
Exemplo n.º 22
0
void MEMORY::open_cart(_TCHAR* file_path)
{
	FILEIO* fio = new FILEIO();
	
	if(fio->Fopen(file_path, FILEIO_READ_BINARY)) {
		memset(cart, 0xff, sizeof(cart));
		fio->Fread(cart, sizeof(cart), 1);
		fio->Fclose();
	}
	delete fio;
	
	// set memory map
	SET_BANK(0x0000, 0x7fff, wdmy, cart);
	SET_BANK(0x8000, 0xffff, ram + 0x8000, ram + 0x8000);
}
Exemplo n.º 23
0
void RTC::release()
{
	// set power off time
	regs[POFMI] = TO_BCD(cur_time.minute);
	regs[POFH] = TO_BCD(cur_time.hour);
	regs[POFD] = TO_BCD(cur_time.day);
	
	// save rtc regs image
	FILEIO* fio = new FILEIO();
	if(fio->Fopen(create_local_path(_T("RTC.BIN")), FILEIO_WRITE_BINARY)) {
		fio->Fwrite(regs + 8, 32, 1);
		fio->Fclose();
	}
	delete fio;
}
Exemplo n.º 24
0
void KANJI::initialize()
{
	// init image
	memset(kanji, 0xff, sizeof(kanji));
	
	// load kanji image
	FILEIO* fio = new FILEIO();
	if(fio->Fopen(create_local_path(_T("KANJI.ROM")), FILEIO_READ_BINARY)) {
		fio->Fread(kanji, sizeof(kanji), 1);
		fio->Fclose();
	}
	delete fio;
	
	ptr = 0;
	strobe = false;
}
Exemplo n.º 25
0
void EMU::initialize_input()
{
	// initialize status
	memset(key_status, 0, sizeof(key_status));
	memset(joy_status, 0, sizeof(joy_status));
	memset(mouse_status, 0, sizeof(mouse_status));
	
	// initialize joysticks
	joy_num = joyGetNumDevs();
	for(int i = 0; i < joy_num && i < 2; i++) {
		JOYCAPS joycaps;
		if(joyGetDevCaps(i, &joycaps, sizeof(joycaps)) == JOYERR_NOERROR) {
			joy_mask[i] = (1 << joycaps.wNumButtons) - 1;
		} else {
			joy_mask[i] = 0x0f; // 4buttons
		}
	}
	
	// mouse emulation is disenabled
	mouse_enabled = false;
	
	// initialize keycode convert table
	FILEIO* fio = new FILEIO();
	if(fio->Fopen(bios_path(_T("keycode.cfg")), FILEIO_READ_BINARY)) {
		fio->Fread(keycode_conv, sizeof(keycode_conv), 1);
		fio->Fclose();
	}
	else {
		for(int i = 0; i < 256; i++) {
			keycode_conv[i] = i;
		}
	}
	delete fio;
	
#ifdef USE_SHIFT_NUMPAD_KEY
	// initialize shift+numpad conversion
	memset(key_converted, 0, sizeof(key_converted));
	key_shift_pressed = key_shift_released = false;
#endif
#ifdef USE_AUTO_KEY
	// initialize autokey
	autokey_buffer = new FIFO(65536);
	autokey_buffer->clear();
	autokey_phase = autokey_shift = 0;
#endif
	lost_focus = false;
}
Exemplo n.º 26
0
void MFONT::initialize()
{
	memset(mfont, 0xff, sizeof(mfont));
	
	// load multifont rom image
	FILEIO* fio = new FILEIO();
	if(fio->Fopen(create_local_path(_T("MFONT.ROM")), FILEIO_READ_BINARY)) {
		fio->Fread(mfont, sizeof(mfont), 1);
		fio->Fclose();
	}
	delete fio;
	
	cmd = new FIFO(4);
	res = new FIFO(38);
	
	status = 0;
}
Exemplo n.º 27
0
VM::~VM()
{
	FILEIO* fio = new FILEIO();
	if(fio->Fopen(create_local_path(_T("RAM.BIN")), FILEIO_WRITE_BINARY)) {
		fio->Fwrite(ram, sizeof(ram), 1);
		fio->Fclose();
	}
	delete fio;
	
	// delete all devices
	for(DEVICE* device = first_device; device;) {
		DEVICE *next_device = device->next_device;
		device->release();
		delete device;
		device = next_device;
	}
}
Exemplo n.º 28
0
void MEMORY::initialize()
{
	memset(bios, 0xff, sizeof(bios));
	memset(cart, 0xff, sizeof(cart));
	memset(sram, 0xff, sizeof(sram));
	memset(rdmy, 0xff, sizeof(rdmy));
	
	// load bios
	FILEIO* fio = new FILEIO();
	if(fio->Fopen(emu->bios_path(_T("BIOS.ROM")), FILEIO_READ_BINARY)) {
		fio->Fread(bios, 0x1000, 1);
		fio->Fclose();
	}
	delete fio;
	set_bank(0);
	
	// cart is not opened
	memset(&header, 0, sizeof(header_t));
}
Exemplo n.º 29
0
Arquivo: font.cpp Projeto: tkochi/xm8
//
// CheckSub()
// check one rom file
//
bool Font::CheckSub(const char *rom, bool msgbox)
{
	FILEIO fio;
	Platform *platform;
	EMU_SDL *wrapper;
	_TCHAR *path;
	Uint32 size;

	// get EMU_SDL instance
	wrapper = app->GetWrapper();

	// get path
	path = wrapper->get_bios_path((_TCHAR*)rom);

	// try to open
	if (fio.Fopen(path, FILEIO_READ_BINARY) == true) {
		// seek and get size
		fio.Fseek(0, FILEIO_SEEK_END);
		size = (Uint32)fio.Ftell();
		fio.Fseek(0, FILEIO_SEEK_SET);

		// read
		if (size <= sizeof(kanji_rom)) {
			fio.Fread(kanji_rom, 1, (uint32)size);
		}

		// open ok
		fio.Fclose();
		return true;
	}

	// msgbox
	if (msgbox == true) {
		platform = app->GetPlatform();
		sprintf(rom_message, "The ROM file is not found:\n");
		strcat(rom_message, path);
		platform->MsgBox(window, rom_message);
	}

	// not found
	return false;
}
Exemplo n.º 30
0
void MEMORY::initialize()
{
	memset(cart, 0xff, sizeof(cart));
	memset(ipl, 0xff, sizeof(ipl));
	memset(ram, 0, sizeof(ram));
	memset(rdmy, 0xff, sizeof(rdmy));
	
	// load ipl
	FILEIO* fio = new FILEIO();
	if(fio->Fopen(emu->bios_path(_T("SF7000.ROM")), FILEIO_READ_BINARY)) {
		fio->Fread(ipl, sizeof(ipl), 1);
		fio->Fclose();
	}
	delete fio;
	
	// set memory map
	SET_BANK(0x0000, 0x1fff, ram + 0x0000, ipl);
	SET_BANK(0x2000, 0x3fff, ram + 0x2000, rdmy);
	SET_BANK(0x4000, 0xffff, ram + 0x4000, ram + 0x4000);
}