2
0
mirror of https://github.com/Laupetin/OpenAssetTools.git synced 2025-11-22 21:02:07 +00:00
Files
OpenAssetTools/src/ObjLoading/Game/T6/Script/ScriptCompileT6.cpp
2025-10-06 15:35:03 +08:00

31 lines
933 B
C++

#include "ScriptCompileT6.h"
#include <xsk/arc/engine/t6_pc.hpp>
char* compileScriptT6(const std::string& gscName, char* gscCode, size_t gscCodeSize, size_t* out_CompiledSize)
{
try
{
xsk::arc::t6::pc::context context = xsk::arc::t6::pc::context(xsk::arc::instance::server);
std::vector<xsk::u8> scriptBuffer;
scriptBuffer.resize(gscCodeSize);
memcpy(&scriptBuffer[0], gscCode, gscCodeSize);
auto outasm = context.compiler().compile(gscName, scriptBuffer);
auto outbin = context.assembler().assemble(*outasm);
char* compiledBuffer = new char[outbin.first.size];
memcpy(compiledBuffer, outbin.first.data, outbin.first.size);
*out_CompiledSize = outbin.first.size;
return compiledBuffer;
}
catch (std::exception const& e)
{
printf(std::format("GSC Compile failed: {}\n", e.what()).c_str());
return NULL;
}
}