Advertisement
ffgriever

FF12 assembler instructions structures

Aug 29th, 2019
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.08 KB | None | 0 0
  1. #define FF12SCR_INSTR_COUNT 100
  2. struct tInstructions
  3. {
  4.     std::wstring instructionName;
  5.     u32 stackPopped; // used only for some instructions
  6.     u32 stackPushed; // used only for some instructions
  7.     u16 instructionSize;
  8.     u16 unknown;
  9. };
  10.  
  11. //static initializer
  12. const CScriptContainer::tInstructions CScriptContainer::instructions[FF12SCR_INSTR_COUNT] = {
  13.     {L"NOP", 0, 0, 0, 0},               // 0
  14.     {L"LABEL", 0, 0, 0, 8},             // 1
  15.     {L"TAG", 0, 0, 0, 7},               // 2
  16.     {L"SYSHALT", 0, 0, 1, 0},           // 3
  17.     {L"SYSTEM", 0, 0, 1, 0},            // 4
  18.     {L"OPLOR", 1, 1, 1, 0},             // 5
  19.     {L"OPLAND", 1, 1, 1, 0},            // 6
  20.     {L"OPOR", 1, 1, 1, 0},              // 7
  21.     {L"OPEOR", 1, 1, 1, 0},             // 8
  22.     {L"OPAND", 1, 1, 1, 0},             // 9
  23.     {L"OPEQ", 2, 1, 1, 0},              // 0xA
  24.     {L"OPNE", 2, 1, 1, 0},              // 0xB
  25.     {L"OPGT", 2, 1, 1, 0},              // 0xC
  26.     {L"OPLS", 2, 1, 1, 0},              // 0xD
  27.     {L"OPGTE", 2, 1, 1, 0},             // 0xE
  28.     {L"OPLSE", 2, 1, 1, 0},             // 0xF
  29.     {L"OPSLL", 1, 1, 1, 0},             // 0x10
  30.     {L"OPSRL", 1, 1, 1, 0},             // 0x11
  31.     {L"OPADD", 2, 2, 1, 0},             // 0x12
  32.     {L"OPSUB", 2, 2, 1, 0},             // 0x13
  33.     {L"OPMUL", 2, 2, 1, 0},             // 0x14
  34.     {L"OPDIV", 2, 2, 1, 0},             // 0x15
  35.     {L"OPMOD", 2, 2, 1, 0},             // 0x16
  36.     {L"OPNOT", 1, 1, 1, 0},             // 0x17
  37.     {L"OPBNOT", 1, 1, 1, 0},            // 0x18
  38.     {L"OPUMINUS", 0, 0, 1, 0},          // 0x19
  39.     {L"OPFIXADRS", 0, 0, 1, 0},         // 0x1A
  40.     {L"PUSHA", 0, 0, 1, 0},             // 0x1B
  41.     {L"POPA", 0, 0, 1, 0},              // 0x1C
  42.     {L"PUSHX", 0, 0, 1, 0},             // 0x1D
  43.     {L"PUSHY", 0, 0, 1, 0},             // 0x1E
  44.     {L"POPX", 0, 0, 1, 0},              // 0x1F
  45.     {L"POPY", 0, 0, 1, 0},              // 0x20
  46.     {L"REQ", 0, 0, 1, 0},               // 0x21
  47.     {L"FREQ", 0, 0, 1, 0},              // 0x22
  48.     {L"TREQ", 0, 0, 1, 0},              // 0x23
  49.     {L"REQSW", 0, 0, 1, 0},             // 0x24
  50.     {L"FREQSW", 0, 0, 1, 0},            // 0x25
  51.     {L"TREQSW", 0, 0, 1, 0},            // 0x26
  52.     {L"REQEW", 0, 0, 1, 0},             // 0x27
  53.     {L"FREQEW", 0, 0, 1, 0},            // 0x28
  54.     {L"TREQEW", 0, 0, 1, 0},            // 0x29
  55.     {L"PREQ", 0, 0, 1, 0},              // 0x2A
  56.     {L"PREQSW", 0, 0, 1, 0},            // 0x2B
  57.     {L"PREQEW", 0, 0, 1, 0},            // 0x2C
  58.     {L"RET", 0, 0, 1, 0},               // 0x2D
  59.     {L"RETN", 0, 0, 1, 0},              // 0x2E
  60.     {L"RETT", 0, 0, 1, 0},              // 0x2F
  61.     {L"RETTN", 0, 0, 1, 0},             // 0x30
  62.     {L"DRET", 0, 0, 1, 0},              // 0x31
  63.     {L"REQWAIT", 0, 0, 1, 0},           // 0x32
  64.     {L"PREQWAIT", 0, 0, 1, 0},          // 0x33
  65.     {L"REQCHG", 0, 0, 1, 0},            // 0x34
  66.     {L"REQCANCEL", 0, 0, 1, 0},         // 0x35
  67.     {L"POPI0", 0, 0, 1, 0},             // 0x36
  68.     {L"POPI1", 0, 0, 1, 0},             // 0x37
  69.     {L"POPI2", 0, 0, 1, 0},             // 0x38
  70.     {L"POPI3", 0, 0, 1, 0},             // 0x39
  71.     {L"POPF0", 0, 0, 1, 0},             // 0x3A
  72.     {L"POPF1", 0, 0, 1, 0},             // 0x3B
  73.     {L"POPF2", 0, 0, 1, 0},             // 0x3C
  74.     {L"POPF3", 0, 0, 1, 0},             // 0x3D
  75.     {L"PUSHI0", 0, 0, 1, 0},            // 0x3E
  76.     {L"PUSHI1", 0, 0, 1, 0},            // 0x3F
  77.     {L"PUSHI2", 0, 0, 1, 0},            // 0x40
  78.     {L"PUSHI3", 0, 0, 1, 0},            // 0x41
  79.     {L"PUSHF0", 0, 0, 1, 0},            // 0x42
  80.     {L"PUSHF1", 0, 0, 1, 0},            // 0x43
  81.     {L"PUSHF2", 0, 0, 1, 0},            // 0x44
  82.     {L"PUSHF3", 0, 0, 1, 0},            // 0x45
  83.     {L"DVAR", 0, 0, 1, 0},              // 0x46
  84.     {L"LONGCODESTART", 0, 0, 1, 0},     // 0x47
  85.     {L"PUSHV", 0, 0, 3, 3},             // 0x48
  86.     {L"POPV", 0, 0, 3, 3},              // 0x49
  87.     {L"PUSHDBG", 0, 0, 3, 3},           // 0x4A
  88.     {L"PUSHP", 0, 0, 3, 3},             // 0x4B
  89.     {L"PUSHTAG", 0, 0, 3, 2},           // 0x4C
  90.     {L"PUSHACT", 0, 0, 3, 2},           // 0x4D
  91.     {L"PUSHI", 0, 0, 3, 2},             // 0x4E
  92.     {L"PUSHII", 0, 0, 3, 1},            // 0x4F
  93.     {L"PUSHF", 0, 0, 3, 5},             // 0x50
  94.     {L"JMP", 0, 0, 3, 8},               // 0x51
  95.     {L"POPCMPYEQJMP", 0, 0, 3, 8},      // 0x52
  96.     {L"POPCMPYLOWJMP", 0, 0, 3, 8},     // 0x53
  97.     {L"POPCMPYLOWEQJMP", 0, 0, 3, 8},   // 0x54
  98.     {L"POPCMPYHIGHJMP", 0, 0, 3, 8},    // 0x55
  99.     {L"POPCMPYHIGHEQJMP", 0, 0, 3, 8}// 0x56
  100.     {L"POP2CMPYBTWNJMP", 0, 0, 3, 8},   // 0x57
  101.     {L"CALL", 0, 0, 3, 4},              // 0x58
  102.     {L"CALLACT", 0, 0, 3, 4},           // 0x59
  103.     {L"POPXJMP", 0, 0, 3, 8},           // 0x5A
  104.     {L"POPXCJMP", 0, 0, 3, 8},          // 0x5B
  105.     {L"POPXNCJMP", 0, 0, 3, 8},         // 0x5C
  106.     {L"CALLPOPA", 0, 0, 3, 4},          // 0x5D
  107.     {L"CALLACTPOPA", 0, 0, 3, 4},       // 0x5E
  108.     {L"REQALL", 0, 0, 3, 6},            // 0x5F
  109.     {L"JMPINTERNAL", 0, 0, 3, 8},       // 0x60
  110.     {L"REQWAITALL", 0, 0, 3, 6},        // 0x61
  111.     {L"INCINITTAG", 0, 0, 3, 0},        // 0x62
  112.     {L"REQIALL", 0, 0, 3, 6},           // 0x63
  113. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement