まずはSource Code Archive (4/6/2020)をダウンロードします。
http://takeda-toshiya.my.coocan.jp/common/index.html
好きなディレクトリに展開して、以下のプロジェクトを開きます。
source\vc++2008\pc6001.vcproj
追加のインクルードディレクトリとライブラリディレクトリを指定してビルドできるはずです。
C:\Program Files (x86)\Microsoft DirectX 9.0 SDK (December 2004)\include
C:\Program Files (x86)\Microsoft DirectX 9.0 SDK (December 2004)\lib\x86
Common Source Code Projectのpc6001をコピーして編集していきます。
source\vc++2008\pc6001.vcproj
source\src\res\pc6001.rc
\pc6001.ico
source\src\vm\vm.h
source\src\vm\pc6001\display.cpp
display.h
floppy.cpp
floppy.h
joystick.cpp
joystick.h
memory.cpp
memory.h
memory_draw.cpp
pc6001.cpp
pc6001.h
psub.cpp
psub.h
sub.cpp
sub.h
timer.cpp
timer.h
ディレクトリ構成は以下のようになります。
source\vc++2008\tvboy.vcproj
source\src\res\tvboy.rc
tvboy.ico
source\src\vm\vm.h
source\src\vm\event.cpp
event.h
mc6800.cpp
mc6800.h
mc6847.cpp
mc6847.h
pcm1bit.cpp
pcm1bit.h
source\src\vm\tvboy\memory.cpp
memory.h
tvboy.cpp
tvboy.h
tvboy.rc
// 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
VK_APPS, ID_ACCEL_ROMAJI, VIRTKEY, CONTROL, 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 "Romaji to Kana", ID_ROMAJI_TO_KANA
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 "Cart"
BEGIN
MENUITEM "Insert", ID_OPEN_CART1
MENUITEM "Eject", ID_CLOSE_CART1
MENUITEM SEPARATOR
MENUITEM "Recent", ID_RECENT_CART1
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 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 "phc20.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