2V2-e.1: 3D draw-command channel — recording D3D8 device, StateManager, GrpBase, camera

EterLib/StateManager.cpp and GrpBase.cpp ported verbatim. CGraphicDevice::Create builds a platform
IDirect3DDevice8 that keeps the device state and records every Draw* call as a Render3DDraw
(vertices decoded by FVF, strips/fans expanded, textures, world/view/proj, blend/depth/light state).
The 40250 camera (__UpdateCamera, SetCenterPosition, ...) and the Process order
(__UpdateCamera -> OnCameraUpdate -> OnUIUpdate -> Begin/SetInterfaceRenderState/OnUIRender/End)
are in place; CScreen Begin/End, CPythonGraphic render states and CCullingManager::Process matrix
updates are verbatim. port.login_flow asserts a textured, lit character draw under the RH
perspective with every vertex on screen; offline and live pass.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
shenlei
2026-09-23 20:15:54 +09:00
co-authored by Claude Opus 5.5
parent 668f48d6ec
commit 5bfa13c5cc
27 changed files with 3616 additions and 777 deletions
+296
View File
@@ -0,0 +1,296 @@
{
"reference": "EterLib/GrpBase.cpp",
"reference_sha256": "c0e9ca5417117c5ac4b03436a1e64c9318265c203872b8fd949452cea8d0afa2",
"priority": "P4",
"contracts": [],
"functions": {
"PixelPositionToD3DXVECTOR3": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/GrpBase.cpp:PixelPositionToD3DXVECTOR3"
]
},
"D3DXVECTOR3ToPixelPosition": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/GrpBase.cpp:D3DXVECTOR3ToPixelPosition"
]
},
"CGraphicBase::IsLowTextureMemory": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/GrpBase.cpp:CGraphicBase::IsLowTextureMemory"
]
},
"CGraphicBase::IsHighTextureMemory": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/GrpBase.cpp:CGraphicBase::IsHighTextureMemory"
]
},
"CGraphicBase::IsFastTNL": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/GrpBase.cpp:CGraphicBase::IsFastTNL"
]
},
"CGraphicBase::IsTLVertexClipping": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/GrpBase.cpp:CGraphicBase::IsTLVertexClipping"
]
},
"CGraphicBase::GetBackBufferSize": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/GrpBase.cpp:CGraphicBase::GetBackBufferSize"
]
},
"CGraphicBase::SetDefaultIndexBuffer": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/GrpBase.cpp:CGraphicBase::SetDefaultIndexBuffer"
]
},
"CGraphicBase::SetPDTStream": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/GrpBase.cpp:CGraphicBase::SetPDTStream"
]
},
"CGraphicBase::GetAvailableTextureMemory": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/GrpBase.cpp:CGraphicBase::GetAvailableTextureMemory"
]
},
"CGraphicBase::GetViewMatrix": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/GrpBase.cpp:CGraphicBase::GetViewMatrix"
]
},
"CGraphicBase::GetIdentityMatrix": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/GrpBase.cpp:CGraphicBase::GetIdentityMatrix"
]
},
"CGraphicBase::SetEyeCamera": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/GrpBase.cpp:CGraphicBase::SetEyeCamera"
]
},
"CGraphicBase::SetSimpleCamera": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/GrpBase.cpp:CGraphicBase::SetSimpleCamera"
]
},
"CGraphicBase::SetAroundCamera": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/GrpBase.cpp:CGraphicBase::SetAroundCamera"
]
},
"CGraphicBase::SetPositionCamera": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/GrpBase.cpp:CGraphicBase::SetPositionCamera"
]
},
"CGraphicBase::SetOrtho2D": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/GrpBase.cpp:CGraphicBase::SetOrtho2D"
]
},
"CGraphicBase::SetOrtho3D": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/GrpBase.cpp:CGraphicBase::SetOrtho3D"
]
},
"CGraphicBase::SetPerspective": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/GrpBase.cpp:CGraphicBase::SetPerspective"
]
},
"CGraphicBase::UpdateProjMatrix": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/GrpBase.cpp:CGraphicBase::UpdateProjMatrix"
]
},
"CGraphicBase::UpdateViewMatrix": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/GrpBase.cpp:CGraphicBase::UpdateViewMatrix"
]
},
"CGraphicBase::UpdatePipeLineMatrix": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/GrpBase.cpp:CGraphicBase::UpdatePipeLineMatrix"
]
},
"CGraphicBase::SetViewport": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/GrpBase.cpp:CGraphicBase::SetViewport"
]
},
"CGraphicBase::GetTargetPosition": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/GrpBase.cpp:CGraphicBase::GetTargetPosition"
]
},
"CGraphicBase::GetCameraPosition": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/GrpBase.cpp:CGraphicBase::GetCameraPosition"
]
},
"CGraphicBase::GetMatrix": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/GrpBase.cpp:CGraphicBase::GetMatrix"
]
},
"CGraphicBase::GetMatrixPointer": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/GrpBase.cpp:CGraphicBase::GetMatrixPointer"
]
},
"CGraphicBase::GetSphereMatrix": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/GrpBase.cpp:CGraphicBase::GetSphereMatrix"
]
},
"CGraphicBase::GetFOV": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/GrpBase.cpp:CGraphicBase::GetFOV"
]
},
"CGraphicBase::PushMatrix": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/GrpBase.cpp:CGraphicBase::PushMatrix"
]
},
"CGraphicBase::Scale": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/GrpBase.cpp:CGraphicBase::Scale"
]
},
"CGraphicBase::Rotate": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/GrpBase.cpp:CGraphicBase::Rotate"
]
},
"CGraphicBase::RotateLocal": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/GrpBase.cpp:CGraphicBase::RotateLocal"
]
},
"CGraphicBase::MultMatrix": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/GrpBase.cpp:CGraphicBase::MultMatrix"
]
},
"CGraphicBase::MultMatrixLocal": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/GrpBase.cpp:CGraphicBase::MultMatrixLocal"
]
},
"CGraphicBase::RotateYawPitchRollLocal": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/GrpBase.cpp:CGraphicBase::RotateYawPitchRollLocal"
]
},
"CGraphicBase::Translate": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/GrpBase.cpp:CGraphicBase::Translate"
]
},
"CGraphicBase::LoadMatrix": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/GrpBase.cpp:CGraphicBase::LoadMatrix"
]
},
"CGraphicBase::PopMatrix": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/GrpBase.cpp:CGraphicBase::PopMatrix"
]
},
"CGraphicBase::GetColor": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/GrpBase.cpp:CGraphicBase::GetColor"
]
},
"CGraphicBase::InitScreenEffect": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/GrpBase.cpp:CGraphicBase::InitScreenEffect"
]
},
"CGraphicBase::SetScreenEffectWaving": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/GrpBase.cpp:CGraphicBase::SetScreenEffectWaving"
]
},
"CGraphicBase::SetScreenEffectFlashing": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/GrpBase.cpp:CGraphicBase::SetScreenEffectFlashing"
]
},
"CGraphicBase::GetFaceCount": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/GrpBase.cpp:CGraphicBase::GetFaceCount"
]
},
"CGraphicBase::ResetFaceCount": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/GrpBase.cpp:CGraphicBase::ResetFaceCount"
]
},
"CGraphicBase::GetLastResult": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/GrpBase.cpp:CGraphicBase::GetLastResult"
]
},
"CGraphicBase::CGraphicBase": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/GrpBase.cpp:CGraphicBase::CGraphicBase"
]
},
"CGraphicBase::~CGraphicBase": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/GrpBase.cpp:CGraphicBase::~CGraphicBase"
]
}
}
}
@@ -0,0 +1,332 @@
{
"reference": "EterLib/StateManager.cpp",
"reference_sha256": "97c47e6dc6c3c4d9f4a867dfe41f4ea0586d0db74d91e55c0cf03f28092dd00d",
"priority": "P4",
"contracts": [],
"functions": {
"CStateManager::SetLight": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::SetLight"
]
},
"CStateManager::GetLight": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::GetLight"
]
},
"CStateManager::BeginScene": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::BeginScene"
]
},
"CStateManager::EndScene": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::EndScene"
]
},
"CStateManager::CStateManager": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::CStateManager"
]
},
"CStateManager::~CStateManager": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::~CStateManager"
]
},
"CStateManager::SetDevice": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::SetDevice"
]
},
"CStateManager::SetBestFiltering": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::SetBestFiltering"
]
},
"CStateManager::Restore": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::Restore"
]
},
"CStateManager::SetDefaultState": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::SetDefaultState"
]
},
"CStateManager::SaveMaterial": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::SaveMaterial"
]
},
"CStateManager::RestoreMaterial": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::RestoreMaterial"
]
},
"CStateManager::SetMaterial": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::SetMaterial"
]
},
"CStateManager::GetMaterial": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::GetMaterial"
]
},
"CStateManager::GetRenderState": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::GetRenderState"
]
},
"CStateManager::SaveRenderState": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::SaveRenderState"
]
},
"CStateManager::RestoreRenderState": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::RestoreRenderState"
]
},
"CStateManager::SetRenderState": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::SetRenderState"
]
},
"CStateManager::SaveTexture": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::SaveTexture"
]
},
"CStateManager::RestoreTexture": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::RestoreTexture"
]
},
"CStateManager::SetTexture": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::SetTexture"
]
},
"CStateManager::GetTexture": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::GetTexture"
]
},
"CStateManager::SaveTextureStageState": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::SaveTextureStageState"
]
},
"CStateManager::RestoreTextureStageState": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::RestoreTextureStageState"
]
},
"CStateManager::SetTextureStageState": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::SetTextureStageState"
]
},
"CStateManager::GetTextureStageState": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::GetTextureStageState"
]
},
"CStateManager::SaveVertexShader": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::SaveVertexShader"
]
},
"CStateManager::RestoreVertexShader": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::RestoreVertexShader"
]
},
"CStateManager::SetVertexShader": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::SetVertexShader"
]
},
"CStateManager::GetVertexShader": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::GetVertexShader"
]
},
"CStateManager::SavePixelShader": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::SavePixelShader"
]
},
"CStateManager::RestorePixelShader": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::RestorePixelShader"
]
},
"CStateManager::SetPixelShader": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::SetPixelShader"
]
},
"CStateManager::GetPixelShader": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::GetPixelShader"
]
},
"CStateManager::SaveTransform": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::SaveTransform"
]
},
"CStateManager::RestoreTransform": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::RestoreTransform"
]
},
"CStateManager::SetTransform": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::SetTransform"
]
},
"CStateManager::GetTransform": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::GetTransform"
]
},
"CStateManager::SaveVertexShaderConstant": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::SaveVertexShaderConstant"
]
},
"CStateManager::RestoreVertexShaderConstant": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::RestoreVertexShaderConstant"
]
},
"CStateManager::SetVertexShaderConstant": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::SetVertexShaderConstant"
]
},
"CStateManager::SavePixelShaderConstant": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::SavePixelShaderConstant"
]
},
"CStateManager::RestorePixelShaderConstant": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::RestorePixelShaderConstant"
]
},
"CStateManager::SetPixelShaderConstant": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::SetPixelShaderConstant"
]
},
"CStateManager::SaveStreamSource": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::SaveStreamSource"
]
},
"CStateManager::RestoreStreamSource": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::RestoreStreamSource"
]
},
"CStateManager::SetStreamSource": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::SetStreamSource"
]
},
"CStateManager::SaveIndices": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::SaveIndices"
]
},
"CStateManager::RestoreIndices": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::RestoreIndices"
]
},
"CStateManager::SetIndices": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::SetIndices"
]
},
"CStateManager::DrawPrimitive": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::DrawPrimitive"
]
},
"CStateManager::DrawPrimitiveUP": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::DrawPrimitiveUP"
]
},
"CStateManager::DrawIndexedPrimitive": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::DrawIndexedPrimitive"
]
},
"CStateManager::DrawIndexedPrimitiveUP": {
"status": "PORTED",
"impl": [
"extension/src/port/EterLib/StateManager.cpp:CStateManager::DrawIndexedPrimitiveUP"
]
}
}
}