Lua Files

From COD Engine Research
Revision as of 05:47, 26 December 2014 by Red-EyeX32 (Talk | contribs)

Jump to: navigation, search

The lua files were introduced in Call of Duty: Black Ops II and it has appeared on every Call of Duty since. It is only available as its own asset type on Ghosts and Advanced Warfare. On Black Ops 2, however, it is stored as a rawfile. This asset is used for the game menus.

struct LuaFile
{
  const char *name;
  int len;
  char strippingType;
  const char *buffer;
};

The binary data is then passed to the Virtual Machine (VM) to be ran. Now for the header of the binary data.

struct LuaHeader
{
  char magic[8];
  char version;
  char swapEndian;
  char sizeOfInt;
  char sizeOfSize;
  char sizeOfLuaN;
  char sizeOfNumber;
  char numberIntegralCode;
  char bytecodeSharingMode;
};

Opcodes

Opcode Number Mode A B C
HKS_OPCODE_GETFIELD 0x0 iABC Used Register Constant
HKS_OPCODE_TEST 0x1 iABC Used Not Used Used
HKS_OPCODE_CALL_I 0x2 iABC Used Used Used
HKS_OPCODE_CALL_C 0x3 iABC Used Used Used
HKS_OPCODE_EQ 0x4 iABC Not Used Register/Constant Register
HKS_OPCODE_EQ_BK 0x5 iABC Not Used Register/Constant Register
HKS_OPCODE_GETGLOBAL 0x6 iABx Used Constant Used
HKS_OPCODE_MOVE 0x7 iABC Used Register Not Used
HKS_OPCODE_SELF 0x8 iABC Used Register Register
HKS_OPCODE_RETURN 0x9 iABC Used Used Not Used
HKS_OPCODE_GETTABLE_S 0xa iABC Used Register Register
HKS_OPCODE_GETTABLE_N 0xb iABC Used Register Register
HKS_OPCODE_GETTABLE 0xc iABC Used Register Register
HKS_OPCODE_LOADBOOL 0xd iABC Used Used Used
HKS_OPCODE_TFORLOOP 0xe iABC Used Not Used Used
HKS_OPCODE_SETFIELD 0xf iABC Used Constant Register
HKS_OPCODE_SETTABLE_S 0x10 iABC Used Register/Constant Register
HKS_OPCODE_SETTABLE_S_BK 0x11 iABC Used Register/Constant Register
HKS_OPCODE_SETTABLE_N 0x12 iABC Used Register/Constant Register
HKS_OPCODE_SETTABLE_N_BK 0x13 iABC Used Register/Constant Register
HKS_OPCODE_SETTABLE 0x14 iABC Used Register/Constant Register
HKS_OPCODE_SETTABLE_BK 0x15 iABC Used Register/Constant Register
HKS_OPCODE_TAILCALL_I 0x16 iABC Used Used Used
HKS_OPCODE_TAILCALL_C 0x17 iABC Used Used Used
HKS_OPCODE_TAILCALL_M 0x18 iABC Used Used Used
HKS_OPCODE_LOADK 0x19 iABx Used Constant Not Used
HKS_OPCODE_LOADNIL 0x1a iABC Used Register Not Used
HKS_OPCODE_SETGLOBAL 0x1b iABx Used Constant Not Used
HKS_OPCODE_JMP 0x1c iAsBx Not Used Jump Offset Not Used
HKS_OPCODE_CALL_M 0x1d iABC Used Used Used
HKS_OPCODE_CALL 0x1e iABC Used Used Used
HKS_OPCODE_INTRINSIC_INDEX 0x1f iABC Used Used Used
HKS_OPCODE_INTRINSIC_NEWINDEX 0x20 iABC Used Used Used
HKS_OPCODE_INTRINSIC_SELF 0x21 iABC Used Used Used
HKS_OPCODE_INTRINSIC_INDEX_LITERAL 0x22 iABC Used Used Used
HKS_OPCODE_INTRINSIC_NEWINDEX_LITERAL 0x23 iABC Used Used Used
HKS_OPCODE_INTRINSIC_SELF_LITERAL 0x24 iABC Used Used Used
HKS_OPCODE_TAILCALL 0x25 iABC Used Used Used
HKS_OPCODE_GETUPVAL 0x26 iABC Used Used Not Used
HKS_OPCODE_SETUPVAL 0x27 iABC Used Used Not Used
HKS_OPCODE_ADD 0x28 iABC Used Register/Constant Register
HKS_OPCODE_ADD_BK 0x29 iABC Used Register/Constant Register
HKS_OPCODE_SUB 0x2a iABC Used Register/Constant Register
HKS_OPCODE_SUB_BK 0x2b iABC Used Register/Constant Register
HKS_OPCODE_MUL 0x2c iABC Used Register/Constant Register
HKS_OPCODE_MUL_BK 0x2d iABC Used Register/Constant Register
HKS_OPCODE_DIV 0x2e iABC Used Register/Constant Register
HKS_OPCODE_DIV_BK 0x2f iABC Used Register/Constant Register
HKS_OPCODE_MOD 0x30 iABC Used Register/Constant Register
HKS_OPCODE_MOD_BK 0x31 iABC Used Register/Constant Register
HKS_OPCODE_POW 0x32 iABC Used Register/Constant Register
HKS_OPCODE_POW_BK 0x33 iABC Used Register/Constant Register
HKS_OPCODE_NEWTABLE 0x34 iABC Used Used Used
HKS_OPCODE_UNM 0x35 iABC Used Register Not Used
HKS_OPCODE_NOT 0x36 iABC Used Register Not Used
HKS_OPCODE_LEN 0x37 iABC Used Register Not Used
HKS_OPCODE_LT 0x38 iABC Not Used Register/Constant Register
HKS_OPCODE_LT_BK 0x39 iABC Not Used Register/Constant Register
HKS_OPCODE_LE 0x3a iABC Not Used Register/Constant Register
HKS_OPCODE_LE_BK 0x3b iABC Not Used Register/Constant Register
HKS_OPCODE_CONCAT 0x3c iABC Used Used Used
HKS_OPCODE_TESTSET 0x3d iABC Used Register Used
HKS_OPCODE_FORPREP 0x3e iAsBx Used Jump Offset Not Used
HKS_OPCODE_FORLOOP 0x3f iAsBx Used Jump Offset Not Used
HKS_OPCODE_SETLIST 0x40 iABC Used Used Jump Offset
HKS_OPCODE_CLOSE 0x41 iABC Used Not Used Not Used
HKS_OPCODE_CLOSURE 0x42 iABx Used Used Not Used
HKS_OPCODE_VARARG 0x43 iABC Used Used Not Used
HKS_OPCODE_TAILCALL_I_R1 0x44 iABC Not Used Used Used
HKS_OPCODE_CALL_I_R1 0x45 iABC Not Used Used Used
HKS_OPCODE_SETUPVAL_R1 0x46 iABC Used Used Not Used
HKS_OPCODE_TEST_R1 0x47 iABC Used Not Used Used
HKS_OPCODE_NOT_R1 0x48 iABC Used Register Not Used
HKS_OPCODE_GETFIELD_R1 0x49 iABC Used Register Constant
HKS_OPCODE_SETFIELD_R1 0x4a iABC Used Constant Register
HKS_OPCODE_NEWSTRUCT 0x4b iABC Used Used Used
HKS_OPCODE_DATA 0x4c iABx Not Used Jump Offset Not Used
HKS_OPCODE_SETSLOTN 0x4d iABC Used Not Used Used
HKS_OPCODE_SETSLOTI 0x4e iABC Used Used Register
HKS_OPCODE_SETSLOT 0x4f iABC Used Used Register
HKS_OPCODE_SETSLOTS 0x50 iABC Used Used Register
HKS_OPCODE_SETSLOTMT 0x51 iABC Used Used Register
HKS_OPCODE_CHECKTYPE 0x52 iABx Used Used Not Used
HKS_OPCODE_CHECKTYPES 0x53 iABx Used Used Not Used
HKS_OPCODE_GETSLOT 0x54 iABC Used Register Used
HKS_OPCODE_GETSLOTMT 0x55 iABC Used Register Used
HKS_OPCODE_SELFSLOT 0x56 iABC Used Register Used
HKS_OPCODE_SELFSLOTMT 0x57 iABC Used Register Used
HKS_OPCODE_GETFIELD_MM 0x58 iABC Used Register Constant
HKS_OPCODE_CHECKTYPE_D 0x59 iABx Used Used Not Used
HKS_OPCODE_GETSLOT_D 0x5a iABC Used Register Used
HKS_OPCODE_GETGLOBAL_MEM 0x5b iABx Used Constant Used