diff --git a/audit/history.jsonl b/audit/history.jsonl index 8ee9a755..b8b16955 100644 --- a/audit/history.jsonl +++ b/audit/history.jsonl @@ -596,3 +596,6 @@ {"date": "2026-09-30T03:27:19+00:00", "unit": "EterLib/GrpVertexShader.cpp", "action": "all functions N_A: CVertexShader has no user outside its own files", "evidence": "grep CVertexShader over ClientVS22/source"} {"date": "2026-09-30T03:27:19+00:00", "unit": "EterLib/GrpD3DXBuffer.cpp", "action": "all functions N_A: CDirect3DXBuffer is used only by the unused CPixelShader/CVertexShader", "evidence": "grep CDirect3DXBuffer over ClientVS22/source"} {"date": "2026-09-30T03:31:03+00:00", "unit": "UserInterface/PythonExceptionSender.cpp", "action": "PORTED: verbatim copy + ScriptLib/StdAfx.cpp SetExceptionSender; PythonBoot installs the sender as 40250 Main does", "evidence": "iconv copy of ClientVS22/source/UserInterface/PythonExceptionSender.{h,cpp} and ScriptLib/StdAfx.cpp; ctest 19/19"} +{"date": "2026-09-30T03:32:49+00:00", "unit": "UserInterface/PythonApplicationLogo.cpp", "action": "correction: N_A: CPythonApplication::OnLogo* has no caller: intrologo.py calls app.OnLogoOpen/Update/Render/Close, but those bind appLogo* in PythonApplicationModule.cpp, whose CPythonApplication::OnLogo* calls are commented out", "evidence": "LC_ALL=C grep app.OnLogo over the root .py (intrologo.py); PythonApplicationModule.cpp:1165-1195 (the earlier grep ran without LC_ALL=C and missed the CP949 scripts)"} +{"date": "2026-09-30T03:32:49+00:00", "unit": "UserInterface/MovieMan.cpp", "action": "correction: N_A: reached at boot through prototype.py SetLogoPhase -> intrologo.py app.OnLogoOpen(\"logo1.avi\"/\"logo2.avi\") -> CMovieMan::PlayLogo -> PlayMovie(\\\\logoN.avi), but the 40250 Client ships no .avi, so RenderFileToMMStream fails and nothing is shown; PlayIntro/PlayTutorial have no caller. The port stub matches that outcome", "evidence": "find Client -iname *.avi: none; LC_ALL=C grep PlayIntro/PlayTutorial over ClientVS22/source (the earlier grep ran without LC_ALL=C and missed the CP949 scripts)"} +{"date": "2026-09-30T03:32:49+00:00", "unit": "UserInterface/PythonApplicationWebPage.cpp", "action": "correction: DIVERGENT: reachable: game.py __InGameShop_Show -> interfacemodule.OpenWebWindow -> uiweb.py app.ShowWebPage when constInfo.IN_GAME_SHOP_ENABLE (localeinfo sets it per locale), and uishop.MallPageDialog; the port has no embedded browser, so ShowWebPage/MoveWebPage/HideWebPage are stubs in platform/UserInterface/PythonApplication.cpp", "evidence": "LC_ALL=C grep ShowWebPage/uiweb/IN_GAME_SHOP_ENABLE over the root .py (the earlier grep ran without LC_ALL=C and missed the CP949 scripts)"} diff --git a/audit/port-map/UserInterface/MovieMan.cpp.json b/audit/port-map/UserInterface/MovieMan.cpp.json index 7e9667b4..b192ef52 100644 --- a/audit/port-map/UserInterface/MovieMan.cpp.json +++ b/audit/port-map/UserInterface/MovieMan.cpp.json @@ -6,63 +6,63 @@ "functions": { "CMovieMan::ClearToBlack": { "status": "N_A", - "note": "reached only from app.LogoOpen (CMovieMan::PlayLogo), which no root script calls" + "note": "reached at boot through prototype.py SetLogoPhase -> intrologo.py app.OnLogoOpen(\"logo1.avi\"/\"logo2.avi\") -> CMovieMan::PlayLogo -> PlayMovie(\\\\logoN.avi), but the 40250 Client ships no .avi, so RenderFileToMMStream fails and nothing is shown; PlayIntro/PlayTutorial have no caller. The port stub matches that outcome" }, "CMovieMan::FillRect": { "status": "N_A", - "note": "reached only from app.LogoOpen (CMovieMan::PlayLogo), which no root script calls" + "note": "reached at boot through prototype.py SetLogoPhase -> intrologo.py app.OnLogoOpen(\"logo1.avi\"/\"logo2.avi\") -> CMovieMan::PlayLogo -> PlayMovie(\\\\logoN.avi), but the 40250 Client ships no .avi, so RenderFileToMMStream fails and nothing is shown; PlayIntro/PlayTutorial have no caller. The port stub matches that outcome" }, "CMovieMan::GDIFillRect": { "status": "N_A", - "note": "reached only from app.LogoOpen (CMovieMan::PlayLogo), which no root script calls" + "note": "reached at boot through prototype.py SetLogoPhase -> intrologo.py app.OnLogoOpen(\"logo1.avi\"/\"logo2.avi\") -> CMovieMan::PlayLogo -> PlayMovie(\\\\logoN.avi), but the 40250 Client ships no .avi, so RenderFileToMMStream fails and nothing is shown; PlayIntro/PlayTutorial have no caller. The port stub matches that outcome" }, "CMovieMan::GDIBlt": { "status": "N_A", - "note": "reached only from app.LogoOpen (CMovieMan::PlayLogo), which no root script calls" + "note": "reached at boot through prototype.py SetLogoPhase -> intrologo.py app.OnLogoOpen(\"logo1.avi\"/\"logo2.avi\") -> CMovieMan::PlayLogo -> PlayMovie(\\\\logoN.avi), but the 40250 Client ships no .avi, so RenderFileToMMStream fails and nothing is shown; PlayIntro/PlayTutorial have no caller. The port stub matches that outcome" }, "CMovieMan::PlayLogo": { "status": "N_A", - "note": "reached only from app.LogoOpen (CMovieMan::PlayLogo), which no root script calls" + "note": "reached at boot through prototype.py SetLogoPhase -> intrologo.py app.OnLogoOpen(\"logo1.avi\"/\"logo2.avi\") -> CMovieMan::PlayLogo -> PlayMovie(\\\\logoN.avi), but the 40250 Client ships no .avi, so RenderFileToMMStream fails and nothing is shown; PlayIntro/PlayTutorial have no caller. The port stub matches that outcome" }, "CMovieMan::PlayIntro": { "status": "N_A", - "note": "reached only from app.LogoOpen (CMovieMan::PlayLogo), which no root script calls" + "note": "reached at boot through prototype.py SetLogoPhase -> intrologo.py app.OnLogoOpen(\"logo1.avi\"/\"logo2.avi\") -> CMovieMan::PlayLogo -> PlayMovie(\\\\logoN.avi), but the 40250 Client ships no .avi, so RenderFileToMMStream fails and nothing is shown; PlayIntro/PlayTutorial have no caller. The port stub matches that outcome" }, "CMovieMan::PlayTutorial": { "status": "N_A", - "note": "reached only from app.LogoOpen (CMovieMan::PlayLogo), which no root script calls" + "note": "reached at boot through prototype.py SetLogoPhase -> intrologo.py app.OnLogoOpen(\"logo1.avi\"/\"logo2.avi\") -> CMovieMan::PlayLogo -> PlayMovie(\\\\logoN.avi), but the 40250 Client ships no .avi, so RenderFileToMMStream fails and nothing is shown; PlayIntro/PlayTutorial have no caller. The port stub matches that outcome" }, "CMovieMan::PlayMovie": { "status": "N_A", - "note": "reached only from app.LogoOpen (CMovieMan::PlayLogo), which no root script calls" + "note": "reached at boot through prototype.py SetLogoPhase -> intrologo.py app.OnLogoOpen(\"logo1.avi\"/\"logo2.avi\") -> CMovieMan::PlayLogo -> PlayMovie(\\\\logoN.avi), but the 40250 Client ships no .avi, so RenderFileToMMStream fails and nothing is shown; PlayIntro/PlayTutorial have no caller. The port stub matches that outcome" }, "CMovieMan::GetWindowRect": { "status": "N_A", - "note": "reached only from app.LogoOpen (CMovieMan::PlayLogo), which no root script calls" + "note": "reached at boot through prototype.py SetLogoPhase -> intrologo.py app.OnLogoOpen(\"logo1.avi\"/\"logo2.avi\") -> CMovieMan::PlayLogo -> PlayMovie(\\\\logoN.avi), but the 40250 Client ships no .avi, so RenderFileToMMStream fails and nothing is shown; PlayIntro/PlayTutorial have no caller. The port stub matches that outcome" }, "CMovieMan::CalcMovieRect": { "status": "N_A", - "note": "reached only from app.LogoOpen (CMovieMan::PlayLogo), which no root script calls" + "note": "reached at boot through prototype.py SetLogoPhase -> intrologo.py app.OnLogoOpen(\"logo1.avi\"/\"logo2.avi\") -> CMovieMan::PlayLogo -> PlayMovie(\\\\logoN.avi), but the 40250 Client ships no .avi, so RenderFileToMMStream fails and nothing is shown; PlayIntro/PlayTutorial have no caller. The port stub matches that outcome" }, "CMovieMan::CalcBackgroundRect": { "status": "N_A", - "note": "reached only from app.LogoOpen (CMovieMan::PlayLogo), which no root script calls" + "note": "reached at boot through prototype.py SetLogoPhase -> intrologo.py app.OnLogoOpen(\"logo1.avi\"/\"logo2.avi\") -> CMovieMan::PlayLogo -> PlayMovie(\\\\logoN.avi), but the 40250 Client ships no .avi, so RenderFileToMMStream fails and nothing is shown; PlayIntro/PlayTutorial have no caller. The port stub matches that outcome" }, "CMovieMan::RenderStreamToSurface": { "status": "N_A", - "note": "reached only from app.LogoOpen (CMovieMan::PlayLogo), which no root script calls" + "note": "reached at boot through prototype.py SetLogoPhase -> intrologo.py app.OnLogoOpen(\"logo1.avi\"/\"logo2.avi\") -> CMovieMan::PlayLogo -> PlayMovie(\\\\logoN.avi), but the 40250 Client ships no .avi, so RenderFileToMMStream fails and nothing is shown; PlayIntro/PlayTutorial have no caller. The port stub matches that outcome" }, "CMovieMan::RenderFileToMMStream": { "status": "N_A", - "note": "reached only from app.LogoOpen (CMovieMan::PlayLogo), which no root script calls" + "note": "reached at boot through prototype.py SetLogoPhase -> intrologo.py app.OnLogoOpen(\"logo1.avi\"/\"logo2.avi\") -> CMovieMan::PlayLogo -> PlayMovie(\\\\logoN.avi), but the 40250 Client ships no .avi, so RenderFileToMMStream fails and nothing is shown; PlayIntro/PlayTutorial have no caller. The port stub matches that outcome" }, "CMovieMan::RenderPostEffectFadeOut": { "status": "N_A", - "note": "reached only from app.LogoOpen (CMovieMan::PlayLogo), which no root script calls" + "note": "reached at boot through prototype.py SetLogoPhase -> intrologo.py app.OnLogoOpen(\"logo1.avi\"/\"logo2.avi\") -> CMovieMan::PlayLogo -> PlayMovie(\\\\logoN.avi), but the 40250 Client ships no .avi, so RenderFileToMMStream fails and nothing is shown; PlayIntro/PlayTutorial have no caller. The port stub matches that outcome" }, "CMovieMan::BuildFilterGraphManually": { "status": "N_A", - "note": "reached only from app.LogoOpen (CMovieMan::PlayLogo), which no root script calls" + "note": "reached at boot through prototype.py SetLogoPhase -> intrologo.py app.OnLogoOpen(\"logo1.avi\"/\"logo2.avi\") -> CMovieMan::PlayLogo -> PlayMovie(\\\\logoN.avi), but the 40250 Client ships no .avi, so RenderFileToMMStream fails and nothing is shown; PlayIntro/PlayTutorial have no caller. The port stub matches that outcome" } } } diff --git a/audit/port-map/UserInterface/PythonApplicationLogo.cpp.json b/audit/port-map/UserInterface/PythonApplicationLogo.cpp.json index d117e147..3f10ca63 100644 --- a/audit/port-map/UserInterface/PythonApplicationLogo.cpp.json +++ b/audit/port-map/UserInterface/PythonApplicationLogo.cpp.json @@ -6,19 +6,19 @@ "functions": { "CPythonApplication::OnLogoOpen": { "status": "N_A", - "note": "CPythonApplication::OnLogo* has no caller: appLogoOpen/appLogoUpdate have the calls commented out" + "note": "CPythonApplication::OnLogo* has no caller: intrologo.py calls app.OnLogoOpen/Update/Render/Close, but those bind appLogo* in PythonApplicationModule.cpp, whose CPythonApplication::OnLogo* calls are commented out" }, "CPythonApplication::OnLogoUpdate": { "status": "N_A", - "note": "CPythonApplication::OnLogo* has no caller: appLogoOpen/appLogoUpdate have the calls commented out" + "note": "CPythonApplication::OnLogo* has no caller: intrologo.py calls app.OnLogoOpen/Update/Render/Close, but those bind appLogo* in PythonApplicationModule.cpp, whose CPythonApplication::OnLogo* calls are commented out" }, "CPythonApplication::OnLogoRender": { "status": "N_A", - "note": "CPythonApplication::OnLogo* has no caller: appLogoOpen/appLogoUpdate have the calls commented out" + "note": "CPythonApplication::OnLogo* has no caller: intrologo.py calls app.OnLogoOpen/Update/Render/Close, but those bind appLogo* in PythonApplicationModule.cpp, whose CPythonApplication::OnLogo* calls are commented out" }, "CPythonApplication::OnLogoClose": { "status": "N_A", - "note": "CPythonApplication::OnLogo* has no caller: appLogoOpen/appLogoUpdate have the calls commented out" + "note": "CPythonApplication::OnLogo* has no caller: intrologo.py calls app.OnLogoOpen/Update/Render/Close, but those bind appLogo* in PythonApplicationModule.cpp, whose CPythonApplication::OnLogo* calls are commented out" } } } diff --git a/audit/port-map/UserInterface/PythonApplicationWebPage.cpp.json b/audit/port-map/UserInterface/PythonApplicationWebPage.cpp.json index 3ae8dcf3..0641ddf1 100644 --- a/audit/port-map/UserInterface/PythonApplicationWebPage.cpp.json +++ b/audit/port-map/UserInterface/PythonApplicationWebPage.cpp.json @@ -5,20 +5,20 @@ "contracts": [], "functions": { "CPythonApplication::IsWebPageMode": { - "status": "N_A", - "note": "reached only from app.ShowWebPage/MoveWebPage/HideWebPage, which only uiweb.py calls, and no root script imports uiweb" + "status": "DIVERGENT", + "note": "reachable: game.py __InGameShop_Show -> interfacemodule.OpenWebWindow -> uiweb.py app.ShowWebPage when constInfo.IN_GAME_SHOP_ENABLE (localeinfo sets it per locale), and uishop.MallPageDialog; the port has no embedded browser, so ShowWebPage/MoveWebPage/HideWebPage are stubs in platform/UserInterface/PythonApplication.cpp" }, "CPythonApplication::ShowWebPage": { - "status": "N_A", - "note": "reached only from app.ShowWebPage/MoveWebPage/HideWebPage, which only uiweb.py calls, and no root script imports uiweb" + "status": "DIVERGENT", + "note": "reachable: game.py __InGameShop_Show -> interfacemodule.OpenWebWindow -> uiweb.py app.ShowWebPage when constInfo.IN_GAME_SHOP_ENABLE (localeinfo sets it per locale), and uishop.MallPageDialog; the port has no embedded browser, so ShowWebPage/MoveWebPage/HideWebPage are stubs in platform/UserInterface/PythonApplication.cpp" }, "CPythonApplication::MoveWebPage": { - "status": "N_A", - "note": "reached only from app.ShowWebPage/MoveWebPage/HideWebPage, which only uiweb.py calls, and no root script imports uiweb" + "status": "DIVERGENT", + "note": "reachable: game.py __InGameShop_Show -> interfacemodule.OpenWebWindow -> uiweb.py app.ShowWebPage when constInfo.IN_GAME_SHOP_ENABLE (localeinfo sets it per locale), and uishop.MallPageDialog; the port has no embedded browser, so ShowWebPage/MoveWebPage/HideWebPage are stubs in platform/UserInterface/PythonApplication.cpp" }, "CPythonApplication::HideWebPage": { - "status": "N_A", - "note": "reached only from app.ShowWebPage/MoveWebPage/HideWebPage, which only uiweb.py calls, and no root script imports uiweb" + "status": "DIVERGENT", + "note": "reachable: game.py __InGameShop_Show -> interfacemodule.OpenWebWindow -> uiweb.py app.ShowWebPage when constInfo.IN_GAME_SHOP_ENABLE (localeinfo sets it per locale), and uishop.MallPageDialog; the port has no embedded browser, so ShowWebPage/MoveWebPage/HideWebPage are stubs in platform/UserInterface/PythonApplication.cpp" } } }