-<B><FONT SIZE=-1>Upstream 2021-12-30<BR>
-Qt Port and FM7 series 2022-01-23-tmp<BR>
+<B><FONT SIZE=-1>Upstream 2022-04-05<BR>
+Qt Port and FM7 series 2022-11-25-tmp<BR>
</FONT></B>
</FONT>
<DIV ALIGN=RIGHT><FONT SIZE=4>
-Upstream Version: 2021-12-30<BR>
-Qt Port and FM7 series 2022-01-23-tmp<BR>
+Upstream Version: 2022-04-05<BR>
+Qt Port and FM7 series 2022-11-25-tmp<BR>
FFMPEG 4.3 + liblame 3.100 + libx264-161<BR>
@@RevisionString@@
</FONT></DIV>
--- /dev/null
+// Microsoft Visual C++ generated resource script.
+//
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "afxres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// Japanese resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_JPN)
+#ifdef _WIN32
+LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT
+#pragma code_page(932)
+#endif //_WIN32
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "resource.h\0"
+END
+
+2 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "#include ""afxres.h""\r\n"
+ "\0"
+END
+
+3 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "\r\n"
+ "\0"
+END
+
+#endif // APSTUDIO_INVOKED
+
+#endif // Japanese resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+/////////////////////////////////////////////////////////////////////////////
+// English (U.S.) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+#endif //_WIN32
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Accelerator
+//
+
+IDR_ACCELERATOR1 ACCELERATORS DISCARDABLE
+BEGIN
+ VK_RETURN, ID_ACCEL_SCREEN, VIRTKEY, ALT, NOINVERT
+ VK_APPS, ID_ACCEL_SPEED, VIRTKEY, NOINVERT
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Menu
+//
+
+IDR_MENU1 MENU DISCARDABLE
+BEGIN
+ POPUP "Control"
+ BEGIN
+ MENUITEM "Reset", ID_RESET
+ MENUITEM SEPARATOR
+ MENUITEM "CPU x1", ID_CPU_POWER0
+ MENUITEM "CPU x2", ID_CPU_POWER1
+ MENUITEM "CPU x4", ID_CPU_POWER2
+ MENUITEM "CPU x8", ID_CPU_POWER3
+ MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
+ MENUITEM SEPARATOR
+ MENUITEM "Paste", ID_AUTOKEY_START
+ MENUITEM "Stop", ID_AUTOKEY_STOP
+ MENUITEM SEPARATOR
+ POPUP "Save State"
+ BEGIN
+ MENUITEM "State 0", ID_SAVE_STATE0
+ MENUITEM "State 1", ID_SAVE_STATE1
+ MENUITEM "State 2", ID_SAVE_STATE2
+ MENUITEM "State 3", ID_SAVE_STATE3
+ MENUITEM "State 4", ID_SAVE_STATE4
+ MENUITEM "State 5", ID_SAVE_STATE5
+ MENUITEM "State 6", ID_SAVE_STATE6
+ MENUITEM "State 7", ID_SAVE_STATE7
+ MENUITEM "State 8", ID_SAVE_STATE8
+ MENUITEM "State 9", ID_SAVE_STATE9
+ END
+ POPUP "Load State"
+ BEGIN
+ MENUITEM "State 0", ID_LOAD_STATE0
+ MENUITEM "State 1", ID_LOAD_STATE1
+ MENUITEM "State 2", ID_LOAD_STATE2
+ MENUITEM "State 3", ID_LOAD_STATE3
+ MENUITEM "State 4", ID_LOAD_STATE4
+ MENUITEM "State 5", ID_LOAD_STATE5
+ MENUITEM "State 6", ID_LOAD_STATE6
+ MENUITEM "State 7", ID_LOAD_STATE7
+ MENUITEM "State 8", ID_LOAD_STATE8
+ MENUITEM "State 9", ID_LOAD_STATE9
+ END
+ MENUITEM SEPARATOR
+ MENUITEM "Debug Main CPU", ID_OPEN_DEBUGGER0
+ MENUITEM "Close Debugger", ID_CLOSE_DEBUGGER
+ MENUITEM SEPARATOR
+ MENUITEM "Exit", ID_EXIT
+ END
+ POPUP "CMT", GRAYED
+ BEGIN
+ MENUITEM "Play", ID_PLAY_TAPE1
+ MENUITEM "Rec", ID_REC_TAPE1
+ MENUITEM "Eject", ID_CLOSE_TAPE1
+ MENUITEM SEPARATOR
+ MENUITEM "Play Button", ID_PLAY_BUTTON1
+ MENUITEM "Stop Button", ID_STOP_BUTTON1
+ MENUITEM "Fast Forward", ID_FAST_FORWARD1
+ MENUITEM "Fast Rewind", ID_FAST_REWIND1
+ MENUITEM SEPARATOR
+ MENUITEM "Waveform Shaper", ID_USE_WAVE_SHAPER1
+ MENUITEM SEPARATOR
+ MENUITEM "Recent", ID_RECENT_TAPE1
+ END
+ POPUP "Device"
+ BEGIN
+ POPUP "Sound"
+ BEGIN
+ MENUITEM "Play CMT Noise", ID_VM_SOUND_NOISE_CMT
+ MENUITEM "Play CMT Signal", ID_VM_SOUND_TAPE_SIGNAL
+ MENUITEM "Play CMT Voice", ID_VM_SOUND_TAPE_VOICE
+ END
+ POPUP "Printer"
+ BEGIN
+ MENUITEM "Write Printer to File", ID_VM_PRINTER_TYPE0
+ MENUITEM "None", ID_VM_PRINTER_TYPE3
+ END
+ END
+ POPUP "Host"
+ BEGIN
+ MENUITEM "Rec Movie 60fps", ID_HOST_REC_MOVIE_60FPS
+ MENUITEM "Rec Movie 30fps", ID_HOST_REC_MOVIE_30FPS
+ MENUITEM "Rec Movie 15fps", ID_HOST_REC_MOVIE_15FPS
+ MENUITEM "Rec Sound", ID_HOST_REC_SOUND
+ MENUITEM "Stop", ID_HOST_REC_STOP
+ MENUITEM "Capture Screen", ID_HOST_CAPTURE_SCREEN
+ MENUITEM SEPARATOR
+ POPUP "Screen"
+ BEGIN
+ MENUITEM "Window x1", ID_SCREEN_WINDOW
+ MENUITEM "Fullscreen 640x400", ID_SCREEN_FULLSCREEN
+ MENUITEM SEPARATOR
+ MENUITEM "Fullscreen Stretch 1", ID_SCREEN_FULLSCREEN_DOTBYDOT
+ MENUITEM "Fullscreen Stretch 2", ID_SCREEN_FULLSCREEN_STRETCH
+ MENUITEM "Fullscreen Stretch 4", ID_SCREEN_FULLSCREEN_FILL
+ MENUITEM SEPARATOR
+ MENUITEM "Rotate 0deg", ID_SCREEN_ROTATE_0
+ MENUITEM "Rotate +90deg", ID_SCREEN_ROTATE_90
+ MENUITEM "Rotate 180deg", ID_SCREEN_ROTATE_180
+ MENUITEM "Rotate -90deg", ID_SCREEN_ROTATE_270
+ END
+ POPUP "Sound"
+ BEGIN
+ MENUITEM "2000Hz", ID_SOUND_FREQ0
+ MENUITEM "4000Hz", ID_SOUND_FREQ1
+ MENUITEM "8000Hz", ID_SOUND_FREQ2
+ MENUITEM "11025Hz", ID_SOUND_FREQ3
+ MENUITEM "22050Hz", ID_SOUND_FREQ4
+ MENUITEM "44100Hz", ID_SOUND_FREQ5
+ MENUITEM "48000Hz", ID_SOUND_FREQ6
+ MENUITEM "96000Hz", ID_SOUND_FREQ7
+ MENUITEM SEPARATOR
+ MENUITEM "50msec", ID_SOUND_LATE0
+ MENUITEM "100msec", ID_SOUND_LATE1
+ MENUITEM "200msec", ID_SOUND_LATE2
+ MENUITEM "300msec", ID_SOUND_LATE3
+ MENUITEM "400msec", ID_SOUND_LATE4
+ MENUITEM SEPARATOR
+ MENUITEM "Realtime Mix", ID_SOUND_STRICT_RENDER
+ MENUITEM "Light Weight Mix", ID_SOUND_LIGHT_RENDER
+ MENUITEM SEPARATOR
+ MENUITEM "Volume", ID_SOUND_VOLUME
+ END
+ MENUITEM SEPARATOR
+ MENUITEM "Use Direct2D1", ID_HOST_USE_D2D1
+ MENUITEM "Use Direct3D9", ID_HOST_USE_D3D9
+ MENUITEM "Wait Vsync", ID_HOST_WAIT_VSYNC
+ MENUITEM "Use DirectInput", ID_HOST_USE_DINPUT
+ MENUITEM "Disable Windows 8 DWM", ID_HOST_DISABLE_DWM
+ MENUITEM "Show Status Bar", ID_HOST_SHOW_STATUS_BAR
+ END
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Icon
+//
+
+// Icon with lowest ID value placed first to ensure application icon
+// remains consistent on all systems.
+IDI_ICON1 ICON DISCARDABLE "fx9000p.ico"
+#endif // English (U.S.) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+IDD_VOLUME DIALOG DISCARDABLE 0, 0, 250, 90
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Volume"
+FONT 9, "MS PGothic"
+BEGIN
+ LTEXT "Sound Device #1",IDC_VOLUME_CAPTION0,6,6,60,8
+ CONTROL "",IDC_VOLUME_PARAM_L0,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,70,6,175,12
+ CONTROL "",IDC_VOLUME_PARAM_R0,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,70,21,175,12
+ LTEXT "Sound Device #2",IDC_VOLUME_CAPTION1,6,36,60,8
+ CONTROL "",IDC_VOLUME_PARAM_L1,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,70,36,175,12
+ CONTROL "",IDC_VOLUME_PARAM_R1,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,70,51,175,12
+ DEFPUSHBUTTON "OK",IDOK,70,70,50,14
+ DEFPUSHBUTTON "Reset",IDC_VOLUME_RESET,130,70,50,14
+END
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif // not APSTUDIO_INVOKED
+
--- /dev/null
+/*
+ CASIO FX-9000P Emulator 'eFX-9000P'
+
+ Author : Takeda.Toshiya
+ Date : 2022.03.25-
+
+ [ virtual machine ]
+*/
+
+#include "fx9000p.h"
+#include "../../emu.h"
+#include "../device.h"
+#include "../event.h"
+
+#include "../datarec.h"
+#include "../hd46505.h"
+#include "../memory.h"
+#include "../noise.h"
+#include "../z80.h"
+
+#ifdef USE_DEBUGGER
+#include "../debugger.h"
+#endif
+
+#include "io.h"
+
+// ----------------------------------------------------------------------------
+// initialize
+// ----------------------------------------------------------------------------
+
+VM::VM(EMU* parent_emu) : VM_TEMPLATE(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);
+ drec->set_context_noise_play(new NOISE(this, emu));
+ drec->set_context_noise_stop(new NOISE(this, emu));
+ drec->set_context_noise_fast(new NOISE(this, emu));
+ crtc = new HD46505(this, emu);
+ memory = new MEMORY(this, emu);
+ cpu = new Z80(this, emu);
+
+ io = new IO(this, emu);
+
+ // set contexts
+ event->set_context_cpu(cpu);
+ event->set_context_sound(drec);
+ event->set_context_sound(drec->get_context_noise_play());
+ event->set_context_sound(drec->get_context_noise_stop());
+ event->set_context_sound(drec->get_context_noise_fast());
+
+ drec->set_context_ear(io, SIG_IO_EAR, 1);
+ crtc->set_context_disp(io, SIG_IO_DISP, 1);
+
+ io->set_context_cpu(cpu);
+ io->set_context_crtc(crtc);
+ io->set_context_drec(drec);
+
+ // cpu bus
+ cpu->set_context_mem(memory);
+ cpu->set_context_io(io);
+ cpu->set_context_intr(dummy);
+#ifdef USE_DEBUGGER
+ cpu->set_context_debugger(new DEBUGGER(this, emu));
+#endif
+
+ // memory bus
+ memset(basic, 0xff, sizeof(basic));
+ memset(op1, 0xff, sizeof(op1));
+ memset(vram, 0x00, sizeof(vram));
+#if 0
+ memset(dram, 0x00, sizeof(dram));
+ memset(cmos, 0x00, sizeof(cmos));
+#else
+ // initial ram contents ???
+ for(int i = 0; i < sizeof(dram); i++) {
+ dram[i] = (0x2e + i) & 0xff;
+ }
+ for(int i = 0; i < sizeof(cmos); i++) {
+ cmos[i] = (0x2e + i) & 0xff;
+ }
+#endif
+
+ memory->read_bios(_T("BASIC.ROM"), basic, sizeof(basic));
+ memory->read_bios(_T("OP1.ROM"), op1, sizeof(op1));
+ memory->read_bios(_T("RAM.BIN"), cmos, sizeof(cmos));
+
+ memory->set_memory_r(0x0000, 0x2fff, basic);
+ memory->set_memory_r(0x5000, 0x5fff, op1);
+ memory->set_memory_mapped_io_rw(0x6000, 0x6fff, io);
+ memory->set_memory_rw(0x7000, 0x7fff, vram);
+ memory->set_memory_rw(0x8000, 0xbfff, dram);
+ memory->set_memory_rw(0xc000, 0xefff, cmos);
+
+ // initialize all devices
+ for(DEVICE* device = first_device; device; device = device->next_device) {
+ device->initialize();
+ }
+}
+
+VM::~VM()
+{
+ memory->write_bios(_T("RAM.BIN"), cmos, sizeof(cmos));
+
+ // delete all devices
+ for(DEVICE* device = first_device; device;) {
+ DEVICE *next_device = device->next_device;
+ device->release();
+ delete device;
+ device = next_device;
+ }
+}
+
+DEVICE* VM::get_device(int id)
+{
+ for(DEVICE* device = first_device; device; device = device->next_device) {
+ if(device->this_device_id == id) {
+ return device;
+ }
+ }
+ return NULL;
+}
+
+// ----------------------------------------------------------------------------
+// drive virtual machine
+// ----------------------------------------------------------------------------
+
+void VM::reset()
+{
+ // reset all devices
+ for(DEVICE* device = first_device; device; device = device->next_device) {
+ device->reset();
+ }
+}
+
+void VM::run()
+{
+ event->drive();
+}
+
+// ----------------------------------------------------------------------------
+// debugger
+// ----------------------------------------------------------------------------
+
+#ifdef USE_DEBUGGER
+DEVICE *VM::get_cpu(int index)
+{
+ if(index == 0) {
+ return cpu;
+ }
+ return NULL;
+}
+#endif
+
+// ----------------------------------------------------------------------------
+// draw screen
+// ----------------------------------------------------------------------------
+
+void VM::draw_screen()
+{
+ io->draw_screen(vram);
+}
+
+
+// ----------------------------------------------------------------------------
+// notify key
+// ----------------------------------------------------------------------------
+
+void VM::key_down(int code, bool repeat)
+{
+ if(!repeat) {
+ io->key_down(code);
+ }
+}
+
+void VM::key_up(int code)
+{
+}
+
+// ----------------------------------------------------------------------------
+// soud manager
+// ----------------------------------------------------------------------------
+
+void VM::initialize_sound(int rate, int samples)
+{
+ // init sound manager
+ event->initialize_sound(rate, samples);
+}
+
+uint16_t* VM::create_sound(int* extra_frames)
+{
+ return event->create_sound(extra_frames);
+}
+
+int VM::get_sound_buffer_ptr()
+{
+ return event->get_sound_buffer_ptr();
+}
+
+#ifdef USE_SOUND_VOLUME
+void VM::set_sound_device_volume(int ch, int decibel_l, int decibel_r)
+{
+ if(ch == 0) {
+ drec->set_volume(0, decibel_l, decibel_r);
+ } else if(ch == 1) {
+ drec->get_context_noise_play()->set_volume(0, decibel_l, decibel_r);
+ drec->get_context_noise_stop()->set_volume(0, decibel_l, decibel_r);
+ drec->get_context_noise_fast()->set_volume(0, decibel_l, decibel_r);
+ }
+}
+#endif
+
+// ----------------------------------------------------------------------------
+// user interface
+// ----------------------------------------------------------------------------
+
+void VM::play_tape(int drv, const _TCHAR* file_path)
+{
+ bool remote = drec->get_remote();
+
+ if(drec->play_tape(file_path) && remote) {
+ // if machine already sets remote on, start playing now
+ push_play(drv);
+ }
+}
+
+void VM::rec_tape(int drv, const _TCHAR* file_path)
+{
+ bool remote = drec->get_remote();
+
+ if(drec->rec_tape(file_path) && remote) {
+ // if machine already sets remote on, start recording now
+ push_play(drv);
+ }
+}
+
+void VM::close_tape(int drv)
+{
+ emu->lock_vm();
+ drec->close_tape();
+ emu->unlock_vm();
+ drec->set_remote(false);
+}
+
+bool VM::is_tape_inserted(int drv)
+{
+ return drec->is_tape_inserted();
+}
+
+bool VM::is_tape_playing(int drv)
+{
+ return drec->is_tape_playing();
+}
+
+bool VM::is_tape_recording(int drv)
+{
+ return drec->is_tape_recording();
+}
+
+int VM::get_tape_position(int drv)
+{
+ return drec->get_tape_position();
+}
+
+const _TCHAR* VM::get_tape_message(int drv)
+{
+ return drec->get_message();
+}
+
+void VM::push_play(int drv)
+{
+ drec->set_remote(false);
+ drec->set_ff_rew(0);
+ drec->set_remote(true);
+}
+
+void VM::push_stop(int drv)
+{
+ drec->set_remote(false);
+}
+
+void VM::push_fast_forward(int drv)
+{
+ drec->set_remote(false);
+ drec->set_ff_rew(1);
+ drec->set_remote(true);
+}
+
+void VM::push_fast_rewind(int drv)
+{
+ drec->set_remote(false);
+ drec->set_ff_rew(-1);
+ drec->set_remote(true);
+}
+
+bool VM::is_frame_skippable()
+{
+ return event->is_frame_skippable();
+}
+
+void VM::update_config()
+{
+ for(DEVICE* device = first_device; device; device = device->next_device) {
+ device->update_config();
+ }
+}
+
+#define STATE_VERSION 1
+
+bool VM::process_state(FILEIO* state_fio, bool loading)
+{
+ if(!state_fio->StateCheckUint32(STATE_VERSION)) {
+ return false;
+ }
+ for(DEVICE* device = first_device; device; device = device->next_device) {
+ const _TCHAR *name = char_to_tchar(typeid(*device).name() + 6); // skip "class "
+ int len = (int)_tcslen(name);
+
+ if(!state_fio->StateCheckInt32(len)) {
+ return false;
+ }
+ if(!state_fio->StateCheckBuffer(name, len, 1)) {
+ return false;
+ }
+ if(!device->process_state(state_fio, loading)) {
+ return false;
+ }
+ }
+ state_fio->StateArray(vram, sizeof(vram), 1);
+ state_fio->StateArray(dram, sizeof(dram), 1);
+ state_fio->StateArray(cmos, sizeof(cmos), 1);
+ return true;
+}
+
--- /dev/null
+/*
+ CASIO FX-9000P Emulator 'eFX-9000P'
+
+ Author : Takeda.Toshiya
+ Date : 2022.03.25-
+
+ [ virtual machine ]
+*/
+
+#ifndef _FX9000P_H_
+#define _FX9000P_H_
+
+#define DEVICE_NAME "CASIO FX-9000P"
+#define CONFIG_NAME "fx9000p"
+
+// device informations for virtual machine
+#define FRAMES_PER_SEC 60
+#define LINES_PER_FRAME 261
+#define CHARS_PER_LINE 44
+//#define HD46505_HORIZ_FREQ 15734
+#define CPU_CLOCKS 2750000
+#define SCREEN_WIDTH 256
+#define SCREEN_HEIGHT 128
+#define MEMORY_ADDR_MAX 0x10000
+#define MEMORY_BANK_SIZE 0x1000
+#define IO_ADDR_MAX 0x10000
+
+// device informations for win32
+#define USE_TAPE 1
+#define USE_AUTO_KEY 5
+#define USE_AUTO_KEY_RELEASE 8
+#define USE_SOUND_VOLUME 2
+#define USE_PRINTER
+#define USE_PRINTER_TYPE 4
+#define USE_DEBUGGER
+#define USE_STATE
+
+#include "../../common.h"
+#include "../../fileio.h"
+#include "../vm_template.h"
+
+#ifdef USE_SOUND_VOLUME
+static const _TCHAR *sound_device_caption[] = {
+ _T("CMT (Signal)"), _T("Noise (CMT)"),
+};
+#endif
+
+class EMU;
+class DEVICE;
+class EVENT;
+
+class DATAREC;
+class HD46505;
+class MEMORY;
+class Z80;
+
+class IO;
+
+class VM : public VM_TEMPLATE
+{
+protected:
+// EMU* emu;
+
+ // devices
+ EVENT* event;
+
+ DATAREC* drec;
+ HD46505* crtc;
+ MEMORY* memory;
+ Z80* cpu;
+
+ IO* io;
+
+ // memory
+ uint8_t basic[0x3000]; // 0000h-2FFFh: BASIC ROM
+ uint8_t op1[0x1000]; // 5000h-5FFFh: OP-1 ROM
+ uint8_t vram[0x1000]; // 7000h-7FFFh: VRAM
+ uint8_t dram[0x4000]; // 8000h-BFFFh: DRAM 16KB (Slot #1)
+ uint8_t cmos[0x3000]; // C000h-EFFFh: CMOS 12KB (Slot #2-#4)
+
+public:
+ // ----------------------------------------
+ // initialize
+ // ----------------------------------------
+
+ VM(EMU* parent_emu);
+ ~VM();
+
+ // ----------------------------------------
+ // for emulation class
+ // ----------------------------------------
+
+ // drive virtual machine
+ void reset();
+ void run();
+ double get_frame_rate()
+ {
+ return FRAMES_PER_SEC;
+ }
+
+#ifdef USE_DEBUGGER
+ // debugger
+ DEVICE *get_cpu(int index);
+#endif
+
+ // draw screen
+ void draw_screen();
+
+ // sound generation
+ void initialize_sound(int rate, int samples);
+ uint16_t* create_sound(int* extra_frames);
+ int get_sound_buffer_ptr();
+#ifdef USE_SOUND_VOLUME
+ void set_sound_device_volume(int ch, int decibel_l, int decibel_r);
+#endif
+
+ // notify key
+ void key_down(int code, bool repeat);
+ void key_up(int code);
+
+ // user interface
+ void play_tape(int drv, const _TCHAR* file_path);
+ void rec_tape(int drv, const _TCHAR* file_path);
+ void close_tape(int drv);
+ bool is_tape_inserted(int drv);
+ bool is_tape_playing(int drv);
+ bool is_tape_recording(int drv);
+ int get_tape_position(int drv);
+ const _TCHAR* get_tape_message(int drv);
+ void push_play(int drv);
+ void push_stop(int drv);
+ void push_fast_forward(int drv);
+ void push_fast_rewind(int drv);
+ void push_apss_forward(int drv) {}
+ void push_apss_rewind(int drv) {}
+ bool is_frame_skippable();
+
+ void update_config();
+ bool process_state(FILEIO* state_fio, bool loading);
+
+ // ----------------------------------------
+ // for each device
+ // ----------------------------------------
+
+ // devices
+ DEVICE* get_device(int id);
+// DEVICE* dummy;
+// DEVICE* first_device;
+// DEVICE* last_device;
+};
+
+#endif
--- /dev/null
+/*
+ CASIO FX-9000P Emulator 'eFX-9000P'
+
+ Author : Takeda.Toshiya
+ Date : 2022.03.25-
+
+ [ i/o ]
+*/
+
+#include "io.h"
+#include "../hd46505.h"
+#include "../../fifo.h"
+
+#define EVENT_1SEC 0
+
+/*
+ 0 1 2 3 4 5 6 7 8 9 A B C D E F
+00 " $ ( = > UP ANS CLS # % ) < LEFT DOWN STAT RIGHT
+10 Q E T U O 7 9 ; W R Y I P 8 / :
+20 A D G J L 4 6 C/S S F H K ENTER 5 * COMP
+30 X V N , SPACE 1 - + Z C B M . 2 3 0
+*/
+
+static const int table[256] = {
+ -1, // 00
+ -1, // 01
+ -1, // 02
+ -1, // 03
+ -1, // 04
+ -1, // 05
+ -1, // 06
+ -1, // 07
+ -1, // 08 Back
+ -1, // 09 Tab
+ -1, // 0A
+ -1, // 0B
+ -1, // 0C
+ 0x2c, // 0D Enter
+ -1, // 0E
+ -1, // 0F
+ -1, // 10 Shift
+ -1, // 11 Ctrl
+ -1, // 12 Alt
+ -1, // 13 Pause
+ -1, // 14 Caps
+ -1, // 15 Kana
+ -1, // 16
+ -1, // 17
+ -1, // 18
+ -1, // 19 Kanji
+ -1, // 1A
+ -1, // 1B Escape
+ -1, // 1C Convert
+ -1, // 1D NonConv
+ -1, // 1E
+ -1, // 1F
+ 0x34, // 20 Space
+ 0x06, // 21 PgUp ANS
+ 0x0e, // 22 PgDwn STAT
+ 0x27, // 23 End C/S
+ 0x07, // 24 Home CLS
+ 0x0c, // 25 Left
+ 0x05, // 26 Up
+ 0x0f, // 27 Right
+ 0x0d, // 28 Down
+ -1, // 29
+ -1, // 2A
+ -1, // 2B
+ -1, // 2C
+ -1, // 2D Ins
+ -1, // 2E Del
+ -1, // 2F
+ 0x04, // 30 0 >
+ -1, // 31 1
+ 0x00, // 32 2 "
+ 0x08, // 33 3 #
+ 0x01, // 34 4 $
+ 0x09, // 35 5 %
+ 0x02, // 36 6 (
+ 0x0a, // 37 7 )
+ 0x03, // 38 8 =
+ 0x0b, // 39 9 <
+ -1, // 3A
+ -1, // 3B
+ -1, // 3C
+ -1, // 3D
+ -1, // 3E
+ -1, // 3F
+ -1, // 40
+ 0x20, // 41 A
+ 0x3a, // 42 B
+ 0x39, // 43 C
+ 0x21, // 44 D
+ 0x11, // 45 E
+ 0x29, // 46 F
+ 0x22, // 47 G
+ 0x2a, // 48 H
+ 0x1b, // 49 I
+ 0x23, // 4A J
+ 0x2b, // 4B K
+ 0x24, // 4C L
+ 0x3b, // 4D M
+ 0x32, // 4E N
+ 0x14, // 4F O
+ 0x1c, // 50 P
+ 0x10, // 51 Q
+ 0x19, // 52 R
+ 0x28, // 53 S
+ 0x12, // 54 T
+ 0x13, // 55 U
+ 0x31, // 56 V
+ 0x18, // 57 W
+ 0x30, // 58 X
+ 0x1a, // 59 Y
+ 0x38, // 5A Z
+ -1, // 5B
+ -1, // 5C
+ -1, // 5D
+ -1, // 5E
+ -1, // 5F
+ 0x3f, // 60 NUM 0
+ 0x35, // 61 NUM 1
+ 0x3d, // 62 NUM 2
+ 0x3e, // 63 NUM 3
+ 0x25, // 64 NUM 4
+ 0x2d, // 65 NUM 5
+ 0x26, // 66 NUM 6
+ 0x15, // 67 NUM 7
+ 0x1d, // 68 NUM 8
+ 0x16, // 69 NUM 9
+ 0x2e, // 6A NUM *
+ 0x37, // 6B NUM +
+ 0x2f, // 6C NUM Ent COMP
+ 0x36, // 6D NUM -
+ 0x3c, // 6E NUM .
+ 0x1e, // 6F NUM /
+#if 1
+ 0x35, // 70 F1 1
+ 0x3d, // 71 F2 2
+ 0x3e, // 72 F3 3
+ 0x25, // 73 F4 4
+ 0x2d, // 74 F5 5
+ 0x26, // 75 F6 6
+ 0x15, // 76 F7 7
+ 0x1d, // 77 F8 8
+ 0x16, // 78 F9 9
+ 0x3f, // 79 F10 0
+#else
+ -1, // 70 F1
+ -1, // 71 F2
+ -1, // 72 F3
+ -1, // 73 F4
+ -1, // 74 F5
+ -1, // 75 F6
+ -1, // 76 F7
+ -1, // 77 F8
+ -1, // 78 F9
+ -1, // 79 F10
+#endif
+ -1, // 7A F11
+ -1, // 7B F12
+ -1, // 7C F13
+ -1, // 7D F14
+ -1, // 7E F15
+ -1, // 7F F16
+ -1, // 80 F17
+ -1, // 81 F18
+ -1, // 82 F19
+ -1, // 83 F20
+ -1, // 84 F21
+ -1, // 85 F22
+ -1, // 86 F23
+ -1, // 87 F24
+ -1, // 88
+ -1, // 89
+ -1, // 8A
+ -1, // 8B
+ -1, // 8C
+ -1, // 8D
+ -1, // 8E
+ -1, // 8F
+ -1, // 90
+ -1, // 91 ScrLk
+ -1, // 92
+ -1, // 93
+ -1, // 94
+ -1, // 95
+ -1, // 96
+ -1, // 97
+ -1, // 98
+ -1, // 99
+ -1, // 9A
+ -1, // 9B
+ -1, // 9C
+ -1, // 9D
+ -1, // 9E
+ -1, // 9F
+ -1, // A0 L Shift
+ -1, // A1 R Shift
+ -1, // A2 L Ctrl
+ 0x2f, // A3 R Ctrl COMP
+ -1, // A4 L Alt
+ -1, // A5 R Alt
+ -1, // A6
+ -1, // A7
+ -1, // A8
+ -1, // A9
+ -1, // AA
+ -1, // AB
+ -1, // AC
+ -1, // AD
+ -1, // AE
+ -1, // AF
+ -1, // B0
+ -1, // B1
+ -1, // B2
+ -1, // B3
+ -1, // B4
+ -1, // B5
+ -1, // B6
+ -1, // B7
+ -1, // B8
+ -1, // B9
+ 0x1f, // BA :
+ 0x17, // BB ;
+ 0x33, // BC ,
+ -1, // BD -
+ 0x3c, // BE .
+ -1, // BF /
+ -1, // C0 @
+ -1, // C1
+ -1, // C2
+ -1, // C3
+ -1, // C4
+ -1, // C5
+ -1, // C6
+ -1, // C7
+ -1, // C8
+ -1, // C9
+ -1, // CA
+ -1, // CB
+ -1, // CC
+ -1, // CD
+ -1, // CE
+ -1, // CF
+ -1, // D0
+ -1, // D1
+ -1, // D2
+ -1, // D3
+ -1, // D4
+ -1, // D5
+ -1, // D6
+ -1, // D7
+ -1, // D8
+ -1, // D9
+ -1, // DA
+ -1, // DB [
+ -1, // DC Yen
+ -1, // DD ]
+ -1, // DE ^
+ -1, // DF
+ -1, // E0
+ -1, // E1
+ -1, // E2 _
+ -1, // E3
+ -1, // E4
+ -1, // E5
+ -1, // E6
+ -1, // E7
+ -1, // E8
+ -1, // E9
+ -1, // EA
+ -1, // EB
+ -1, // EC
+ -1, // ED
+ -1, // EE
+ -1, // EF
+ -1, // F0
+ -1, // F1
+ -1, // F2
+ -1, // F3
+ -1, // F4
+ -1, // F5
+ -1, // F6
+ -1, // F7
+ -1, // F8
+ -1, // F9
+ -1, // FA
+ -1, // FB
+ -1, // FC
+ -1, // FD
+ -1, // FE
+ -1, // FF
+};
+
+void IO::initialize()
+{
+ key_fifo = new FIFO(8);
+ register_frame_event(this);
+
+ get_host_time(&cur_time);
+ register_event(this, EVENT_1SEC, 1000000, true, NULL);
+}
+
+void IO::release()
+{
+ key_fifo->release();
+ delete key_fifo;
+}
+
+void IO::reset()
+{
+ key_fifo->clear();
+ key_data = 0xff;
+
+ crtc_blink = crtc_disp = 0;
+
+ cmt_ear = false;
+ op1_addr = op1_data = 0;
+}
+
+void IO::event_frame()
+{
+ if(!key_fifo->empty()) {
+ key_data = key_fifo->read();
+ d_cpu->write_signal(SIG_CPU_IRQ, 1, 1);
+ }
+ crtc_blink++;
+}
+
+void IO::event_callback(int event_id, int err)
+{
+ if(event_id == EVENT_1SEC) {
+ if(cur_time.initialized) {
+ cur_time.increment();
+ } else {
+ get_host_time(&cur_time); // resync
+ cur_time.initialized = true;
+ }
+ }
+}
+
+void IO::write_signal(int id, uint32_t data, uint32_t mask)
+{
+ if(id == SIG_IO_DISP) {
+ crtc_disp = ((data & mask) != 0);
+ } else if(id == SIG_IO_EAR) {
+ cmt_ear = ((data & mask) != 0);
+ }
+}
+
+void IO::write_io8(uint32_t addr, uint32_t data)
+{
+ bool unknown = false;
+
+ switch(addr) {
+ case 0x6002:
+ d_crtc->write_io8(1, data);
+ break;
+ case 0x6003:
+ d_crtc->write_io8(0, data);
+ break;
+ default:
+ // OP-1
+ if((addr & 0xf000) == 0x6000 && (addr & 0xff00) != 0x6000) {
+ switch(addr & 0xff00) {
+ case 0x6300:
+ // RTC: A4-A6 seems to be used for strobe signals ???
+ if((op1_data & 0xf0) == 0x30 && (data & 0xf0) == 0x10) {
+ set_rtc(addr, data);
+ }
+ break;
+ default:
+ unknown = true;
+ break;
+ }
+ op1_addr = addr;
+ op1_data = data;
+ } else {
+ unknown = true;
+ }
+ break;
+ }
+#ifdef _IO_DEBUG_LOG
+ _TCHAR tmp[256] = {0};
+ if(unknown) {
+ my_sprintf_s(tmp + _tcslen(tmp), array_length(tmp) - _tcslen(tmp), _T("UNKNOWN:\t"));
+ }
+ my_sprintf_s(tmp + _tcslen(tmp), array_length(tmp) - _tcslen(tmp), _T("%04x\tOUT8\t%04x,%02x\n"), get_cpu_pc(0), addr, data & 0xff);
+ this->out_debug_log(tmp);
+#endif
+}
+
+uint32_t IO::read_io8(uint32_t addr)
+{
+ uint32_t value = 0xff;
+ bool unknown = false;
+
+ switch(addr) {
+ case 0x6001:
+ // bit7: CRTC DISP
+ // bit0: SHIFT
+ value = (crtc_disp ? 0 : 0x80) | 0x7e | (key_data & 1);
+ break;
+ case 0x6002:
+ value = d_crtc->read_io8(1);
+ break;
+ case 0x6003:
+ value = d_crtc->read_io8(0);
+ break;
+ case 0x6004:
+ value = key_data & ~3;
+ break;
+ case 0x6500:
+ // OP-1
+ switch(op1_addr & 0xff00) {
+ case 0x6300:
+ // RTC
+ value = get_rtc(op1_addr);
+ break;
+ default:
+ unknown = true;
+ break;
+ }
+ break;
+ default:
+ unknown = true;
+ break;
+ }
+#ifdef _IO_DEBUG_LOG
+ _TCHAR tmp[256] = {0};
+ if(unknown) {
+ my_sprintf_s(tmp + _tcslen(tmp), array_length(tmp) - _tcslen(tmp), _T("UNKNOWN:\t"));
+ }
+ my_sprintf_s(tmp + _tcslen(tmp), array_length(tmp) - _tcslen(tmp), _T("%04x\tIN8\t%04x = %02x\n"), get_cpu_pc(0), addr, value & 0xff);
+ this->out_debug_log(tmp);
+#endif
+ return value;
+}
+
+void IO::key_down(int code)
+{
+ if((code = table[code]) != -1) {
+ key_fifo->write((code << 2) | (emu->get_key_buffer()[0x10] ? 0 : 1));
+ }
+}
+
+void IO::draw_screen(uint8_t *vram)
+{
+ scrntype_t green = RGB_COLOR(0, 255, 0);
+ uint8_t screen[128][256];
+ uint8_t *regs = d_crtc->get_regs();
+ uint32_t addr = regs[12] * 256 + regs[13];
+ int cursor_x = -1, cursor_y = -1;
+
+ if((regs[8] & 0xc0) != 0xc0) {
+ uint8_t bp = regs[10] & 0x60;
+ if(bp == 0x00 || (bp == 0x40 && (crtc_blink & 0x08) != 0) || (bp == 0x60 && (crtc_blink & 0x10) != 0)) {
+ uint32_t cursor_addr = regs[14] * 256 + regs[15];
+ cursor_x = cursor_addr & 31;
+ cursor_y = cursor_addr >> 7;
+ }
+ }
+ for(int y = 0; y < 16; y++) {
+ for(int x = 0; x < 32; x++) {
+ bool cursor_hit = (x == cursor_x && y == cursor_y);
+ for(int l = 0; l < 8; l++) {
+ uint8_t pat = (cursor_hit && l == 7) ? 0xff : vram[0xfff - (addr & 0xfff)];
+ for(int b = 0; b < 8; b++) {
+ screen[y * 8 + l][x * 8 + b] = pat & (0x80 >> b);
+ }
+ addr++;
+ }
+ }
+ }
+ for(int y = 0; y < 128; y++) {
+ scrntype_t *dest = emu->get_screen_buffer(y);
+ for(int x = 0; x < 256; x++) {
+ dest[x] = screen[y][x] ? green : 0;
+ }
+ }
+}
+
+uint32_t IO::get_rtc(uint32_t addr)
+{
+ switch(addr & 0xff0f) {
+ case 0x6300:
+ return TO_BCD_LO(cur_time.second);
+ case 0x6301:
+ return TO_BCD_HI(cur_time.second);
+ case 0x6302:
+ return TO_BCD_LO(cur_time.minute);
+ case 0x6303:
+ return TO_BCD_HI(cur_time.minute);
+ case 0x6304:
+ return TO_BCD_LO(cur_time.hour);
+ case 0x6305:
+ return TO_BCD_HI(cur_time.hour);
+ case 0x6306:
+ return TO_BCD_LO(cur_time.day);
+ case 0x6307:
+ return TO_BCD_HI(cur_time.day);
+ case 0x6308:
+ return TO_BCD_LO(cur_time.month);
+ case 0x6309:
+ return TO_BCD_HI(cur_time.month);
+ case 0x630a:
+ return TO_BCD_LO(cur_time.year);
+ case 0x630b:
+ return TO_BCD_HI(cur_time.year);
+ }
+ return 0;
+}
+
+void IO::set_rtc(uint32_t addr, uint32_t data)
+{
+ // NOTE: this code does not consider the case rtc is incremented while setting registers
+ switch(addr & 0xff0f) {
+ case 0x6300:
+ cur_time.second = TO_BCD_HI(cur_time.second) * 10 + (data & 0x0f);
+ break;
+ case 0x6301:
+ cur_time.second = TO_BCD_LO(cur_time.second) + (data & 0x0f) * 10;
+ break;
+ case 0x6302:
+ cur_time.minute = TO_BCD_HI(cur_time.minute) * 10 + (data & 0x0f);
+ break;
+ case 0x6303:
+ cur_time.minute = TO_BCD_LO(cur_time.minute) + (data & 0x0f) * 10;
+ break;
+ case 0x6304:
+ cur_time.hour = TO_BCD_HI(cur_time.hour) * 10 + (data & 0x0f);
+ break;
+ case 0x6305:
+ cur_time.hour = TO_BCD_LO(cur_time.hour) + (data & 0x0f) * 10;
+ break;
+ case 0x6306:
+ cur_time.day = TO_BCD_HI(cur_time.day) * 10 + (data & 0x0f);
+ break;
+ case 0x6307:
+ cur_time.day = TO_BCD_LO(cur_time.day) + (data & 0x0f) * 10;
+ break;
+ case 0x6308:
+ cur_time.month = TO_BCD_HI(cur_time.month) * 10 + (data & 0x0f);
+ break;
+ case 0x6309:
+ cur_time.month = TO_BCD_LO(cur_time.month) + (data & 0x0f) * 10;
+ break;
+ case 0x630a:
+ cur_time.year = TO_BCD_HI(cur_time.year) * 10 + (data & 0x0f);
+ cur_time.update_year();
+ break;
+ case 0x630b:
+ cur_time.year = TO_BCD_LO(cur_time.year) + (data & 0x0f) * 10;
+ cur_time.update_year();
+ break;
+ }
+}
+
+#define STATE_VERSION 1
+
+bool IO::process_state(FILEIO* state_fio, bool loading)
+{
+ if(!state_fio->StateCheckUint32(STATE_VERSION)) {
+ return false;
+ }
+ if(!state_fio->StateCheckInt32(this_device_id)) {
+ return false;
+ }
+ if(!key_fifo->process_state((void *)state_fio, loading)) {
+ return false;
+ }
+ if(!cur_time.process_state((void *)state_fio, loading)) {
+ return false;
+ }
+ state_fio->StateValue(key_data);
+ state_fio->StateValue(crtc_blink);
+ state_fio->StateValue(crtc_disp);
+ state_fio->StateValue(cmt_ear);
+ state_fio->StateValue(op1_addr);
+ state_fio->StateValue(op1_data);
+ return true;
+}
--- /dev/null
+/*
+ CASIO FX-9000P Emulator 'eFX-9000P'
+
+ Author : Takeda.Toshiya
+ Date : 2022.03.25-
+
+ [ i/o ]
+*/
+
+#ifndef _IO_H_
+#define _IO_H_
+
+#include "../vm.h"
+#include "../../emu.h"
+#include "../device.h"
+
+class HD46505;
+class FIFO;
+
+#define SIG_IO_DISP 0
+#define SIG_IO_EAR 1
+
+class IO : public DEVICE
+{
+private:
+ DEVICE *d_cpu;
+ HD46505 *d_crtc;
+ DEVICE *d_drec;
+
+ // keyboard
+ FIFO *key_fifo;
+ uint8_t key_data;
+
+ // display
+ uint8_t crtc_blink, crtc_disp;
+
+ // OP-1 rtc
+ dll_cur_time_t cur_time;
+ uint8_t cmt_ear;
+ uint32_t op1_addr, op1_data;
+
+ uint32_t get_rtc(uint32_t addr);
+ void set_rtc(uint32_t addr, uint32_t data);
+
+public:
+ IO(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+ {
+ set_device_name(_T("I/O"));
+ }
+ ~IO() {}
+
+ // common functions
+ void initialize();
+ void release();
+ void reset();
+ void write_io8(uint32_t addr, uint32_t data);
+ uint32_t read_io8(uint32_t addr);
+ void write_signal(int id, uint32_t data, uint32_t mask);
+ void event_frame();
+ void event_callback(int event_id, int err);
+ bool process_state(FILEIO* state_fio, bool loading);
+
+ // unique functions
+ void set_context_cpu(DEVICE* device)
+ {
+ d_cpu = device;
+ }
+ void set_context_crtc(HD46505* device)
+ {
+ d_crtc = device;
+ }
+ void set_context_drec(DEVICE* device)
+ {
+ d_drec = device;
+ }
+ void key_down(int code);
+ void draw_screen(uint8_t *vram);
+};
+
+#endif
--- /dev/null
+<?xml version="1.0" encoding="shift_jis"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="fx9000p"
+ ProjectGUID="{C8ECB2A1-4C61-417E-B499-94FF8CC90187}"
+ RootNamespace="fx9000p"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\Debug"
+ IntermediateDirectory=".\Debug"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="_DEBUG"
+ MkTypLibCompatible="true"
+ SuppressStartupBanner="true"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Debug/fx9000p.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_FX9000P"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ PrecompiledHeaderFile=".\Debug/fx9000p.pch"
+ AssemblerListingLocation=".\Debug/"
+ ObjectFile=".\Debug/"
+ ProgramDataBaseFileName=".\Debug/"
+ BrowseInformation="1"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1041"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="odbc32.lib odbccp32.lib winmm.lib imm32.lib"
+ OutputFile=".\Debug/fx9000p.exe"
+ LinkIncremental="2"
+ SuppressStartupBanner="true"
+ GenerateManifest="false"
+ GenerateDebugInformation="true"
+ ProgramDatabaseFile=".\Debug/fx9000p.pdb"
+ SubSystem="2"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ SuppressStartupBanner="true"
+ OutputFile=".\Debug/fx9000p.bsc"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\Release"
+ IntermediateDirectory=".\Release"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="NDEBUG"
+ MkTypLibCompatible="true"
+ SuppressStartupBanner="true"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Release/fx9000p.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="2"
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_FX9000P"
+ StringPooling="true"
+ RuntimeLibrary="0"
+ EnableFunctionLevelLinking="true"
+ EnableEnhancedInstructionSet="2"
+ PrecompiledHeaderFile=".\Release/fx9000p.pch"
+ AssemblerListingLocation=".\Release/"
+ ObjectFile=".\Release/"
+ ProgramDataBaseFileName=".\Release/"
+ BrowseInformation="1"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="odbc32.lib odbccp32.lib winmm.lib imm32.lib"
+ OutputFile=".\Release/fx9000p.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="true"
+ GenerateManifest="false"
+ ProgramDatabaseFile=".\Release/fx9000p.pdb"
+ SubSystem="2"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ SuppressStartupBanner="true"
+ OutputFile=".\Release/fx9000p.bsc"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+ >
+ <File
+ RelativePath="..\src\common.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\config.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\fifo.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\fileio.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ <Filter
+ Name="EMU Source Files"
+ Filter="cpp"
+ >
+ <File
+ RelativePath="..\src\debugger.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\emu.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ </Filter>
+ <Filter
+ Name="OSD Source Files"
+ Filter="cpp"
+ >
+ <File
+ RelativePath="..\src\win32\osd.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\win32\osd_console.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\win32\osd_input.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\win32\osd_screen.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\win32\osd_sound.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\win32\winmain.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ </Filter>
+ <Filter
+ Name="VM Common Source Files"
+ Filter="cpp"
+ >
+ <File
+ RelativePath="..\src\vm\datarec.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\vm\event.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\vm\hd46505.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\vm\memory.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\vm\noise.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\vm\z80.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ </Filter>
+ <Filter
+ Name="VM Driver Source Files"
+ Filter="cpp"
+ >
+ <File
+ RelativePath="..\src\vm\fx9000p\fx9000p.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\vm\fx9000p\io.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ </Filter>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl"
+ >
+ <File
+ RelativePath="..\src\common.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\config.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\fifo.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\fileio.h"
+ >
+ </File>
+ <Filter
+ Name="EMU Header Files"
+ Filter="h"
+ >
+ <File
+ RelativePath="..\src\emu.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="OSD Header Files"
+ Filter="h"
+ >
+ <File
+ RelativePath="..\src\win32\osd.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="VM Common Header Files"
+ Filter="h"
+ >
+ <File
+ RelativePath="..\src\vm\datarec.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\vm\debugger.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\vm\device.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\vm\event.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\vm\hd46505.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\vm\memory.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\vm\noise.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\vm\vm.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\vm\vm_template.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\vm\z80.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="VM Driver Header Files"
+ Filter="h"
+ >
+ <File
+ RelativePath="..\src\vm\fx9000p\fx9000p.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\vm\fx9000p\io.h"
+ >
+ </File>
+ </Filter>
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+ >
+ <File
+ RelativePath="..\src\res\fx9000p.ico"
+ >
+ </File>
+ <File
+ RelativePath="..\src\res\fx9000p.rc"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions=""
+ AdditionalIncludeDirectories="..\src\res"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions=""
+ AdditionalIncludeDirectories="..\src\res"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\res\resource.h"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{C8ECB2A1-4C61-417E-B499-94FF8CC90187}</ProjectGuid>
+ <RootNamespace>fx9000p</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <PlatformToolset>v141</PlatformToolset>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <PlatformToolset>v141</PlatformToolset>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <PlatformToolset>v141</PlatformToolset>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <PlatformToolset>v141</PlatformToolset>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>12.0.21005.1</_ProjectFileVersion>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <OutDir>$(SolutionDir)bin\$(PlatformTarget)\$(Configuration)\</OutDir>
+ <IntDir>$(SolutionDir)obj\$(PlatformTarget)\$(Configuration)\$(ProjectName)\</IntDir>
+ <LinkIncremental>true</LinkIncremental>
+ <IncludePath>$(VC_IncludePath);$(WindowsSDK_IncludePath);$(DXSDK_DIR)Include</IncludePath>
+ <LibraryPath>$(VC_LibraryPath_x86);$(WindowsSDK_LibraryPath_x86);$(DXSDK_DIR)Lib\x86</LibraryPath>
+ <ExcludePath />
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <LinkIncremental>true</LinkIncremental>
+ <IncludePath>$(VC_IncludePath);$(WindowsSDK_IncludePath);$(DXSDK_DIR)Include</IncludePath>
+ <LibraryPath>$(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64);$(DXSDK_DIR)Lib\x64</LibraryPath>
+ <ExcludePath />
+ <OutDir>$(SolutionDir)bin\$(PlatformTarget)\$(Configuration)\</OutDir>
+ <IntDir>$(SolutionDir)obj\$(PlatformTarget)\$(Configuration)\$(ProjectName)\</IntDir>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <OutDir>$(SolutionDir)bin\$(PlatformTarget)\$(Configuration)\</OutDir>
+ <IntDir>$(SolutionDir)obj\$(PlatformTarget)\$(Configuration)\$(ProjectName)\</IntDir>
+ <LinkIncremental>false</LinkIncremental>
+ <IncludePath>$(VC_IncludePath);$(WindowsSDK_IncludePath)</IncludePath>
+ <LibraryPath>$(VC_LibraryPath_x86);$(WindowsSDK_LibraryPath_x86)</LibraryPath>
+ <ExcludePath />
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <LinkIncremental>false</LinkIncremental>
+ <IncludePath>$(VC_IncludePath);$(WindowsSDK_IncludePath)</IncludePath>
+ <LibraryPath>$(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64)</LibraryPath>
+ <ExcludePath />
+ <OutDir>$(SolutionDir)bin\$(PlatformTarget)\$(Configuration)\</OutDir>
+ <IntDir>$(SolutionDir)obj\$(PlatformTarget)\$(Configuration)\$(ProjectName)\</IntDir>
+ </PropertyGroup>
+ <PropertyGroup Label="Vcpkg" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <VcpkgEnabled>false</VcpkgEnabled>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Vcpkg">
+ <VcpkgEnabled>false</VcpkgEnabled>
+ </PropertyGroup>
+ <PropertyGroup Label="Vcpkg" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <VcpkgEnabled>false</VcpkgEnabled>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Vcpkg">
+ <VcpkgEnabled>false</VcpkgEnabled>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <Midl>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TargetEnvironment>Win32</TargetEnvironment>
+ <TypeLibraryName>$(IntDir)vc$(PlatformToolsetVersion)\$(targetname).tlb</TypeLibraryName>
+ <HeaderFileName />
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_FX9000P;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <PrecompiledHeaderOutputFile>$(IntDir)$(TargetName).pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>$(IntDir)%(RelativeDir)</AssemblerListingLocation>
+ <ObjectFileName>$(IntDir)%(RelativeDir)</ObjectFileName>
+ <ProgramDataBaseFileName>$(IntDir)%(RelativeDir)\vc$(PlatformToolsetVersion)\$(TargetName).pdb</ProgramDataBaseFileName>
+ <BrowseInformation>true</BrowseInformation>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0411</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>winmm.lib;imm32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(OutDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Windows</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention />
+ <TargetMachine>MachineX86</TargetMachine>
+ <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
+ <IgnoreSpecificDefaultLibraries>Libcmt.lib</IgnoreSpecificDefaultLibraries>
+ <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories);</AdditionalLibraryDirectories>
+ <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
+ </Link>
+ <Bscmake>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <OutputFile>$(IntDir)vc$(PlatformToolsetVersion)\$(targetname).bsc</OutputFile>
+ </Bscmake>
+ <Manifest>
+ <AdditionalManifestFiles>..\src\res\vista.manifest</AdditionalManifestFiles>
+ </Manifest>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Midl>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TypeLibraryName>$(IntDir)vc$(PlatformToolsetVersion)\$(targetname).tlb</TypeLibraryName>
+ <HeaderFileName />
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_FX9000P;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <PrecompiledHeaderOutputFile>$(IntDir)$(TargetName).pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>$(IntDir)%(RelativeDir)</AssemblerListingLocation>
+ <ObjectFileName>$(IntDir)%(RelativeDir)</ObjectFileName>
+ <ProgramDataBaseFileName>$(IntDir)%(RelativeDir)\vc$(PlatformToolsetVersion)\$(TargetName).pdb</ProgramDataBaseFileName>
+ <BrowseInformation>true</BrowseInformation>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0411</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>winmm.lib;imm32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(OutDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Windows</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
+ <IgnoreSpecificDefaultLibraries>Libcmt.lib</IgnoreSpecificDefaultLibraries>
+ <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories);</AdditionalLibraryDirectories>
+ <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
+ </Link>
+ <Bscmake>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <OutputFile>$(IntDir)vc$(PlatformToolsetVersion)\$(targetname).bsc</OutputFile>
+ </Bscmake>
+ <Manifest>
+ <AdditionalManifestFiles>..\src\res\vista.manifest</AdditionalManifestFiles>
+ </Manifest>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TargetEnvironment>Win32</TargetEnvironment>
+ <TypeLibraryName>$(IntDir)vc$(PlatformToolsetVersion)\$(targetname).tlb</TypeLibraryName>
+ <HeaderFileName />
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_FX9000P;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
+ <PrecompiledHeaderOutputFile>$(IntDir)$(TargetName).pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>$(IntDir)%(RelativeDir)</AssemblerListingLocation>
+ <ObjectFileName>$(IntDir)%(RelativeDir)</ObjectFileName>
+ <ProgramDataBaseFileName>$(IntDir)%(RelativeDir)\vc$(PlatformToolsetVersion)\$(TargetName).pdb</ProgramDataBaseFileName>
+ <BrowseInformation>true</BrowseInformation>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>winmm.lib;imm32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <ProgramDatabaseFile>$(OutDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Windows</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention />
+ <TargetMachine>MachineX86</TargetMachine>
+ <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
+ <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories);</AdditionalLibraryDirectories>
+ <IgnoreSpecificDefaultLibraries>
+ </IgnoreSpecificDefaultLibraries>
+ </Link>
+ <Bscmake>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <OutputFile>$(IntDir)vc$(PlatformToolsetVersion)\$(targetname).bsc</OutputFile>
+ </Bscmake>
+ <Manifest>
+ <AdditionalManifestFiles>..\src\res\vista.manifest</AdditionalManifestFiles>
+ </Manifest>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TypeLibraryName>$(IntDir)vc$(PlatformToolsetVersion)\$(targetname).tlb</TypeLibraryName>
+ <HeaderFileName />
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_FX9000P;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <EnableEnhancedInstructionSet>NotSet</EnableEnhancedInstructionSet>
+ <PrecompiledHeaderOutputFile>$(IntDir)$(TargetName).pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>$(IntDir)%(RelativeDir)</AssemblerListingLocation>
+ <ObjectFileName>$(IntDir)%(RelativeDir)</ObjectFileName>
+ <ProgramDataBaseFileName>$(IntDir)%(RelativeDir)\vc$(PlatformToolsetVersion)\$(TargetName).pdb</ProgramDataBaseFileName>
+ <BrowseInformation>true</BrowseInformation>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>winmm.lib;imm32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <ProgramDatabaseFile>$(OutDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Windows</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
+ <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories);</AdditionalLibraryDirectories>
+ <IgnoreSpecificDefaultLibraries>
+ </IgnoreSpecificDefaultLibraries>
+ </Link>
+ <Bscmake>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <OutputFile>$(IntDir)vc$(PlatformToolsetVersion)\$(targetname).bsc</OutputFile>
+ </Bscmake>
+ <Manifest>
+ <AdditionalManifestFiles>..\src\res\vista.manifest</AdditionalManifestFiles>
+ </Manifest>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\src\common.cpp" />
+ <ClCompile Include="..\src\config.cpp" />
+ <ClCompile Include="..\src\debugger.cpp" />
+ <ClCompile Include="..\src\emu.cpp" />
+ <ClCompile Include="..\src\fifo.cpp" />
+ <ClCompile Include="..\src\fileio.cpp" />
+ <ClCompile Include="..\src\vm\datarec.cpp" />
+ <ClCompile Include="..\src\vm\event.cpp" />
+ <ClCompile Include="..\src\vm\fx9000p\fx9000p.cpp" />
+ <ClCompile Include="..\src\vm\fx9000p\io.cpp" />
+ <ClCompile Include="..\src\vm\hd46505.cpp" />
+ <ClCompile Include="..\src\vm\memory.cpp" />
+ <ClCompile Include="..\src\vm\noise.cpp" />
+ <ClCompile Include="..\src\vm\z80.cpp" />
+ <ClCompile Include="..\src\win32\osd.cpp" />
+ <ClCompile Include="..\src\win32\osd_console.cpp" />
+ <ClCompile Include="..\src\win32\osd_input.cpp" />
+ <ClCompile Include="..\src\win32\osd_screen.cpp" />
+ <ClCompile Include="..\src\win32\osd_sound.cpp" />
+ <ClCompile Include="..\src\win32\winmain.cpp" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\src\common.h" />
+ <ClInclude Include="..\src\config.h" />
+ <ClInclude Include="..\src\emu.h" />
+ <ClInclude Include="..\src\fifo.h" />
+ <ClInclude Include="..\src\fileio.h" />
+ <ClInclude Include="..\src\res\resource.h" />
+ <ClInclude Include="..\src\vm\datarec.h" />
+ <ClInclude Include="..\src\vm\debugger.h" />
+ <ClInclude Include="..\src\vm\device.h" />
+ <ClInclude Include="..\src\vm\event.h" />
+ <ClInclude Include="..\src\vm\fx9000p\fx9000p.h" />
+ <ClInclude Include="..\src\vm\fx9000p\io.h" />
+ <ClInclude Include="..\src\vm\hd46505.h" />
+ <ClInclude Include="..\src\vm\memory.h" />
+ <ClInclude Include="..\src\vm\noise.h" />
+ <ClInclude Include="..\src\vm\vm.h" />
+ <ClInclude Include="..\src\vm\vm_template.h" />
+ <ClInclude Include="..\src\vm\z80.h" />
+ <ClInclude Include="..\src\win32\osd.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <Image Include="..\src\res\fx9000p.ico" />
+ </ItemGroup>
+ <ItemGroup>
+ <ResourceCompile Include="..\src\res\fx9000p.rc">
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\src\res;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">..\src\res;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\src\res;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\src\res;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{3bf62c27-f4cd-4d5b-81f1-fc15c313e0f0}</UniqueIdentifier>
+ <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
+ </Filter>
+ <Filter Include="Source Files\EMU Source Files">
+ <UniqueIdentifier>{67680450-6fda-4fed-9b88-308ea949545a}</UniqueIdentifier>
+ <Extensions>cpp</Extensions>
+ </Filter>
+ <Filter Include="Source Files\OSD Source Files">
+ <UniqueIdentifier>{bfb9817c-9b88-4e6b-bd61-775c20e2410b}</UniqueIdentifier>
+ <Extensions>cpp</Extensions>
+ </Filter>
+ <Filter Include="Source Files\VM Common Source Files">
+ <UniqueIdentifier>{a659f678-beda-4295-8e0c-175cb5ba80e5}</UniqueIdentifier>
+ <Extensions>cpp</Extensions>
+ </Filter>
+ <Filter Include="Source Files\VM Driver Source Files">
+ <UniqueIdentifier>{93c349a3-387f-4f68-8249-08d4f9b79ba4}</UniqueIdentifier>
+ <Extensions>cpp</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{058e17b9-93f2-4a36-b53b-1b24decdffda}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl</Extensions>
+ </Filter>
+ <Filter Include="Header Files\EMU Header Files">
+ <UniqueIdentifier>{5e89f5f6-153f-4b3c-a8ef-36b4b085f944}</UniqueIdentifier>
+ <Extensions>h</Extensions>
+ </Filter>
+ <Filter Include="Header Files\OSD Header Files">
+ <UniqueIdentifier>{0588f095-bf3e-49b4-a2ea-8bdd7d47c3d6}</UniqueIdentifier>
+ <Extensions>h</Extensions>
+ </Filter>
+ <Filter Include="Header Files\VM Common Header Files">
+ <UniqueIdentifier>{add1ed6b-4660-440d-84a2-1d7c5eb210d8}</UniqueIdentifier>
+ <Extensions>h</Extensions>
+ </Filter>
+ <Filter Include="Header Files\VM Driver Header Files">
+ <UniqueIdentifier>{b2780e51-b0db-4878-b25e-8884bffa0fd5}</UniqueIdentifier>
+ <Extensions>h</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{b1c1f290-0b94-4933-b845-7c2667e0144a}</UniqueIdentifier>
+ <Extensions>ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\src\common.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\config.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\fifo.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\fileio.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\debugger.cpp">
+ <Filter>Source Files\EMU Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\emu.cpp">
+ <Filter>Source Files\EMU Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\win32\osd.cpp">
+ <Filter>Source Files\OSD Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\win32\osd_console.cpp">
+ <Filter>Source Files\OSD Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\win32\osd_input.cpp">
+ <Filter>Source Files\OSD Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\win32\osd_screen.cpp">
+ <Filter>Source Files\OSD Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\win32\osd_sound.cpp">
+ <Filter>Source Files\OSD Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\win32\winmain.cpp">
+ <Filter>Source Files\OSD Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\vm\datarec.cpp">
+ <Filter>Source Files\VM Common Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\vm\event.cpp">
+ <Filter>Source Files\VM Common Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\vm\hd46505.cpp">
+ <Filter>Source Files\VM Common Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\vm\memory.cpp">
+ <Filter>Source Files\VM Common Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\vm\noise.cpp">
+ <Filter>Source Files\VM Common Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\vm\z80.cpp">
+ <Filter>Source Files\VM Common Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\vm\fx9000p\fx9000p.cpp">
+ <Filter>Source Files\VM Driver Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\vm\fx9000p\io.cpp">
+ <Filter>Source Files\VM Driver Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\src\common.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\config.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\fifo.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\fileio.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\emu.h">
+ <Filter>Header Files\EMU Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\win32\osd.h">
+ <Filter>Header Files\OSD Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\vm\datarec.h">
+ <Filter>Header Files\VM Common Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\vm\debugger.h">
+ <Filter>Header Files\VM Common Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\vm\device.h">
+ <Filter>Header Files\VM Common Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\vm\event.h">
+ <Filter>Header Files\VM Common Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\vm\hd46505.h">
+ <Filter>Header Files\VM Common Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\vm\memory.h">
+ <Filter>Header Files\VM Common Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\vm\noise.h">
+ <Filter>Header Files\VM Common Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\vm\vm.h">
+ <Filter>Header Files\VM Common Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\vm\vm_template.h">
+ <Filter>Header Files\VM Common Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\vm\z80.h">
+ <Filter>Header Files\VM Common Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\vm\fx9000p\fx9000p.h">
+ <Filter>Header Files\VM Driver Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\vm\fx9000p\io.h">
+ <Filter>Header Files\VM Driver Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\res\resource.h">
+ <Filter>Resource Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+ <ItemGroup>
+ <Image Include="..\src\res\fx9000p.ico">
+ <Filter>Resource Files</Filter>
+ </Image>
+ </ItemGroup>
+ <ItemGroup>
+ <ResourceCompile Include="..\src\res\fx9000p.rc">
+ <Filter>Resource Files</Filter>
+ </ResourceCompile>
+ </ItemGroup>
+</Project>
\ No newline at end of file