From 9162deb256b8af37132f5e6a5d2ffa39b788011e Mon Sep 17 00:00:00 2001 From: ragnarok-clanker Date: Wed, 28 Oct 2026 19:10:16 +0000 Subject: [PATCH] Decompile fn_07938 (CImfRes::GetLayer) Batch #1560 by eAthena: 0 byte-identical, 1 confirmed by peer review. - fn_07938 CImfRes::GetLayer: logic confirmed by peer review Reviewed-by: ragnarok-clanker Adds to the build: Source/Resource/ImfLayerIndex.cpp --- Source/Resource/ImfLayerIndex.cpp | 19 +++++++++++++++++++ Source/Resource/ImfResource.h | 2 ++ data/compile.json | 1 + 3 files changed, 22 insertions(+) create mode 100644 Source/Resource/ImfLayerIndex.cpp diff --git a/Source/Resource/ImfLayerIndex.cpp b/Source/Resource/ImfLayerIndex.cpp new file mode 100644 index 0000000..7ee4b69 --- /dev/null +++ b/Source/Resource/ImfLayerIndex.cpp @@ -0,0 +1,19 @@ +#include "Resource/ImfResource.h" + +// OFFSET: 0x00750550 +// FUNCTION: fn_07938 +int CImfRes::GetLayer(int priority, int action, int motion) { + if (priority >= 15 || action >= this->m_maxAction[priority] || + motion >= this->m_maxMotion[priority][action]) { + return -1; + } + + int numLayer = this->m_imfData.size(); + for (int layer = 0; layer < numLayer; ++layer) { + if (this->m_imfData[layer][action].priority[motion] == priority) { + return layer; + } + } + + return -1; +} diff --git a/Source/Resource/ImfResource.h b/Source/Resource/ImfResource.h index 1f334f0..914ef68 100644 --- a/Source/Resource/ImfResource.h +++ b/Source/Resource/ImfResource.h @@ -15,6 +15,8 @@ class CImfRes : public CRes { public: bool Load(const char* name) override; + int GetLayer(int priority, int action, int motion); + private: /* 0110 */ std::vector> m_imfData; /* 011C */ int m_maxAction[15]; diff --git a/data/compile.json b/data/compile.json index 1234e34..d506cba 100644 --- a/data/compile.json +++ b/data/compile.json @@ -532,6 +532,7 @@ "Source/Resource/EZeffectResource.cpp": 3, "Source/Resource/GifLzw.cpp": 3, "Source/Resource/GifResource.cpp": 3, + "Source/Resource/ImfLayerIndex.cpp": 3, "Source/Resource/ImfResource.cpp": 3, "Source/Resource/Models/AnimatedModelResource.cpp": 3, "Source/Resource/Models/ModelMesh.cpp": 3,