home *** CD-ROM | disk | FTP | other *** search
/ hobbes.nmsu.edu 2008 / 2008-06-02_hobbes.nmsu.edu.zip / new / scummc-0.2.0-os2.zip / ScummC / src / scc_func.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-01-29  |  28.5 KB  |  1,130 lines

  1. /* ScummC
  2.  * Copyright (C) 2004-2006  Alban Bedel
  3.  *
  4.  * This program is free software; you can redistribute it and/or
  5.  * modify it under the terms of the GNU General Public License
  6.  * as published by the Free Software Foundation; either version 2
  7.  * of the License, or (at your option) any later version.
  8.  
  9.  * This program is distributed in the hope that it will be useful,
  10.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12.  * GNU General Public License for more details.
  13.  
  14.  * You should have received a copy of the GNU General Public License
  15.  * along with this program; if not, write to the Free Software
  16.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  17.  *
  18.  */
  19.  
  20. /**
  21.  * @file scc_func.h
  22.  * @ingroup scc
  23.  * @brief ScummC builtin functions
  24.  */
  25.  
  26. // A define for the various print function families
  27.  
  28. #define PRINT(name,op) {                         \
  29.     name "At", 0x##op##41, 0, 2, 0,      \
  30.     { SCC_FA_VAL, SCC_FA_VAL}                    \
  31.   },{                                            \
  32.     name "Color", 0x##op##42, 0, 1, 0,   \
  33.     { SCC_FA_VAL }                               \
  34.   },{                                            \
  35.     name "Clipped", 0x##op##43, 0, 1, 0, \
  36.     { SCC_FA_VAL }                               \
  37.   },{                                            \
  38.     name "Center", 0x##op##45, 0, 0, 0,  \
  39.     {}                                           \
  40.   },{                                            \
  41.     name "Left", 0x##op##47, 0, 0, 0,    \
  42.     {}                                           \
  43.   },{                                            \
  44.     name "Overhead", 0x##op##48, 0, 0, 0,\
  45.     {}                                           \
  46.   },{                                            \
  47.     name "Mumble", 0x##op##4A, 0, 0, 0,  \
  48.     {}                                           \
  49.   },{                                            \
  50.     name , 0x##op##4B, 0, 1, 0,          \
  51.     { SCC_FA_STR }                               \
  52.   },{                                            \
  53.     name "Begin", 0x##op##FE, 0, 0, 0,   \
  54.     {}                                           \
  55.   },{                                            \
  56.     name "End", 0x##op##FF, 0, 0, 0,     \
  57.     {} \
  58.   }
  59.  
  60. #define PRINT2(name,op) {                        \
  61.     name "At", 0x##op##41, 0, 2, 0,      \
  62.     { SCC_FA_VAL, SCC_FA_VAL}                    \
  63.   },{                                            \
  64.     name "Color", 0x##op##42, 0, 1, 0,   \
  65.     { SCC_FA_VAL }                               \
  66.   },{                                            \
  67.     name "Clipped", 0x##op##43, 0, 1, 0, \
  68.     { SCC_FA_VAL }                               \
  69.   },{                                            \
  70.     name "Center", 0x##op##45, 0, 0, 0,  \
  71.     {}                                           \
  72.   },{                                            \
  73.     name "Left", 0x##op##47, 0, 0, 0,    \
  74.     {}                                           \
  75.   },{                                            \
  76.     name "Overhead", 0x##op##48, 0, 0, 0,\
  77.     {}                                           \
  78.   },{                                            \
  79.     name "Mumble", 0x##op##4A, 0, 0, 0,  \
  80.     {}                                           \
  81.   },{                                            \
  82.     name , 0x##op##4B, 0, 1, 0,          \
  83.     { SCC_FA_STR }                               \
  84.   },{                                            \
  85.     name "Begin", 0x##op##FE, 0, 1, 0,   \
  86.     { SCC_FA_VAL }                               \
  87.   },{                                            \
  88.     name "End", 0x##op##FF, 0, 0, 0,     \
  89.     {} \
  90.   }
  91.  
  92. #define PRINT3(name,op) {                        \
  93.     name "At", 0x##op##41, 0, 2, 0,      \
  94.     { SCC_FA_VAL, SCC_FA_VAL}                    \
  95.   },{                                            \
  96.     name "Color", 0x##op##42, 0, 1, 0,   \
  97.     { SCC_FA_VAL }                               \
  98.   },{                                            \
  99.     name "Clipped", 0x##op##43, 0, 1, 0, \
  100.     { SCC_FA_VAL }                               \
  101.   },{                                            \
  102.     name "Center", 0x##op##45, 0, 0, 0,  \
  103.     {}                                           \
  104.   },{                                            \
  105.     name "Left", 0x##op##47, 0, 0, 0,    \
  106.     {}                                           \
  107.   },{                                            \
  108.     name "Overhead", 0x##op##48, 0, 0, 0,\
  109.     {}                                           \
  110.   },{                                            \
  111.     name "Mumble", 0x##op##4A, 0, 0, 0,  \
  112.     {}                                           \
  113.   },{                                            \
  114.     name , 0x##op##4B, 0, 1, 0,          \
  115.     { SCC_FA_STR }                               \
  116.   },{                                            \
  117.     name "End", 0x##op##FF, 0, 0, 0,     \
  118.     {} \
  119.   }
  120.  
  121. static scc_func_t scc_func_v6_v7[] = {
  122.   {
  123.     "startScript", 0x5E, 0, 3, 0,
  124.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_LIST }
  125.   },{
  126.     "startScript0", 0x5F, 0, 2, 0,
  127.     { SCC_FA_VAL, SCC_FA_LIST }
  128.   },{
  129.     "startObject", 0x60, 0, 4, 0,
  130.     // flags,     script,     entryp,     args
  131.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_LIST }
  132.   },{
  133.     "drawObject", 0x61, 0, 2, 0,
  134.     { SCC_FA_VAL, SCC_FA_VAL }
  135.   },{
  136.     "drawObjectAt", 0x62, 0, 3, 0,
  137.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL }
  138.   },{
  139. #if 0
  140.     "stopObjectCodeA", 0x65, 0, 0, 0,
  141.     {}
  142.   },{
  143.     "stopObjectCodeB", 0x66, 0, 0, 0,
  144.     {}
  145.   },{
  146. #endif
  147.     "endCutscene", 0x67, 0, 0, 0,
  148.     {}
  149.   },{
  150.     "beginCutscene", 0x68, 0, 1, 0,
  151.     { SCC_FA_LIST }
  152.   },{
  153.     "stopMusic", 0x69, 0, 0, 0,
  154.     {}
  155.   },{
  156.     "freezeUnfreeze", 0x6A, 0, 1, 0,
  157.     { SCC_FA_VAL }
  158.   },{
  159.  
  160.     "cursorOn",0x6B90, 0, 0, 0,
  161.     {}
  162.   },{
  163.     "cursorOff",0x6B91, 0, 0, 0,
  164.     {}
  165.   },{
  166.     "userPutOn",0x6B92, 0, 0, 0,
  167.     {}
  168.   },{
  169.     "userPutOff",0x6B93, 0, 0, 0,
  170.     {}
  171.   },{
  172.     "softCursorOn", 0x6B94, 0, 0, 0,
  173.     {}
  174.   },{
  175.     "softCursorOff", 0x6B95, 0, 0, 0,
  176.     {}
  177.   },{
  178.     "softUserPutOn", 0x6B96, 0, 0, 0,
  179.     {}
  180.   },{
  181.     "softUserPutOff", 0x6B97, 0, 0, 0,
  182.     {}
  183.   },{
  184.     "setCursorImage", 0x6B99, 0, 2, 0, // z
  185.     { SCC_FA_VAL, SCC_FA_VAL }
  186.   },{
  187.     "setCursorHotspot", 0x6B9A, 0, 2, 0,
  188.     { SCC_FA_VAL, SCC_FA_VAL }
  189.   },{
  190.     "initCharset", 0x6B9C, 0, 1, 0,
  191.     { SCC_FA_VAL }
  192.   },{
  193.     "setCharsetColors", 0x6B9D, 0, 1, 0,
  194.     { SCC_FA_LIST }
  195.   },{
  196.     "setCursorTransparency", 0x6BD6, 0, 1, 0,
  197.     { SCC_FA_VAL }
  198.  
  199.   },{
  200.     "breakScript", 0x6C, 0, 0, 0,
  201.     {}
  202.   },{
  203.     "isObjectOfClass", 0x6D, 1, 2, 0,
  204.     { SCC_FA_VAL, SCC_FA_LIST }
  205.   },{
  206.     "setObjectClass", 0x6E, 0, 2, 0,
  207.     { SCC_FA_VAL, SCC_FA_LIST }
  208.   },{
  209.     "getObjectState", 0x6F, 1, 1, 0,
  210.     { SCC_FA_VAL }
  211.   },{
  212.     "setObjectState", 0x70, 0, 2, 0,
  213.     { SCC_FA_VAL, SCC_FA_VAL }
  214.   },{
  215.     "setObjectOwner", 0x71, 0, 2, 0,
  216.     { SCC_FA_VAL, SCC_FA_VAL }
  217.   },{
  218.     "getObjectOwner", 0x72, 1, 1, 0,
  219.     { SCC_FA_VAL }
  220.   },{
  221.     "startSound", 0x74, 0, 1, 0,
  222.     { SCC_FA_VAL }
  223.   },{
  224.     "stopSound", 0x75, 0, 1, 0,
  225.     { SCC_FA_VAL }
  226.   },{
  227.     "startMusic", 0x76, 0, 1, 0,
  228.     { SCC_FA_VAL }
  229.   },{
  230.     "stopObjectScript", 0x77, 0, 1, 0,
  231.     { SCC_FA_VAL }
  232.   },{
  233.     "cameraFollowActor", 0x79, 0, 1, 0,
  234.     { SCC_FA_VAL }
  235.   },{
  236.     "startRoom", 0x7B, 0, 1, 0,
  237.     { SCC_FA_VAL }
  238.   },{
  239.     "stopScript", 0x7C, 0, 1, 0,
  240.     { SCC_FA_VAL }
  241.   },{
  242.     "walkActorToObj", 0x7D, 0, 3, 0,
  243.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL }
  244.   },{
  245.     "walkActorTo", 0x7E, 0, 3, 0,
  246.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL }
  247.   },{
  248.     "putActorAt", 0x7F, 0, 4, 0,
  249.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL|SCC_FA_DEFAULT },
  250.     { 0,          0,          0,          0xFF }
  251.   },{
  252.     "actorFace", 0x81, 0, 2, 0,
  253.     { SCC_FA_VAL, SCC_FA_VAL }
  254.   },{
  255.     "animateActor", 0x82, 0, 2, 0,
  256.     { SCC_FA_VAL, SCC_FA_VAL }
  257.   },{
  258.     "doSentence", 0x83, 0, 4, 0,
  259.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL }
  260.   },{
  261.     "getRandomNumber", 0x87, 1, 1, 0,
  262.     { SCC_FA_VAL }
  263.   },{
  264.     "getRandomNumberRange", 0x88, 1, 2, 0,
  265.     { SCC_FA_VAL, SCC_FA_VAL }
  266.   },{
  267.     "isActorMoving",0x8A, 1, 1, 0,
  268.     { SCC_FA_VAL }
  269.   },{
  270.     "isScriptRunning", 0x8B, 1, 1, 0,
  271.     { SCC_FA_VAL }
  272.   },{
  273.     "getActorRoom", 0x8C, 1, 1, 0,
  274.     { SCC_FA_VAL }
  275.   },{
  276.     "getObjectX", 0x8D, 1, 1, 0,
  277.     { SCC_FA_VAL }
  278.   },{
  279.     "getObjectY", 0x8E, 1, 1, 0,
  280.     { SCC_FA_VAL }
  281.   },{
  282.     "getObjectDir", 0x8F, 1, 1, 0,
  283.     { SCC_FA_VAL }
  284.   },{
  285.     "getActorWalkBox", 0x90, 1, 1, 0,
  286.     { SCC_FA_VAL }
  287.   },{
  288.     "getActorCostume", 0x91, 1, 1, 0,
  289.     { SCC_FA_VAL }
  290.   },{
  291.     "findInventory", 0x92, 1, 2, 0,
  292.     { SCC_FA_VAL, SCC_FA_VAL }
  293.   },{
  294.     "getInventoryCount", 0x93, 1, 1, 0,
  295.     { SCC_FA_VAL }
  296.   },{
  297.     "getVerbAt", 0x94, 1, 2, 0,
  298.     { SCC_FA_VAL, SCC_FA_VAL }
  299.   },{ // TODO: begin/endOverride
  300.  
  301.     // set the object name in the _newNames table.
  302.     "setObjectName", 0x97, 0, 2, 0,
  303.     { SCC_FA_VAL, SCC_FA_STR }
  304.   },{
  305.     "isSoundRunning", 0x98, 1, 1, 0,
  306.     { SCC_FA_VAL }
  307.   },{
  308.     "setBoxFlags", 0x99, 0, 2, 0,
  309.     { SCC_FA_LIST, SCC_FA_VAL }
  310.   },{
  311.     "createBoxMatrix", 0x9A, 0, 0, 0,
  312.     {}
  313.   },{
  314.  
  315.     "loadScript", 0x9B64, 0, 1, 0,
  316.     { SCC_FA_VAL }
  317.   },{
  318.     "loadSound", 0x9B65, 0, 1, 0,
  319.     { SCC_FA_VAL }
  320.   },{
  321.     "loadCostume", 0x9B66, 0, 1, 0,
  322.     { SCC_FA_VAL }
  323.   },{
  324.     "loadRoom", 0x9B67, 0, 1, 0,
  325.     { SCC_FA_VAL }
  326.   },{
  327.     "nukeScript", 0x9B68, 0, 1, 0,
  328.     { SCC_FA_VAL }
  329.   },{
  330.     "nukeSound", 0x9B69, 0, 1, 0,
  331.     { SCC_FA_VAL }
  332.   },{
  333.     "nukeCostume", 0x9B6A, 0, 1, 0,
  334.     { SCC_FA_VAL }
  335.   },{
  336.     "nukeRoom", 0x9B6B, 0, 1, 0,
  337.     { SCC_FA_VAL }
  338.   },{
  339.     "lockScript", 0x9B6C, 0, 1, 0,
  340.     { SCC_FA_VAL }
  341.   },{
  342.     "lockSound", 0x9B6D, 0, 1, 0,
  343.     { SCC_FA_VAL }
  344.   },{
  345.     "lockCostume", 0x9B6E, 0, 1, 0,
  346.     { SCC_FA_VAL }
  347.   },{
  348.     "lockRoom", 0x9B6F, 0, 1, 0,
  349.     { SCC_FA_VAL }
  350.   },{
  351.     "unlockScript", 0x9B70, 0, 1, 0,
  352.     { SCC_FA_VAL }
  353.   },{
  354.     "unlockSound", 0x9B71, 0, 1, 0,
  355.     { SCC_FA_VAL }
  356.   },{
  357.     "unlockCostume", 0x9B72, 0, 1, 0,
  358.     { SCC_FA_VAL }
  359.   },{
  360.     "unlockRoom", 0x9B73, 0, 1, 0,
  361.     { SCC_FA_VAL }
  362.   },{
  363.     "loadCharset", 0x9B75, 0, 1, 0,
  364.     { SCC_FA_VAL }
  365.   },{
  366.     "nukeCharset", 0x9B76, 0, 1, 0,
  367.     { SCC_FA_VAL }
  368.   },{
  369.     "loadFlObject", 0x9B77, 0, 2, 0,
  370.     { SCC_FA_VAL, SCC_FA_VAL }
  371.  
  372.   },{
  373.     "setRoomScroll", 0x9CAC, 0, 2, 0,
  374.     { SCC_FA_VAL, SCC_FA_VAL }
  375.   },{
  376.     "setScreen", 0x9CAE, 0, 2, 0,
  377.     { SCC_FA_VAL, SCC_FA_VAL }
  378.   },{
  379.     "setRoomColor", 0x9CAF, 0, 4, 0,
  380.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL }
  381.   },{
  382.     "setShakeOn", 0x9CB0, 0, 0, 0,
  383.     {}
  384.   },{
  385.     "setShakeOff", 0x9CB1, 0, 0, 0,
  386.     {}
  387.   },{
  388.     "setRoomIntensity", 0x9CB3, 0, 3, 0,
  389.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL }
  390.   },{
  391.     "saveLoadThing", 0x9CB4, 0, 2, 0,
  392.     { SCC_FA_VAL, SCC_FA_VAL }
  393.   },{
  394.     "screenEffect", 0x9CB5, 0, 1, 0,
  395.     { SCC_FA_VAL }
  396.   },{
  397.     "setRoomRGBIntensity", 0x9CB6, 0, 5, 0,
  398.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL }
  399.   },{
  400.     "setRoomShadow", 0x9CB7, 0, 5, 0,
  401.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL }
  402.   },{
  403.     "roomPalManipulate", 0x9CBA, 0, 4, 0,
  404.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL }
  405.   },{
  406.     "setRoomCycleDelay", 0x9CBB, 0, 2, 0,
  407.     { SCC_FA_VAL, SCC_FA_VAL }
  408.   },{
  409.     "setRoomPalette", 0x9CD5, 0, 1, 0,
  410.     { SCC_FA_VAL }
  411.   },{
  412.  
  413.     "setCurrentActor", 0x9DC5, 0, 1, 0,
  414.     { SCC_FA_VAL }
  415.   },{
  416.     "setActorCostume", 0x9D4C, 0, 1, 0,
  417.     { SCC_FA_VAL }
  418.   },{
  419.     "setActorWalkSpeed", 0x9D4D, 0, 2, 0,
  420.     { SCC_FA_VAL, SCC_FA_VAL }
  421.   },{
  422.     "setActorSounds", 0x9D4E, 0, 1, 0,
  423.     { SCC_FA_LIST }
  424.   },{
  425.     "setActorWalkFrame", 0x9D4F, 0, 1, 0,
  426.     { SCC_FA_VAL }
  427.   },{
  428.     "setActorTalkFrame", 0x9D50, 0, 2, 0,
  429.     { SCC_FA_VAL, SCC_FA_VAL }
  430.   },{
  431.     "setActorStandFrame", 0x9D51, 0, 1, 0,
  432.     { SCC_FA_VAL }
  433.   },{
  434. #if 0
  435.     // Dummy func in vm 0.6.1
  436.     "actorSet", 0x9D52, 0, 3, 0,
  437.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL }
  438.   },{
  439. #endif
  440.     "initActor", 0x9D53, 0, 0, 0,
  441.     {}
  442.   },{
  443.     "setActorElevation", 0x9D54, 0, 1, 0,
  444.     { SCC_FA_VAL }
  445.   },{
  446.     "setActorDefaultFrames", 0x9D55, 0, 0, 0,
  447.     {}
  448.   },{
  449.     "setActorPalette", 0x9D56, 0, 2, 0,
  450.     { SCC_FA_VAL, SCC_FA_VAL }
  451.   },{
  452.     "setActorTalkColor", 0x9D57, 0, 1, 0,
  453.     { SCC_FA_VAL }
  454.   },{
  455.     "setActorName", 0x9D58, 0, 1, 0,
  456.     { SCC_FA_STR }
  457.   },{
  458.     "setActorInitFrame", 0x9D59, 0, 1, 0,
  459.     { SCC_FA_VAL }
  460.   },{
  461.     "setActorWidth", 0x9D5B, 0, 1, 0,
  462.     { SCC_FA_VAL }
  463.   },{
  464.     "setActorScale", 0x9D5C, 0, 1, 0,
  465.     { SCC_FA_VAL }
  466.   },{
  467.     "actorNeverZClip", 0x9D5D, 0, 0, 0,
  468.     {}
  469.   },{
  470.     "setActorZClip", 0x9DE1, 0, 1, 0,
  471.     { SCC_FA_VAL }
  472.   },{
  473.     "setActorIgnoreBoxes", 0x9D5F, 0, 0, 0,
  474.     {}
  475.   },{
  476.     "setActorFollowBoxes", 0x9D60, 0, 0, 0,
  477.     {}
  478.   },{
  479.     "setActorAnimSpeed", 0x9D61, 0, 1, 0,
  480.     { SCC_FA_VAL }
  481.   },{
  482.     "setActorShadowMode", 0x9D62, 0, 1, 0,
  483.     { SCC_FA_VAL }
  484.   },{
  485.     "setActorTalkPos", 0x9D63, 0, 2, 0,
  486.     { SCC_FA_VAL, SCC_FA_VAL }
  487.   },{
  488.     "setActorAnimVar", 0x9DC6, 0, 2, 0,
  489.     { SCC_FA_VAL, SCC_FA_VAL }
  490.   },{
  491.     "setActorIgnoreTurnsOn", 0x9DD7, 0, 0, 0,
  492.     {}
  493.   },{
  494.     "setActorIgnoreTurnsOff", 0x9DD8, 0, 0, 0,
  495.     {}
  496.   },{
  497.     "initActorQuick", 0x9DD9, 0, 0, 0,
  498.     {}
  499.   },{
  500. #if 0
  501.     "actorDrawVirScr", 0x9DDA, 0, 0, 0,
  502.     {}
  503.   },{
  504. #endif
  505.     "setActorLayer", 0x9DE3, 0, 1, 0,
  506.     { SCC_FA_VAL }
  507.   },{
  508.     "setActorWalkScript", 0x9DE4, 0, 1, 0,
  509.     { SCC_FA_VAL }
  510.   },{
  511.     "setActorStanding", 0x9DE5, 0, 0, 0,
  512.     {}
  513.   },{
  514.     "setActorDirection", 0x9DE6, 0, 1, 0,
  515.     { SCC_FA_VAL }
  516.   },{
  517.     "actorTurnToDirection", 0x9DE7, 0, 1, 0,
  518.     { SCC_FA_VAL }
  519.   },{
  520.     "actorFreeze", 0x9DE9, 0, 0, 0,
  521.     {}
  522.   },{
  523.     "actorUnfreeze", 0x9DEA, 0, 0, 0,
  524.     {}
  525.   },{
  526.     "setActorTalkScript", 0x9DEB, 0, 1, 0,
  527.     { SCC_FA_VAL }
  528.   },{
  529.  
  530.     "setCurrentVerb", 0x9EC4, 0, 1, 0,
  531.     { SCC_FA_VAL }
  532.   },{
  533.     "setVerbImage", 0x9E7C, 0, 1, 0,
  534.     { SCC_FA_VAL }
  535.   },{
  536.     "setVerbName", 0x9E7D, 0, 1, 0,
  537.     { SCC_FA_STR }
  538.   },{
  539.     "setVerbColor", 0x9E7E, 0, 1, 0,
  540.     { SCC_FA_VAL }
  541.   },{
  542.     "setVerbHiColor", 0x9E7F, 0, 1, 0,
  543.     { SCC_FA_VAL }
  544.   },{
  545.     "setVerbXY", 0x9E80, 0, 2, 0,
  546.     { SCC_FA_VAL, SCC_FA_VAL }
  547.   },{
  548.     "setVerbOn", 0x9E81, 0, 0, 0,
  549.     {}
  550.   },{
  551.     "setVerbOff", 0x9E82, 0, 0, 0,
  552.     {}
  553.   },{
  554.     "killVerb", 0x9E83, 0, 0, 0,
  555.     {}
  556.   },{
  557.     "initVerb", 0x9E84, 0, 0, 0,
  558.     {}
  559.   },{
  560.     "setVerbDimColor", 0x9E85, 0, 1, 0,
  561.     { SCC_FA_VAL }
  562.   },{
  563.     "verbDim", 0x9E86, 0, 0, 0,
  564.     {}
  565.   },{
  566.     "setVerbKey", 0x9E87, 0, 1, 0,
  567.     { SCC_FA_VAL }
  568.   },{
  569.     "verbCenter", 0x9E88, 0, 0, 0,
  570.     {}
  571.   },{
  572.     "setVerbNameString", 0x9E89, 0, 1, 0,
  573.     { SCC_FA_VAL }
  574.   },{
  575.     "setVerbObject", 0x9E8B, 0, 2, 0,
  576.     { SCC_FA_VAL, SCC_FA_VAL }
  577.   },{
  578.     "setVerbBackColor", 0x9E8C, 0, 1, 0,
  579.     { SCC_FA_VAL }
  580.   },{
  581.     "redrawVerb", 0x9EFF, 0, 0, 0,
  582.     {}
  583.   },{
  584.  
  585.     "getActorAt", 0x9F, 1, 2, 0,
  586.     { SCC_FA_VAL, SCC_FA_VAL }
  587.   },{
  588.     "getObjectAt", 0xA0, 1, 2, 0,
  589.     { SCC_FA_VAL, SCC_FA_VAL }
  590.   },{
  591.     // This call allow to map the pseudo room index (idx > 0x7F) to
  592.     // real room id. This call set all pseudo index in the list point
  593.     // to VAL. idx < 0x80 are simply ignored.
  594.     "setPseudoRooms", 0xA1, 0, 2, 0,
  595.     { SCC_FA_VAL, SCC_FA_LIST }
  596.   },{
  597.     "getActorElevation", 0xA2, 1, 1, 0,
  598.     { SCC_FA_VAL }
  599.   },{
  600.     "getObjectVerbEntrypoint", 0xA3, 1, 2, 0,
  601.     { SCC_FA_VAL, SCC_FA_VAL }
  602.   },{
  603.  
  604.     "saveVerbs", 0xA58D, 0, 3, 0,
  605.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL }
  606.   },{
  607.     "restoreVerbs", 0xA58E, 0, 3, 0,
  608.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL }
  609.   },{
  610.     "deleteVerbs", 0xA58F, 0, 3, 0,
  611.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL }
  612.   },{
  613.  
  614.     "drawBox", 0xA6, 0, 5, 0,
  615.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL  }
  616.   },{
  617.     "getActorWidth", 0xA8, 1, 1, 0,
  618.     { SCC_FA_VAL }
  619.   },{
  620.  
  621.     "waitForActor", 0xA9A8, 0, 1, 1,
  622.     { SCC_FA_VAL, SCC_FA_SELF_OFF }
  623.   },{
  624.  
  625.     "waitForMessage", 0xA9A9, 0, 0, 0,
  626.     {}
  627.   },{
  628.     "waitForCamera", 0xA9AA, 0, 0, 0,
  629.     {}
  630.   },{
  631.     "waitForSentence", 0xA9AB, 0, 0, 0,
  632.     {}
  633.   },{
  634.     "waitForAnimation", 0xA9E2, 0, 1, 1,
  635.     { SCC_FA_VAL, SCC_FA_SELF_OFF }
  636.   },{
  637.     "waitForTurn", 0xA9E8, 0, 1, 1,
  638.     { SCC_FA_VAL, SCC_FA_SELF_OFF }
  639.   },{
  640.  
  641.     "getActorXScale", 0xAA, 1, 1, 0,
  642.     { SCC_FA_VAL }
  643.   },{
  644.     "getActorAnimCounter1", 0xAB, 1, 1, 0,
  645.     { SCC_FA_VAL }
  646.   },{
  647.  
  648.     // iMUSE
  649.     "soundKludge", 0xAC, 0, 1, 0,
  650.     { SCC_FA_LIST }
  651.   },{
  652.     "imSetMasterVolume", 0xAC, 0, 1, 1,
  653.     { SCC_FA_VAL, SCC_FA_OPC(0x0006) }
  654.   },{
  655.     "imGetMasterVolume", 0xAC, 0, 0, 1,
  656.     { SCC_FA_OPC(0x0007) }
  657.   },{
  658.     "imStartSound", 0xAC, 0, 1, 1,
  659.     { SCC_FA_VAL, SCC_FA_OPC(0x0008) }
  660.   },{
  661.     "imStopSound", 0xAC, 0, 1, 1,
  662.     { SCC_FA_VAL, SCC_FA_OPC(0x0009) }
  663.   },{
  664.     "imStopAllSounds", 0xAC, 0, 0, 1,
  665.     { SCC_FA_OPC(0x000A) }
  666.   },{
  667.     "imGetSoundStatus", 0xAC, 0, 1, 1,
  668.     { SCC_FA_VAL, SCC_FA_OPC(0x000D) }
  669.   },{
  670.     "imSetVolchan", 0xAC, 0, 2, 1,
  671.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_OPC(0x0010) }
  672.   },{
  673.     "imSetChannelVolume", 0xAC, 0, 2, 1,
  674.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_OPC(0x0011) }
  675.   },{
  676.     "imSetVolchanEntry", 0xAC, 0, 2, 1,
  677.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_OPC(0x0012) }
  678.   },{
  679.     "imClearTrigger", 0xAC, 0, 2, 1,
  680.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_OPC(0x0013) }
  681.   },{
  682.     "imPlayerGetParam", 0xAC, 0, 3, 1,
  683.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_OPC(0x0100) }
  684.   },{
  685.     "imPlayerSetPriority", 0xAC, 0, 2, 1,
  686.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_OPC(0x0101) }
  687.   },{
  688.     "imPlayerSetVolume", 0xAC, 0, 2, 1,
  689.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_OPC(0x0102) }
  690.   },{
  691.     "imPlayerSetPan", 0xAC, 0, 2, 1,
  692.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_OPC(0x0103) }
  693.   },{
  694.     "imPlayerSetTranspose", 0xAC, 0, 3, 1,
  695.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_OPC(0x0104) }
  696.   },{
  697.     "imPlayerSetDetune", 0xAC, 0, 2, 1,
  698.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_OPC(0x0105) }
  699.   },{
  700.     "imPlayerSetSpeed", 0xAC, 0, 2, 1,
  701.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_OPC(0x0106) }
  702.   },{
  703.     "imPlayerJump", 0xAC, 0, 4, 1,
  704.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_OPC(0x0107) }
  705.   },{
  706.     "imPlayerScan", 0xAC, 0, 4, 1,
  707.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_OPC(0x0108) }
  708.   },{
  709.     "imPlayerSetLoop", 0xAC, 0, 6, 1,
  710.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL,
  711.       SCC_FA_VAL, SCC_FA_VAL, SCC_FA_OPC(0x0109) }
  712.   },{
  713.     "imPlayerClearLoop", 0xAC, 0, 1, 1,
  714.     { SCC_FA_VAL, SCC_FA_OPC(0x010A) }
  715.   },{
  716.     "imPlayerSetOnOff", 0xAC, 0, 3, 1,
  717.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_OPC(0x010B) }
  718.   },{
  719.     "imPlayerSetHook", 0xAC, 0, 4, 1,
  720.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_OPC(0x010C) }
  721.   },{
  722.     "imPlayerFade", 0xAC, 0, 3, 1,
  723.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_OPC(0x010D) }
  724.   },{
  725.     "imQueueTrigger", 0xAC, 0, 2, 1,
  726.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_OPC(0x010E) }
  727.   },{
  728.     "imQueueCommand", 0xAC, 0, 7, 1,
  729.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, 
  730.       SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_OPC(0x010F) }
  731.   },{
  732.     "imClearQueue", 0xAC, 0, 0, 1,
  733.     { SCC_FA_OPC(0x0110) }
  734.   },{
  735.     "imPlayerGetParam", 0xAC, 0, 3, 1,
  736.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_OPC(0x0113) }
  737.   },{
  738.     "imPlayerSetPartVolume", 0xAC, 0, 3, 1,
  739.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_OPC(0x0116) }
  740.   },{
  741.     "imQueryQueue", 0xAC, 0, 1, 1,
  742.     { SCC_FA_VAL, SCC_FA_OPC(0x0117) }
  743.   },{
  744.  
  745.  
  746.     "isAnyOf", 0xAD, 1, 2, 0,
  747.     { SCC_FA_VAL, SCC_FA_LIST }
  748.   },{
  749.  
  750.     "restartGame", 0xAE9E, 0, 0, 0,
  751.     {}
  752.   },{
  753.     "pauseGame", 0xAE9F, 0, 0, 0,
  754.     {}
  755.   },{
  756.     "shutdown", 0xAEA0, 0, 0, 0,
  757.     {}
  758.   },{
  759.  
  760.     "isActorInBox", 0xAF, 1, 1, 0,
  761.     { SCC_FA_VAL, SCC_FA_VAL }
  762.   },{
  763.     "delay", 0xB0, 0, 1, 0,
  764.     { SCC_FA_VAL }
  765.   },{
  766.     "delaySeconds", 0xB1, 0, 1, 0,
  767.     { SCC_FA_VAL }
  768.   },{
  769.     "delayMinutes", 0xB2, 0, 1, 0,
  770.     { SCC_FA_VAL }
  771.   },{
  772.     "stopSentence", 0xB3,0, 0, 0,
  773.     {}
  774.   },
  775.   
  776.   PRINT("print",B4),
  777.   PRINT("cursorPrint",B5),
  778.   PRINT("dbgPrint",B6),
  779.   PRINT("sysPrint",B7),
  780.   PRINT2("actorPrint",B8),
  781.   PRINT3("egoPrint",B8),
  782.   
  783.   {
  784.     "egoPrintBegin" , 0xB9FE, 0, 0, 0,
  785.     {}
  786.   },{
  787.     "actorSay", 0xBA, 0, 2, 0,
  788.     { SCC_FA_VAL, SCC_FA_STR }
  789.   },{
  790.     "egoSay", 0xBB, 0, 1, 0,
  791.     { SCC_FA_STR }
  792.   },{
  793.     
  794.     // dim array
  795.     "dimInt", 0xBCC7, 0, 2, 0,
  796.     { SCC_FA_ARRAY, SCC_FA_VAL }
  797.   },{
  798.     "dimBit", 0xBCC8, 0, 2, 0,
  799.     { SCC_FA_ARRAY, SCC_FA_VAL }
  800.   },{
  801.     "dimNibble", 0xBCC9, 0, 2, 0,
  802.     { SCC_FA_ARRAY, SCC_FA_VAL }
  803.   },{
  804.     "dimByte", 0xBCCA, 0, 2, 0,
  805.     { SCC_FA_ARRAY, SCC_FA_VAL }
  806.   },{
  807.     "dimChar", 0xBCCB, 0, 2, 0,
  808.     { SCC_FA_ARRAY, SCC_FA_VAL }
  809.   },{
  810.     "undim", 0xBCCC, 0, 1, 0,
  811.     { SCC_FA_ARRAY }
  812.   },{
  813.  
  814.     // this one still need special care i think
  815.     "startObject2", 0xBE, 0, 3, 0,
  816.     // script,    entryp,     args
  817.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_LIST }
  818.   },{
  819.  
  820.     "startScript2", 0xBF, 0, 2, 0,
  821.     // script,    args
  822.     { SCC_FA_VAL, SCC_FA_LIST }
  823.   },{
  824.     
  825.     // dim2 array
  826.     "dimInt2", 0xC0C7, 0, 3, 0,
  827.     { SCC_FA_ARRAY, SCC_FA_VAL, SCC_FA_VAL }
  828.   },{
  829.     "dimBit2", 0xC0C8, 0, 3, 0,
  830.     { SCC_FA_ARRAY, SCC_FA_VAL, SCC_FA_VAL }
  831.   },{
  832.     "dimNibble2", 0xC0C9, 0, 3, 0,
  833.     { SCC_FA_ARRAY, SCC_FA_VAL, SCC_FA_VAL }
  834.   },{
  835.     "dimByte2", 0xC0CA, 0, 3, 0,
  836.     { SCC_FA_ARRAY, SCC_FA_VAL, SCC_FA_VAL }
  837.   },{
  838.     "dimChar2", 0xC0CB, 0, 3, 0,
  839.     { SCC_FA_ARRAY, SCC_FA_VAL, SCC_FA_VAL }
  840.   },{
  841.  
  842.     "trace", 0xC1, 0, 2, 0,
  843.     { SCC_FA_VAL, SCC_FA_STR }
  844.   },{
  845.     
  846.     "abs", 0xC4, 1, 1, 0,
  847.     { SCC_FA_VAL }
  848.   },{
  849.     "getDistObjObj", 0xC5, 1, 2, 0,
  850.     { SCC_FA_VAL, SCC_FA_VAL }
  851.   },{
  852.     "getDistObjPt", 0xC6, 1, 3, 0,
  853.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL }
  854.   },{
  855.     "getDistPtPt", 0xC7, 1, 4, 0,
  856.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL }
  857.   },{
  858.  
  859.     // kernelGet
  860.     "getPixel", 0xC8, 1, 2, 1,
  861.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_OPC(0x71) }
  862.   },{
  863.     "getSpecialBox", 0xC8, 1, 2, 1,
  864.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_OPC(0x73) }
  865.   },{
  866.     "isInBox", 0xC8, 1, 3, 1,
  867.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_OPC(0x74) }
  868.   },{
  869.     "getColor", 0xC8, 1, 3, 1,
  870.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_OPC(0xCE) }
  871.   },{
  872.     "getRoomObjectX", 0xC8, 1, 1, 1,
  873.     { SCC_FA_VAL, SCC_FA_OPC(0xCF) }
  874.   },{
  875.     "getRoomObjectY", 0xC8, 1, 1, 1,
  876.     { SCC_FA_VAL, SCC_FA_OPC(0xD0) }
  877.   },{
  878.     "getRoomObjectWidth", 0xC8, 1, 1, 1,
  879.     { SCC_FA_VAL, SCC_FA_OPC(0xD1) }
  880.   },{
  881.     "getRoomObjectHeight", 0xC8, 1, 1, 1,
  882.     { SCC_FA_VAL, SCC_FA_OPC(0xD2) }
  883.   },{
  884.     "getKeyState", 0xC8, 1, 1, 1,
  885.     { SCC_FA_VAL, SCC_FA_OPC(0xD3) }
  886.   },{
  887.     "getActorFrame", 0xC8, 1, 1, 1,
  888.     { SCC_FA_VAL, SCC_FA_OPC(0xD4) }
  889.   },{
  890.     "getVerbX", 0xC8, 1, 1, 1,
  891.     { SCC_FA_VAL, SCC_FA_OPC(0xD5) }
  892.   },{
  893.     "getVerbY", 0xC8, 1, 1, 1,
  894.     { SCC_FA_VAL, SCC_FA_OPC(0xD6) }
  895.   },{
  896.     "getBoxFlags", 0xC8, 1, 1, 1,
  897.     { SCC_FA_VAL, SCC_FA_OPC(0xD7) }
  898.   },{
  899.  
  900.     "breakXTimes", 0xCA, 0, 1, 0,
  901.     { SCC_FA_VAL }
  902.   },{
  903.     "pickOneOf", 0xCB, 1, 2, 0,
  904.     { SCC_FA_VAL, SCC_FA_LIST }
  905.   },{
  906.     "pickOneOfDefault", 0xCC, 1, 3, 0,
  907.     { SCC_FA_VAL, SCC_FA_LIST, SCC_FA_VAL }
  908.   },{
  909.     "stampObject", 0xCD, 0, 4, 0,
  910.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL }
  911.   },{
  912.     "getDateTime", 0xD0, 0, 0, 0,
  913.     {}
  914.   },{
  915.     "stopTalking", 0xD1,0, 0, 0,
  916.     {}
  917.   },{
  918.     "getActorAnimVar", 0xD2, 1, 2, 0,
  919.     { SCC_FA_VAL, SCC_FA_VAL }
  920.   },{
  921.     "shuffle", 0xD4, 0, 3, 0,
  922.     { SCC_FA_ARRAY, SCC_FA_VAL, SCC_FA_VAL }
  923.   },{
  924.     "jumpToScript", 0xD5, 0, 3, 0,
  925.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_LIST }
  926.   },{
  927.     "isRoomScriptRunning", 0xD8, 1, 1, 0,
  928.     { SCC_FA_VAL }
  929.   },{
  930.     "getRoomObjects", 0xDD, 1, 1, 0,
  931.     { SCC_FA_VAL }
  932.   },{
  933.     // this opcode check ground area in minigame "Asteroid Lander" in the dig
  934.     "unknownE1", 0xE1, 1, 1, 0,
  935.     { SCC_FA_VAL }
  936.   },{
  937. #if 0
  938.     // very strange func. First it look at the ptr, if the value there
  939.     // is 0 it then allocate an array at the same address and pick a
  940.     // random value out of it.
  941.     // If the value pointed to by the ptr is not 0, it's interpreted
  942.     // as an array address. The first value in this array is read as
  943.     // a string ressourse num. and finnaly some strange operation is
  944.     // done with the string and the array.
  945.     // need more investigation
  946.     "pickVarRandom", 0xE3, 1, 2, 0,
  947.     { SCC_FA_PTR, SCC_FA_LIST }
  948.   },{
  949.     // use an alternative box set, we can't generate such thing atm anyway.
  950.     "setBoxSet", 0xE4, 0, 1, 0,
  951.     { SCC_FA_VAL }
  952.   },{
  953. #endif
  954.     "getActorLayer", 0xEC, 1, 1, 0,
  955.     { SCC_FA_VAL }
  956.   },{
  957.     "getObjectNewDir", 0xED, 1, 1, 0,
  958.     { SCC_FA_VAL }
  959.  
  960.   },{
  961.     NULL, 0, 0, 0, 0, {}
  962.   }
  963. };
  964.  
  965. static scc_func_t scc_func_v6_only[] = {
  966.   {
  967.     "panCameraTo", 0x78, 0, 1, 0,
  968.     { SCC_FA_VAL }
  969.   },{
  970.     "setCameraAt", 0x7A, 0, 1, 0,
  971.     { SCC_FA_VAL }
  972.   },{
  973.     "putActorAtObject", 0x80, 0, 3, 0, // z
  974.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL }
  975.   },{
  976.     "pickupObject", 0x84, 0, 2, 0,  // z
  977.     { SCC_FA_VAL, SCC_FA_VAL }
  978.   },{
  979.     "startRoomWithEgo", 0x85, 0, 4, 0, // z
  980.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL }
  981.   },{
  982.  
  983.     // kernelSet
  984.     "grabCursor", 0xC9, 0, 4, 1,
  985.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_OPC(0x04) }
  986.   },{
  987.     "fadeOut", 0xC9, 0, 1, 1,
  988.     { SCC_FA_VAL, SCC_FA_OPC(0x05) }
  989.   },{
  990.     "fadeIn", 0xC9, 0, 1, 1,
  991.     { SCC_FA_VAL, SCC_FA_OPC(0x06) }
  992.   },{
  993. #if 0
  994.     "startManiac", 0xC9, 0, 0, 1,
  995.     { SCC_FA_OPC(0x08) }
  996.   },{
  997. #endif
  998.     "killAllScriptsExceptCurrent", 0xC9, 0, 0, 1,
  999.     { SCC_FA_OPC(0x09) }
  1000.   },{
  1001.     "nukeFlObjects", 0xC9, 0, 3, 1,
  1002.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_OPC(0x68) }
  1003.   },{
  1004.     "setActorScale", 0xC9, 0, 2, 1,
  1005.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_OPC(0x6B) }
  1006.   },{
  1007.     "setShadowPalette", 0xC9, 0, 5, 1,
  1008.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL,
  1009.       SCC_FA_VAL, SCC_FA_OPC(0x6C) }
  1010.   },{
  1011.     "clearCharsetMask", 0xC9, 0, 0, 1,
  1012.     { SCC_FA_OPC(0x6E) }
  1013.   },{
  1014.     "setActorShadowMode", 0xC9, 0, 3, 1,
  1015.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_OPC(0x6F) }
  1016.   },{
  1017.     "shiftShadowPalette", 0xC9, 0, 7, 1,
  1018.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL,
  1019.       SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_OPC(0x70) }
  1020.   },{
  1021.     "enqueueObject", 0xC9, 0, 8, 1,
  1022.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL,
  1023.       SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_OPC(0x77) }
  1024.   },{
  1025.     "swapColors", 0xC9, 0, 2, 1,
  1026.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_OPC(0x78) }
  1027.   },{
  1028.     "copyColor", 0xC9, 0, 2, 1,
  1029.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_OPC(0x7B) }
  1030.   },{
  1031.     "saveSound", 0xC9, 0, 1, 1,
  1032.     { SCC_FA_VAL, SCC_FA_OPC(0x7C) }
  1033.   },{
  1034.  
  1035.     NULL, 0, 0, 0, 0, {}
  1036.   }
  1037. };
  1038.  
  1039.  
  1040. static scc_func_t scc_func_v7_only[] = {
  1041.   {
  1042.     "panCameraTo", 0x78, 0, 2, 0,
  1043.     { SCC_FA_VAL, SCC_FA_VAL }
  1044.   },{
  1045.     "setCameraAt", 0x7A, 0, 2, 0,
  1046.     { SCC_FA_VAL, SCC_FA_VAL }
  1047.   },{
  1048.     "putActorAtObject", 0x80, 0, 2, 0, // z
  1049.     { SCC_FA_VAL, SCC_FA_VAL }
  1050.   },{
  1051.     "pickupObject", 0x84, 0, 1, 0,  // z
  1052.     { SCC_FA_VAL }
  1053.   },{
  1054.     "startRoomWithEgo", 0x85, 0, 3, 0, // z
  1055.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL }
  1056.   },{
  1057.  
  1058.     // kernelSet
  1059.     "grabCursor", 0xC9, 0, 4, 1,
  1060.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_OPC(0x04) }
  1061.   },{
  1062.     "smushPlay", 0xC9, 0, 0, 1,
  1063.     { SCC_FA_OPC(0x06) },
  1064.   },{
  1065.     "setCursorFromImage", 0xC9, 0, 2, 1,
  1066.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_OPC(0x0C) }
  1067.   },{
  1068.     "remapActorPalette", 0xC9, 0, 4, 1,
  1069.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_OPC(0x0D) }
  1070.   },{
  1071.     "remapActorPalette2", 0xC9, 0, 5, 1,
  1072.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL,
  1073.       SCC_FA_VAL, SCC_FA_VAL, SCC_FA_OPC(0x0E) }
  1074.   },{
  1075.     "setSmushFrameRate", 0xC9, 0, 1, 1,
  1076.     { SCC_FA_VAL, SCC_FA_OPC(0x0F) }
  1077.   },{
  1078.     "enqueueText", 0xC9, 0, 4, 1, // VAR_STRING2DRAW
  1079.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_OPC(0x10) }
  1080.   },{
  1081.     "enqueueText2", 0xC9, 0, 4, 1, // VAR_STRING2DRAW
  1082.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_OPC(0x11) }
  1083.   },{
  1084.     "setActorScale", 0xC9, 0, 2, 1,
  1085.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_OPC(0x6B) }
  1086.   },{
  1087.     "setShadowPalette", 0xC9, 0, 6, 1,
  1088.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL,
  1089.       SCC_FA_VAL, SCC_FA_VAL, SCC_FA_OPC(0x6C) }
  1090.   },{
  1091.     "setShadowPalette2", 0xC9, 0, 6, 1,
  1092.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL,
  1093.       SCC_FA_VAL, SCC_FA_OPC(0x6D) }
  1094.   },{
  1095.     // 0x72 is a stub in scummvm 0.10.0
  1096.     "-freezeScripts2", 0xC9, 0, 0, 1,
  1097.     { SCC_FA_OPC(0x75) }
  1098.   },{
  1099.     "enqueueObject", 0xC9, 0, 8, 1,
  1100.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL,
  1101.       SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_OPC(0x76) }
  1102.   },{
  1103.     "enqueueObject2", 0xC9, 0, 8, 1,
  1104.     { SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL,
  1105.       SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_VAL, SCC_FA_OPC(0x77) }
  1106.   },{
  1107.     "saveSound", 0xC9, 0, 1, 1,
  1108.     { SCC_FA_VAL, SCC_FA_OPC(0x7C) }
  1109.   },{
  1110.     "enableSubtitles", 0xC9, 0, 1, 1,
  1111.     { SCC_FA_VAL, SCC_FA_OPC(0xD7) }
  1112.   },{
  1113.  
  1114.     NULL, 0, 0, 0, 0, {}
  1115.   }
  1116. };
  1117.  
  1118. static scc_func_t* scc_func_v6[] = {
  1119.     scc_func_v6_v7,
  1120.     scc_func_v6_only,
  1121.     NULL
  1122. };
  1123.  
  1124. static scc_func_t* scc_func_v7[] = {
  1125.     scc_func_v6_v7,
  1126.     scc_func_v7_only,
  1127.     NULL
  1128. };
  1129.  
  1130.