まずは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>