まずはSource Code Archive (12/18/2018)をダウンロードします。
http://takeda-toshiya.my.coocan.jp/common/index.html
好きなディレクトリに展開して、以下のプロジェクトを開きます。
source\vc++2008\coleco.vcprj source\src\res\coleco.rc \coleco.ico source\src\vm\coleco\coleco.cpp coleco.h keyboard.cpp keyboard.h memory.cpp memory.h
SGM対応のために以下の変更をします。
http://www.geocities.jp/parallel_computer_inc/colecovision.zip
coleco.cpp
/* COLECO ColecoVision Emulator 'yaCOLECOVISION' Author : tanam Date : 2016.08.14- [ virtual machine ] */ #include "colecovision.h" #include "../../emu.h" #include "../device.h" #include "../event.h" #include "../io.h" #include "../sn76489an.h" #include "../ay_3_891x.h" #include "../tms9918a.h" #include "../z80.h" #ifdef USE_DEBUGGER #include "../debugger.h" #endif #include "keyboard.h" #include "memory.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 io = new IO(this, emu); dcsg = new SN76489AN(this, emu); psg = new AY_3_891X(this, emu); vdp = new TMS9918A(this, emu); cpu = new Z80(this, emu); key = new KEYBOARD(this, emu); memory = new MEMORY(this, emu); // set contexts event->set_context_cpu(cpu); event->set_context_sound(dcsg); event->set_context_sound(psg); vdp->set_context_irq(cpu, SIG_CPU_NMI, 1); key->set_context_cpu(cpu); // 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 // i/o bus io->set_iomap_alias_w(0x50, psg, 0); // PSG ch io->set_iomap_alias_w(0x51, psg, 1); // PSG data io->set_iomap_alias_r(0x52, psg, 1); // PSG data io->set_iomap_range_w(0x7f,0x7f, memory); // LOWER 8K RAM(0000-1FFF) io->set_iomap_range_w(0x80, 0x9f, key); io->set_iomap_range_rw(0xbe, 0xbf, vdp); io->set_iomap_range_w(0xc0, 0xdf, key); io->set_iomap_range_r(0xfc, 0xff, key); io->set_iomap_range_w(0xff, 0xff, dcsg); // initialize all devices for(DEVICE* device = first_device; device; device = device->next_device) { device->initialize(); } } VM::~VM() { // 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; } // ---------------------------------------------------------------------------- // debugger // ---------------------------------------------------------------------------- #ifdef USE_DEBUGGER DEVICE *VM::get_cpu(int index) { if(index == 0) { return cpu; } return NULL; } #endif // ---------------------------------------------------------------------------- // 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(); } // ---------------------------------------------------------------------------- // draw screen // ---------------------------------------------------------------------------- void VM::draw_screen() { vdp->draw_screen(); } // ---------------------------------------------------------------------------- // soud manager // ---------------------------------------------------------------------------- void VM::initialize_sound(int rate, int samples) { // init sound manager event->initialize_sound(rate, samples); // init sound gen dcsg->initialize_sound(rate, 3579545, 8000); psg->initialize_sound(rate, 3579545, samples, 0, 0); } 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) { dcsg->set_volume(0, decibel_l, decibel_r); psg->set_volume(1, decibel_l, decibel_r); } } #endif // ---------------------------------------------------------------------------- // user interface // ---------------------------------------------------------------------------- void VM::open_cart(int drv, const _TCHAR* file_path) { if(drv == 0) { memory->open_cart(file_path); reset(); } } void VM::close_cart(int drv) { if(drv == 0) { memory->close_cart(); reset(); } } bool VM::is_cart_inserted(int drv) { if(drv == 0) { return memory->is_cart_inserted(); } else { return false; } } 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 2 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 char *name = typeid(*device).name() + 6; // skip "class " int len = strlen(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; } } return true; }
coleco.h
/* COLECO ColecoVision Emulator 'yaCOLECOVISION' Author : tanam Date : 2016.08.14- [ virtual machine ] */ #ifndef _COLECO_VISION_H_ #define _COLECO_VISION_H_ #define DEVICE_NAME "COLECO ColecoVision" #define CONFIG_NAME "colecovision" // device informations for virtual machine #define FRAMES_PER_SEC 60 #define LINES_PER_FRAME 262 #define CPU_CLOCKS 3579545 #define SCREEN_WIDTH 256 #define SCREEN_HEIGHT 192 #define TMS9918A_VRAM_SIZE 0x4000 #define TMS9918A_LIMIT_SPRITES // device informations for win32 #define USE_CART 1 #define USE_SOUND_VOLUME 2 #define USE_JOYSTICK #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("DCSG"),_T("PSG"), }; #endif class EMU; class DEVICE; class EVENT; class IO; class SN76489AN; class AY_3_891X; class TMS9918A; class Z80; class KEYBOARD; class MEMORY; class VM : public VM_TEMPLATE { protected: // devices EVENT* event; IO* io; SN76489AN* dcsg; AY_3_891X* psg; TMS9918A* vdp; Z80* cpu; KEYBOARD* key; MEMORY* memory; 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 // user interface void open_cart(int drv, const _TCHAR* file_path); void close_cart(int drv); bool is_cart_inserted(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); }; #endif
memory.cpp
/* COLECO ColecoVision Emulator 'yaCOLECOVISION' Author : tanam Date : 2016.08.14- [ memory ] */ #include "memory.h" #define SET_BANK(s, e, w, r) { \ int sb = (s) >> 12, eb = (e) >> 12; \ for(int i = sb; i <= eb; i++) { \ if((w) == wdmy) { \ wbank[i] = wdmy; \ } else { \ wbank[i] = (w) + 0x1000 * (i - sb); \ } \ if((r) == rdmy) { \ rbank[i] = rdmy; \ } else { \ rbank[i] = (r) + 0x1000 * (i - sb); \ } \ } \ } 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(create_local_path(_T("COLECO.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, 0x7fff, ram+0x2000, ram+0x2000); SET_BANK(0x8000, 0xffff, wdmy, cart); megarom=0; inserted = false; } void MEMORY::write_data8(uint32_t addr, uint32_t data) { wbank[addr >> 12][addr & 0xfff] = data; } uint32_t MEMORY::read_data8(uint32_t addr) { uint32_t page=0; addr &= 0xffff; if (megarom && addr>=(0xffff-megarom)) { page = (0xffff-addr); SET_BANK(0xc000, 0xffff, wdmy, cart+(megarom-page)* 0x4000); } return rbank[addr >> 12][addr & 0xfff]; } void MEMORY::write_io8(uint32_t addr, uint32_t data) { if (data==0x0d) { SET_BANK(0x0000, 0x1fff, ram, ram); } else { SET_BANK(0x0000, 0x1fff, wdmy, ipl); } return; } void MEMORY::open_cart(const _TCHAR* file_path) { FILEIO* fio = new FILEIO(); uint32_t size; if(fio->Fopen(file_path, FILEIO_READ_BINARY)) { memset(cart, 0xff, sizeof(cart)); fio->Fseek(0, FILEIO_SEEK_END); size = fio->Ftell(); fio->Fseek(0, FILEIO_SEEK_SET); fio->Fread(cart, sizeof(cart), 1); fio->Fclose(); inserted = true; // set memory map if (size>0x8000) { megarom=(size/0x4000)-1; SET_BANK(0x8000, 0xbfff, wdmy, cart + megarom * 0x4000); SET_BANK(0xc000, 0xffff, wdmy, cart + megarom * 0x4000); } else { megarom=0; SET_BANK(0x8000, 0xffff, wdmy, cart); } } delete fio; } void MEMORY::close_cart() { memset(cart, 0xff, sizeof(cart)); megarom=0; inserted = false; // set memory map SET_BANK(0x0000, 0x1fff, wdmy, ipl); SET_BANK(0x2000, 0x7fff, ram+0x2000, ram+0x2000); SET_BANK(0x8000, 0xffff, wdmy, cart); } #define STATE_VERSION 1 bool MEMORY::process_state(FILEIO* state_fio, bool loading) { if(!state_fio->StateCheckUint32(STATE_VERSION)) { return false; } if(!state_fio->StateCheckInt32(this_device_id)) { return false; } state_fio->StateArray(ram, sizeof(ram), 1); state_fio->StateValue(inserted); // post process if(loading) { if(inserted) { SET_BANK(0x8000, 0xffff, wdmy, cart); } else { SET_BANK(0x0000, 0x1fff, wdmy, ipl); SET_BANK(0x2000, 0x7fff, ram+0x2000, ram+0x2000); SET_BANK(0x8000, 0xffff, wdmy, cart); } } return true; }
memory.h
/* COLECO ColecoVision Emulator 'yaCOLECOVISION' Author : tanam Date : 2016.08.14- [ memory ] */ #ifndef _MEMORY_H_ #define _MEMORY_H_ #include "../vm.h" #include "../../emu.h" #include "../device.h" class MEMORY : public DEVICE { private: // memory uint32_t megarom; uint8_t cart[0x80000]; uint8_t ipl[0x2000]; uint8_t ram[0x10000]; uint8_t wdmy[0x10000]; uint8_t rdmy[0x10000]; uint8_t* wbank[16]; uint8_t* rbank[16]; bool inserted; public: MEMORY(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu) { set_device_name(_T("Memory Bus")); } ~MEMORY() {} // common functions void initialize(); void write_data8(uint32_t addr, uint32_t data); uint32_t read_data8(uint32_t addr); void write_io8(uint32_t addr, uint32_t data); bool process_state(FILEIO* state_fio, bool loading); // unique functions void open_cart(const _TCHAR* file_path); void close_cart(); bool is_cart_inserted() { return inserted; } }; #endif
coleco.vcprj
<?xml version="1.0" encoding="shift_jis"?> <VisualStudioProject ProjectType="Visual C++" Version="9.00" Name="colecovision" ProjectGUID="{26207C6A-4A3C-4BE2-A3D6-C8A2FF886A96}" RootNamespace="colecovision" 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/colecovision.tlb" HeaderFileName="" /> <Tool Name="VCCLCompilerTool" Optimization="0" PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_COLECOVISION" MinimalRebuild="true" BasicRuntimeChecks="3" RuntimeLibrary="1" PrecompiledHeaderFile=".\Debug/colecovision.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/colecovision.exe" LinkIncremental="2" SuppressStartupBanner="true" GenerateManifest="false" GenerateDebugInformation="true" ProgramDatabaseFile=".\Debug/colecovision.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/colecovision.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/colecovision.tlb" HeaderFileName="" /> <Tool Name="VCCLCompilerTool" Optimization="2" InlineFunctionExpansion="2" PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_COLECOVISION" StringPooling="true" RuntimeLibrary="0" EnableFunctionLevelLinking="true" EnableEnhancedInstructionSet="2" PrecompiledHeaderFile=".\Release/colecovision.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/colecovision.exe" LinkIncremental="1" SuppressStartupBanner="true" GenerateManifest="false" ProgramDatabaseFile=".\Release/colecovision.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/colecovision.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\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\io.cpp" > <FileConfiguration Name="Debug|Win32" > <Tool Name="VCCLCompilerTool" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration Name="Release|Win32" > <Tool Name="VCCLCompilerTool" PreprocessorDefinitions="" /> </FileConfiguration> </File> <File RelativePath="..\src\vm\sn76489an.cpp" > <FileConfiguration Name="Debug|Win32" > <Tool Name="VCCLCompilerTool" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration Name="Release|Win32" > <Tool Name="VCCLCompilerTool" PreprocessorDefinitions="" /> </FileConfiguration> </File> <File RelativePath="..\src\vm\ay_3_891x.cpp" > <FileConfiguration Name="Debug|Win32" > <Tool Name="VCCLCompilerTool" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration Name="Release|Win32" > <Tool Name="VCCLCompilerTool" PreprocessorDefinitions="" /> </FileConfiguration> </File> <File RelativePath="..\src\vm\tms9918a.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="fmgen Source Files" Filter="cpp" > <File RelativePath="..\src\vm\fmgen\fmgen.cpp" > <FileConfiguration Name="Debug|Win32" > <Tool Name="VCCLCompilerTool" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration Name="Release|Win32" > <Tool Name="VCCLCompilerTool" PreprocessorDefinitions="" /> </FileConfiguration> </File> <File RelativePath="..\src\vm\fmgen\fmtimer.cpp" > <FileConfiguration Name="Debug|Win32" > <Tool Name="VCCLCompilerTool" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration Name="Release|Win32" > <Tool Name="VCCLCompilerTool" PreprocessorDefinitions="" /> </FileConfiguration> </File> <File RelativePath="..\src\vm\fmgen\opna.cpp" > <FileConfiguration Name="Debug|Win32" > <Tool Name="VCCLCompilerTool" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration Name="Release|Win32" > <Tool Name="VCCLCompilerTool" PreprocessorDefinitions="" /> </FileConfiguration> </File> <File RelativePath="..\src\vm\fmgen\psg.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\colecovision\keyboard.cpp" > <FileConfiguration Name="Debug|Win32" > <Tool Name="VCCLCompilerTool" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration Name="Release|Win32" > <Tool Name="VCCLCompilerTool" PreprocessorDefinitions="" /> </FileConfiguration> </File> <File RelativePath="..\src\vm\colecovision\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\colecovision\colecovision.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\debugger.h" > </File> <File RelativePath="..\src\vm\device.h" > </File> <File RelativePath="..\src\vm\event.h" > </File> <File RelativePath="..\src\vm\io.h" > </File> <File RelativePath="..\src\vm\sn76489an.h" > </File> <File RelativePath="..\src\vm\ay_3_891x.h" > </File> <File RelativePath="..\src\vm\tms9918a.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="fmgen Header Files" > <File RelativePath="..\src\vm\fmgen\diag.h" > </File> <File RelativePath="..\src\vm\fmgen\fmgen.h" > </File> <File RelativePath="..\src\vm\fmgen\fmgeninl.h" > </File> <File RelativePath="..\src\vm\fmgen\fmtimer.h" > </File> <File RelativePath="..\src\vm\fmgen\headers.h" > </File> <File RelativePath="..\src\vm\fmgen\misc.h" > </File> <File RelativePath="..\src\vm\fmgen\opna.h" > </File> <File RelativePath="..\src\vm\fmgen\psg.h" > </File> </Filter> <Filter Name="VM Driver Header Files" Filter="h" > <File RelativePath="..\src\vm\colecovision\keyboard.h" > </File> <File RelativePath="..\src\vm\colecovision\memory.h" > </File> <File RelativePath="..\src\vm\colecovision\colecovision.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\resource.h" > </File> <File RelativePath="..\src\res\colecovision.ico" > </File> <File RelativePath="..\src\res\colecovision.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> </Filter> </Files> <Globals> </Globals> </VisualStudioProject>