diff options
Diffstat (limited to 'engines/cruise/decompiler.cpp')
-rw-r--r-- | engines/cruise/decompiler.cpp | 1828 |
1 files changed, 851 insertions, 977 deletions
diff --git a/engines/cruise/decompiler.cpp b/engines/cruise/decompiler.cpp index 7eca816ec7..505ca0e4d6 100644 --- a/engines/cruise/decompiler.cpp +++ b/engines/cruise/decompiler.cpp @@ -84,24 +84,21 @@ char decompSaveOpcodeVar[256]; uint8 *getStringNameFromIdx(uint16 stringTypeIdx, char *offset) { switch (stringTypeIdx & 7) { - case 2: - { - sprintf(stringName, "\"%s\"", - currentScript->dataPtr + - currentScript->offsetToSubData3 + atoi(offset)); - break; - } - case 5: - { - sprintf(stringName, "vars[%s]", offset); - break; - } - default: - { - sprintf(stringName, "string[%d][%s]", - stringTypeIdx & 7, offset); - break; - } + case 2: { + sprintf(stringName, "\"%s\"", + currentScript->dataPtr + + currentScript->offsetToSubData3 + atoi(offset)); + break; + } + case 5: { + sprintf(stringName, "vars[%s]", offset); + break; + } + default: { + sprintf(stringName, "string[%d][%s]", + stringTypeIdx & 7, offset); + break; + } } return stringName; @@ -118,7 +115,7 @@ char *resolveMessage(char *messageIdxString) { return messageIdxString; } else { return currentDecompOvl->stringTable[atoi(messageIdxString)]. - string; + string; } } @@ -139,43 +136,41 @@ void resolveDecompShort(char *buffer) { int i; importScriptStruct *importEntry = - (importScriptStruct *) (data3Ptr->dataPtr + - data3Ptr->offsetToImportData); + (importScriptStruct *)(data3Ptr->dataPtr + + data3Ptr->offsetToImportData); for (i = 0; i < data3Ptr->numRelocGlob; i++) { switch (importEntry->type) { case 20: // script case 30: case 40: - case 50: - { - if (importEntry->offset == currentDecompScriptPtr->var4 - 3) { // param1 - sprintf(buffer, - data3Ptr->dataPtr + - data3Ptr-> - offsetToImportName + - importEntry->offsetToName); - return; - } - if (importEntry->offset == currentDecompScriptPtr->var4 - 6) { // param2 - sprintf(buffer, "linkedIdx"); - return; - } - break; + case 50: { + if (importEntry->offset == currentDecompScriptPtr->var4 - 3) { // param1 + sprintf(buffer, + data3Ptr->dataPtr + + data3Ptr-> + offsetToImportName + + importEntry->offsetToName); + return; } - default: - { - if (importEntry->offset == - currentDecompScriptPtr->var4 - 4) { - sprintf(buffer, - data3Ptr->dataPtr + - data3Ptr-> - offsetToImportName + - importEntry->offsetToName); - return; - } + if (importEntry->offset == currentDecompScriptPtr->var4 - 6) { // param2 + sprintf(buffer, "linkedIdx"); + return; + } + break; + } + default: { + if (importEntry->offset == + currentDecompScriptPtr->var4 - 4) { + sprintf(buffer, + data3Ptr->dataPtr + + data3Ptr-> + offsetToImportName + + importEntry->offsetToName); + return; } } + } importEntry++; } @@ -188,24 +183,23 @@ void resolveDecompChar(char *buffer) { int i; importScriptStruct *importEntry = - (importScriptStruct *) (data3Ptr->dataPtr + - data3Ptr->offsetToImportData); + (importScriptStruct *)(data3Ptr->dataPtr + + data3Ptr->offsetToImportData); for (i = 0; i < data3Ptr->numRelocGlob; i++) { switch (importEntry->type) { - default: - { - if (importEntry->offset == - currentDecompScriptPtr->var4 - 2) { - sprintf(buffer, - data3Ptr->dataPtr + - data3Ptr-> - offsetToImportName + - importEntry->offsetToName); - return; - } + default: { + if (importEntry->offset == + currentDecompScriptPtr->var4 - 2) { + sprintf(buffer, + data3Ptr->dataPtr + + data3Ptr-> + offsetToImportName + + importEntry->offsetToName); + return; } } + } importEntry++; } @@ -250,7 +244,7 @@ char getByteFromDecompScriptReal(void) { void getShortFromDecompScript(char *buffer) { short int var = - *(int16 *) (currentDecompScript + currentDecompScriptPtr->var4); + *(int16 *)(currentDecompScript + currentDecompScriptPtr->var4); currentDecompScriptPtr->var4 = currentDecompScriptPtr->var4 + 2; @@ -268,7 +262,7 @@ void getShortFromDecompScript(char *buffer) { short int getShortFromDecompScriptReal(void) { short int var = - *(int16 *) (currentDecompScript + currentDecompScriptPtr->var4); + *(int16 *)(currentDecompScript + currentDecompScriptPtr->var4); currentDecompScriptPtr->var4 = currentDecompScriptPtr->var4 + 2; @@ -289,7 +283,7 @@ void addDecomp(char *string, ...) { * fprintf(fHandle,"\n"); */ struct decompileLineStruct *pLineStruct = - &decompileLineTable[positionInDecompileLineTable++]; + &decompileLineTable[positionInDecompileLineTable++]; pLineStruct->lineOffset = currentLineIdx; pLineStruct->indent = 0; @@ -314,14 +308,14 @@ void addDecomp(char *string, ...) { } void resolveVarName(char *ovlIdxString, int varType, char *varIdxString, - char *outputName) { + char *outputName) { int varIdx = atoi(varIdxString); strcpy(outputName, ""); if (varType == 2) { strcpy(outputName, getStringNameFromIdx(varType, - varIdxString)); + varIdxString)); return; } if (varType == 1) { @@ -336,22 +330,22 @@ void resolveVarName(char *ovlIdxString, int varType, char *varIdxString, if (varIdx == currentDecompOvl->arraySymbGlob[i].idx) { if (((currentDecompOvl->arraySymbGlob[i].var4 & 0xF0) == 0) && varType != 0x20) { // var strcpy(outputName, - currentDecompOvl->arrayNameSymbGlob + - currentDecompOvl->arraySymbGlob[i]. - offsetToName); + currentDecompOvl->arrayNameSymbGlob + + currentDecompOvl->arraySymbGlob[i]. + offsetToName); return; } if ((currentDecompOvl->arraySymbGlob[i].var4) == 20 && varType == 0x20) { // script strcpy(outputName, - currentDecompOvl->arrayNameSymbGlob + - currentDecompOvl->arraySymbGlob[i]. - offsetToName); + currentDecompOvl->arrayNameSymbGlob + + currentDecompOvl->arraySymbGlob[i]. + offsetToName); return; } } } sprintf(outputName, "ovl(%s).[%d][%s]", ovlIdxString, varType, - varIdxString); + varIdxString); } else { strcpy(outputName, ovlIdxString); } @@ -359,77 +353,72 @@ void resolveVarName(char *ovlIdxString, int varType, char *varIdxString, int decompLoadVar(void) { switch (currentScriptOpcodeType) { - case 0: - { - char buffer[256]; + case 0: { + char buffer[256]; - getShortFromDecompScript(buffer); + getShortFromDecompScript(buffer); - pushDecomp(buffer); + pushDecomp(buffer); - return (0); - } - // string - case 1: - { - char buffer1[256]; - char buffer2[256]; - char buffer3[256]; - char varName[256]; + return (0); + } + // string + case 1: { + char buffer1[256]; + char buffer2[256]; + char buffer3[256]; + char varName[256]; - getByteFromDecompScript(buffer1); - getByteFromDecompScript(buffer2); + getByteFromDecompScript(buffer1); + getByteFromDecompScript(buffer2); - getShortFromDecompScript(buffer3); + getShortFromDecompScript(buffer3); - resolveVarName(buffer2, atoi(buffer1) & 7, buffer3, - varName); + resolveVarName(buffer2, atoi(buffer1) & 7, buffer3, + varName); - pushDecomp("%s", varName); - return (0); - } - case 2: - { - char buffer1[256]; - char buffer2[256]; - char buffer3[256]; - char varName[256]; + pushDecomp("%s", varName); + return (0); + } + case 2: { + char buffer1[256]; + char buffer2[256]; + char buffer3[256]; + char varName[256]; - getByteFromDecompScript(buffer1); - getByteFromDecompScript(buffer2); + getByteFromDecompScript(buffer1); + getByteFromDecompScript(buffer2); - getShortFromDecompScript(buffer3); + getShortFromDecompScript(buffer3); - resolveVarName(buffer2, atoi(buffer1) & 7, buffer3, - varName); + resolveVarName(buffer2, atoi(buffer1) & 7, buffer3, + varName); - pushDecomp("%s", varName); - return (0); - } - case 5: - { - char buffer1[256]; - char buffer2[256]; - char buffer3[256]; - char varName[256]; + pushDecomp("%s", varName); + return (0); + } + case 5: { + char buffer1[256]; + char buffer2[256]; + char buffer3[256]; + char varName[256]; - getByteFromDecompScript(buffer1); - getByteFromDecompScript(buffer2); + getByteFromDecompScript(buffer1); + getByteFromDecompScript(buffer2); - getShortFromDecompScript(buffer3); + getShortFromDecompScript(buffer3); - resolveVarName(buffer2, atoi(buffer1) & 7, buffer3, - varName); + resolveVarName(buffer2, atoi(buffer1) & 7, buffer3, + varName); - pushDecomp("%s[%s]", varName, decompSaveOpcodeVar); - return (0); - } - default: - { - printf("Unsupported type %d in opcodeType0\n", - currentScriptOpcodeType); - failed = 1; - } + pushDecomp("%s[%s]", varName, decompSaveOpcodeVar); + return (0); + } + default: { + printf("Unsupported type %d in opcodeType0\n", + currentScriptOpcodeType); + failed = 1; + } } } @@ -437,79 +426,73 @@ int decompSaveVar(void) { // int var = popVar(); switch (currentScriptOpcodeType) { - case 0: - { - addDecomp(popDecomp()); - return (0); - } - // modify string - case 1: - { - char buffer1[256]; - char buffer2[256]; - char buffer3[256]; - char varName[256]; - uint8 type; + case 0: { + addDecomp(popDecomp()); + return (0); + } + // modify string + case 1: { + char buffer1[256]; + char buffer2[256]; + char buffer3[256]; + char varName[256]; + uint8 type; - getByteFromDecompScript(buffer1); - getByteFromDecompScript(buffer2); + getByteFromDecompScript(buffer1); + getByteFromDecompScript(buffer2); - getShortFromDecompScript(buffer3); + getShortFromDecompScript(buffer3); - type = atoi(buffer1) & 7; + type = atoi(buffer1) & 7; - resolveVarName(buffer2, type, buffer3, varName); + resolveVarName(buffer2, type, buffer3, varName); - addDecomp("%s = %s", varName, popDecomp()); - break; - } - case 2: - { - char buffer1[256]; - char buffer2[256]; - char buffer3[256]; + addDecomp("%s = %s", varName, popDecomp()); + break; + } + case 2: { + char buffer1[256]; + char buffer2[256]; + char buffer3[256]; - getByteFromDecompScript(buffer1); - getByteFromDecompScript(buffer2); + getByteFromDecompScript(buffer1); + getByteFromDecompScript(buffer2); - getShortFromDecompScript(buffer3); + getShortFromDecompScript(buffer3); - addDecomp("ovl(%s).setVar(%s,%s) = %s", buffer2, - buffer1, buffer3, popDecomp()); - break; - } - case 4: - { - strcpy(decompSaveOpcodeVar, popDecomp()); - break; - } - case 5: - { - char buffer1[256]; - char buffer2[256]; - char buffer3[256]; - char varName[256]; - uint8 type; + addDecomp("ovl(%s).setVar(%s,%s) = %s", buffer2, + buffer1, buffer3, popDecomp()); + break; + } + case 4: { + strcpy(decompSaveOpcodeVar, popDecomp()); + break; + } + case 5: { + char buffer1[256]; + char buffer2[256]; + char buffer3[256]; + char varName[256]; + uint8 type; - getByteFromDecompScript(buffer1); - getByteFromDecompScript(buffer2); + getByteFromDecompScript(buffer1); + getByteFromDecompScript(buffer2); - getShortFromDecompScript(buffer3); + getShortFromDecompScript(buffer3); - type = atoi(buffer1) & 7; + type = atoi(buffer1) & 7; - resolveVarName(buffer2, type, buffer3, varName); + resolveVarName(buffer2, type, buffer3, varName); - addDecomp("%s[%s] = %s", varName, decompSaveOpcodeVar, - popDecomp()); - break; - } - default: - { - printf("Unsupported type %d in opcodeType1\n", - currentScriptOpcodeType); - failed = 1; - } + addDecomp("%s[%s] = %s", varName, decompSaveOpcodeVar, + popDecomp()); + break; + } + default: { + printf("Unsupported type %d in opcodeType1\n", + currentScriptOpcodeType); + failed = 1; + } } return (0); @@ -517,47 +500,44 @@ int decompSaveVar(void) { int decompOpcodeType2(void) { switch (currentScriptOpcodeType) { - case 1: - { - char buffer3[256]; - char varName[256]; - int byte1 = getByteFromDecompScriptReal(); - int byte2 = getByteFromDecompScriptReal(); - getShortFromDecompScript(buffer3); + case 1: { + char buffer3[256]; + char varName[256]; + int byte1 = getByteFromDecompScriptReal(); + int byte2 = getByteFromDecompScriptReal(); + getShortFromDecompScript(buffer3); - resolveVarName("0", byte1 & 7, buffer3, varName); + resolveVarName("0", byte1 & 7, buffer3, varName); - pushDecomp(varName); + pushDecomp(varName); - break; - } - case 5: - { - int byte1 = getByteFromDecompScriptReal(); - int byte2 = getByteFromDecompScriptReal(); - short int short1 = getShortFromDecompScriptReal(); - - int8 *ptr = scriptDataPtrTable[byte1 & 7] + short1; - - if ((byte1 & 7) == 2) { - pushDecomp("\"%s\"[%s]", ptr, - decompSaveOpcodeVar); - } else if ((byte1 & 7) == 5) { - pushDecomp("freeString[%d][%s]", short1, - decompSaveOpcodeVar); - } else { - printf("Unsupported type %d in opcodeType2\n", - byte1 & 7); - failed = 1; - } - break; - } - default: - { + break; + } + case 5: { + int byte1 = getByteFromDecompScriptReal(); + int byte2 = getByteFromDecompScriptReal(); + short int short1 = getShortFromDecompScriptReal(); + + int8 *ptr = scriptDataPtrTable[byte1 & 7] + short1; + + if ((byte1 & 7) == 2) { + pushDecomp("\"%s\"[%s]", ptr, + decompSaveOpcodeVar); + } else if ((byte1 & 7) == 5) { + pushDecomp("freeString[%d][%s]", short1, + decompSaveOpcodeVar); + } else { printf("Unsupported type %d in opcodeType2\n", - currentScriptOpcodeType); + byte1 & 7); failed = 1; } + break; + } + default: { + printf("Unsupported type %d in opcodeType2\n", + currentScriptOpcodeType); + failed = 1; + } } return (0); } @@ -567,57 +547,49 @@ int decompMath(void) { char *param2 = popDecomp(); switch (currentScriptOpcodeType) { - case 0: - { - sprintf(tempbuffer, "%s+%s", param1, param2); - pushDecomp(tempbuffer); - break; - } - case 1: - { - sprintf(tempbuffer, "%s/%s", param1, param2); - pushDecomp(tempbuffer); - break; - } - case 2: - { - sprintf(tempbuffer, "%s-%s", param1, param2); - pushDecomp(tempbuffer); - break; - } - case 3: - { - sprintf(tempbuffer, "%s*%s", param1, param2); - pushDecomp(tempbuffer); - break; - } - case 4: - { - sprintf(tempbuffer, "%s\%%s", param1, param2); - pushDecomp(tempbuffer); - break; - } + case 0: { + sprintf(tempbuffer, "%s+%s", param1, param2); + pushDecomp(tempbuffer); + break; + } + case 1: { + sprintf(tempbuffer, "%s/%s", param1, param2); + pushDecomp(tempbuffer); + break; + } + case 2: { + sprintf(tempbuffer, "%s-%s", param1, param2); + pushDecomp(tempbuffer); + break; + } + case 3: { + sprintf(tempbuffer, "%s*%s", param1, param2); + pushDecomp(tempbuffer); + break; + } + case 4: { + sprintf(tempbuffer, "%s\%%s", param1, param2); + pushDecomp(tempbuffer); + break; + } case 5: - case 7: - { - sprintf(tempbuffer, "%s|%s", param1, param2); - pushDecomp(tempbuffer); - break; - } - case 6: - { - sprintf(tempbuffer, "%s&%s", param1, param2); - pushDecomp(tempbuffer); - break; - } + case 7: { + sprintf(tempbuffer, "%s|%s", param1, param2); + pushDecomp(tempbuffer); + break; + } + case 6: { + sprintf(tempbuffer, "%s&%s", param1, param2); + pushDecomp(tempbuffer); + break; + } - default: - { - sprintf(tempbuffer, "decompMath(%d,%s,%s)", - currentScriptOpcodeType, param1, param2); - pushDecomp(tempbuffer); - break; - } + default: { + sprintf(tempbuffer, "decompMath(%d,%s,%s)", + currentScriptOpcodeType, param1, param2); + pushDecomp(tempbuffer); + break; + } } return (0); } @@ -640,61 +612,53 @@ int decompTest(void) { short int offset = getShortFromDecompScriptReal(); switch (currentScriptOpcodeType) { - case 0: - { - currentLineType = 1; - addDecomp("test '!(bitMask & 1)' and goto %d", - offset + oldOffset); - break; - } - case 1: - { - currentLineType = 1; - addDecomp("test '(bitMask & 1)' and goto %d", - offset + oldOffset); - break; - } - case 2: - { - currentLineType = 1; - addDecomp("test '(bitMask & 2)' and goto %d", - offset + oldOffset); - break; - } - case 3: - { - currentLineType = 1; - addDecomp("test '(bitMask & 3)' and goto %d", - offset + oldOffset); - break; - } - case 4: - { - currentLineType = 1; - addDecomp("test '(bitMask & 4)' and goto %d", - offset + oldOffset); - break; - } - case 5: - { - currentLineType = 1; - addDecomp("test '(bitMask & 5)' and goto %d", - offset + oldOffset); - break; - } - case 6: - { - currentLineType = 2; - addDecomp("test 'never' and goto %d", - offset + oldOffset); - break; - } - case 7: - { - currentLineType = 3; - addDecomp("goto %d", offset + oldOffset); - break; - } + case 0: { + currentLineType = 1; + addDecomp("test '!(bitMask & 1)' and goto %d", + offset + oldOffset); + break; + } + case 1: { + currentLineType = 1; + addDecomp("test '(bitMask & 1)' and goto %d", + offset + oldOffset); + break; + } + case 2: { + currentLineType = 1; + addDecomp("test '(bitMask & 2)' and goto %d", + offset + oldOffset); + break; + } + case 3: { + currentLineType = 1; + addDecomp("test '(bitMask & 3)' and goto %d", + offset + oldOffset); + break; + } + case 4: { + currentLineType = 1; + addDecomp("test '(bitMask & 4)' and goto %d", + offset + oldOffset); + break; + } + case 5: { + currentLineType = 1; + addDecomp("test '(bitMask & 5)' and goto %d", + offset + oldOffset); + break; + } + case 6: { + currentLineType = 2; + addDecomp("test 'never' and goto %d", + offset + oldOffset); + break; + } + case 7: { + currentLineType = 3; + addDecomp("goto %d", offset + oldOffset); + break; + } } @@ -708,20 +672,20 @@ int decompCompare(void) { addDecomp("sign(%s)", param); -/* - if (!pop) - si = 1; + /* + if (!pop) + si = 1; - if (pop<0) { - si |= 4; - } + if (pop<0) { + si |= 4; + } - if (pop>0) { - si |= 2; - } + if (pop>0) { + si |= 2; + } - currentScriptPtr->bitMask = si; -*/ + currentScriptPtr->bitMask = si; + */ return 0; } @@ -748,660 +712,570 @@ int decompFunction(void) { currentScriptOpcodeType = getByteFromDecompScriptReal(); // addDecomp("OP_%X", currentScriptOpcodeType); switch (currentScriptOpcodeType) { - case 0x1: - { - pushDecomp("_setdoFade()"); - break; - } - case 0x2: - { - pushDecomp("_prepareFade()"); - break; - } - case 0x3: - { - sprintf(tempbuffer, "_loadBackground(%s,%s)", - popDecomp(), popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x4: - { - sprintf(tempbuffer, "_loadFullBundle(%s,%s)", - popDecomp(), popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x5: - { - sprintf(tempbuffer, "_addCell(%s,%s,%s)", popDecomp(), - popDecomp(), popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x6: - { - unsigned long int numArg = atoi(popDecomp()); - char *ovlStr; - char *idxStr; - int i; - char functionName[100]; + case 0x1: { + pushDecomp("_setdoFade()"); + break; + } + case 0x2: { + pushDecomp("_prepareFade()"); + break; + } + case 0x3: { + sprintf(tempbuffer, "_loadBackground(%s,%s)", + popDecomp(), popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x4: { + sprintf(tempbuffer, "_loadFullBundle(%s,%s)", + popDecomp(), popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x5: { + sprintf(tempbuffer, "_addCell(%s,%s,%s)", popDecomp(), + popDecomp(), popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x6: { + unsigned long int numArg = atoi(popDecomp()); + char *ovlStr; + char *idxStr; + int i; + char functionName[100]; - idxStr = popDecomp(); - ovlStr = popDecomp(); + idxStr = popDecomp(); + ovlStr = popDecomp(); - resolveVarName(ovlStr, 0x20, idxStr, functionName); + resolveVarName(ovlStr, 0x20, idxStr, functionName); - sprintf(tempbuffer, "_startASync(%s", functionName); + sprintf(tempbuffer, "_startASync(%s", functionName); - for (i = 0; i < numArg; i++) { - strcatuint8(tempbuffer, ","); - strcatuint8(tempbuffer, popDecomp()); - } + for (i = 0; i < numArg; i++) { + strcatuint8(tempbuffer, ","); + strcatuint8(tempbuffer, popDecomp()); + } - strcatuint8(tempbuffer, ")"); + strcatuint8(tempbuffer, ")"); - pushDecomp(tempbuffer); - break; - } - case 0x7: - { - char *var1; - char *objIdxStr; - char *ovlStr; - char varName[256]; - int i; - - var1 = popDecomp(); - objIdxStr = popDecomp(); - ovlStr = popDecomp(); - - sprintf(tempbuffer, - "_createObjectFromOvlData(ovl:%s,dataIdx:%s,%s)", - ovlStr, objIdxStr, var1); - pushDecomp(tempbuffer); - break; - } - case 0x8: - { - sprintf(tempbuffer, "_removeCell(%s,%s,%s)", - popDecomp(), popDecomp(), popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x9: - { - pushDecomp("_freeobjectList()"); - break; - } - case 0xA: - { - sprintf(tempbuffer, "_removeScript(ovl(%s),%s)", - popDecomp(), popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0xB: - { - sprintf(tempbuffer, "_resetFilesEntries(%s,%s)", - popDecomp(), popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0xC: - { - sprintf(tempbuffer, "_loadOverlay(%s)", popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0xD: - { - sprintf(tempbuffer, "_palManipulation(%s,%s,%s,%s,%s)", - popDecomp(), popDecomp(), popDecomp(), popDecomp(), - popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0xE: - { - sprintf(tempbuffer, "_playSample(%s,%s,%s,%s)", - popDecomp(), popDecomp(), popDecomp(), - popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x10: - { - sprintf(tempbuffer, "_releaseScript2(%s)", - popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x11: - { - sprintf(tempbuffer, "_getOverlayIdx(%s)", popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x13: - { - sprintf(tempbuffer, - "_displayMessage(%s,\"%s\",%s,%s,%s,%s)", - popDecomp(), resolveMessage(popDecomp()), - popDecomp(), popDecomp(), popDecomp(), - popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x14: - { - sprintf(tempbuffer, "_removeObject(ovl(%s),%s)", - popDecomp(), popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x15: - { - pushDecomp("_pauseScript()"); - break; - } - case 0x16: - { - sprintf(tempbuffer, - "_Op_FreezeCell(%s,%s,%s,%s,%s,%s)", popDecomp(), - popDecomp(), popDecomp(), popDecomp(), popDecomp(), - popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x17: - { - sprintf(tempbuffer, "_loadCtp(%s)", popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x18: - { - sprintf(tempbuffer, - "_Op_AddAnimation(%s,%s,%s,%s,%s,%s,%s)", - popDecomp(), popDecomp(), popDecomp(), popDecomp(), - popDecomp(), popDecomp(), popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x19: - { - sprintf(tempbuffer, "_Op_RemoveAnimation(%s,%s,%s)", - popDecomp(), popDecomp(), popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x1A: - { - sprintf(tempbuffer, "_setupScaleFormula(%s,%s,%s,%s)", - popDecomp(), popDecomp(), popDecomp(), - popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x1E: - { - sprintf(tempbuffer, "_Op_TrackAnim(%s,%s,%s,%s,%s,%s)", - popDecomp(), popDecomp(), popDecomp(), popDecomp(), - popDecomp(), popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x21: - { - sprintf(tempbuffer, "_isActorLoaded(%s,%s,%s)", - popDecomp(), popDecomp(), popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x22: - { - sprintf(tempbuffer, "_computeScale(%s)", popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x23: - { - sprintf(tempbuffer, "_convertToScale(%s,%s)", - popDecomp(), popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x24: - { - sprintf(tempbuffer, "_op_24(%s,%s,%s,%s)", popDecomp(), - popDecomp(), popDecomp(), popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x27: - { - sprintf(tempbuffer, "_getWalkBoxCollision(%s,%s)", - popDecomp(), popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x28: - { - sprintf(tempbuffer, "_changeSaveAllowedState(%s)", - popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x29: - { - pushDecomp("_freeAllPerso()"); - break; - } - case 0x2B: - { - sprintf(tempbuffer, "_getProcIdx(%s,%s)", popDecomp(), - popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x2C: - { - sprintf(tempbuffer, "_setObjectPosition(%s,%s,%s)", - popDecomp(), popDecomp(), popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x2E: - { - sprintf(tempbuffer, "_releaseScript(%s)", popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x2F: - { - sprintf(tempbuffer, "_addBackgroundIncrust(%s,%s,%s)", - popDecomp(), popDecomp(), popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x30: - { - sprintf(tempbuffer, "_removeBackgroundIncrust(%s,%s)", - popDecomp(), popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x31: - { - sprintf(tempbuffer, "_op_31(%s,%s)", popDecomp(), - popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x32: - { - pushDecomp("_freeBackgroundInscrustList()"); - break; - } - case 0x35: - { - sprintf(tempbuffer, "_op35(%s)", popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x37: - { - sprintf(tempbuffer, "_op37(%s,%s)", popDecomp(), - popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x38: - { - sprintf(tempbuffer, "_removeBackground(%s)", - popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x39: - { - sprintf(tempbuffer, "_SetActiveBackgroundPlane(%s)", - popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x3A: - { - sprintf(tempbuffer, "_setVar49(%s)", popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x3B: - { - pushDecomp("_op3B()"); - break; - } - case 0x3C: - { - sprintf(tempbuffer, "_rand(%s)", popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x3D: - { - sprintf(tempbuffer, "_loadMusic(%s)", popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x3E: - { - pushDecomp("_op_3E()"); - break; - } - case 0x3F: - { - pushDecomp("_op_3F()"); - break; - } - case 0x40: - { - pushDecomp("_op_40()"); - break; - } - case 0x41: - { - sprintf(tempbuffer, "_isFileLoaded2(%s)", popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x45: - { - pushDecomp("_stopSound()"); - break; - } - case 0x49: - { - sprintf(tempbuffer, "_op49(%s)", popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x54: - { - sprintf(tempbuffer, "_setFontVar(%s)", popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x56: - { - sprintf(tempbuffer, "_changeCutSceneState(%s)", - popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x57: - { - pushDecomp("_getMouseX()"); - break; - } - case 0x58: - { - pushDecomp("_getMouseY()"); - break; - } - case 0x59: - { - pushDecomp("_getMouse3()"); - break; - } - case 0x5A: - { - sprintf(tempbuffer, "_isFileLoaded(%s)", popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x5B: - { - pushDecomp("_regenerateBackgroundIncrust()"); - break; - } - case 0x5C: - { - sprintf(tempbuffer, "_Op_AddCellC(%s,%s)", popDecomp(), - popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x5E: - { - sprintf(tempbuffer, "_Op_AddCellE(%s)", popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x60: - { - sprintf(tempbuffer, "_op_60(%s,%s,%s,%s,%s)", - popDecomp(), popDecomp(), popDecomp(), popDecomp(), - popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x61: - { - sprintf(tempbuffer, "_op61(%s,%s)", popDecomp(), - popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x62: - { - pushDecomp("_pauseCallingScript()"); - break; - } - case 0x63: - { - pushDecomp("_resumeScript()"); - break; - } - case 0x64: - { - unsigned long int numArg = atoi(popDecomp()); - char *ovlStr; - char *idxStr; - int i; - char functionName[256]; + pushDecomp(tempbuffer); + break; + } + case 0x7: { + char *var1; + char *objIdxStr; + char *ovlStr; + char varName[256]; + int i; - idxStr = popDecomp(); - ovlStr = popDecomp(); + var1 = popDecomp(); + objIdxStr = popDecomp(); + ovlStr = popDecomp(); - resolveVarName(ovlStr, 0x20, idxStr, functionName); + sprintf(tempbuffer, + "_createObjectFromOvlData(ovl:%s,dataIdx:%s,%s)", + ovlStr, objIdxStr, var1); + pushDecomp(tempbuffer); + break; + } + case 0x8: { + sprintf(tempbuffer, "_removeCell(%s,%s,%s)", + popDecomp(), popDecomp(), popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x9: { + pushDecomp("_freeobjectList()"); + break; + } + case 0xA: { + sprintf(tempbuffer, "_removeScript(ovl(%s),%s)", + popDecomp(), popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0xB: { + sprintf(tempbuffer, "_resetFilesEntries(%s,%s)", + popDecomp(), popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0xC: { + sprintf(tempbuffer, "_loadOverlay(%s)", popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0xD: { + sprintf(tempbuffer, "_palManipulation(%s,%s,%s,%s,%s)", + popDecomp(), popDecomp(), popDecomp(), popDecomp(), + popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0xE: { + sprintf(tempbuffer, "_playSample(%s,%s,%s,%s)", + popDecomp(), popDecomp(), popDecomp(), + popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x10: { + sprintf(tempbuffer, "_releaseScript2(%s)", + popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x11: { + sprintf(tempbuffer, "_getOverlayIdx(%s)", popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x13: { + sprintf(tempbuffer, + "_displayMessage(%s,\"%s\",%s,%s,%s,%s)", + popDecomp(), resolveMessage(popDecomp()), + popDecomp(), popDecomp(), popDecomp(), + popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x14: { + sprintf(tempbuffer, "_removeObject(ovl(%s),%s)", + popDecomp(), popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x15: { + pushDecomp("_pauseScript()"); + break; + } + case 0x16: { + sprintf(tempbuffer, + "_Op_FreezeCell(%s,%s,%s,%s,%s,%s)", popDecomp(), + popDecomp(), popDecomp(), popDecomp(), popDecomp(), + popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x17: { + sprintf(tempbuffer, "_loadCtp(%s)", popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x18: { + sprintf(tempbuffer, + "_Op_AddAnimation(%s,%s,%s,%s,%s,%s,%s)", + popDecomp(), popDecomp(), popDecomp(), popDecomp(), + popDecomp(), popDecomp(), popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x19: { + sprintf(tempbuffer, "_Op_RemoveAnimation(%s,%s,%s)", + popDecomp(), popDecomp(), popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x1A: { + sprintf(tempbuffer, "_setupScaleFormula(%s,%s,%s,%s)", + popDecomp(), popDecomp(), popDecomp(), + popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x1E: { + sprintf(tempbuffer, "_Op_TrackAnim(%s,%s,%s,%s,%s,%s)", + popDecomp(), popDecomp(), popDecomp(), popDecomp(), + popDecomp(), popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x21: { + sprintf(tempbuffer, "_isActorLoaded(%s,%s,%s)", + popDecomp(), popDecomp(), popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x22: { + sprintf(tempbuffer, "_computeScale(%s)", popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x23: { + sprintf(tempbuffer, "_convertToScale(%s,%s)", + popDecomp(), popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x24: { + sprintf(tempbuffer, "_op_24(%s,%s,%s,%s)", popDecomp(), + popDecomp(), popDecomp(), popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x27: { + sprintf(tempbuffer, "_getWalkBoxCollision(%s,%s)", + popDecomp(), popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x28: { + sprintf(tempbuffer, "_changeSaveAllowedState(%s)", + popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x29: { + pushDecomp("_freeAllPerso()"); + break; + } + case 0x2B: { + sprintf(tempbuffer, "_getProcIdx(%s,%s)", popDecomp(), + popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x2C: { + sprintf(tempbuffer, "_setObjectPosition(%s,%s,%s)", + popDecomp(), popDecomp(), popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x2E: { + sprintf(tempbuffer, "_releaseScript(%s)", popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x2F: { + sprintf(tempbuffer, "_addBackgroundIncrust(%s,%s,%s)", + popDecomp(), popDecomp(), popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x30: { + sprintf(tempbuffer, "_removeBackgroundIncrust(%s,%s)", + popDecomp(), popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x31: { + sprintf(tempbuffer, "_op_31(%s,%s)", popDecomp(), + popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x32: { + pushDecomp("_freeBackgroundInscrustList()"); + break; + } + case 0x35: { + sprintf(tempbuffer, "_op35(%s)", popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x37: { + sprintf(tempbuffer, "_op37(%s,%s)", popDecomp(), + popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x38: { + sprintf(tempbuffer, "_removeBackground(%s)", + popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x39: { + sprintf(tempbuffer, "_SetActiveBackgroundPlane(%s)", + popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x3A: { + sprintf(tempbuffer, "_setVar49(%s)", popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x3B: { + pushDecomp("_op3B()"); + break; + } + case 0x3C: { + sprintf(tempbuffer, "_rand(%s)", popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x3D: { + sprintf(tempbuffer, "_loadMusic(%s)", popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x3E: { + pushDecomp("_op_3E()"); + break; + } + case 0x3F: { + pushDecomp("_op_3F()"); + break; + } + case 0x40: { + pushDecomp("_op_40()"); + break; + } + case 0x41: { + sprintf(tempbuffer, "_isFileLoaded2(%s)", popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x45: { + pushDecomp("_stopSound()"); + break; + } + case 0x49: { + sprintf(tempbuffer, "_op49(%s)", popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x54: { + sprintf(tempbuffer, "_setFontVar(%s)", popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x56: { + sprintf(tempbuffer, "_changeCutSceneState(%s)", + popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x57: { + pushDecomp("_getMouseX()"); + break; + } + case 0x58: { + pushDecomp("_getMouseY()"); + break; + } + case 0x59: { + pushDecomp("_getMouse3()"); + break; + } + case 0x5A: { + sprintf(tempbuffer, "_isFileLoaded(%s)", popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x5B: { + pushDecomp("_regenerateBackgroundIncrust()"); + break; + } + case 0x5C: { + sprintf(tempbuffer, "_Op_AddCellC(%s,%s)", popDecomp(), + popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x5E: { + sprintf(tempbuffer, "_Op_AddCellE(%s)", popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x60: { + sprintf(tempbuffer, "_op_60(%s,%s,%s,%s,%s)", + popDecomp(), popDecomp(), popDecomp(), popDecomp(), + popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x61: { + sprintf(tempbuffer, "_op61(%s,%s)", popDecomp(), + popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x62: { + pushDecomp("_pauseCallingScript()"); + break; + } + case 0x63: { + pushDecomp("_resumeScript()"); + break; + } + case 0x64: { + unsigned long int numArg = atoi(popDecomp()); + char *ovlStr; + char *idxStr; + int i; + char functionName[256]; - sprintf(tempbuffer, "%s(", functionName); + idxStr = popDecomp(); + ovlStr = popDecomp(); - for (i = 0; i < numArg; i++) { - if (i) - strcatuint8(tempbuffer, ","); - strcatuint8(tempbuffer, popDecomp()); - } + resolveVarName(ovlStr, 0x20, idxStr, functionName); - strcatuint8(tempbuffer, ")"); + sprintf(tempbuffer, "%s(", functionName); - pushDecomp(tempbuffer); - break; - } - case 0x65: - { - sprintf(tempbuffer, - "_addWaitObject(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)", - popDecomp(), popDecomp(), popDecomp(), popDecomp(), - popDecomp(), popDecomp(), popDecomp(), popDecomp(), - popDecomp(), popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x66: - { - sprintf(tempbuffer, "_op_66(%s,%s)", popDecomp(), - popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x67: - { - sprintf(tempbuffer, "_loadAudioResource(%s,%s)", - popDecomp(), popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x68: - { - pushDecomp("_freeMediumVar()"); - break; - } - case 0x6A: - { - sprintf(tempbuffer, "_op_6A(%s)", popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x6B: - { - sprintf(tempbuffer, "_loadData(%s,%s,%s,%s)", - popDecomp(), popDecomp(), popDecomp(), - popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x6C: - { - sprintf(tempbuffer, "_op_6C(%s,%s)", popDecomp(), - popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x6D: - { - sprintf(tempbuffer, "_strcpy(%s,%s)", popDecomp(), - popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x6E: - { - sprintf(tempbuffer, "_op_6E(%s,%s)", popDecomp(), - popDecomp()); - pushDecomp(tempbuffer); - break; + for (i = 0; i < numArg; i++) { + if (i) + strcatuint8(tempbuffer, ","); + strcatuint8(tempbuffer, popDecomp()); } - case 0x6F: - { - unsigned long int numArg = atoi(popDecomp()); - char *ovlStr; - char *idxStr; - int i; - idxStr = popDecomp(); - ovlStr = popDecomp(); + strcatuint8(tempbuffer, ")"); - sprintf(tempbuffer, "_op_6F(%s,%s", idxStr, ovlStr); + pushDecomp(tempbuffer); + break; + } + case 0x65: { + sprintf(tempbuffer, + "_addWaitObject(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)", + popDecomp(), popDecomp(), popDecomp(), popDecomp(), + popDecomp(), popDecomp(), popDecomp(), popDecomp(), + popDecomp(), popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x66: { + sprintf(tempbuffer, "_op_66(%s,%s)", popDecomp(), + popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x67: { + sprintf(tempbuffer, "_loadAudioResource(%s,%s)", + popDecomp(), popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x68: { + pushDecomp("_freeMediumVar()"); + break; + } + case 0x6A: { + sprintf(tempbuffer, "_op_6A(%s)", popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x6B: { + sprintf(tempbuffer, "_loadData(%s,%s,%s,%s)", + popDecomp(), popDecomp(), popDecomp(), + popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x6C: { + sprintf(tempbuffer, "_op_6C(%s,%s)", popDecomp(), + popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x6D: { + sprintf(tempbuffer, "_strcpy(%s,%s)", popDecomp(), + popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x6E: { + sprintf(tempbuffer, "_op_6E(%s,%s)", popDecomp(), + popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x6F: { + unsigned long int numArg = atoi(popDecomp()); + char *ovlStr; + char *idxStr; + int i; - for (i = 0; i < numArg; i++) { - strcatuint8(tempbuffer, ","); - strcatuint8(tempbuffer, popDecomp()); - } + idxStr = popDecomp(); + ovlStr = popDecomp(); - strcatuint8(tempbuffer, ")"); + sprintf(tempbuffer, "_op_6F(%s,%s", idxStr, ovlStr); - pushDecomp(tempbuffer); - break; - } - case 0x70: - { - sprintf(tempbuffer, "_comment(%s)", popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x71: - { - sprintf(tempbuffer, "_op71(%s,%s,%s,%s,%s)", - popDecomp(), popDecomp(), popDecomp(), popDecomp(), - popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x72: - { - sprintf(tempbuffer, "_op72(%s,%s)", popDecomp(), - popDecomp(), popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x73: - { - sprintf(tempbuffer, "_op73(%s)", popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x74: - { - sprintf(tempbuffer, "_getlowMemory()"); - pushDecomp(tempbuffer); - break; - } - case 0x76: - { - sprintf(tempbuffer, "_Op_InitializeState6(%s,%s)", - popDecomp(), popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x77: - { - sprintf(tempbuffer, "_Op_InitializeState7(%s)", - popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x78: - { - sprintf(tempbuffer, "_Op_InitializeState8(%s)", - popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x79: - { - sprintf(tempbuffer, "_EnterPlayerMenu(%s)", - popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x7B: - { - sprintf(tempbuffer, "_Op_InitializeStateB(%s)", - popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x7C: - { - sprintf(tempbuffer, "_Op_InitializeStateC(%s)", - popDecomp()); - pushDecomp(tempbuffer); - break; - } - case 0x7D: - { - pushDecomp("_freeAllMenu()"); - break; - } - default: - { - addDecomp("OP_%X", currentScriptOpcodeType); - printf("OPCODE: %X\n", currentScriptOpcodeType); - failed = 1; - break; + for (i = 0; i < numArg; i++) { + strcatuint8(tempbuffer, ","); + strcatuint8(tempbuffer, popDecomp()); } + + strcatuint8(tempbuffer, ")"); + + pushDecomp(tempbuffer); + break; + } + case 0x70: { + sprintf(tempbuffer, "_comment(%s)", popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x71: { + sprintf(tempbuffer, "_op71(%s,%s,%s,%s,%s)", + popDecomp(), popDecomp(), popDecomp(), popDecomp(), + popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x72: { + sprintf(tempbuffer, "_op72(%s,%s)", popDecomp(), + popDecomp(), popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x73: { + sprintf(tempbuffer, "_op73(%s)", popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x74: { + sprintf(tempbuffer, "_getlowMemory()"); + pushDecomp(tempbuffer); + break; + } + case 0x76: { + sprintf(tempbuffer, "_Op_InitializeState6(%s,%s)", + popDecomp(), popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x77: { + sprintf(tempbuffer, "_Op_InitializeState7(%s)", + popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x78: { + sprintf(tempbuffer, "_Op_InitializeState8(%s)", + popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x79: { + sprintf(tempbuffer, "_EnterPlayerMenu(%s)", + popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x7B: { + sprintf(tempbuffer, "_Op_InitializeStateB(%s)", + popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x7C: { + sprintf(tempbuffer, "_Op_InitializeStateC(%s)", + popDecomp()); + pushDecomp(tempbuffer); + break; + } + case 0x7D: { + pushDecomp("_freeAllMenu()"); + break; + } + default: { + addDecomp("OP_%X", currentScriptOpcodeType); + printf("OPCODE: %X\n", currentScriptOpcodeType); + failed = 1; + break; + } } // pushDecomp("functionDummyPush"); @@ -1454,7 +1328,7 @@ void generateIndentation(void) { } if (strstr(decompileLineTable[destLineIdx - 1].line, "goto") == - decompileLineTable[destLineIdx - 1].line) { + decompileLineTable[destLineIdx - 1].line) { //decompileLineTable[destLineIdx-1].pendingElse = 1; } } @@ -1529,13 +1403,13 @@ void dumpScript(uint8 *ovlName, ovlDataStruct *ovlData, int idx) { if (!decompOpcodeTypeTable[(opcodeType & 0xFB) >> 3]) { printf("Unsupported opcode type %d in decomp\n", - (opcodeType & 0xFB) >> 3); + (opcodeType & 0xFB) >> 3); return; } //printf("Optype: %d\n",(opcodeType&0xFB)>>3); - decompOpcodeTypeTable[(opcodeType & 0xFB) >> 3] (); + decompOpcodeTypeTable[(opcodeType & 0xFB) >> 3](); if (failed) { printf("Aborting decompilation..\n"); @@ -1554,7 +1428,7 @@ void dumpScript(uint8 *ovlName, ovlDataStruct *ovlData, int idx) { if (decompileLineTable[i].pendingElse) { fprintf(fHandle, "%05d:\t", - decompileLineTable[i].lineOffset); + decompileLineTable[i].lineOffset); fprintf(fHandle, "else", decompileLineTable[i].line); fprintf(fHandle, "\n"); } |