Files
Client/Tools/ClientSetup/SystemInfo.h
LGram16 e067522598 Initial commit: ROW Client source code
Game client codebase including:
- CharacterActionControl: Character and creature management
- GlobalScript: Network, items, skills, quests, utilities
- RYLClient: Main client application with GUI and event handlers
- Engine: 3D rendering engine (RYLGL)
- MemoryManager: Custom memory allocation
- Library: Third-party dependencies (DirectX, boost, etc.)
- Tools: Development utilities

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 16:24:34 +09:00

208 lines
7.0 KiB
C++
Raw Blame History

#pragma once
#include <ddraw.h>
#include <d3d8.h>
#include <math.h>
namespace SystemInfo
{
//-----------------------------------------------------------------------------
// Name: struct D3DModeInfo
// Desc: Structure for holding information about a display mode
//-----------------------------------------------------------------------------
struct D3DModeInfo
{
DWORD Width; // Screen width in this mode
DWORD Height; // Screen height in this mode
D3DFORMAT Format; // Pixel format in this mode
DWORD dwBehavior; // Hardware / Software / Mixed vertex processing
DWORD dwRefresh[50];
D3DFORMAT DepthStencilFormat; // Which depth/stencil format to use with this mode
};
//-----------------------------------------------------------------------------
// Name: struct D3DDeviceInfo
// Desc: Structure for holding information about a Direct3D device, including
// a list of modes compatible with this device
//-----------------------------------------------------------------------------
struct D3DDeviceInfo
{
// Device data
D3DDEVTYPE DeviceType; // Reference, HAL, etc.
D3DCAPS8 d3dCaps; // Capabilities of this device
const TCHAR* strDesc; // Name of this device
BOOL bCanDoWindowed; // Whether this device can work in windowed mode
// Modes for this device
DWORD dwNumModes;
D3DModeInfo modes[150];
// Current state
DWORD dwCurrentMode;
BOOL bWindowed;
D3DMULTISAMPLE_TYPE MultiSampleType;
};
struct CusD3DModeInfo
{
DWORD Width; // Screen width in this mode
DWORD Height; // Screen height in this mode
DWORD m_dwNumFormat;
D3DModeInfo Format[10];
};
struct CusD3DDeviceInfo
{
// Device data
D3DDEVTYPE DeviceType; // Reference, HAL, etc.
D3DCAPS8 d3dCaps; // Capabilities of this device
const TCHAR* strDesc; // Name of this device
BOOL bCanDoWindowed; // Whether this device can work in windowed mode
// Modes for this device
DWORD dwNumModes;
CusD3DModeInfo modes[150];
// Current state
DWORD dwCurrentMode;
BOOL bWindowed;
D3DMULTISAMPLE_TYPE MultiSampleType;
};
//-----------------------------------------------------------------------------
// Name: struct D3DAdapterInfo
// Desc: Structure for holding information about an adapter, including a list
// of devices available on this adapter
//-----------------------------------------------------------------------------
struct D3DAdapterInfo
{
// Adapter data
D3DADAPTER_IDENTIFIER8 d3dAdapterIdentifier;
D3DDISPLAYMODE d3ddmDesktop; // Desktop display mode for this adapter
// Devices for this adapter
DWORD dwNumDevices;
D3DDeviceInfo devices[5];
// Current state
DWORD dwCurrentDevice;
};
/* Display Modes */
typedef struct _CusD3DDISPLAYMODE
{
UINT Width;
UINT Height;
UINT RefreshRate[50];
D3DFORMAT Format;
} CusD3DDISPLAYMODE;
typedef struct _sDiskInfo
{
char Letter[8];
ULARGE_INTEGER m_lFreeBytesAvailableToCaller;
ULARGE_INTEGER m_lTotalBytes;
ULARGE_INTEGER m_lTotalFreeBytes;
} sDiskInfo;
class CSystemInfo
{
protected:
unsigned long m_dwMinDepthBits; // <20>ּ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ʈ<EFBFBD><C6AE>
unsigned long m_dwMinStencilBits; // <20>ּ<EFBFBD> <20><><EFBFBD>ٽ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ʈ <20><>
HRESULT ConfirmDevice(D3DCAPS8*,DWORD,D3DFORMAT);
BOOL FindDepthStencilFormat(UINT iAdapter, D3DDEVTYPE DeviceType, D3DFORMAT TargetFormat, D3DFORMAT *pDepthStencilFormat);
OSVERSIONINFOEX m_osvi;
BOOL m_bOsVersionInfoEx;
MEMORYSTATUS m_stat;
char m_strCPUInfo[8][MAX_PATH];
unsigned long m_dwCPUSpeed;
sDiskInfo m_sDiskInfo[20];
char m_strWindowName[MAX_PATH];
char m_strServiceVersion[MAX_PATH];
char m_strSoundCard[MAX_PATH];
char m_strSoundCardVersion[MAX_PATH];
LPDIRECT3D8 m_lpD3D;
DDCAPS m_ddHALCaps, m_ddHELCaps;
public:
unsigned long m_dwNumAdapters;
D3DAdapterInfo m_Adapters[10];
CusD3DDeviceInfo m_d3dAvailableDevices[5];
unsigned long m_dwCurrentVideoCard;
unsigned long m_dwCurrentDevice;
unsigned long m_dwCurrentResolution;
unsigned long m_dwCurrentColor;
unsigned long m_dwCurrentRefresh;
CSystemInfo(void);
~CSystemInfo(void);
void SetDepthBits(unsigned long dwMinDepthBits) { m_dwMinDepthBits = dwMinDepthBits; }
void SetStencilBits(unsigned long dwMinStencilBits) { m_dwMinStencilBits = dwMinStencilBits; }
BOOL GetWindowInfo(void);
BOOL GetMemoryInfo(void);
BOOL GetCPUInfo(void);
BOOL GetDiskInfo(void);
BOOL GetSoundCardInfo(void);
BOOL GetVideoCardInfo(void);
void ReadCPUCounter(UINT64 *pCounter);
HRESULT EnumulationD3D(void);
void SetSetting(unsigned long dwWidth, unsigned long dwHeight, D3DFORMAT d3dFormat, unsigned long dwRefresh);
BOOL GetAvailableDevice(unsigned long dwMinWidth, unsigned long dwMinHeight);
D3DFORMAT GetFormat(unsigned long dwDepth);
char *GetWindowName(void) { return m_strWindowName; }
double GetTotalPhysMem(void) { return (double)(m_stat.dwTotalPhys / 1024 / 1024.0); }
unsigned long GetAvailPhysMem(void) { return (unsigned long)(m_stat.dwAvailPhys / 1024 / 1024); }
unsigned long GetAvailPages(void) { return (unsigned long)(m_stat.dwAvailPageFile / 1024 / 1024); }
char *GetCPUInfo(unsigned long dwNum) { return m_strCPUInfo[dwNum]; }
double GetHDDFreeSpace(void) { return ((double)(m_sDiskInfo->m_lTotalFreeBytes.QuadPart) / 1024 / 1024 / 1024); }
char *GetSoundCardName(void) { return m_strSoundCard; }
unsigned long GetNumAdapters(void) { return m_dwNumAdapters; }
char *GetGraphicCardName(unsigned long dwNum) { return m_Adapters[dwNum].d3dAdapterIdentifier.Description; }
void GetResolutionByString(char *strFormat, char *strString);
void GetColorByString(char *strFormat, char *strString);
void GetRefreshByString(char *strFormat, char *strString);
unsigned long GetCurrentWidth(void) { return m_d3dAvailableDevices[m_dwCurrentDevice].modes[m_dwCurrentResolution].Width; }
unsigned long GetCurrentHeight(void) { return m_d3dAvailableDevices[m_dwCurrentDevice].modes[m_dwCurrentResolution].Height; }
unsigned long GetCurrentColor(void) { return m_d3dAvailableDevices[m_dwCurrentDevice].modes[m_dwCurrentResolution].Format[m_dwCurrentColor].Format; }
unsigned long GetCurrentRefresh(void) { return m_d3dAvailableDevices[m_dwCurrentDevice].modes[m_dwCurrentResolution].Format[m_dwCurrentColor].dwRefresh[m_dwCurrentRefresh]; }
BOOL IsAblePages(unsigned long dwNeedPage) { return (((m_stat.dwAvailPageFile / 1024 / 1024) > dwNeedPage)? TRUE : FALSE); }
BOOL IsTotalPhysMem(unsigned long dwNeedRam) { return ((ceil((double)(m_stat.dwTotalPhys / 1024 / 1024.0)) >= dwNeedRam)? TRUE : FALSE); }
unsigned long GetAvailableShader(unsigned long dwPSVersion, unsigned long dwVSVersion);
BOOL GetAvailableHiResTexture(unsigned long dwMinWidth, unsigned long dwMinHeight);
BOOL GetAvailableCompressTexture(D3DFORMAT d3dFormat);
unsigned long GetAbleWindowVersion(void);
unsigned long GetPerformance(void);
BOOL IsMinimum(void);
};
};