-
Posts
671 -
Joined
-
Last visited
-
Days Won
104 -
Feedback
100%
martysama0134 last won the day on July 8
martysama0134 had the most liked content!
About martysama0134

- Currently Using Personal Messenger
Informations
-
Gender
Not Telling
Recent Profile Visitors
The recent visitors block is disabled and is not being shown to other users.
martysama0134's Achievements
-
fkz39 started following martysama0134
-
Tekka started following martysama0134
-
V60 out! Migrated from Dx9ex to Dx11: visuals pixel-identical to v59 and performance on par; requires a DX11-capable GPU (feature level 11_0, ~2010+), with automatic software fallback (WARP) on Windows 8+ Changed ambience sphere ranges now draw as a wireframe instead of faint dots; D3D11 has no point fill mode Changed removed 16-bit texture fallbacks for ancient pre-DXT graphics adapters Added headless automation switches for scripted runs, screenshots and exports: --map, --target, --cam, --flags, --view, --file, --regen, --atlas, --size, --shot, --shot-frames, --quit Fixed editor not starting when the 800x600 display mode is missing; it now creates a windowed device (e.g. Remote Desktop sessions) Fixed crash on map load when a textureset entry points to a missing or broken texture Fixed crashes and resource leaks on editor exit Fixed object property preview panes presenting without ending the scene Fixed terrain splat/shadow streams, debug meshes and overlays changing GPU state behind the state manager's back Fixed GPU device removal (driver crash or reset) now reported with a message instead of silently rendering nothing
-
Nostro started following martysama0134
-
cwelqqq started following martysama0134
-
taktrzmajmy started following martysama0134
-
Thot started following martysama0134
-
rafalm4790 started following martysama0134
-
krn started following martysama0134
-
V59 out! Added discrete GPU auto-selection on hybrid laptops Added new Python API we.GenerateServerAttr: builds server_attr from attr.atr files on disk without loading the map Added batch tool BatchGenerateServerAttr in terrain_operations.py: generates server_attr for a whole maps directory Fixed mouse picking misalignment: picking projection now matches the render frustum Fixed objects and trees popping in/out at screen edges: frustum culling sphere corrections Fixed device-loss recovery on alt-tab/lock-screen: D3D9Ex device-state codes and PresentEx handling Fixed character shadow when MSAA is enabled Fixed 3D positional audio: swapped L/R channels and volume pumping/pulsing Fixed looping ambience sounds continuing after map switch Fixed crashes: animation zero-step division, SpeedTree buffer creation failure, attaching object with no model Fixed stale model-script/motion paths in Save dialogs; dialogs now open in the loaded resource's folder Fixed x64 pointer truncations (IME, font enumeration, hyperlink, docking, terrain light token) Changed viewport near plane 100 to 50: nearby objects no longer vanish Improved dynamic vertex buffer locking (DISCARD) and non-DXT DDS fallback conversion; sound bytes cached load-once MapForge - 2D Map Editor (with Regen Editor / AreaData Editor / Attr Swap / Map Merging) Free on GitHub Pages
- 421 replies
-
- 14
-
-
-
-
-
kaliptra started following martysama0134
-
delqartier started following martysama0134
-
V58 out! Fixed distant terrain z-fighting by requiring a 24-bit depth buffer Fixed PNT2 vertex stride bug causing broken geometry in multi-mesh dungeon blocks Fixed SetAllWaterHeight skipping terrains outside the 3x3 grid around the camera Fixed file dialogs changing the working directory; added OFN_NOCHANGEDIR to every dialog (including the save-model-script path) Fixed atlas, minimap, export and MapID lookup producing malformed paths or failing silently when a map was loaded by absolute path Improved all file dialogs are now resizable via OFN_ENABLESIZING Changed maps can now be loaded from any directory; internal path buffers upgraded to MAX_PATH Changed process active code page is now UTF-8 via the application manifest
-
EterPack Archiver - PackMakerLite-RS (New 2026)
martysama0134 replied to martysama0134's topic in Tools & Programs
V1.6.0 Fixed korean filenames by converting them to latin 1252 ascii characters and not utf8 junk -
EterPack Archiver - PackMakerLite-RS (New 2026)
martysama0134 replied to martysama0134's topic in Tools & Programs
I'm going to compare it, and solve it. i.e. the property pack can have any folders/files renamed with any name you wish. The launcher walks through each path "blindly" and reads only the content of each .prb .prd .pre .pra. -
capitaorox3318 left Positive feedback for martysama0134
-
This bug happens when a shadow is rendered between two different areas. The calculated point of light is slightly different. v57 out! Added Tree Out checkbox: toggle tree visibility independently from objects; also hides trees from shadow map and minimap (F6) Added Effect Out checkbox: toggle effect rendering independently Added Ambience Out checkbox: toggle ambience rendering and audio; stops already-playing sounds when unchecked Added new Python API functions: we.GetObjectHeightBias, we.SetObjectHeightBias, we.GetObjectRotation, we.SetObjectRotation, we.TrimMemory Renamed all "Output" checkboxes to "Out" for consistency (Char Out, Object Out, Shadow Out, Water Out, Collision Out) Changed API documentation shipped as API_REFERENCE.md instead of WorldEditor_API.txt
-
EterPack Archiver - PackMakerLite-RS (New 2026)
martysama0134 replied to martysama0134's topic in Tools & Programs
PackMakerLite-RS v1.5.0 Added --cat <PACK_NAME> <FILENAME>: extract a single file from an archive to stdout without unpacking to disk Added --deduplicate <WORKSPACE_DIR>: remove duplicate files from archives using Index priority ordering; repacks in memory without decode/re-encode Added --install-skill: register the PackMakerLite AI agent skill for Claude Code and Codex CLI; use --install-skill local for per-project install Added --json output for --pack, --unpack, --migrate, --search, and --check-duplicates; all operations now support --json Changed GUI pack type dropdown now shows compression labels: 0 (Store), 1 (LZO), 2 (LZO+XTEA), 6 (Snappy+XTEA) The skill will let you use the packmakerlite-cli in an efficient agentic way. -
V56 out! Added color-coded attr overlay: block=red, water=blue, banpk=green; overlapping attrs blend additively Added new config option ENABLE_MAP_ATTR_COLORED (default: true): color-coded attr overlay; set to false for legacy white Added we.DrawHeightBrush optional refreshObjectHeight parameter for Python scripts Fixed stale collision visuals persisting after loading a new map Fixed attr overlay not refreshing when moving across cells Fixed crash on high-poly models with 32-bit indices (x64 heap overflow) Fixed minimap.dds missing from Export Map Improved 32-bit index detection using GrannyGetMeshBytesPerIndex
-
This is the change I made in the WEREMIX for supporting >65k vertices models. From: martysama0134 Subject: EterGrnLib: support 32-bit index buffers for high-poly models This patch adds automatic 32-bit index buffer support for models with more than 65535 total vertices. Without it, index values are silently truncated to 16 bits, causing mesh corruption on high-poly .gr2 models. Changes: - Model.h/cpp: Added m_idxFmt member (D3DFMT_INDEX16 or D3DFMT_INDEX32), determined at load time based on total vertex count. LoadIndices() now passes the index size to each mesh. New LoadSkinPNTVertices() method added for GPU skinning vertex extraction (optional, can be ignored if not using GPU skinning). - Mesh.h/cpp: LoadIndices() now takes an idxSize parameter and uses byte-level pointer arithmetic instead of TIndex* to support both 2-byte and 4-byte indices. - GrpIndexBuffer.cpp: Fixed buffer size calculation - was hardcoded to sizeof(WORD)*idxCount even when D3DFMT_INDEX32 was requested, causing heap overflow crashes on high-poly models. Applies to: any codebase using EterGrnLib with Granny2 SDK. Tested on: WorldEditorRemix v56 (DX9Ex, Win32/x64, MfcDebug/MfcRelease) diff --git a/Srcs/Client/EterGrnLib/Mesh.cpp b/Srcs/Client/EterGrnLib/Mesh.cpp index a84eae1..5b75d5a 100644 --- a/Srcs/Client/EterGrnLib/Mesh.cpp +++ b/Srcs/Client/EterGrnLib/Mesh.cpp @@ -12,12 +12,12 @@ granny_data_type_definition GrannyPNT3322VertexType[5] = {GrannyEndMember} }; -void CGrannyMesh::LoadIndices(void * dstBaseIndices) +void CGrannyMesh::LoadIndices(void * dstBaseIndices, int idxSize) { const granny_mesh * pgrnMesh = GetGrannyMeshPointer(); - TIndex * dstIndices = ((TIndex *)dstBaseIndices) + m_idxBasePos; - GrannyCopyMeshIndices(pgrnMesh, sizeof(TIndex), dstIndices); + char * dstIndices = ((char *)dstBaseIndices) + m_idxBasePos * idxSize; + GrannyCopyMeshIndices(pgrnMesh, idxSize, dstIndices); } void CGrannyMesh::LoadPNTVertices(void * dstBaseVertices) diff --git a/Srcs/Client/EterGrnLib/Mesh.h b/Srcs/Client/EterGrnLib/Mesh.h index 323f361..2b97e52 100644 --- a/Srcs/Client/EterGrnLib/Mesh.h +++ b/Srcs/Client/EterGrnLib/Mesh.h @@ -37,7 +37,7 @@ class CGrannyMesh bool IsEmpty() const; bool CreateFromGrannyMeshPointer(granny_skeleton* pgrnSkeleton, granny_mesh* pgrnMesh, int vtxBasePos, int idxBasePos, CGrannyMaterialPalette& rkMtrlPal); - void LoadIndices(void* dstBaseIndices); + void LoadIndices(void* dstBaseIndices, int idxSize); void LoadPNTVertices(void* dstBaseVertices); void NEW_LoadVertices(void* dstBaseVertices); void Destroy(); diff --git a/Srcs/Client/EterGrnLib/Model.cpp b/Srcs/Client/EterGrnLib/Model.cpp index 0ff7892..1808702 100644 --- a/Srcs/Client/EterGrnLib/Model.cpp +++ b/Srcs/Client/EterGrnLib/Model.cpp @@ -124,11 +124,10 @@ bool CGrannyModel::LoadPNTVertices() bool CGrannyModel::LoadIndices() { - //assert(m_idxCount > 0); if (m_idxCount <= 0) return true; - if (!m_idxBuf.Create(m_idxCount, D3DFMT_INDEX16)) + if (!m_idxBuf.Create(m_idxCount, m_idxFmt)) return false; void * indices; @@ -136,10 +135,11 @@ bool CGrannyModel::LoadIndices() if (!m_idxBuf.Lock((void**)&indices)) return false; + int idxSize = (m_idxFmt == D3DFMT_INDEX32) ? 4 : 2; for (int m = 0; m < m_pgrnModel->MeshBindingCount; ++m) { CGrannyMesh& rMesh = m_meshs[m]; - rMesh.LoadIndices(indices); + rMesh.LoadIndices(indices, idxSize); } m_idxBuf.Unlock(); @@ -254,6 +254,7 @@ bool CGrannyModel::LoadMeshs() m_vtxCount = vtxPos; m_idxCount = idxPos; + m_idxFmt = (m_vtxCount > 65535) ? D3DFMT_INDEX32 : D3DFMT_INDEX16; return true; } @@ -390,6 +391,7 @@ void CGrannyModel::Initialize() m_deformVtxCount = 0; m_vtxCount = 0; m_idxCount = 0; + m_idxFmt = D3DFMT_INDEX16; m_canDeformPNVertices = false; diff --git a/Srcs/Client/EterGrnLib/Model.h b/Srcs/Client/EterGrnLib/Model.h index 55e73a2..784081f 100644 --- a/Srcs/Client/EterGrnLib/Model.h +++ b/Srcs/Client/EterGrnLib/Model.h @@ -75,6 +75,7 @@ class CGrannyModel : public CReferenceObject int m_rigidVtxCount; int m_vtxCount; int m_idxCount; + D3DFORMAT m_idxFmt; int m_meshNodeSize; diff --git a/Srcs/Client/EterLib/GrpIndexBuffer.cpp b/Srcs/Client/EterLib/GrpIndexBuffer.cpp index eb897a0..70074e7 100644 --- a/Srcs/Client/EterLib/GrpIndexBuffer.cpp +++ b/Srcs/Client/EterLib/GrpIndexBuffer.cpp @@ -113,7 +113,7 @@ bool CGraphicIndexBuffer::Create(int idxCount, D3DFORMAT d3dFmt) Destroy(); m_iidxCount = idxCount; - m_dwBufferSize = sizeof(WORD) * idxCount; + m_dwBufferSize = ((d3dFmt == D3DFMT_INDEX32) ? sizeof(DWORD) : sizeof(WORD)) * idxCount; m_d3dFmt = d3dFmt; return CreateDeviceObjects(); @ Karbust Enable Diff SyntaxHighlighting
-
v55 out! Fixed height brush accidentally moving objects underground Improved debug collision rendering; color-coded types, solid by default, wireframe when toggled Added GPU/process memory trimming on map close/reload Fixed 32-bit index buffer limit; high-poly models (>65K vertices) no longer silently corrupt Wireframe toggled off Wireframe toggled on
-
EterPack Archiver - PackMakerLite-RS (New 2026)
martysama0134 replied to martysama0134's topic in Tools & Programs
v1.4.0 Fixed a security issue where a specially crafted archive could extract files outside the intended folder. Unpack now blocks this automatically. Added 26 new automated tests covering more pack types, migration, search filtering, archive comparison, and error handling. -
EterPack Archiver - PackMakerLite-RS (New 2026)
martysama0134 replied to martysama0134's topic in Tools & Programs
v1.3.0 Added --force-index-type to select index encoding (EPKD / MCOZ / MCSP) EPKD - plain, unencrypted (useful for debugging) MCOZ - encrypted with LZO (this is the default one, same as before) MCSP - encrypted with Snappy Added --force-data-type alias for --forcetype Added index_type setting to PackMakerLite.json { "index_type": "epkd" } Added "Index encoding" dropdown to GUI config panel --migrate now respects index type setting Faster --migrate, --verify-crc, and --diff -
V54 out! 64bit version available (shipped in a separate _x64 zip) Miles dependency removed (switched to header-only miniaudio) Granny2 dll dependency removed (now statically linked)
-
v53 out! New PRELOAD_ALL_TERRAINS option (default: true); it preloads all the terrains at map load, and eliminates freezes when crossing adjacent areas (150ms → 1s) SpeedTree leaf rendering moved to GPU-local memory for better performance Improved MAI minimap tile save Fixed memory leak in attr map initialization
-
EterPack Archiver - PackMakerLite-RS (New 2026)
martysama0134 replied to martysama0134's topic in Tools & Programs
PackMakerLite-RS v1.2.0 New --verify-crc flag: validates each file's CRC32 integrity during unpack, stopping on any mismatch GUI drag-and-drop: drag a folder or .eix file into the app to quickly pack/unpack or load its workspace
