ported to DX9

This commit is contained in:
d1str4ught
2025-08-19 03:18:56 +02:00
parent 97a82baa4a
commit e87b6fc67b
130 changed files with 19303 additions and 10435 deletions

View File

@@ -26,7 +26,6 @@ target_link_libraries(UserInterface
SpeedTreeLib
SphereLib
ws2_32
cryptopp-static
lzo2
@@ -34,6 +33,14 @@ target_link_libraries(UserInterface
Granny
SpeedTree
MilesSoundSystem
Python
ws2_32
strmiids
amstrmid
dmoguids
ddraw
version
)
GroupSourcesByFolder(UserInterface)

View File

@@ -1,17 +1,17 @@
#pragma once
#include "../eterLib/MSApplication.h"
#include "../eterLib/Input.h"
#include "../eterLib/Profiler.h"
#include "../eterLib/GrpDevice.h"
#include "../eterLib/NetDevice.h"
#include "../eterLib/GrpLightManager.h"
#include "../EffectLib/EffectManager.h"
#include "../gamelib/RaceManager.h"
#include "../gamelib/ItemManager.h"
#include "../gamelib/FlyingObjectManager.h"
#include "../gamelib/GameEventManager.h"
#include "../milesLib/SoundManager.h"
#include "eterLib/MSApplication.h"
#include "eterLib/Input.h"
#include "eterLib/Profiler.h"
#include "eterLib/GrpDevice.h"
#include "eterLib/NetDevice.h"
#include "eterLib/GrpLightManager.h"
#include "EffectLib/EffectManager.h"
#include "gamelib/RaceManager.h"
#include "gamelib/ItemManager.h"
#include "gamelib/FlyingObjectManager.h"
#include "gamelib/GameEventManager.h"
#include "milesLib/SoundManager.h"
#include "PythonEventManager.h"
#include "PythonPlayer.h"
@@ -42,6 +42,8 @@
#include "AbstractApplication.h"
#include "MovieMan.h"
#include <qedit.h>
class CPythonApplication : public CMSApplication, public CInputKeyboard, public IAbstractApplication
{
public:

View File

@@ -113,7 +113,7 @@ int CPythonApplication::OnLogoUpdate()
{
m_bLogoError = true;
LPDIRECT3DTEXTURE8 tex = m_pLogoTex->GetD3DTexture();
LPDIRECT3DTEXTURE9 tex = m_pLogoTex->GetD3DTexture();
D3DLOCKED_RECT rt;
ZeroMemory(&rt, sizeof(rt));
@@ -158,7 +158,7 @@ int CPythonApplication::OnLogoUpdate()
}
// Áغñ‰çÀ¸¸?¹öÆÛ¿¡¼­ ÅØ½ºÃÄ·Î º¹»çÇØ¿Â´Ù.
LPDIRECT3DTEXTURE8 tex = m_pLogoTex->GetD3DTexture();
LPDIRECT3DTEXTURE9 tex = m_pLogoTex->GetD3DTexture();
D3DLOCKED_RECT rt;
ZeroMemory(&rt, sizeof(rt));
@@ -198,8 +198,8 @@ void CPythonApplication::OnLogoRender()
{
if(!m_pLogoTex->IsEmpty() && !m_bLogoError && true == bInitializedLogo)
{
STATEMANAGER.SetTextureStageState(0, D3DTSS_MINFILTER, D3DTEXF_LINEAR);
STATEMANAGER.SetTextureStageState(0, D3DTSS_MAGFILTER, D3DTEXF_LINEAR);
STATEMANAGER.SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
STATEMANAGER.SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
m_pLogoTex->SetTextureStage(0);
CPythonGraphic::instance().RenderTextureBox(m_nLeft, m_nTop, m_nRight, m_nBottom, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f);
}
@@ -236,8 +236,8 @@ void CPythonApplication::OnLogoClose()
if(m_pFilterSG != NULL) m_pFilterSG->Release(); m_pFilterSG = NULL;
if(m_pGraphBuilder != NULL) m_pGraphBuilder->Release(); m_pGraphBuilder = NULL;
STATEMANAGER.SetTextureStageState(0, D3DTSS_MINFILTER, D3DTEXF_POINT);
STATEMANAGER.SetTextureStageState(0, D3DTSS_MAGFILTER, D3DTEXF_POINT);
STATEMANAGER.SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_POINT);
STATEMANAGER.SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_POINT);
}

