port 2D step 2: 40250 item_proto/mob_proto through CLZO and pack://locale/<lang>/

proto.cpp reads the 40250 MIPX/MMPT tables with the ported CLZO/TEA (156-byte
TItemTable, 255-byte SMobTable), replacing the m2dev XChaCha20 236/335 reader.
Names follow CItemData::GetName / GetMonsterName (szLocaleName, cp1252).
GDScript callers load AssetRoot.locale_file() = pack://locale/en/<name>, which
makes the EterPack chain runtime-reachable; port-map entries for the functions
a coverage run hit move to PORTED/ADAPTED.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
shenlei
2026-09-23 01:34:08 +09:00
co-authored by Claude Opus 5
parent 5a26e93f07
commit 232d0461be
28 changed files with 1367 additions and 332 deletions
+28
View File
@@ -0,0 +1,28 @@
{
"reference": "EterBase/CRC32.cpp",
"reference_sha256": "80bbbc71a273097830279d96c7d7ac28df6d043675711eb1b6f28a9801a83016",
"priority": "P4",
"contracts": [],
"functions": {
"GetCRC32": {
"impl": [
"extension/src/platform/EterBase/CRC32.cpp:GetCRC32"
],
"status": "ADAPTED",
"note": "platform CRC32 table implementation; same polynomial and GetCRC32 values (checked against every stored filename_crc)",
"test": "extension/tests/port_eterpack_test.cpp (103 packs, 54891 entries, first-registered wins, 4 SECURITY rejects)"
},
"GetCaseCRC32": {
"status": "TODO"
},
"GetHFILECRC32": {
"status": "TODO"
},
"GetFileCRC32": {
"status": "TODO"
},
"GetFileSize": {
"status": "TODO"
}
}
}
+72
View File
@@ -0,0 +1,72 @@
{
"reference": "EterBase/FileBase.cpp",
"reference_sha256": "262fcad3ae6ec2ee5c988c1beea0cfa2cc2adffc5e544fe36885bef1dc6dc71d",
"priority": "P4",
"contracts": [],
"functions": {
"CFileBase::CFileBase": {
"impl": [
"extension/src/platform/EterBase/FileBase.cpp:CFileBase::CFileBase"
],
"status": "ADAPTED",
"note": "platform CFileBase over std::fstream; open falls back to a case-insensitive path match (NTFS spelling)",
"test": "extension/tests/port_eterpack_test.cpp (103 packs, 54891 entries, first-registered wins, 4 SECURITY rejects)"
},
"CFileBase::~CFileBase": {
"impl": [
"extension/src/platform/EterBase/FileBase.cpp:CFileBase::~CFileBase"
],
"status": "ADAPTED",
"note": "platform CFileBase over std::fstream; open falls back to a case-insensitive path match (NTFS spelling)",
"test": "extension/tests/port_eterpack_test.cpp (103 packs, 54891 entries, first-registered wins, 4 SECURITY rejects)"
},
"CFileBase::GetFileName": {
"status": "TODO"
},
"CFileBase::Destroy": {
"impl": [
"extension/src/platform/EterBase/FileBase.cpp:CFileBase::Destroy"
],
"status": "ADAPTED",
"note": "platform CFileBase over std::fstream; open falls back to a case-insensitive path match (NTFS spelling)",
"test": "extension/tests/port_eterpack_test.cpp (103 packs, 54891 entries, first-registered wins, 4 SECURITY rejects)"
},
"CFileBase::Close": {
"impl": [
"extension/src/platform/EterBase/FileBase.cpp:CFileBase::Close"
],
"status": "ADAPTED",
"note": "platform CFileBase over std::fstream; open falls back to a case-insensitive path match (NTFS spelling)",
"test": "extension/tests/port_eterpack_test.cpp (103 packs, 54891 entries, first-registered wins, 4 SECURITY rejects)"
},
"CFileBase::Create": {
"impl": [
"extension/src/platform/EterBase/FileBase.cpp:CFileBase::Create"
],
"status": "ADAPTED",
"note": "platform CFileBase over std::fstream; open falls back to a case-insensitive path match (NTFS spelling)",
"test": "extension/tests/port_eterpack_test.cpp (103 packs, 54891 entries, first-registered wins, 4 SECURITY rejects)"
},
"CFileBase::Size": {
"status": "TODO"
},
"CFileBase::SeekCur": {
"status": "TODO"
},
"CFileBase::Seek": {
"status": "TODO"
},
"CFileBase::GetPosition": {
"status": "TODO"
},
"CFileBase::Write": {
"status": "TODO"
},
"CFileBase::Read": {
"status": "TODO"
},
"CFileBase::IsNull": {
"status": "TODO"
}
}
}
+102
View File
@@ -0,0 +1,102 @@
{
"reference": "EterBase/FileLoader.cpp",
"reference_sha256": "aaf832b188b7fff6350c7e3a41147fa4abfa2873ce160022c433dcac848c6875",
"priority": "P4",
"contracts": [],
"functions": {
"CMemoryTextFileLoader::CMemoryTextFileLoader": {
"impl": [
"extension/src/platform/EterBase/FileLoader.cpp:CMemoryTextFileLoader::CMemoryTextFileLoader"
],
"status": "ADAPTED",
"note": "40250 file verbatim, one change: the high-bit test casts to signed char (char is unsigned on arm64)",
"test": "extension/tests/port_eterpack_test.cpp (103 packs, 54891 entries, first-registered wins, 4 SECURITY rejects)"
},
"CMemoryTextFileLoader::~CMemoryTextFileLoader": {
"impl": [
"extension/src/platform/EterBase/FileLoader.cpp:CMemoryTextFileLoader::~CMemoryTextFileLoader"
],
"status": "ADAPTED",
"note": "40250 file verbatim, one change: the high-bit test casts to signed char (char is unsigned on arm64)",
"test": "extension/tests/port_eterpack_test.cpp (103 packs, 54891 entries, first-registered wins, 4 SECURITY rejects)"
},
"CMemoryTextFileLoader::SplitLineByTab": {
"status": "TODO"
},
"CMemoryTextFileLoader::SplitLine2": {
"status": "TODO"
},
"CMemoryTextFileLoader::SplitLine": {
"status": "TODO"
},
"CMemoryTextFileLoader::GetLineCount": {
"impl": [
"extension/src/platform/EterBase/FileLoader.cpp:CMemoryTextFileLoader::GetLineCount"
],
"status": "ADAPTED",
"note": "40250 file verbatim, one change: the high-bit test casts to signed char (char is unsigned on arm64)",
"test": "extension/tests/port_eterpack_test.cpp (103 packs, 54891 entries, first-registered wins, 4 SECURITY rejects)"
},
"CMemoryTextFileLoader::CheckLineIndex": {
"status": "TODO"
},
"CMemoryTextFileLoader::GetLineString": {
"impl": [
"extension/src/platform/EterBase/FileLoader.cpp:CMemoryTextFileLoader::GetLineString"
],
"status": "ADAPTED",
"note": "40250 file verbatim, one change: the high-bit test casts to signed char (char is unsigned on arm64)",
"test": "extension/tests/port_eterpack_test.cpp (103 packs, 54891 entries, first-registered wins, 4 SECURITY rejects)"
},
"CMemoryTextFileLoader::Bind": {
"impl": [
"extension/src/platform/EterBase/FileLoader.cpp:CMemoryTextFileLoader::Bind"
],
"status": "ADAPTED",
"note": "40250 file verbatim, one change: the high-bit test casts to signed char (char is unsigned on arm64)",
"test": "extension/tests/port_eterpack_test.cpp (103 packs, 54891 entries, first-registered wins, 4 SECURITY rejects)"
},
"CMemoryFileLoader::GetSize": {
"status": "TODO"
},
"CMemoryFileLoader::GetPosition": {
"status": "TODO"
},
"CMemoryFileLoader::IsReadableSize": {
"status": "TODO"
},
"CMemoryFileLoader::Read": {
"status": "TODO"
},
"CMemoryFileLoader::GetCurrentPositionPointer": {
"status": "TODO"
},
"CMemoryFileLoader::CMemoryFileLoader": {
"status": "TODO"
},
"CMemoryFileLoader::~CMemoryFileLoader": {
"status": "TODO"
},
"CDiskFileLoader::GetSize": {
"status": "TODO"
},
"CDiskFileLoader::Read": {
"status": "TODO"
},
"CDiskFileLoader::Open": {
"status": "TODO"
},
"CDiskFileLoader::Close": {
"status": "TODO"
},
"CDiskFileLoader::Initialize": {
"status": "TODO"
},
"CDiskFileLoader::CDiskFileLoader": {
"status": "TODO"
},
"CDiskFileLoader::~CDiskFileLoader": {
"status": "TODO"
}
}
}
+104
View File
@@ -0,0 +1,104 @@
{
"reference": "EterBase/MappedFile.cpp",
"reference_sha256": "82d65b1bb2bdc91038be929e079212af33cf963e5d4722d10256bd1df4341ee9",
"priority": "P4",
"contracts": [],
"functions": {
"CMappedFile::CMappedFile": {
"impl": [
"extension/src/platform/EterBase/MappedFile.cpp:CMappedFile::CMappedFile"
],
"status": "ADAPTED",
"note": "platform CMappedFile: std::ifstream read into an owned buffer instead of CreateFileMapping/MapViewOfFile; same Create/Map/Link/BindLZObject contract",
"test": "extension/tests/port_eterpack_test.cpp (103 packs, 54891 entries, first-registered wins, 4 SECURITY rejects)"
},
"CMappedFile::~CMappedFile": {
"impl": [
"extension/src/platform/EterBase/MappedFile.cpp:CMappedFile::~CMappedFile"
],
"status": "ADAPTED",
"note": "platform CMappedFile: std::ifstream read into an owned buffer instead of CreateFileMapping/MapViewOfFile; same Create/Map/Link/BindLZObject contract",
"test": "extension/tests/port_eterpack_test.cpp (103 packs, 54891 entries, first-registered wins, 4 SECURITY rejects)"
},
"CMappedFile::Create": {
"impl": [
"extension/src/platform/EterBase/MappedFile.cpp:CMappedFile::Create"
],
"status": "ADAPTED",
"note": "platform CMappedFile: std::ifstream read into an owned buffer instead of CreateFileMapping/MapViewOfFile; same Create/Map/Link/BindLZObject contract",
"test": "extension/tests/port_eterpack_test.cpp (103 packs, 54891 entries, first-registered wins, 4 SECURITY rejects)"
},
"CMappedFile::Get": {
"status": "TODO"
},
"CMappedFile::Link": {
"impl": [
"extension/src/platform/EterBase/MappedFile.cpp:CMappedFile::Link"
],
"status": "ADAPTED",
"note": "platform CMappedFile: std::ifstream read into an owned buffer instead of CreateFileMapping/MapViewOfFile; same Create/Map/Link/BindLZObject contract",
"test": "extension/tests/port_eterpack_test.cpp (103 packs, 54891 entries, first-registered wins, 4 SECURITY rejects)"
},
"CMappedFile::BindLZObject": {
"impl": [
"extension/src/platform/EterBase/MappedFile.cpp:CMappedFile::BindLZObject"
],
"status": "ADAPTED",
"note": "platform CMappedFile: std::ifstream read into an owned buffer instead of CreateFileMapping/MapViewOfFile; same Create/Map/Link/BindLZObject contract",
"test": "extension/tests/port_eterpack_test.cpp (103 packs, 54891 entries, first-registered wins, 4 SECURITY rejects)"
},
"CMappedFile::BindLZObjectWithBufferedSize": {
"status": "TODO"
},
"CMappedFile::AppendDataBlock": {
"status": "TODO"
},
"CMappedFile::Destroy": {
"impl": [
"extension/src/platform/EterBase/MappedFile.cpp:CMappedFile::Destroy"
],
"status": "ADAPTED",
"note": "platform CMappedFile: std::ifstream read into an owned buffer instead of CreateFileMapping/MapViewOfFile; same Create/Map/Link/BindLZObject contract",
"test": "extension/tests/port_eterpack_test.cpp (103 packs, 54891 entries, first-registered wins, 4 SECURITY rejects)"
},
"CMappedFile::Seek": {
"status": "TODO"
},
"CMappedFile::Map": {
"impl": [
"extension/src/platform/EterBase/MappedFile.cpp:CMappedFile::Map"
],
"status": "ADAPTED",
"note": "platform CMappedFile: std::ifstream read into an owned buffer instead of CreateFileMapping/MapViewOfFile; same Create/Map/Link/BindLZObject contract",
"test": "extension/tests/port_eterpack_test.cpp (103 packs, 54891 entries, first-registered wins, 4 SECURITY rejects)"
},
"CMappedFile::GetCurrentSeekPoint": {
"status": "TODO"
},
"CMappedFile::Size": {
"impl": [
"extension/src/platform/EterBase/MappedFile.cpp:CMappedFile::Size"
],
"status": "ADAPTED",
"note": "platform CMappedFile: std::ifstream read into an owned buffer instead of CreateFileMapping/MapViewOfFile; same Create/Map/Link/BindLZObject contract",
"test": "extension/tests/port_eterpack_test.cpp (103 packs, 54891 entries, first-registered wins, 4 SECURITY rejects)"
},
"CMappedFile::GetPosition": {
"status": "TODO"
},
"CMappedFile::Read": {
"status": "TODO"
},
"CMappedFile::GetSeekPosition": {
"status": "TODO"
},
"CMappedFile::Unmap": {
"impl": [
"extension/src/platform/EterBase/MappedFile.cpp:CMappedFile::Unmap"
],
"status": "ADAPTED",
"note": "platform CMappedFile: std::ifstream read into an owned buffer instead of CreateFileMapping/MapViewOfFile; same Create/Map/Link/BindLZObject contract",
"test": "extension/tests/port_eterpack_test.cpp (103 packs, 54891 entries, first-registered wins, 4 SECURITY rejects)"
}
}
}
+26
View File
@@ -0,0 +1,26 @@
{
"reference": "EterBase/Stl.cpp",
"reference_sha256": "239c44c77e8dba08e91f8838447ad2f15ab19ac6328650d13da37b9600a249cd",
"priority": "P4",
"contracts": [],
"functions": {
"korean_tolower": {
"impl": [
"extension/src/port/EterBase/Stl.cpp:korean_tolower"
],
"status": "PORTED"
},
"stl_static_string": {
"status": "TODO"
},
"stl_lowers": {
"impl": [
"extension/src/port/EterBase/Stl.cpp:stl_lowers"
],
"status": "PORTED"
},
"split_string": {
"status": "TODO"
}
}
}
+98
View File
@@ -0,0 +1,98 @@
{
"reference": "EterBase/lzo.cpp",
"reference_sha256": "7a236172e9900733e119944ffabf6762a999d4346fde9241e3027836d72c1354",
"priority": "P4",
"contracts": [],
"functions": {
"CLZObject::CLZObject": {
"impl": [
"extension/src/port/EterBase/lzo.cpp:CLZObject::CLZObject"
],
"status": "PORTED"
},
"CLZObject::Initialize": {
"impl": [
"extension/src/port/EterBase/lzo.cpp:CLZObject::Initialize"
],
"status": "PORTED"
},
"CLZObject::Clear": {
"impl": [
"extension/src/port/EterBase/lzo.cpp:CLZObject::Clear"
],
"status": "PORTED"
},
"CLZObject::~CLZObject": {
"impl": [
"extension/src/port/EterBase/lzo.cpp:CLZObject::~CLZObject"
],
"status": "PORTED"
},
"CLZObject::GetSize": {
"impl": [
"extension/src/port/EterBase/lzo.cpp:CLZObject::GetSize"
],
"status": "PORTED"
},
"CLZObject::BeginCompress": {
"status": "TODO"
},
"CLZObject::BeginCompressInBuffer": {
"status": "TODO"
},
"CLZObject::Compress": {
"status": "TODO"
},
"CLZObject::BeginDecompress": {
"impl": [
"extension/src/port/EterBase/lzo.cpp:CLZObject::BeginDecompress"
],
"status": "PORTED"
},
"CLZObject::Decompress": {
"impl": [
"extension/src/port/EterBase/lzo.cpp:CLZObject::Decompress"
],
"status": "PORTED"
},
"CLZObject::Encrypt": {
"status": "TODO"
},
"CLZObject::__Decrypt": {
"impl": [
"extension/src/port/EterBase/lzo.cpp:CLZObject::__Decrypt"
],
"status": "PORTED"
},
"CLZObject::AllocBuffer": {
"status": "TODO"
},
"CLZO::CLZO": {
"impl": [
"extension/src/port/EterBase/lzo.cpp:CLZO::CLZO"
],
"status": "PORTED"
},
"CLZO::~CLZO": {
"impl": [
"extension/src/port/EterBase/lzo.cpp:CLZO::~CLZO"
],
"status": "PORTED"
},
"CLZO::CompressMemory": {
"status": "TODO"
},
"CLZO::CompressEncryptedMemory": {
"status": "TODO"
},
"CLZO::Decompress": {
"impl": [
"extension/src/port/EterBase/lzo.cpp:CLZO::Decompress"
],
"status": "PORTED"
},
"CLZO::GetWorkMemory": {
"status": "TODO"
}
}
}
+26
View File
@@ -0,0 +1,26 @@
{
"reference": "EterBase/tea.cpp",
"reference_sha256": "aeeb57c96a9febd22d11e221462f5f6b18830370847f45e74eec5fb085988007",
"priority": "P4",
"contracts": [],
"functions": {
"tea_code": {
"status": "TODO"
},
"tea_decode": {
"impl": [
"extension/src/port/EterBase/tea.cpp:tea_decode"
],
"status": "PORTED"
},
"tea_encrypt": {
"status": "TODO"
},
"tea_decrypt": {
"impl": [
"extension/src/port/EterBase/tea.cpp:tea_decrypt"
],
"status": "PORTED"
}
}
}