Ticket #9088: descumm.diff

File descumm.diff, 19.8 KB (added by Kirben, 11 years ago)

Patch

  • descumm.cpp

     
    9393#define ANOFIRSTPAREN (1<<29)
    9494#define ASTARTCOMMA (1<<28)
    9595#define AVARSTORE (1<<27)
     96#define ANOENDSEMICOLON (1<<26)
    9697
    9798
    9899
     
    662663                char tmp[256];
    663664                strcpy(tmp, buforg);
    664665                emit_if(buforg, tmp);
    665         } else if (!(args & ANOLASTPAREN)) {
    666                 buf = strecpy(buf, ")");
     666        } else {
     667                if (!(args & ANOLASTPAREN)) {
     668                        buf = strecpy(buf, ")");
     669                }
     670                if (!(args & ANOENDSEMICOLON) && buf[(strlen(buf) - 1)] != ';') {
     671                        buf = strecpy(buf, ";");
     672                }
    667673        }
    668674
    669675        return strchr(buf, 0);
     
    710716                                buf += sprintf(buf, "Color(%d, %s)", get_byte(), arg);
    711717                        break;
    712718                case 3:
    713                         buf = do_tok(buf, "Name", A1ASCII);
     719                        buf = do_tok(buf, "Name", A1ASCII | ANOENDSEMICOLON);
    714720                        break;
    715721                case 4:
    716722                        buf += sprintf(buf, "Costume(%s)", arg);
     
    730736
    731737        char first = 1;
    732738
    733         buf = do_tok(buf, "ActorOps", ((opcode & 0x80) ? A1V : A1B) | ANOLASTPAREN);
     739        buf = do_tok(buf, "ActorOps", ((opcode & 0x80) ? A1V : A1B) | ANOLASTPAREN | ANOENDSEMICOLON);
    734740
    735741        buf = strecpy(buf, ",[");
    736742
     
    748754
    749755                switch (opcode & 0x1F) {
    750756                case 0x00:
    751                         buf = do_tok(buf, "Unknown", ((opcode & 0x80) ? A1V : A1B));
     757                        buf = do_tok(buf, "Unknown", ((opcode & 0x80) ? A1V : A1B) | ANOENDSEMICOLON);
    752758                        break;
    753759                case 0x01:
    754                         buf = do_tok(buf, "Costume", ((opcode & 0x80) ? A1V : A1B));
     760                        buf = do_tok(buf, "Costume", ((opcode & 0x80) ? A1V : A1B) | ANOENDSEMICOLON);
    755761                        break;
    756762                case 0x02:
    757                         buf = do_tok(buf, "WalkSpeed", ((opcode & 0x80) ? A1V : A1B) | ((opcode & 0x40) ? A2V : A2B));
     763                        buf = do_tok(buf, "WalkSpeed", ((opcode & 0x80) ? A1V : A1B) | ((opcode & 0x40) ? A2V : A2B) | ANOENDSEMICOLON);
    758764                        break;
    759765                case 0x03:
    760                         buf = do_tok(buf, "Sound", ((opcode & 0x80) ? A1V : A1B));
     766                        buf = do_tok(buf, "Sound", ((opcode & 0x80) ? A1V : A1B) | ANOENDSEMICOLON);
    761767                        break;
    762768                case 0x04:
    763                         buf = do_tok(buf, "WalkAnimNr", ((opcode & 0x80) ? A1V : A1B));
     769                        buf = do_tok(buf, "WalkAnimNr", ((opcode & 0x80) ? A1V : A1B) | ANOENDSEMICOLON);
    764770                        break;
    765771                case 0x05:
    766772                        buf =
    767                                 do_tok(buf, "TalkAnimNr", ((opcode & 0x80) ? A1V : A1B) | ((opcode & 0x40) ? A2V : A2B));
     773                                do_tok(buf, "TalkAnimNr", ((opcode & 0x80) ? A1V : A1B) | ((opcode & 0x40) ? A2V : A2B) | ANOENDSEMICOLON);
    768774                        break;
    769775                case 0x06:
    770                         buf = do_tok(buf, "StandAnimNr", ((opcode & 0x80) ? A1V : A1B));
     776                        buf = do_tok(buf, "StandAnimNr", ((opcode & 0x80) ? A1V : A1B) | ANOENDSEMICOLON);
    771777                        break;
    772778                case 0x07:
    773779                        buf =
    774780                                do_tok(buf, "Nothing",
    775781                                                         ((opcode & 0x80) ? A1V : A1B) | ((opcode & 0x40) ? A2V : A2B) |
    776                                                          ((opcode & 0x20) ? A3V : A3B));
     782                                                         ((opcode & 0x20) ? A3V : A3B) | ANOENDSEMICOLON);
    777783                        break;
    778784                case 0x08:
    779                         buf = do_tok(buf, "Init", 0);
     785                        buf = do_tok(buf, "Init", ANOENDSEMICOLON);
    780786                        break;
    781787                case 0x09:
    782                         buf = do_tok(buf, "Elevation", ((opcode & 0x80) ? A1V : A1W));
     788                        buf = do_tok(buf, "Elevation", ((opcode & 0x80) ? A1V : A1W) | ANOENDSEMICOLON);
    783789                        break;
    784790                case 0x0A:
    785                         buf = do_tok(buf, "DefaultAnims", 0);
     791                        buf = do_tok(buf, "DefaultAnims", ANOENDSEMICOLON);
    786792                        break;
    787793                case 0x0B:
    788                         buf = do_tok(buf, "Palette", ((opcode & 0x80) ? A1V : A1B) | ((opcode & 0x40) ? A2V : A2B));
     794                        buf = do_tok(buf, "Palette", ((opcode & 0x80) ? A1V : A1B) | ((opcode & 0x40) ? A2V : A2B) | ANOENDSEMICOLON);
    789795                        break;
    790796                case 0x0C:
    791                         buf = do_tok(buf, "TalkColor", ((opcode & 0x80) ? A1V : A1B));
     797                        buf = do_tok(buf, "TalkColor", ((opcode & 0x80) ? A1V : A1B) | ANOENDSEMICOLON);
    792798                        break;
    793799                case 0x0D:
    794                         buf = do_tok(buf, "Name", A1ASCII);
     800                        buf = do_tok(buf, "Name", A1ASCII | ANOENDSEMICOLON);
    795801                        break;
    796802                case 0x0E:
    797                         buf = do_tok(buf, "InitAnimNr", ((opcode & 0x80) ? A1V : A1B));
     803                        buf = do_tok(buf, "InitAnimNr", ((opcode & 0x80) ? A1V : A1B) | ANOENDSEMICOLON);
    798804                        break;
    799805//              case 0x0F: buf=do_tok(buf, "PaletteList", A1LIST); break;
    800806                case 0x10:
    801                         buf = do_tok(buf, "Width", ((opcode & 0x80) ? A1V : A1B));
     807                        buf = do_tok(buf, "Width", ((opcode & 0x80) ? A1V : A1B) | ANOENDSEMICOLON);
    802808                        break;
    803809                case 0x11:
    804810                        if (g_options.scriptVersion == 5)
    805                                 buf = do_tok(buf, "Scale", ((opcode & 0x80) ? A1V : A1B) | ((opcode & 0x40) ? A2V : A2B));
     811                                buf = do_tok(buf, "Scale", ((opcode & 0x80) ? A1V : A1B) | ((opcode & 0x40) ? A2V : A2B) | ANOENDSEMICOLON);
    806812                        else
    807                                 buf = do_tok(buf, "Scale", ((opcode & 0x80) ? A1V : A1B));
     813                                buf = do_tok(buf, "Scale", ((opcode & 0x80) ? A1V : A1B) | ANOENDSEMICOLON);
    808814                        break;
    809815                case 0x12:
    810                         buf = do_tok(buf, "NeverZClip", 0);
     816                        buf = do_tok(buf, "NeverZClip", ANOENDSEMICOLON);
    811817                        break;
    812818                case 0x13:
    813                         buf = do_tok(buf, "SetZClip", ((opcode & 0x80) ? A1V : A1B));
     819                        buf = do_tok(buf, "SetZClip", ((opcode & 0x80) ? A1V : A1B) | ANOENDSEMICOLON);
    814820                        break;
    815821                case 0x14:
    816                         buf = do_tok(buf, "IgnoreBoxes", 0);
     822                        buf = do_tok(buf, "IgnoreBoxes", ANOENDSEMICOLON);
    817823                        break;
    818824                case 0x15:
    819                         buf = do_tok(buf, "FollowBoxes", 0);
     825                        buf = do_tok(buf, "FollowBoxes", ANOENDSEMICOLON);
    820826                        break;
    821827                case 0x16:
    822                         buf = do_tok(buf, "AnimSpeed", ((opcode & 0x80) ? A1V : A1B));
     828                        buf = do_tok(buf, "AnimSpeed", ((opcode & 0x80) ? A1V : A1B) | ANOENDSEMICOLON);
    823829                        break;
    824830                case 0x17:
    825                         buf=do_tok(buf, "ShadowMode", ((opcode & 0x80) ? A1V : A1B));
     831                        buf=do_tok(buf, "ShadowMode", ((opcode & 0x80) ? A1V : A1B) | ANOENDSEMICOLON);
    826832                        break;
    827833                default:
    828834                        buf += sprintf(buf, "Unknown%.2X()", opcode);
     
    10751081                        buf = strecpy(buf, ",IG");
    10761082        } while (1);
    10771083
    1078         strcpy(buf, ")");
     1084        strcpy(buf, ");");
    10791085}
    10801086
    10811087void do_room_ops(char *buf) {
     
    10851091
    10861092        switch (opcode & 0x1F) {
    10871093        case 0x01:
    1088                 do_tok(buf, "RoomScroll", ((opcode & 0x80) ? A1V : A1W) | ((opcode & 0x40) ? A2V : A2W));
     1094                do_tok(buf, "RoomScroll", ((opcode & 0x80) ? A1V : A1W) | ((opcode & 0x40) ? A2V : A2W) | ANOENDSEMICOLON);
    10891095                break;
    10901096        case 0x02:
    1091                 do_tok(buf, "RoomColor", 0);
     1097                do_tok(buf, "RoomColor", ANOENDSEMICOLON);
    10921098                break;
    10931099        case 0x03:
    1094                 do_tok(buf, "SetScreen", ((opcode & 0x80) ? A1V : A1W) | ((opcode & 0x40) ? A2V : A2W));
     1100                do_tok(buf, "SetScreen", ((opcode & 0x80) ? A1V : A1W) | ((opcode & 0x40) ? A2V : A2W) | ANOENDSEMICOLON);
    10951101                break;
    10961102        case 0x04:
    10971103                buf =
    10981104                        do_tok(buf, "SetPalColor",
    10991105                                                 ((opcode & 0x80) ? A1V : A1W) | ((opcode & 0x40) ? A2V : A2W) |
    1100                                                  ((opcode & 0x20) ? A3V : A3W) | ANOLASTPAREN);
     1106                                                 ((opcode & 0x20) ? A3V : A3W) | ANOLASTPAREN | ANOENDSEMICOLON);
    11011107                opcode = get_byte();
    1102                 buf = do_tok(buf, NULL, ASTARTCOMMA | ANOFIRSTPAREN | ((opcode & 0x80) ? A1V : A1B));
     1108                buf = do_tok(buf, NULL, ASTARTCOMMA | ANOFIRSTPAREN | ANOENDSEMICOLON | ((opcode & 0x80) ? A1V : A1B));
    11031109                break;
    11041110        case 0x05:
    1105                 do_tok(buf, "ShakeOn", 0);
     1111                do_tok(buf, "ShakeOn", ANOENDSEMICOLON);
    11061112                break;
    11071113        case 0x06:
    1108                 do_tok(buf, "ShakeOff", 0);
     1114                do_tok(buf, "ShakeOff", ANOENDSEMICOLON);
    11091115                break;
    11101116        case 0x07:
    1111                 do_tok(buf, "Unused", 0);
     1117                do_tok(buf, "Unused", ANOENDSEMICOLON);
    11121118                break;
    11131119        case 0x08:
    11141120                buf =
    11151121                        do_tok(buf, "RoomIntensity",
    11161122                                                 ((opcode & 0x80) ? A1V : A1B) | ((opcode & 0x40) ? A2V : A2B) |
    1117                                                  ((opcode & 0x20) ? A3V : A3B));
     1123                                                 ((opcode & 0x20) ? A3V : A3B) | ANOENDSEMICOLON);
    11181124                break;
    11191125        case 0x09:
    1120                 buf = do_tok(buf, "saveLoad", ((opcode & 0x80) ? A1V : A1B) | ((opcode & 0x40) ? A2V : A2B));
     1126                buf = do_tok(buf, "saveLoad", ((opcode & 0x80) ? A1V : A1B) | ((opcode & 0x40) ? A2V : A2B) | ANOENDSEMICOLON);
    11211127                break;
    11221128        case 0x0A:
    1123                 buf = do_tok(buf, "screenEffect", ((opcode & 0x80) ? A1V : A1W));
     1129                buf = do_tok(buf, "screenEffect", ((opcode & 0x80) ? A1V : A1W) | ANOENDSEMICOLON);
    11241130                break;
    11251131        case 0x0B:
    11261132                buf =
    11271133                        do_tok(buf, "setRGBRoomIntensity",
    1128                                                  ANOLASTPAREN | ((opcode & 0x80) ? A1V : A1W) | ((opcode & 0x40) ?
     1134                                                 ANOLASTPAREN | ANOENDSEMICOLON | ((opcode & 0x80) ? A1V : A1W) | ((opcode & 0x40) ?
    11291135                                                                                                                                                                                                                                                 A2V : A2W) |
    11301136                                                 ((opcode & 0x20) ? A3V : A3W));
    11311137                opcode = get_byte();
    11321138                buf =
    11331139                        do_tok(buf, NULL,
    1134                                                  ASTARTCOMMA | ANOFIRSTPAREN | ((opcode & 0x80) ? A1V : A1B) |
     1140                                                 ASTARTCOMMA | ANOFIRSTPAREN | ANOENDSEMICOLON | ((opcode & 0x80) ? A1V : A1B) |
    11351141                                                 ((opcode & 0x40) ? A2V : A2B));
    11361142                break;
    11371143
    11381144        case 0x0C:
    11391145                buf =
    11401146                        do_tok(buf, "setRoomShadow",
    1141                                                  ANOLASTPAREN | ((opcode & 0x80) ? A1V : A1W) | ((opcode & 0x40) ?
     1147                                                 ANOLASTPAREN | ANOENDSEMICOLON | ((opcode & 0x80) ? A1V : A1W) | ((opcode & 0x40) ?
    11421148                                                                                                                                                                                                                                                 A2V : A2W) |
    11431149                                                 ((opcode & 0x20) ? A3V : A3W));
    11441150                opcode = get_byte();
    11451151                buf =
    11461152                        do_tok(buf, NULL,
    1147                                                  ASTARTCOMMA | ANOFIRSTPAREN | ((opcode & 0x80) ? A1V : A1B) |
     1153                                                 ASTARTCOMMA | ANOFIRSTPAREN | ANOENDSEMICOLON | ((opcode & 0x80) ? A1V : A1B) |
    11481154                                                 ((opcode & 0x40) ? A2V : A2B));
    11491155                break;
    11501156
    11511157        case 0x0D:
    1152                 do_tok(buf, "saveString", ((opcode & 0x80) ? A1V : A1B) | A2ASCII);
     1158                do_tok(buf, "saveString", ((opcode & 0x80) ? A1V : A1B) | A2ASCII | ANOENDSEMICOLON);
    11531159                break;
    11541160        case 0x0E:
    1155                 do_tok(buf, "loadString", ((opcode & 0x80) ? A1V : A1B) | A2ASCII);
     1161                do_tok(buf, "loadString", ((opcode & 0x80) ? A1V : A1B) | A2ASCII | ANOENDSEMICOLON);
    11561162                break;
    11571163
    11581164        case 0x0F:
    1159                 buf = do_tok(buf, "palManipulate", ANOLASTPAREN | ((opcode & 0x80) ? A1V : A1B));
     1165                buf = do_tok(buf, "palManipulate", ANOLASTPAREN | ANOENDSEMICOLON | ((opcode & 0x80) ? A1V : A1B));
    11601166                opcode = get_byte();
    11611167                buf =
    11621168                        do_tok(buf, NULL,
    1163                                                  ASTARTCOMMA | ANOFIRSTPAREN | ANOLASTPAREN | ((opcode & 0x80) ?
     1169                                                 ASTARTCOMMA | ANOFIRSTPAREN | ANOLASTPAREN | ANOENDSEMICOLON | ((opcode & 0x80) ?
    11641170                                                                                                                                                                                                                                         A1V : A1B) |
    11651171                                                 ((opcode & 0x40) ? A2V : A2B));
    11661172                opcode = get_byte();
     
    11681174                break;
    11691175
    11701176        case 0x10:
    1171                 do_tok(buf, "colorCycleDelay", ((opcode & 0x80) ? A1V : A1B) | ((opcode & 0x40) ? A2V : A2B));
     1177                do_tok(buf, "colorCycleDelay", ((opcode & 0x80) ? A1V : A1B) | ((opcode & 0x40) ? A2V : A2B) | ANOENDSEMICOLON);
    11721178                break;
    11731179
    11741180        default:
    11751181                strcpy(buf, "Unknown??");
    11761182        }
    11771183
    1178         strcat(buf, ")");
     1184        strcat(buf, ");");
    11791185}
    11801186
    11811187void do_room_ops_old(char *buf, byte opcode) {
     
    13051311void do_verbops_v2(char *buf, byte opcode) {
    13061312        int subop = get_byte();
    13071313
    1308         buf = do_tok(buf, "VerbOps", ANOLASTPAREN);
     1314        buf = do_tok(buf, "VerbOps", ANOLASTPAREN | ANOENDSEMICOLON);
    13091315        switch (subop) {
    13101316                case 0:
    1311                         buf = do_tok(buf, "Delete", (opcode & 0x80) ? A1V : A1B);
     1317                        buf = do_tok(buf, "Delete", (opcode & 0x80) ? A1V : A1B | ANOENDSEMICOLON);
    13121318                        break;
    13131319                case 0xFF:
    1314                         buf = do_tok(buf, "State", A1B | A2B);
     1320                        buf = do_tok(buf, "State", A1B | A2B | ANOENDSEMICOLON);
    13151321                        break;
    13161322                default:
    13171323                        buf += sprintf(buf, "New-%d", subop);
    1318                         buf = do_tok(buf, "", A1B | A2B | ((opcode & 0x80) ? A3V : A3B) | A4B | A5ASCII);
     1324                        buf = do_tok(buf, "", A1B | A2B | ((opcode & 0x80) ? A3V : A3B) | A4B | A5ASCII | ANOENDSEMICOLON);
    13191325        }
    1320         strecpy(buf, ")");
     1326        strecpy(buf, ");");
    13211327}
    13221328
    13231329void do_verbops(char *buf, byte opcode) {
    13241330        char first = 1;
    13251331
    1326         buf = do_tok(buf, "VerbOps", ((opcode & 0x80) ? A1V : A1B) | ANOLASTPAREN);
     1332        buf = do_tok(buf, "VerbOps", ((opcode & 0x80) ? A1V : A1B) | ANOLASTPAREN | ANOENDSEMICOLON);
    13271333        buf = strecpy(buf, ",[");
    13281334
    13291335        do {
     
    13351341                first = 0;
    13361342                switch (opcode & 0x1F) {
    13371343                case 0x1:
    1338                         buf = do_tok(buf, "Image", (opcode & 0x80) ? A1V : A1W);
     1344                        buf = do_tok(buf, "Image", (opcode & 0x80) ? A1V : A1W | ANOENDSEMICOLON);
    13391345                        break;
    13401346                case 0x2:
    1341                         buf = do_tok(buf, "Text", A1ASCII);
     1347                        buf = do_tok(buf, "Text", A1ASCII | ANOENDSEMICOLON);
    13421348                        break;
    13431349                case 0x3:
    1344                         buf = do_tok(buf, "Color", (opcode & 0x80) ? A1V : A1B);
     1350                        buf = do_tok(buf, "Color", (opcode & 0x80) ? A1V : A1B | ANOENDSEMICOLON);
    13451351                        break;
    13461352                case 0x4:
    1347                         buf = do_tok(buf, "HiColor", (opcode & 0x80) ? A1V : A1B);
     1353                        buf = do_tok(buf, "HiColor", (opcode & 0x80) ? A1V : A1B | ANOENDSEMICOLON);
    13481354                        break;
    13491355                case 0x5:
    1350                         buf = do_tok(buf, "SetXY", ((opcode & 0x80) ? A1V : A1W) | ((opcode & 0x40) ? A2V : A2W));
     1356                        buf = do_tok(buf, "SetXY", ((opcode & 0x80) ? A1V : A1W) | ((opcode & 0x40) ? A2V : A2W) | ANOENDSEMICOLON);
    13511357                        break;
    13521358                case 0x6:
    1353                         buf = do_tok(buf, "On", 0);
     1359                        buf = do_tok(buf, "On", ANOENDSEMICOLON);
    13541360                        break;
    13551361                case 0x7:
    1356                         buf = do_tok(buf, "Off", 0);
     1362                        buf = do_tok(buf, "Off", ANOENDSEMICOLON);
    13571363                        break;
    13581364                case 0x8:
    1359                         buf = do_tok(buf, "Delete", 0);
     1365                        buf = do_tok(buf, "Delete", ANOENDSEMICOLON);
    13601366                        break;
    13611367                case 0x9:
    1362                         buf = do_tok(buf, "New", 0);
     1368                        buf = do_tok(buf, "New", ANOENDSEMICOLON);
    13631369                        break;
    13641370                case 0x10:
    1365                         buf = do_tok(buf, "DimColor", (opcode & 0x80) ? A1V : A1B);
     1371                        buf = do_tok(buf, "DimColor", (opcode & 0x80) ? A1V : A1B | ANOENDSEMICOLON);
    13661372                        break;
    13671373                case 0x11:
    1368                         buf = do_tok(buf, "Dim", 0);
     1374                        buf = do_tok(buf, "Dim", ANOENDSEMICOLON);
    13691375                        break;
    13701376                case 0x12:
    1371                         buf = do_tok(buf, "Key", (opcode & 0x80) ? A1V : A1B);
     1377                        buf = do_tok(buf, "Key", (opcode & 0x80) ? A1V : A1B | ANOENDSEMICOLON);
    13721378                        break;
    13731379                case 0x13:
    1374                         buf = do_tok(buf, "Center", 0);
     1380                        buf = do_tok(buf, "Center", ANOENDSEMICOLON);
    13751381                        break;
    13761382                case 0x14:
    1377                         buf = do_tok(buf, "SetToString", (opcode & 0x80) ? A1V : A1W);
     1383                        buf = do_tok(buf, "SetToString", (opcode & 0x80) ? A1V : A1W | ANOENDSEMICOLON);
    13781384                        break;
    13791385                case 0x16:
    13801386                        buf =
    1381                                 do_tok(buf, "SetToObject", ((opcode & 0x80) ? A1V : A1W) | ((opcode & 0x40) ? A2V : A2B));
     1387                                do_tok(buf, "SetToObject", ((opcode & 0x80) ? A1V : A1W) | ((opcode & 0x40) ? A2V : A2B) | ANOENDSEMICOLON);
    13821388                        break;
    13831389                case 0x17:
    1384                         buf = do_tok(buf, "BackColor", (opcode & 0x80) ? A1V : A1B);
     1390                        buf = do_tok(buf, "BackColor", (opcode & 0x80) ? A1V : A1B | ANOENDSEMICOLON);
    13851391                        break;
    13861392                default:
    13871393                        buf += sprintf(buf, "Invalid%.2X()", opcode);
    13881394                }
    13891395
    13901396        } while (1);
    1391         strecpy(buf, "])");
     1397        strecpy(buf, "]);");
    13921398}
    13931399
    13941400void do_print_ego(char *buf, byte opcode) {
     
    13971403        if (opcode == 0xD8) {
    13981404                buf = strecpy(buf, "printEgo([");
    13991405        } else {
    1400                 buf = do_tok(buf, "print", ((opcode & 0x80) ? A1V : A1B) | ANOLASTPAREN);
     1406                buf = do_tok(buf, "print", ((opcode & 0x80) ? A1V : A1B) | ANOLASTPAREN | ANOENDSEMICOLON);
    14011407                buf = strecpy(buf, ",[");
    14021408        }
    14031409
     
    14121418
    14131419                switch (opcode & 0x1f) {
    14141420                case 0x0:
    1415                         buf = do_tok(buf, "Pos", ((opcode & 0x80) ? A1V : A1W) | ((opcode & 0x40) ? A2V : A2W));
     1421                        buf = do_tok(buf, "Pos", ((opcode & 0x80) ? A1V : A1W) | ((opcode & 0x40) ? A2V : A2W) | ANOENDSEMICOLON);
    14161422                        break;
    14171423                case 0x1:
    1418                         buf = do_tok(buf, "Color", ((opcode & 0x80) ? A1V : A1B));
     1424                        buf = do_tok(buf, "Color", ((opcode & 0x80) ? A1V : A1B) | ANOENDSEMICOLON);
    14191425                        break;
    14201426                case 0x2:
    1421                         buf = do_tok(buf, "Clipped", ((opcode & 0x80) ? A1V : A1W));
     1427                        buf = do_tok(buf, "Clipped", ((opcode & 0x80) ? A1V : A1W) | ANOENDSEMICOLON);
    14221428                        break;
    14231429                case 0x3:
    1424                         buf = do_tok(buf, "RestoreBG", ((opcode & 0x80) ? A1V : A1W) | ((opcode & 0x40) ? A2V : A2W));
     1430                        buf = do_tok(buf, "RestoreBG", ((opcode & 0x80) ? A1V : A1W) | ((opcode & 0x40) ? A2V : A2W) | ANOENDSEMICOLON);
    14251431                        break;
    14261432                case 0x4:
    1427                         buf = do_tok(buf, "Center", 0);
     1433                        buf = do_tok(buf, "Center", ANOENDSEMICOLON);
    14281434                        break;
    14291435                case 0x6:
    14301436                        if (g_options.GF_UNBLOCKED)
    1431                                 buf = do_tok(buf, "Height", ((opcode & 0x80) ? A1V: A1W));
     1437                                buf = do_tok(buf, "Height", ((opcode & 0x80) ? A1V: A1W) | ANOENDSEMICOLON);
    14321438                        else
    1433                                 buf = do_tok(buf, "Left", 0);
     1439                                buf = do_tok(buf, "Left", ANOENDSEMICOLON);
    14341440                        break;
    14351441                case 0x7:
    1436                         buf = do_tok(buf, "Overhead", 0);
     1442                        buf = do_tok(buf, "Overhead", ANOENDSEMICOLON);
    14371443                        break;
    14381444                case 0x8:
    1439                         buf = do_tok(buf, "PlayCDTrack", ((opcode & 0x80) ? A1V : A1W) | ((opcode & 0x40) ? A2V : A2W));
     1445                        buf = do_tok(buf, "PlayCDTrack", ((opcode & 0x80) ? A1V : A1W) | ((opcode & 0x40) ? A2V : A2W) | ANOENDSEMICOLON);
    14401446                        break;
    14411447                case 0xF:{
    14421448                                buf = strecpy(buf, "Text(");
     
    17781784                do_tok(buf, "createBoxMatrix", 0);
    17791785                break;
    17801786        default:
    1781                 sprintf(buf, "SetBoxUnknown%.2X", opcode);
     1787                sprintf(buf, "SetBoxUnknown%.2X;", opcode);
    17821788        }
    17831789}
    17841790
     
    18531859                if (opcode & 0x80) {
    18541860                        char tmp[256];
    18551861                        get_var(tmp);
    1856                         buf += sprintf(buf, "cursorCommand(Hi(%s), Lo(%s))", tmp, tmp);
     1862                        buf += sprintf(buf, "cursorCommand(Hi(%s), Lo(%s));", tmp, tmp);
    18571863                } else {
    18581864                        int val = get_word();
    1859                         buf += sprintf(buf, "cursorCommand(%d, %d)", (val >> 8) & 0xFF, val & 0xFF);
     1865                        buf += sprintf(buf, "cursorCommand(%d, %d);", (val >> 8) & 0xFF, val & 0xFF);
    18601866                }
    18611867
    18621868                break;
    18631869        case 0x40:
    1864                 sprintf(buf, "cutscene");
     1870                sprintf(buf, "cutscene();");
    18651871                break;
    18661872        case 0xC0:
    1867                 sprintf(buf, "endCutscene");
     1873                sprintf(buf, "endCutscene();");
    18681874                break;
    18691875
    18701876        case 0x46:
     
    18791885                d |= get_byte() << 8;
    18801886                d |= get_byte() << 16;
    18811887                d = 0xFFFFFF - d;
    1882                 sprintf(buf, "delay(%d)", d);
     1888                sprintf(buf, "delay(%d);", d);
    18831889                break;
    18841890        }
    18851891
     
    19361942        case 0xEB:
    19371943        case 0xEE:
    19381944                //dummy
    1939                 sprintf(buf, "dummy(%.2X)", opcode);
     1945                sprintf(buf, "dummy(%.2X);", opcode);
    19401946
    19411947                break;
    19421948
     
    21392145                buf = get_var_or_byte(buf, (opcode & 0x80));
    21402146                buf += sprintf(buf, ",\"");
    21412147                do_decodeparsestring_v2(buf, opcode);
    2142                 strcat(buf, "\")");
     2148                strcat(buf, "\");");
    21432149                break;
    21442150        case 0xD8:
    21452151                //printEgo
    21462152                buf += sprintf(buf, "printEgo(\"");
    21472153                do_decodeparsestring_v2(buf, opcode);
    2148                 strcat(buf, "\")");
     2154                strcat(buf, "\");");
    21492155                break;
    21502156
    21512157        case 0xCC:
     
    25542560                d |= get_byte() << 8;
    25552561                d |= get_byte() << 16;
    25562562                d = 0xFFFFFF - d;
    2557                 sprintf(buf, "delay(%d)", d);
     2563                sprintf(buf, "delay(%d);", d);
    25582564                break;
    25592565        }
    25602566
     
    25712577                buf = get_var_or_byte(buf, (opcode & 0x80));
    25722578                buf += sprintf(buf, ",\"");
    25732579                do_decodeparsestring_v2(buf, opcode);
    2574                 strcat(buf, "\")");
     2580                strcat(buf, "\");");
    25752581                break;
    25762582        case 0x75:
    25772583                //printEgo
    25782584                buf += sprintf(buf, "printEgo(\"");
    25792585                do_decodeparsestring_v2(buf, opcode);
    2580                 strcat(buf, "\")");
     2586                strcat(buf, "\");");
    25812587                break;
    25822588        case 0x2E:
    25832589        case 0xAE:
     
    25862592                buf = get_var_or_byte(buf, (opcode & 0x80));
    25872593                buf += sprintf(buf, ",\"");
    25882594                do_decodeparsestring_v2(buf, opcode);
    2589                 strcat(buf, "\")");
     2595                strcat(buf, "\");");
    25902596                break;
    25912597        case 0x0D:
    25922598                //printEgo_c64
    25932599                buf += sprintf(buf, "printEgo_c64(\"");
    25942600                do_decodeparsestring_v2(buf, opcode);
    2595                 strcat(buf, "\")");
     2601                strcat(buf, "\");");
    25962602                break;
    25972603
    25982604        case 0x2D:
     
    26072613        case 0x6E:
    26082614        case 0xEE:
    26092615                //dummy
    2610                 sprintf(buf, "dummy%.2X()", opcode);
     2616                sprintf(buf, "dummy%.2X();", opcode);
    26112617                break;
    26122618
    26132619        case 0x86:
     
    29632969        case 0x85:
    29642970        case 0xC5:
    29652971                if (g_options.scriptVersion == 5) {
    2966                         buf = do_tok(buf, "drawObject", ((opcode & 0x80) ? A1V : A1W) | ANOLASTPAREN);
     2972                        buf = do_tok(buf, "drawObject", ((opcode & 0x80) ? A1V : A1W) | ANOLASTPAREN | ANOENDSEMICOLON);
    29672973                        opcode = get_byte();
    29682974                        switch (opcode & 0x1F) {
    29692975                        case 1:
    29702976                                do_tok(buf, ", setXY(",
    2971                                                          ANOLASTPAREN | ANOFIRSTPAREN | ((opcode & 0x80) ? A1V : A1W) |
     2977                                                         ANOLASTPAREN | ANOFIRSTPAREN | ANOENDSEMICOLON | ((opcode & 0x80) ? A1V : A1W) |
    29722978                                                         ((opcode & 0x40) ? A2V : A2W));
    29732979                                break;
    29742980                        case 2:
    2975                                 do_tok(buf, ", setImage(", ANOLASTPAREN | ANOFIRSTPAREN | ((opcode & 0x80) ? A1V : A1W));
     2981                                do_tok(buf, ", setImage(", ANOLASTPAREN | ANOFIRSTPAREN | ANOENDSEMICOLON | ((opcode & 0x80) ? A1V : A1W));
    29762982                                break;
    29772983                        }
    29782984                        strcat(buf, "));");
     
    33643370                        d = get_byte();
    33653371                        d |= get_byte() << 8;
    33663372                        d |= get_byte() << 16;
    3367                         sprintf(buf, "delay(%d)", d);
     3373                        sprintf(buf, "delay(%d);", d);
    33683374                        break;
    33693375                }
    33703376
     
    33843390                        int d;
    33853391                        d = get_byte();
    33863392                        if (d != 0)
    3387                                 sprintf(buf, "beginOverride");
     3393                                sprintf(buf, "beginOverride();");
    33883394                        else
    3389                                 sprintf(buf, "endOverride");
     3395                                sprintf(buf, "endOverride();");
    33903396                        break;
    33913397                }
    33923398
     
    36043610
    36053611        case 0xA7:
    36063612                if (g_options.scriptVersion == 5) {
    3607                         sprintf(buf, "dummy(%.2X)", opcode);
     3613                        sprintf(buf, "dummy(%.2X);", opcode);
    36083614                } else {
    36093615                        int d = get_byte();
    36103616                        buf += sprintf(buf, "saveLoadVars(");
     
    36423648                                        return;
    36433649                                }
    36443650                        }
    3645                         buf += sprintf(buf, ")");
     3651                        buf += sprintf(buf, ");");
    36463652                }
    36473653                break;
    36483654