View File

@@ -264,17 +264,17 @@ void CPythonMiniMap::Render(float fScreenX, float fScreenY)
__SetPosition();
}
STATEMANAGER.SaveTextureStageState(0, D3DTSS_MIPFILTER, D3DTEXF_POINT);
STATEMANAGER.SaveTextureStageState(0, D3DTSS_MINFILTER, D3DTEXF_POINT);
STATEMANAGER.SaveTextureStageState(0, D3DTSS_MAGFILTER, D3DTEXF_POINT);
STATEMANAGER.SaveSamplerState(0, D3DSAMP_MIPFILTER, D3DTEXF_POINT);
STATEMANAGER.SaveSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_POINT);
STATEMANAGER.SaveSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_POINT);
STATEMANAGER.SaveTextureStageState(0, D3DTSS_ADDRESSU, D3DTADDRESS_CLAMP);
STATEMANAGER.SaveTextureStageState(0, D3DTSS_ADDRESSV, D3DTADDRESS_CLAMP);
STATEMANAGER.SaveSamplerState(0, D3DSAMP_ADDRESSU, D3DTADDRESS_CLAMP);
STATEMANAGER.SaveSamplerState(0, D3DSAMP_ADDRESSV, D3DTADDRESS_CLAMP);
STATEMANAGER.SaveTextureStageState(1, D3DTSS_TEXCOORDINDEX, D3DTSS_TCI_CAMERASPACEPOSITION);
STATEMANAGER.SaveTextureStageState(1, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_COUNT2);
STATEMANAGER.SaveTextureStageState(1, D3DTSS_ADDRESSU, D3DTADDRESS_CLAMP);
STATEMANAGER.SaveTextureStageState(1, D3DTSS_ADDRESSV, D3DTADDRESS_CLAMP);
STATEMANAGER.SaveSamplerState(1, D3DSAMP_ADDRESSU, D3DTADDRESS_CLAMP);
STATEMANAGER.SaveSamplerState(1, D3DSAMP_ADDRESSV, D3DTADDRESS_CLAMP);
STATEMANAGER.SaveTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
STATEMANAGER.SaveTextureStageState(0, D3DTSS_COLORARG2, D3DTA_DIFFUSE);
@@ -295,14 +295,14 @@ void CPythonMiniMap::Render(float fScreenX, float fScreenY)
STATEMANAGER.SetTexture(1, m_MiniMapFilterGraphicImageInstance.GetTexturePointer()->GetD3DTexture());
STATEMANAGER.SetTransform(D3DTS_TEXTURE1, &m_matMiniMapCover);
STATEMANAGER.SetVertexShader(D3DFVF_XYZ | D3DFVF_TEX1);
STATEMANAGER.SetFVF(D3DFVF_XYZ | D3DFVF_TEX1);
STATEMANAGER.SetStreamSource(0, m_VertexBuffer.GetD3DVertexBuffer(), 20);
STATEMANAGER.SetIndices(m_IndexBuffer.GetD3DIndexBuffer(), 0);
STATEMANAGER.SetTransform(D3DTS_WORLD, &m_matWorld);
for (BYTE byTerrainNum = 0; byTerrainNum < AROUND_AREA_NUM; ++byTerrainNum)
{
LPDIRECT3DTEXTURE8 pMiniMapTexture = m_lpMiniMapTexture[byTerrainNum];
LPDIRECT3DTEXTURE9 pMiniMapTexture = m_lpMiniMapTexture[byTerrainNum];
STATEMANAGER.SetTexture(0, pMiniMapTexture);
if (pMiniMapTexture)
{
@@ -333,12 +333,12 @@ void CPythonMiniMap::Render(float fScreenX, float fScreenY)
STATEMANAGER.RestoreTextureStageState(0, D3DTSS_COLORARG2);
STATEMANAGER.RestoreTextureStageState(0, D3DTSS_COLOROP);
STATEMANAGER.RestoreTextureStageState(0, D3DTSS_ADDRESSU);
STATEMANAGER.RestoreTextureStageState(0, D3DTSS_ADDRESSV);
STATEMANAGER.RestoreSamplerState(0, D3DSAMP_ADDRESSU);
STATEMANAGER.RestoreSamplerState(0, D3DSAMP_ADDRESSV);
STATEMANAGER.RestoreTextureStageState(1, D3DTSS_TEXCOORDINDEX);
STATEMANAGER.RestoreTextureStageState(1, D3DTSS_TEXTURETRANSFORMFLAGS);
STATEMANAGER.RestoreTextureStageState(1, D3DTSS_ADDRESSU);
STATEMANAGER.RestoreTextureStageState(1, D3DTSS_ADDRESSV);
STATEMANAGER.RestoreSamplerState(1, D3DSAMP_ADDRESSU);
STATEMANAGER.RestoreSamplerState(1, D3DSAMP_ADDRESSV);
SetDiffuseOperation();
STATEMANAGER.SetTransform(D3DTS_WORLD, &m_matIdentity);
@@ -427,12 +427,12 @@ void CPythonMiniMap::Render(float fScreenX, float fScreenY)
STATEMANAGER.RestoreTextureStageState(0, D3DTSS_COLORARG2);
STATEMANAGER.RestoreTextureStageState(0, D3DTSS_COLOROP);
STATEMANAGER.RestoreTextureStageState(0, D3DTSS_MIPFILTER);
STATEMANAGER.RestoreTextureStageState(0, D3DTSS_MINFILTER);
STATEMANAGER.RestoreTextureStageState(0, D3DTSS_MAGFILTER);
STATEMANAGER.RestoreSamplerState(0, D3DSAMP_MIPFILTER);
STATEMANAGER.RestoreSamplerState(0, D3DSAMP_MINFILTER);
STATEMANAGER.RestoreSamplerState(0, D3DSAMP_MAGFILTER);
STATEMANAGER.SaveTextureStageState(0, D3DTSS_MINFILTER, D3DTEXF_LINEAR);
STATEMANAGER.SaveTextureStageState(0, D3DTSS_MAGFILTER, D3DTEXF_LINEAR);
STATEMANAGER.SaveSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
STATEMANAGER.SaveSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
// 캐릭터 마크
CInstanceBase * pkInst = CPythonCharacterManager::Instance().GetMainInstancePtr();
@@ -476,8 +476,8 @@ void CPythonMiniMap::Render(float fScreenX, float fScreenY)
m_MiniMapCameraraphicImageInstance.SetRotation(pkCmrCur->GetRoll());
m_MiniMapCameraraphicImageInstance.Render();
}
STATEMANAGER.RestoreTextureStageState(0, D3DTSS_MINFILTER);
STATEMANAGER.RestoreTextureStageState(0, D3DTSS_MAGFILTER);
STATEMANAGER.RestoreSamplerState(0, D3DSAMP_MINFILTER);
STATEMANAGER.RestoreSamplerState(0, D3DSAMP_MAGFILTER);
}
void CPythonMiniMap::SetScale(float fScale)
@@ -969,8 +969,8 @@ void CPythonMiniMap::RenderAtlas(float fScreenX, float fScreenY)
}
STATEMANAGER.SetTransform(D3DTS_WORLD, &m_matWorldAtlas);
STATEMANAGER.SaveTextureStageState(0, D3DTSS_MINFILTER, D3DTEXF_POINT);
STATEMANAGER.SaveTextureStageState(0, D3DTSS_MAGFILTER, D3DTEXF_POINT);
STATEMANAGER.SaveSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_POINT);
STATEMANAGER.SaveSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_POINT);
m_AtlasImageInstance.Render();
STATEMANAGER.SaveRenderState(D3DRS_TEXTUREFACTOR, 0xFFFFFFFF);
@@ -998,8 +998,8 @@ void CPythonMiniMap::RenderAtlas(float fScreenX, float fScreenY)
++m_AtlasMarkInfoVectorIterator;
}
STATEMANAGER.SetTextureStageState(0, D3DTSS_MINFILTER, D3DTEXF_LINEAR);
STATEMANAGER.SetTextureStageState(0, D3DTSS_MAGFILTER, D3DTEXF_LINEAR);
STATEMANAGER.SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
STATEMANAGER.SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
STATEMANAGER.SetRenderState(D3DRS_TEXTUREFACTOR, CInstanceBase::GetIndexedNameColor(CInstanceBase::NAMECOLOR_WAYPOINT));
m_AtlasMarkInfoVectorIterator = m_AtlasWayPointInfoVector.begin();
for (; m_AtlasMarkInfoVectorIterator != m_AtlasWayPointInfoVector.end(); ++m_AtlasMarkInfoVectorIterator)
@@ -1030,8 +1030,8 @@ void CPythonMiniMap::RenderAtlas(float fScreenX, float fScreenY)
if ((ELTimer_GetMSec() / 500) % 2)
m_AtlasPlayerMark.Render();
STATEMANAGER.RestoreTextureStageState(0, D3DTSS_MINFILTER);
STATEMANAGER.RestoreTextureStageState(0, D3DTSS_MAGFILTER);
STATEMANAGER.RestoreSamplerState(0, D3DSAMP_MINFILTER);
STATEMANAGER.RestoreSamplerState(0, D3DSAMP_MAGFILTER);
STATEMANAGER.SetTransform(D3DTS_WORLD, &m_matIdentity);
{

View File

@@ -181,7 +181,7 @@ class CPythonMiniMap : public CScreen, public CSingleton<CPythonMiniMap>
float m_fMiniMapRadius;
// 맵 그림...
LPDIRECT3DTEXTURE8 m_lpMiniMapTexture[AROUND_AREA_NUM];
LPDIRECT3DTEXTURE9 m_lpMiniMapTexture[AROUND_AREA_NUM];
// 미니맵 커버
CGraphicImageInstance m_MiniMapFilterGraphicImageInstance;

View File

@@ -36,21 +36,21 @@ void CPythonSystem::GetDisplaySettings()
memset(m_ResolutionList, 0, sizeof(TResolution) * RESOLUTION_MAX_NUM);
m_ResolutionCount = 0;
LPDIRECT3D8 lpD3D = CPythonGraphic::Instance().GetD3D();
LPDIRECT3D9 lpD3D = CPythonGraphic::Instance().GetD3D();
D3DADAPTER_IDENTIFIER8 d3dAdapterIdentifier;
D3DADAPTER_IDENTIFIER9 d3dAdapterIdentifier;
D3DDISPLAYMODE d3ddmDesktop;
lpD3D->GetAdapterIdentifier(0, D3DENUM_NO_WHQL_LEVEL, &d3dAdapterIdentifier);
lpD3D->GetAdapterIdentifier(0, 0, &d3dAdapterIdentifier);
lpD3D->GetAdapterDisplayMode(0, &d3ddmDesktop);
// 이 어뎁터가 가지고 있는 디스플래이 모드갯수를 나열한다..
DWORD dwNumAdapterModes = lpD3D->GetAdapterModeCount(0);
DWORD dwNumAdapterModes = lpD3D->GetAdapterModeCount(0, d3ddmDesktop.Format);
for (UINT iMode = 0; iMode < dwNumAdapterModes; iMode++)
{
D3DDISPLAYMODE DisplayMode;
lpD3D->EnumAdapterModes(0, iMode, &DisplayMode);
lpD3D->EnumAdapterModes(0, d3ddmDesktop.Format, iMode, &DisplayMode);
DWORD bpp = 0;
// 800 600 이상만 걸러낸다.

View File

@@ -23,7 +23,6 @@
#endif
#include <dshow.h>
#include <qedit.h>
#include "Locale.h"

View File

@@ -27,23 +27,6 @@ volatile int _AVOID_FLOATING_POINT_LIBRARY_BUG = _fltused;
extern "C" { FILE __iob_func[3] = { *stdin,*stdout,*stderr }; }
#pragma comment(linker, "/NODEFAULTLIB:libci.lib")
#pragma comment( lib, "version.lib" )
#pragma comment( lib, "python27.lib" )
#pragma comment( lib, "imagehlp.lib" )
#pragma comment( lib, "devil.lib" )
#pragma comment( lib, "granny2.lib" )
#pragma comment( lib, "mss32.lib" )
#pragma comment( lib, "winmm.lib" )
#pragma comment( lib, "imm32.lib" )
#pragma comment( lib, "oldnames.lib" )
#pragma comment( lib, "SpeedTreeRT.lib" )
#pragma comment( lib, "dinput8.lib" )
#pragma comment( lib, "dxguid.lib" )
#pragma comment( lib, "ws2_32.lib" )
#pragma comment( lib, "strmiids.lib" )
#pragma comment( lib, "ddraw.lib" )
#pragma comment( lib, "dmoguids.lib" )
//#pragma comment( lib, "wsock32.lib" )
#include <stdlib.h>
bool __IS_TEST_SERVER_MODE__=false;