#include "mouse.h"
#if defined(SUPPORT_SASI_IF)
#include "sasi.h"
+#include "sasi_bios.h"
#endif
#if defined(SUPPORT_SCSI_IF)
#include "scsi.h"
#include "ide.h"
#endif
+#if defined(SUPPORT_CMT_IF)
+using PC9801::CMT;
+#endif
+#if defined(SUPPORT_24BIT_ADDRESS) || defined(SUPPORT_32BIT_ADDRESS)
+using PC9801::CPUREG;
+#endif
+using PC9801::DISPLAY;
+using PC9801::DMAREG;
+using PC9801::FLOPPY;
+using PC9801::FMSOUND;
+using PC9801::JOYSTICK;
+using PC9801::KEYBOARD;
+using PC9801::MEMBUS;
+using PC9801::MOUSE;
+#if defined(SUPPORT_SASI_IF)
+using PC9801::SASI;
+using PC9801::BIOS;
+#endif
+#if defined(SUPPORT_SCSI_IF)
+using PC9801::SCSI;
+#endif
+#if defined(SUPPORT_IDE_IF)
+using PC9801::IDE;
+#endif
+
#if defined(SUPPORT_320KB_FDD_IF)
#include "../pc80s31k.h"
#include "../z80.h"
#include "../pc8801/pc88.h"
#endif
+#if defined(_PC98DO) || defined(_PC98DOPLUS)
+using PC88DEV::PC88;
+#endif
// ----------------------------------------------------------------------------
// initialize
// ----------------------------------------------------------------------------
if(sound_type == 0 || sound_type == 1) {
opn = new YM2203(this, emu);
#ifdef SUPPORT_PC98_OPNA
+ opn->set_device_name(_T("YM2608 OPNA (PC-9801-86)"));
opn->is_ym2608 = true;
+#else
+ opn->set_device_name(_T("YM2203 OPN (PC-9801-26)"));
+ opn->is_ym2608 = false;
#endif
fmsound = new FMSOUND(this, emu);
joystick = new JOYSTICK(this, emu);
mouse = new MOUSE(this, emu);
#if defined(SUPPORT_SASI_IF)
sasi = new SASI(this, emu);
+ sasi_bios = new BIOS(this, emu);
#endif
#if defined(SUPPORT_SCSI_IF)
scsi = new SCSI(this, emu);
sasi->set_context_hdd(sasi_hdd);
sasi->set_context_dma(dma);
sasi->set_context_pic(pic);
+
+ sasi_bios->set_context_sasi(sasi);
+ sasi_bios->set_context_memory(memory);
+ sasi_bios->set_context_cpu(cpu);
+ sasi_bios->set_context_pic(pic);
+ cpu->set_context_bios(sasi_bios);
+
#endif
#if defined(SUPPORT_SCSI_IF)
dma->set_context_ch0(scsi);
pc88rtc = new UPD1990A(this, emu);
pc88rtc->set_device_name(_T("uPD1990A RTC (PC-8801)"));
pc88rtc->set_context_event_manager(pc88event);
- pc88opn = new YM2203(this, emu);
+ pc88opn1 = new YM2203(this, emu);
#ifdef SUPPORT_PC88_OPNA
- pc88opn->set_device_name(_T("YM2608 OPNA (PC-8801)"));
- pc88opn->is_ym2608 = true;
+ pc88opn1->set_device_name(_T("YM2608 OPNA (PC-8801)"));
+ pc88opn1->is_ym2608 = true;
#else
- pc88opn->set_device_name(_T("YM2203 OPN (PC-8801)"));
+ pc88opn1->set_device_name(_T("YM2203 OPN (PC-8801)"));
+ pc88opn1->is_ym2608 = false;
#endif
- pc88opn->set_context_event_manager(pc88event);
+ pc88opn1->set_context_event_manager(pc88event);
pc88cpu = new Z80(this, emu);
pc88cpu->set_device_name(_T("Z80 CPU (PC-8801)"));
pc88cpu->set_context_event_manager(pc88event);
pc88event->set_context_cpu(pc88cpu, (config.cpu_type == 1) ? 3993624 : 7987248);
pc88event->set_context_cpu(pc88cpu_sub, 3993624);
- pc88event->set_context_sound(pc88opn);
+ pc88event->set_context_sound(pc88opn1);
pc88event->set_context_sound(pc88pcm);
pc88event->set_context_sound(pc88noise_seek);
pc88event->set_context_sound(pc88noise_head_down);
pc88event->set_context_sound(pc88noise_head_up);
pc88->set_context_cpu(pc88cpu);
- pc88->set_context_opn(pc88opn);
+ pc88->set_context_opn1(pc88opn1);
pc88->set_context_pcm(pc88pcm);
pc88->set_context_pio(pc88pio);
pc88->set_context_prn(pc88prn);
#ifdef USE_DEBUGGER
pc88cpu->set_context_debugger(new DEBUGGER(this, emu));
#endif
- pc88opn->set_context_irq(pc88, SIG_PC88_SOUND_IRQ, 1);
+ pc88opn1->set_context_irq(pc88, SIG_PC88_OPN1_IRQ, 1);
pc88sio->set_context_rxrdy(pc88, SIG_PC88_USART_IRQ, 1);
pc88sio->set_context_out(pc88, SIG_PC88_USART_OUT);
#endif
#if defined(_PC98DO) || defined(_PC98DOPLUS)
- pc88opn->set_reg(0x29, 3); // for Misty Blue
+ pc88opn1->set_reg(0x29, 3); // for Misty Blue
pc88pio->write_signal(SIG_I8255_PORT_C, 0, 0xff);
pc88pio_sub->write_signal(SIG_I8255_PORT_C, 0, 0xff);
#endif
beep->initialize_sound(rate, 8000);
#endif
if(sound_type == 0 || sound_type == 1) {
-#ifdef HAS_YM2608
- opn->initialize_sound(rate, 7987248, samples, 0, 0);
-#else
- opn->initialize_sound(rate, 3993624, samples, 0, 0);
-#endif
+ if(opn->is_ym2608) {
+ opn->initialize_sound(rate, 7987248, samples, 0, 0);
+ } else {
+ opn->initialize_sound(rate, 3993624, samples, 0, 0);
+ }
} else if(sound_type == 2 || sound_type == 3) {
tms3631->initialize_sound(rate, 8000);
}
pc88event->initialize_sound(rate, samples);
// init sound gen
-#ifdef HAS_YM2608
- pc88opn->initialize_sound(rate, 7987248, samples, 0, 0);
-#else
- pc88opn->initialize_sound(rate, 3993624, samples, 0, 0);
-#endif
+ if(pc88opn1->is_ym2608) {
+ pc88opn1->initialize_sound(rate, 7987248, samples, 0, 0);
+ } else {
+ pc88opn1->initialize_sound(rate, 3993624, samples, 0, 0);
+ }
pc88pcm->initialize_sound(rate, 8000);
#endif
}
beep->set_volume(0, decibel_l, decibel_r);
#if defined(_PC98DO) || defined(_PC98DOPLUS)
} else if(ch-- == 0) {
- pc88opn->set_volume(0, decibel_l, decibel_r);
+ pc88opn1->set_volume(0, decibel_l, decibel_r);
} else if(ch-- == 0) {
- pc88opn->set_volume(1, decibel_l, decibel_r);
+ pc88opn1->set_volume(1, decibel_l, decibel_r);
#if defined(SUPPORT_PC88_OPNA)
} else if(ch-- == 0) {
- pc88opn->set_volume(2, decibel_l, decibel_r);
+ pc88opn1->set_volume(2, decibel_l, decibel_r);
} else if(ch-- == 0) {
- pc88opn->set_volume(3, decibel_l, decibel_r);
+ pc88opn1->set_volume(3, decibel_l, decibel_r);
#endif
} else if(ch-- == 0) {
pc88pcm->set_volume(0, decibel_l, decibel_r);
}
}
-#define STATE_VERSION 13
+#define STATE_VERSION 14
bool VM::process_state(FILEIO* state_fio, bool loading)
{
return false;
}
}
- state_fio->StateBool(pit_clock_8mhz);
+ state_fio->StateValue(pit_clock_8mhz);
#if defined(_PC98DO) || defined(_PC98DOPLUS)
- state_fio->StateInt32(boot_mode);
+ state_fio->StateValue(boot_mode);
#endif
- state_fio->StateInt32(sound_type);
+ state_fio->StateValue(sound_type);
return true;
}