Add many new opcodes: DPH,SGE,SLT,EX2,LG2,FLR,LRP

This commit is contained in:
fincs 2014-11-25 21:36:52 +01:00
parent 07099be5bb
commit fb190d38d5
2 changed files with 56 additions and 27 deletions

View File

@ -4,31 +4,54 @@ enum
MAESTRO_ADD = 0x00,
MAESTRO_DP3,
MAESTRO_DP4,
MAESTRO_MUL = 0x08,
MAESTRO_MAX = 0x0C,
MAESTRO_DPH,
MAESTRO_unk4,
MAESTRO_EX2,
MAESTRO_LG2,
MAESTRO_unk7,
MAESTRO_MUL,
MAESTRO_SGE,
MAESTRO_SLT,
MAESTRO_FLR,
MAESTRO_MAX,
MAESTRO_MIN,
MAESTRO_RCP,
MAESTRO_RSQ,
MAESTRO_ARL = 0x12,
MAESTRO_unk10,
MAESTRO_unk11,
MAESTRO_ARL,
MAESTRO_MOV,
MAESTRO_unk14,
MAESTRO_unk15,
MAESTRO_unk16,
MAESTRO_unk17,
MAESTRO_DPHI,
MAESTRO_unk19,
MAESTRO_SGEI,
MAESTRO_SLTI,
MAESTRO_unk1C,
MAESTRO_unk1D,
MAESTRO_unk1E,
MAESTRO_unk1F,
MAESTRO_NOP = 0x21,
MAESTRO_unk20,
MAESTRO_NOP,
MAESTRO_END,
MAESTRO_CALL = 0x24,
MAESTRO_CALLC = 0x26,
MAESTRO_IFB,
MAESTRO_IF, // ???
MAESTRO_EMIT = 0x2A, // Geometry shader related
MAESTRO_BREAKC,
MAESTRO_CALL,
MAESTRO_CALLC,
MAESTRO_CALLU,
MAESTRO_IFU,
MAESTRO_IFC,
MAESTRO_FOR,
MAESTRO_EMIT, // Geometry shader related
MAESTRO_SETEMIT, // Geometry shader related
MAESTRO_JMPC,
MAESTRO_JMPU,
MAESTRO_CMP, // only the upper 5 bits are used for the opcode
MAESTRO_CMP = 0x2E,
MAESTRO_CMP2, // ???
MAESTRO_MAD = 0x38, // only the upper 3 bits are used for the opcode
// Only the upper 3 bits are used for the following opcodes
MAESTRO_LRP = 0x30,
MAESTRO_MAD = 0x38,
};

View File

@ -532,7 +532,7 @@ DEF_COMMAND(format1)
return 0;
}
DEF_COMMAND(format2)
DEF_COMMAND(format1u)
{
NEXT_ARG(destName);
NEXT_ARG(src1Name);
@ -552,7 +552,7 @@ DEF_COMMAND(format2)
return 0;
}
DEF_COMMAND(format3)
DEF_COMMAND(format5)
{
NEXT_ARG(destName);
NEXT_ARG(src1Name);
@ -579,7 +579,7 @@ DEF_COMMAND(format3)
return 0;
}
DEF_COMMAND(format4)
DEF_COMMAND(formatarl)
{
NEXT_ARG(src1Name);
ENSURE_NO_MORE_ARGS();
@ -605,17 +605,23 @@ static const cmdTableType cmdTable[] =
DEC_COMMAND(ADD, format1),
DEC_COMMAND(DP3, format1),
DEC_COMMAND(DP4, format1),
DEC_COMMAND(DPH, format1),
DEC_COMMAND(MUL, format1),
DEC_COMMAND(SGE, format1),
DEC_COMMAND(SLT, format1),
DEC_COMMAND(MAX, format1),
DEC_COMMAND(MIN, format1),
DEC_COMMAND(RCP, format2),
DEC_COMMAND(RSQ, format2),
DEC_COMMAND(MOV, format2),
DEC_COMMAND(EX2, format1u),
DEC_COMMAND(LG2, format1u),
DEC_COMMAND(FLR, format1u),
DEC_COMMAND(RCP, format1u),
DEC_COMMAND(RSQ, format1u),
DEC_COMMAND(ARL, formatarl),
DEC_COMMAND(MOV, format1u),
DEC_COMMAND(MAD, format3),
DEC_COMMAND(ARL, format4),
DEC_COMMAND(LRP, format5),
DEC_COMMAND(MAD, format5),
{ nullptr, nullptr },
};