Merge pull request #2243 from RadWolfie/cxbxr-chihiro-non-lle
Upstream Chihiro Non-LLE Code
This commit is contained in:
commit
494ef0b267
|
@ -81,6 +81,7 @@ const char* g_EnumModules2String[to_underlying(CXBXR_MODULE::MAX)] = {
|
|||
"DS3DCALC",
|
||||
"XMO ",
|
||||
"RINP ",
|
||||
"JVS ",
|
||||
"KRNL ",
|
||||
"LOG ",
|
||||
"XBOX ",
|
||||
|
|
|
@ -89,6 +89,7 @@ typedef enum class _CXBXR_MODULE: unsigned int {
|
|||
DS3DCALC,
|
||||
XMO,
|
||||
RINP,
|
||||
JVS,
|
||||
// kernel
|
||||
KRNL,
|
||||
LOG,
|
||||
|
|
|
@ -80,6 +80,16 @@ bool bLLE_GPU = false; // Set this to true for experimental GPU (graphics) LLE
|
|||
bool bLLE_USB = false; // Set this to true for experimental USB (input) LLE
|
||||
bool bLLE_JIT = false; // Set this to true for experimental JIT
|
||||
|
||||
void* GetXboxSymbolPointer(std::string symbolName)
|
||||
{
|
||||
auto symbol = g_SymbolAddresses.find(symbolName);
|
||||
if (symbol != g_SymbolAddresses.end()) {
|
||||
return (void*)symbol->second;
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void* GetXboxFunctionPointer(std::string functionName)
|
||||
{
|
||||
void* ptr = GetPatchedFunctionTrampoline(functionName);
|
||||
|
@ -89,13 +99,7 @@ void* GetXboxFunctionPointer(std::string functionName)
|
|||
|
||||
// If we got here, the function wasn't patched, so we can just look it up the symbol cache
|
||||
// and return the correct offset
|
||||
auto symbol = g_SymbolAddresses.find(functionName);
|
||||
if (symbol != g_SymbolAddresses.end()) {
|
||||
return (void*)symbol->second;
|
||||
}
|
||||
|
||||
// Finally, if none of the above were matched, return nullptr
|
||||
return nullptr;
|
||||
return GetXboxSymbolPointer(functionName);
|
||||
}
|
||||
|
||||
// NOTE: GetDetectedSymbolName do not get to be in XbSymbolDatabase, get symbol string in Cxbx project only.
|
||||
|
|
|
@ -37,6 +37,7 @@ extern std::map<std::string, xbox::addr_xt> g_SymbolAddresses;
|
|||
void EmuHLEIntercept(Xbe::Header *XbeHeader);
|
||||
|
||||
std::string GetDetectedSymbolName(const xbox::addr_xt address, int * const symbolOffset);
|
||||
void* GetXboxSymbolPointer(std::string functionName);
|
||||
void* GetXboxFunctionPointer(std::string functionName);
|
||||
|
||||
#define XB_TYPE(func) XB_TRAMPOLINE_##func##_t
|
||||
|
|
|
@ -103,6 +103,12 @@ bool ConstructHleInputDevice(int Type, int Port)
|
|||
g_bIsDevicesEmulating = true;
|
||||
bool ret = true;
|
||||
|
||||
if (g_bIsChihiro) {
|
||||
// Don't emulate XID devices during Chihiro Emulation
|
||||
g_bIsDevicesEmulating = false;
|
||||
return ret;
|
||||
}
|
||||
|
||||
// NOTE: initialize bAutoPollDefault to its default state, which varies depending on the device type
|
||||
switch (Type)
|
||||
{
|
||||
|
|
|
@ -544,8 +544,14 @@ XBSYSAPI EXPORTNUM(49) xbox::void_xt DECLSPEC_NORETURN NTAPI xbox::HalReturnToFi
|
|||
}
|
||||
|
||||
// If the title path was an empty string, we need to launch the dashboard
|
||||
// Or in the case of Chihiro: SEGABOOT
|
||||
if (TitlePath.length() == 0) {
|
||||
TitlePath = DeviceHarddisk0Partition2 + "\\xboxdash.xbe";
|
||||
if (g_bIsChihiro) {
|
||||
TitlePath = DevicePrefix + "\\" + MediaBoardRomFile;
|
||||
}
|
||||
else {
|
||||
TitlePath = DeviceHarddisk0Partition2 + "\\xboxdash.xbe";
|
||||
}
|
||||
}
|
||||
|
||||
std::string& XbePath = CxbxConvertXboxToHostPath(TitlePath);
|
||||
|
|
|
@ -44,6 +44,9 @@
|
|||
#include "EmuShared.h"
|
||||
#include "core\hle\D3D8\Direct3D9\Direct3D9.h" // For CxbxInitWindow, EmuD3DInit
|
||||
#include "core\hle\DSOUND\DirectSound\DirectSound.hpp" // For CxbxInitAudio
|
||||
#ifdef CHIHIRO_WORK
|
||||
#include "core\hle\JVS\JVS.h" // For JVS_Init
|
||||
#endif
|
||||
#include "core\hle\Intercept.hpp"
|
||||
#include "ReservedMemory.h" // For virtual_memory_placeholder
|
||||
#include "core\kernel\memory-manager\VMManager.h"
|
||||
|
@ -1008,6 +1011,79 @@ void CxbxKrnlEmulate(unsigned int reserved_systems, blocks_reserved_t blocks_res
|
|||
strncpy(szFilePath_Xbe, xbePath.c_str(), xbox::max_path - 1);
|
||||
std::replace(xbePath.begin(), xbePath.end(), ';', '/');
|
||||
// Load Xbe (this one will reside above WinMain's virtual_memory_placeholder)
|
||||
std::filesystem::path xbeDirectory = std::filesystem::path(xbePath).parent_path();
|
||||
|
||||
#ifdef CHIHIRO_WORK
|
||||
// If the Xbe is Chihiro, and we were not launched by SEGABOOT, we need to load SEGABOOT from the Chihiro Media Board rom instead!
|
||||
// If the XBE path contains a boot.id, it must be a Chihiro title
|
||||
// This is necessary as some Chihiro games use the Debug xor instead of the Chihiro ones
|
||||
// which means we cannot rely on that alone.
|
||||
if (BootFlags == BOOT_NONE && std::filesystem::exists(xbeDirectory / "boot.id")) {
|
||||
|
||||
std::string chihiroMediaBoardRom = std::string(szFolder_CxbxReloadedData) + std::string("/EmuDisk/") + MediaBoardRomFile;
|
||||
if (!std::filesystem::exists(chihiroMediaBoardRom)) {
|
||||
CxbxKrnlCleanup("Chihiro Media Board ROM (fpr21042_m29w160et.bin) could not be found");
|
||||
}
|
||||
|
||||
// Open a handle to the mediaboard rom
|
||||
FILE* fpRom = fopen(chihiroMediaBoardRom.c_str(), "rb");
|
||||
if (fpRom == nullptr) {
|
||||
CxbxKrnlCleanup("Chihiro Media Board ROM (fpr21042_m29w160et.bin) could not opened for read");
|
||||
}
|
||||
|
||||
// Verify the size of media board rom
|
||||
fseek(fpRom, 0, SEEK_END);
|
||||
auto length = ftell(fpRom);
|
||||
if (length != 2 * ONE_MB) {
|
||||
CxbxKrnlCleanup("Chihiro Media Board ROM (fpr21042_m29w160et.bin) has an invalid size");
|
||||
|
||||
}
|
||||
fseek(fpRom, 0, SEEK_SET);
|
||||
|
||||
// Extract SEGABOOT_OLD.XBE and SEGABOOT.XBE from Media Rom
|
||||
// We only do this if SEGABOOT_OLD and SEGABOOT.XBE are *not* already present
|
||||
std::string chihiroSegaBootOld = std::string(szFolder_CxbxReloadedData) + std::string("/EmuDisk/") + MediaBoardSegaBoot0;
|
||||
std::string chihiroSegaBootNew = std::string(szFolder_CxbxReloadedData) + std::string("/EmuDisk/") + MediaBoardSegaBoot1;
|
||||
if (!std::filesystem::exists(chihiroSegaBootOld) || !std::filesystem::exists(chihiroSegaBootNew)) {
|
||||
FILE* fpSegaBootOld = fopen(chihiroSegaBootOld.c_str(), "wb");
|
||||
FILE* fpSegaBootNew = fopen(chihiroSegaBootNew.c_str(), "wb");
|
||||
if (fpSegaBootNew == nullptr || fpSegaBootOld == nullptr) {
|
||||
CxbxKrnlCleanup("Could not open SEGABOOT for writing");
|
||||
|
||||
}
|
||||
|
||||
// Extract SEGABOOT (Old)
|
||||
void* buffer = malloc(ONE_MB);
|
||||
if (buffer == nullptr) {
|
||||
CxbxKrnlCleanup("Could not allocate buffer for SEGABOOT");
|
||||
|
||||
}
|
||||
|
||||
fread(buffer, 1, ONE_MB, fpRom);
|
||||
fwrite(buffer, 1, ONE_MB, fpSegaBootOld);
|
||||
|
||||
// Extract SEGABOOT (New)
|
||||
fread(buffer, 1, ONE_MB, fpRom);
|
||||
fwrite(buffer, 1, ONE_MB, fpSegaBootNew);
|
||||
|
||||
free(buffer);
|
||||
|
||||
fclose(fpSegaBootOld);
|
||||
fclose(fpSegaBootNew);
|
||||
fclose(fpRom);
|
||||
|
||||
}
|
||||
|
||||
g_EmuShared->SetTitleMountPath(xbeDirectory.string().c_str());
|
||||
|
||||
// Launch Segaboot
|
||||
CxbxLaunchNewXbe(chihiroSegaBootNew);
|
||||
CxbxKrnlShutDown(true);
|
||||
TerminateProcess(GetCurrentProcess(), EXIT_SUCCESS);
|
||||
|
||||
}
|
||||
#endif // Chihiro wip block
|
||||
|
||||
CxbxKrnl_Xbe = new Xbe(xbePath.c_str(), false); // TODO : Instead of using the Xbe class, port Dxbx _ReadXbeBlock()
|
||||
|
||||
if (CxbxKrnl_Xbe->HasFatalError()) {
|
||||
|
@ -1084,21 +1160,15 @@ void CxbxKrnlEmulate(unsigned int reserved_systems, blocks_reserved_t blocks_res
|
|||
g_bIsDebug = (xbeType == XbeType::xtDebug);
|
||||
g_bIsRetail = (xbeType == XbeType::xtRetail);
|
||||
|
||||
// Disabled: The media board rom fails to run because it REQUIRES LLE USB, which is not yet enabled.
|
||||
// Chihiro games can be ran directly for now.
|
||||
// This just means that you cannot access the Chihiro test menus and related stuff, games should still be okay
|
||||
#if 0
|
||||
// If the Xbe is Chihiro, and we were not launched by SEGABOOT, we need to load SEGABOOT from the Chihiro Media Board rom instead!
|
||||
// TODO: We also need to store the path of the loaded game, and mount it as the mediaboard filesystem
|
||||
// TODO: How to we detect who launched us, to prevent a reboot-loop
|
||||
#ifdef CHIHIRO_WORK
|
||||
// If this is a Chihiro title, we need to patch the init flags to disable HDD setup
|
||||
// The Chihiro kernel does this, so we should too!
|
||||
if (g_bIsChihiro) {
|
||||
std::string chihiroMediaBoardRom = std::string(szFolder_CxbxReloadedData) + std::string("/EmuDisk/") + MediaBoardRomFile;
|
||||
if (!std::filesystem::exists(chihiroMediaBoardRom)) {
|
||||
CxbxKrnlCleanup("Chihiro Media Board ROM (fpr21042_m29w160et.bin) could not be found");
|
||||
}
|
||||
|
||||
delete CxbxKrnl_Xbe;
|
||||
CxbxKrnl_Xbe = new Xbe(chihiroMediaBoardRom.c_str(), false);
|
||||
CxbxKrnl_Xbe->m_Header.dwInitFlags.bDontSetupHarddisk = true;
|
||||
}
|
||||
#else
|
||||
if (g_bIsChihiro) {
|
||||
CxbxKrnlCleanup("Emulating Chihiro mode does not work yet. Please use different title to emulate.");
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -1433,6 +1503,7 @@ __declspec(noreturn) void CxbxKrnlInit
|
|||
CxbxRegisterDeviceHostPath(DeviceHarddisk0Partition5, CxbxBasePath + "Partition5");
|
||||
CxbxRegisterDeviceHostPath(DeviceHarddisk0Partition6, CxbxBasePath + "Partition6");
|
||||
CxbxRegisterDeviceHostPath(DeviceHarddisk0Partition7, CxbxBasePath + "Partition7");
|
||||
CxbxRegisterDeviceHostPath(DevicePrefix + "\\Chihiro", CxbxBasePath + "Chihiro");
|
||||
|
||||
// Create default symbolic links :
|
||||
EmuLogInit(LOG_LEVEL::DEBUG, "Creating default symbolic links.");
|
||||
|
@ -1623,6 +1694,13 @@ __declspec(noreturn) void CxbxKrnlInit
|
|||
}
|
||||
xbox::KiInitSystem();
|
||||
|
||||
#ifdef CHIHIRO_WORK
|
||||
// If this title is Chihiro, Setup JVS
|
||||
if (g_bIsChihiro) {
|
||||
JVS_Init();
|
||||
}
|
||||
#endif
|
||||
|
||||
EmuX86_Init();
|
||||
// Create the interrupt processing thread
|
||||
DWORD dwThreadId;
|
||||
|
|
|
@ -235,6 +235,8 @@ void NTAPI CxbxIoApcDispatcher(PVOID ApcContext, xbox::PIO_STATUS_BLOCK /*IoStat
|
|||
}
|
||||
|
||||
const std::string MediaBoardRomFile = "Chihiro\\fpr21042_m29w160et.bin";
|
||||
const std::string MediaBoardSegaBoot0 = "Chihiro\\SEGABOOT_MBROM0.XBE";
|
||||
const std::string MediaBoardSegaBoot1 = "Chihiro\\SEGABOOT_MBROM1.XBE";
|
||||
const std::string DrivePrefix = "\\??\\";
|
||||
const std::string DriveSerial = DrivePrefix + "serial:";
|
||||
const std::string DriveCdRom0 = DrivePrefix + "CdRom0:"; // CD-ROM device
|
||||
|
@ -417,10 +419,15 @@ NTSTATUS CxbxConvertFilePath(
|
|||
|
||||
// Check if we where called from a File-handling API :
|
||||
if (!aFileAPIName.empty()) {
|
||||
if (RelativePath.compare(DriveMbrom0) == 0 || RelativePath.compare(DriveMbrom1) == 0) {
|
||||
if (RelativePath.compare(DriveMbrom0) == 0) {
|
||||
*RootDirectory = CxbxBasePathHandle;
|
||||
HostPath = CxbxBasePath;
|
||||
RelativePath = MediaBoardRomFile;
|
||||
RelativePath = MediaBoardSegaBoot0;
|
||||
}
|
||||
else if (RelativePath.compare(DriveMbrom1) == 0) {
|
||||
*RootDirectory = CxbxBasePathHandle;
|
||||
HostPath = CxbxBasePath;
|
||||
RelativePath = MediaBoardSegaBoot1;
|
||||
}
|
||||
else if (!partitionHeader) {
|
||||
// Check if the path starts with a volume indicator :
|
||||
|
|
|
@ -46,7 +46,11 @@ namespace NtDll
|
|||
// TODO : Move to a better suited file
|
||||
//std::ostream& operator<<(std::ostream& os, const NtDll::NTSTATUS& value);
|
||||
|
||||
#define CHIHIRO_MBCOM_HANDLE (HANDLE)0x4D434F3D // MCOM in ascii
|
||||
|
||||
extern const std::string MediaBoardRomFile;
|
||||
extern const std::string MediaBoardSegaBoot0;
|
||||
extern const std::string MediaBoardSegaBoot1;
|
||||
extern const std::string DrivePrefix;
|
||||
extern const std::string DriveSerial;
|
||||
extern const std::string DriveCdRom0;
|
||||
|
|
|
@ -80,6 +80,7 @@ static int g_DlgIndexes[] = {
|
|||
IDC_LOG_DS3DCALC,
|
||||
IDC_LOG_XMO,
|
||||
IDC_LOG_RINP,
|
||||
IDC_LOG_JVS,
|
||||
// Kernel
|
||||
IDC_LOG_KRNL,
|
||||
IDC_LOG_LOG,
|
||||
|
@ -376,8 +377,11 @@ INT_PTR CALLBACK DlgLogConfigProc(HWND hWndDlg, UINT uMsg, WPARAM wParam, LPARAM
|
|||
case IDC_LOG_VTXSH:
|
||||
case IDC_LOG_VSHCACHE:
|
||||
case IDC_LOG_VTXB:
|
||||
case IDC_LOG_INPSYS:
|
||||
case IDC_LOG_DINP:
|
||||
case IDC_LOG_RINP:
|
||||
case IDC_LOG_XINP:
|
||||
case IDC_LOG_JVS:
|
||||
case IDC_LOG_SDL:
|
||||
case IDC_LOG_FILE:
|
||||
case IDC_LOG_X86:
|
||||
|
@ -391,7 +395,6 @@ INT_PTR CALLBACK DlgLogConfigProc(HWND hWndDlg, UINT uMsg, WPARAM wParam, LPARAM
|
|||
case IDC_LOG_HUB:
|
||||
case IDC_LOG_XIDCTRL:
|
||||
case IDC_LOG_ADM:
|
||||
case IDC_LOG_INPSYS:
|
||||
case IDC_LOG_KRNL:
|
||||
case IDC_LOG_LOG:
|
||||
case IDC_LOG_XBOX:
|
||||
|
|
|
@ -62,7 +62,7 @@ BEGIN
|
|||
VERTGUIDE, 178
|
||||
VERTGUIDE, 234
|
||||
VERTGUIDE, 246
|
||||
BOTTOMMARGIN, 347
|
||||
BOTTOMMARGIN, 360
|
||||
HORZGUIDE, 54
|
||||
HORZGUIDE, 69
|
||||
HORZGUIDE, 84
|
||||
|
@ -74,6 +74,8 @@ BEGIN
|
|||
HORZGUIDE, 168
|
||||
HORZGUIDE, 182
|
||||
HORZGUIDE, 195
|
||||
HORZGUIDE, 205
|
||||
HORZGUIDE, 216
|
||||
END
|
||||
END
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
@ -415,7 +417,7 @@ BEGIN
|
|||
PUSHBUTTON "Reset",IDC_EE_RESET,13,251,40,14,BS_FLAT
|
||||
END
|
||||
|
||||
IDD_LOGGING_CFG DIALOGEX 0, 0, 258, 355
|
||||
IDD_LOGGING_CFG DIALOGEX 0, 0, 258, 366
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Cxbx-Reloaded : Logging Configuration"
|
||||
FONT 8, "Verdana", 0, 0, 0x1
|
||||
|
@ -423,7 +425,7 @@ BEGIN
|
|||
COMBOBOX IDC_EVENT_LV,57,9,50,10,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
CTEXT "Event Level",IDC_STATIC,10,11,40,10,0,WS_EX_RIGHT
|
||||
CONTROL "Enable Test Case Popup",IDC_LOG_POPUP_TESTCASE,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,121,12,113,10
|
||||
GROUPBOX "Emulator Event",IDC_CXBXR_EVENTS,12,26,234,186,WS_GROUP,WS_EX_CLIENTEDGE
|
||||
GROUPBOX "Emulator Event",IDC_CXBXR_EVENTS,12,26,234,198,WS_GROUP,WS_EX_CLIENTEDGE
|
||||
CONTROL "Enable all",IDC_LOG_ENABLE_GENERAL,"Button",BS_AUTORADIOBUTTON | BS_LEFTTEXT,19,39,47,10
|
||||
CONTROL "Disable all",IDC_LOG_DISABLE_GENERAL,"Button",BS_AUTORADIOBUTTON | BS_LEFTTEXT,71,39,50,10
|
||||
CONTROL "Custom",IDC_LOG_CUSTOM_GENERAL,"Button",BS_AUTORADIOBUTTON | BS_LEFTTEXT,134,39,41,10
|
||||
|
@ -469,34 +471,35 @@ BEGIN
|
|||
CONTROL "XIDCTRL",IDC_LOG_XIDCTRL,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,20,195,46,10
|
||||
CONTROL "ADM",IDC_LOG_ADM,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,90,195,31,10
|
||||
CONTROL "INPSYS",IDC_LOG_INPSYS,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,137,195,41,10
|
||||
GROUPBOX "Kernel Event",IDC_KERNEL_EVENTS,12,218,234,110,WS_GROUP,WS_EX_CLIENTEDGE
|
||||
CONTROL "Enable all",IDC_LOG_ENABLE_KERNEL,"Button",BS_AUTORADIOBUTTON | BS_LEFTTEXT,19,232,47,10
|
||||
CONTROL "Disable all",IDC_LOG_DISABLE_KERNEL,"Button",BS_AUTORADIOBUTTON | BS_LEFTTEXT,71,232,50,10
|
||||
CONTROL "Custom",IDC_LOG_CUSTOM_KERNEL,"Button",BS_AUTORADIOBUTTON | BS_LEFTTEXT,134,232,41,10
|
||||
CONTROL "KRNL",IDC_LOG_KRNL,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,33,247,33,10
|
||||
CONTROL "LOG",IDC_LOG_LOG,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,91,247,30,10
|
||||
CONTROL "XBOX",IDC_LOG_XBOX,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,141,247,35,10
|
||||
CONTROL "XBDM",IDC_LOG_XBDM,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,199,247,35,10
|
||||
CONTROL "AV",IDC_LOG_AV,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,41,262,25,10
|
||||
CONTROL "DBG",IDC_LOG_DBG,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,90,262,31,10
|
||||
CONTROL "EX",IDC_LOG_EX,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,150,262,25,10
|
||||
CONTROL "FSC",IDC_LOG_FSC,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,205,262,29,10
|
||||
CONTROL "HAL",IDC_LOG_HAL,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,37,277,29,10
|
||||
CONTROL "IO",IDC_LOG_IO,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,97,277,24,10
|
||||
CONTROL "KD",IDC_LOG_KD,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,149,277,26,10
|
||||
CONTROL "KE",IDC_LOG_KE,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,209,277,25,10
|
||||
CONTROL "KI",IDC_LOG_KI,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,43,292,23,10
|
||||
CONTROL "MM",IDC_LOG_MM,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,95,292,26,10
|
||||
CONTROL "NT",IDC_LOG_NT,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,150,292,25,10
|
||||
CONTROL "OB",IDC_LOG_OB,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,208,292,26,10
|
||||
CONTROL "PS",IDC_LOG_PS,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,41,308,25,10
|
||||
CONTROL "RTL",IDC_LOG_RTL,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,93,308,28,10
|
||||
CONTROL "XC",IDC_LOG_XC,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,149,308,26,10
|
||||
CONTROL "XE",IDC_LOG_XE,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,209,308,25,10
|
||||
PUSHBUTTON "Cancel",IDC_LOG_CANCEL,161,333,40,14,BS_FLAT
|
||||
PUSHBUTTON "Accept",IDC_LOG_ACCEPT,206,333,40,14,BS_FLAT
|
||||
GROUPBOX "Kernel Event",IDC_KERNEL_EVENTS,12,231,234,110,WS_GROUP,WS_EX_CLIENTEDGE
|
||||
CONTROL "Enable all",IDC_LOG_ENABLE_KERNEL,"Button",BS_AUTORADIOBUTTON | BS_LEFTTEXT,19,245,47,10
|
||||
CONTROL "Disable all",IDC_LOG_DISABLE_KERNEL,"Button",BS_AUTORADIOBUTTON | BS_LEFTTEXT,71,245,50,10
|
||||
CONTROL "Custom",IDC_LOG_CUSTOM_KERNEL,"Button",BS_AUTORADIOBUTTON | BS_LEFTTEXT,134,245,41,10
|
||||
CONTROL "KRNL",IDC_LOG_KRNL,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,33,260,33,10
|
||||
CONTROL "LOG",IDC_LOG_LOG,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,91,260,30,10
|
||||
CONTROL "XBOX",IDC_LOG_XBOX,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,141,260,35,10
|
||||
CONTROL "XBDM",IDC_LOG_XBDM,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,199,260,35,10
|
||||
CONTROL "AV",IDC_LOG_AV,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,41,275,25,10
|
||||
CONTROL "DBG",IDC_LOG_DBG,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,90,275,31,10
|
||||
CONTROL "EX",IDC_LOG_EX,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,150,275,25,10
|
||||
CONTROL "FSC",IDC_LOG_FSC,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,205,275,29,10
|
||||
CONTROL "HAL",IDC_LOG_HAL,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,37,290,29,10
|
||||
CONTROL "IO",IDC_LOG_IO,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,97,290,24,10
|
||||
CONTROL "KD",IDC_LOG_KD,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,149,290,26,10
|
||||
CONTROL "KE",IDC_LOG_KE,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,209,290,25,10
|
||||
CONTROL "KI",IDC_LOG_KI,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,43,305,23,10
|
||||
CONTROL "MM",IDC_LOG_MM,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,95,305,26,10
|
||||
CONTROL "NT",IDC_LOG_NT,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,150,305,25,10
|
||||
CONTROL "OB",IDC_LOG_OB,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,208,305,26,10
|
||||
CONTROL "PS",IDC_LOG_PS,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,41,321,25,10
|
||||
CONTROL "RTL",IDC_LOG_RTL,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,93,321,28,10
|
||||
CONTROL "XC",IDC_LOG_XC,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,149,321,26,10
|
||||
CONTROL "XE",IDC_LOG_XE,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,209,321,25,10
|
||||
PUSHBUTTON "Cancel",IDC_LOG_CANCEL,161,346,40,14,BS_FLAT
|
||||
PUSHBUTTON "Accept",IDC_LOG_ACCEPT,206,346,40,14,BS_FLAT
|
||||
CONTROL "VSHCACHE",IDC_LOG_VSHCACHE,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,68,140,53,10
|
||||
CONTROL "RINP",IDC_LOG_RINP,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,202,195,32,10
|
||||
CONTROL "JVS",IDC_LOG_JVS,"Button",BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,38,206,28,10
|
||||
END
|
||||
|
||||
IDD_ABOUT DIALOGEX 0, 0, 310, 177
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
//{{NO_DEPENDENCIES}}
|
||||
//{{NO_DEPENDENCIES}}
|
||||
// Microsoft Visual C++ generated include file.
|
||||
// Used by Cxbx.rc
|
||||
//
|
||||
|
@ -93,6 +93,7 @@
|
|||
#define IDC_LOG_XMO 961
|
||||
#define IDC_LOG_VSHCACHE 962
|
||||
#define IDC_LOG_RINP 963
|
||||
#define IDC_LOG_JVS 964
|
||||
#define IDC_SET_MOTOR 999
|
||||
#define IDC_SET_X 1000
|
||||
#define IDC_SET_Y 1001
|
||||
|
|
Loading…
Reference in New Issue