Difference between revisions of "Opcodes Restoration Project"
(Created page with "The '''Opcodes Restoration Project''' is a plugin for CLEO v2.0.0.3 and above for GTA III and Vice City that aims to restore functionality to many List of unsupp...") |
(mention that SB already has these opcodes) |
||
(17 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
− | The '''Opcodes Restoration Project''' is a plugin for [[CLEO]] v2.0.0. | + | The '''Opcodes Restoration Project''' is a plugin for [[CLEO]] v2.0.0.5 and above for [[GTA III]] and [[Vice City]] that aims to restore functionality to many [[List of unsupported opcodes|unsupported opcodes]]. Only US v1.0 has been thoroughly tested for both games. US v1.1 and Steam versions of Vice City are supported but they have not been tested. |
== Files == | == Files == | ||
− | *[ | + | *[http://spaceeinstein.altervista.org/III.Opcodes.cleo III.Opcodes.cleo]: The plugin for GTA III. Place in III\CLEO\CLEO_PLUGINS. |
− | *[https://raw.githubusercontent.com/ | + | *[http://spaceeinstein.altervista.org/VC.Opcodes.cleo VC.Opcodes.cleo]: The plugin for Vice City. Place in VC\CLEO\CLEO_PLUGINS. |
− | *[https://raw.githubusercontent.com/ | + | *[https://raw.githubusercontent.com/cleolibrary/opcodes-restoration-project/master/test_scripts/III.OpcodesTest.cs III.OpcodesTest.cs]: The test script for the plugin for GTA III. Place in III\CLEO. |
− | *[https://raw.githubusercontent.com/ | + | *[https://raw.githubusercontent.com/cleolibrary/opcodes-restoration-project/master/test_scripts/III.OpcodesTest.txt III.OpcodesTest.txt]: The source code for the test script for GTA III. |
− | *[https://raw.githubusercontent.com/ | + | *[https://raw.githubusercontent.com/cleolibrary/opcodes-restoration-project/master/test_scripts/VC.OpcodesTest.cs VC.OpcodesTest.cs]: The test script for the plugin for Vice City. Place in VC\CLEO. |
− | *[https://raw.githubusercontent.com/ | + | *[https://raw.githubusercontent.com/cleolibrary/opcodes-restoration-project/master/test_scripts/VC.OpcodesTest.txt VC.OpcodesTest.txt]: The source code for the test script for Vice City. |
+ | *[https://raw.githubusercontent.com/cleolibrary/opcodes-restoration-project/master/scm.txt scm.txt]: Let [[Sanny Builder]] recognize the new opcodes. Add onto [[Sanny Builder/SCM.INI|SCM.INI]] in SB\data\gta3 and [[Sanny Builder/VCSCM.INI|VCSCM.INI]] in SB\data\vc{{note|*}}. | ||
+ | *[https://raw.githubusercontent.com/cleolibrary/opcodes-restoration-project/master/opcodes.txt opcodes.txt]: For reference. Add onto opcodes.txt in SB\data\gta3 and SB\data\vc. | ||
− | == Vice City == | + | {{ref|*}} As of v3.7 Sanny Builder ships these opcodes as the [https://docs.sannybuilder.com/edit-modes/extension Restoration extension] in the Vice City mode. |
− | This is a list of | + | |
+ | == Building == | ||
+ | You can rebuild the plugin for yourself if you want to. Use git (e.g. through [https://desktop.github.com/ Git Shell]) to clone the repository and the submodules. | ||
+ | <pre>git clone --recursive https://github.com/cleolibrary/opcodes-restoration-project</pre> | ||
+ | |||
+ | Run <code>premake5.bat</code> to generate project files for Microsoft Visual Studio 2015. If you use a different version of Visual Studio, open the file with a text editor and change vs2015 to your preferred version. A folder named <code>build</code> is created with the generated project files. Open <code>build\opcodes-restoration-project.sln</code>, change the active solution configuration to <code>Release</code>, then build <code>III.Opcodes</code> or <code>VC.Opcodes</code>. The plugin will be located in <code>bin\CLEO\CLEO_PLUGINS</code>. | ||
+ | |||
+ | == Restored opcodes == | ||
+ | === GTA III === | ||
+ | This is a list of opcodes that have been restored and extended in GTA III. | ||
+ | {|class="wikitable mw-collapsible mw-collapsed sortable" | ||
+ | !Opcode ||Command name ||Notes | ||
+ | |- | ||
+ | |[[0116]] ||IS_<wbr>PLAYER_<wbr>STILL_<wbr>ALIVE || | ||
+ | |- | ||
+ | |01E6 ||PRINT_<wbr>WITH_<wbr>NUMBER_<wbr>SOON || | ||
+ | |- | ||
+ | |[[02BD]] ||SET_<wbr>FBI_<wbr>REQUIRED || | ||
+ | |- | ||
+ | |[[02BE]] ||SET_<wbr>ARMY_<wbr>REQUIRED || | ||
+ | |- | ||
+ | |0301 ||PRINT_<wbr>WITH_<wbr>3_<wbr>NUMBERS_<wbr>SOON || | ||
+ | |- | ||
+ | |0304 ||PRINT_<wbr>WITH_<wbr>4_<wbr>NUMBERS_<wbr>SOON || | ||
+ | |- | ||
+ | |0307 ||PRINT_<wbr>WITH_<wbr>5_<wbr>NUMBERS_<wbr>SOON || | ||
+ | |- | ||
+ | |030A ||PRINT_<wbr>WITH_<wbr>6_<wbr>NUMBERS_<wbr>SOON || | ||
+ | |- | ||
+ | |0385 ||PRINT_<wbr>STRING_<wbr>IN_<wbr>STRING_<wbr>SOON || | ||
+ | |- | ||
+ | |048F ||REMOVE_<wbr>ALL_<wbr>CHAR_<wbr>WEAPONS || | ||
+ | |- | ||
+ | |[[050F]] ||GET_<wbr>MAX_<wbr>WANTED_<wbr>LEVEL || | ||
+ | |- | ||
+ | |0511 ||PRINT_<wbr>HELP_<wbr>WITH_<wbr>NUMBER || | ||
+ | |- | ||
+ | |[[0546]] ||IS_<wbr>PLAYER_<wbr>TOUCHING_<wbr>VEHICLE || | ||
+ | |- | ||
+ | |0547 ||IS_<wbr>CHAR_<wbr>TOUCHING_<wbr>VEHICLE || | ||
+ | |} | ||
+ | |||
+ | === Vice City === | ||
+ | This is a list of over 170 opcodes that have been restored in Vice City. The "non-plugin alternative" column offers an equivalent or closely similar behavior of the opcode independent of the plugin. | ||
{|class="wikitable center-col-3 mw-collapsible mw-collapsed sortable" | {|class="wikitable center-col-3 mw-collapsible mw-collapsed sortable" | ||
!Opcode ||Command name ||Non-plugin<br>alternative ||Notes | !Opcode ||Command name ||Non-plugin<br>alternative ||Notes | ||
Line 17: | Line 62: | ||
|- | |- | ||
|[[00AC]] ||IS_<wbr>CAR_<wbr>STILL_<wbr>ALIVE ||✓ ||Exactly the same as [[0119|8119]] | |[[00AC]] ||IS_<wbr>CAR_<wbr>STILL_<wbr>ALIVE ||✓ ||Exactly the same as [[0119|8119]] | ||
+ | |- | ||
+ | |00BD ||PRINT_<wbr>SOON || || | ||
|- | |- | ||
|[[00C5]] ||RETURN_<wbr>TRUE ||✓ ||Same as [[0485]] for most versions | |[[00C5]] ||RETURN_<wbr>TRUE ||✓ ||Same as [[0485]] for most versions | ||
Line 32: | Line 79: | ||
|[[0135]] ||CHANGE_<wbr>CAR_<wbr>LOCK ||✓ ||Exactly the same as [[020A]] | |[[0135]] ||CHANGE_<wbr>CAR_<wbr>LOCK ||✓ ||Exactly the same as [[020A]] | ||
|- | |- | ||
− | |[[0136]] ||SHAKE_<wbr>CAM_<wbr>WITH_<wbr>POINT || || | + | |[[0136]] ||SHAKE_<wbr>CAM_<wbr>WITH_<wbr>POINT ||✓ ||CLEO [[0136#For Vice City|code snippet]] alternative |
|- | |- | ||
|013B ||IS_<wbr>CAR_<wbr>DEAD_<wbr>IN_<wbr>AREA_<wbr>2D || || | |013B ||IS_<wbr>CAR_<wbr>DEAD_<wbr>IN_<wbr>AREA_<wbr>2D || || | ||
Line 45: | Line 92: | ||
|- | |- | ||
|[[0163]] ||ADD_<wbr>BLIP_<wbr>FOR_<wbr>OBJECT_<wbr>OLD || || | |[[0163]] ||ADD_<wbr>BLIP_<wbr>FOR_<wbr>OBJECT_<wbr>OLD || || | ||
+ | |- | ||
+ | |016F ||DRAW_<wbr>SHADOW || || | ||
|- | |- | ||
|[[0178]] ||IS_<wbr>PLAYER_<wbr>TOUCHING_<wbr>OBJECT || || | |[[0178]] ||IS_<wbr>PLAYER_<wbr>TOUCHING_<wbr>OBJECT || || | ||
Line 52: | Line 101: | ||
|[[017B]] ||SET_<wbr>CHAR_<wbr>AMMO ||✓ ||CLEO [[017B#For Vice City|code snippet]] alternative | |[[017B]] ||SET_<wbr>CHAR_<wbr>AMMO ||✓ ||CLEO [[017B#For Vice City|code snippet]] alternative | ||
|- | |- | ||
− | |[[01C6]] ||DONT_<wbr>REMOVE_<wbr>CAR || || | + | |[[01C6]] ||DONT_<wbr>REMOVE_<wbr>CAR ||✓ ||CLEO [[01C6#For Vice City|code snippet]] alternative |
+ | |- | ||
+ | |01E6 ||PRINT_<wbr>WITH_<wbr>NUMBER_<wbr>SOON || || | ||
+ | |- | ||
+ | |[[01EE]] ||ACTIVATE_<wbr>CRANE || || | ||
|- | |- | ||
− | |0218 ||PRINT_<wbr>WITH_<wbr>NUMBER_<wbr>BIG_<wbr>Q || || | + | |[[01EF]] ||DEACTIVATE_<wbr>CRANE || || |
+ | |- | ||
+ | |[[0218]] ||PRINT_<wbr>WITH_<wbr>NUMBER_<wbr>BIG_<wbr>Q || || | ||
|- | |- | ||
|[[021D]] ||SET_<wbr>FREE_<wbr>BOMBS ||✓ ||CLEO [[021D#For Vice City|code snippet]] alternative | |[[021D]] ||SET_<wbr>FREE_<wbr>BOMBS ||✓ ||CLEO [[021D#For Vice City|code snippet]] alternative | ||
Line 67: | Line 122: | ||
|- | |- | ||
|[[023B]] ||IS_<wbr>CHAR_<wbr>TOUCHING_<wbr>OBJECT_<wbr>ON_<wbr>FOOT || || | |[[023B]] ||IS_<wbr>CHAR_<wbr>TOUCHING_<wbr>OBJECT_<wbr>ON_<wbr>FOOT || || | ||
+ | |- | ||
+ | |023E ||FLASH_<wbr>CAR || || | ||
+ | |- | ||
+ | |023F ||FLASH_<wbr>CHAR || || | ||
+ | |- | ||
+ | |0240 ||FLASH_<wbr>OBJECT || || | ||
|- | |- | ||
|[[0242]] ||ARM_<wbr>CAR_<wbr>WITH_<wbr>BOMB ||✓ ||CLEO [[0242#For Vice City|code snippet]] alternative | |[[0242]] ||ARM_<wbr>CAR_<wbr>WITH_<wbr>BOMB ||✓ ||CLEO [[0242#For Vice City|code snippet]] alternative | ||
Line 75: | Line 136: | ||
|- | |- | ||
|[[024D]] ||HAS_<wbr>PHONE_<wbr>DISPLAYED_<wbr>MESSAGE || || | |[[024D]] ||HAS_<wbr>PHONE_<wbr>DISPLAYED_<wbr>MESSAGE || || | ||
+ | |- | ||
+ | |0250 ||DRAW_<wbr>LIGHT || || | ||
+ | |- | ||
+ | |[[0251]] ||STORE_<wbr>WEATHER || || | ||
+ | |- | ||
+ | |[[0252]] ||RESTORE_<wbr>WEATHER || || | ||
|- | |- | ||
|[[0255]] ||RESTART_<wbr>CRITICAL_<wbr>MISSION || || | |[[0255]] ||RESTART_<wbr>CRITICAL_<wbr>MISSION || || | ||
Line 81: | Line 148: | ||
|- | |- | ||
|[[0299]] ||ACTIVATE_<wbr>GARAGE ||✓ ||CLEO [[0299#For Vice City|code snippet]] alternative | |[[0299]] ||ACTIVATE_<wbr>GARAGE ||✓ ||CLEO [[0299#For Vice City|code snippet]] alternative | ||
+ | |- | ||
+ | |029A ||SWITCH_<wbr>TAXI_<wbr>TIMER || || | ||
|- | |- | ||
|[[029C]] ||IS_<wbr>BOAT || || | |[[029C]] ||IS_<wbr>BOAT || || | ||
|- | |- | ||
|[[02A0]] ||IS_<wbr>CHAR_<wbr>STOPPED || || | |[[02A0]] ||IS_<wbr>CHAR_<wbr>STOPPED || || | ||
+ | |- | ||
+ | |02A1 ||MESSAGE_<wbr>WAIT || || | ||
+ | |- | ||
+ | |02A2 ||ADD_<wbr>PARTICLE_<wbr>EFFECT || || | ||
|- | |- | ||
|[[02A4]] ||ADD_<wbr>SPRITE_<wbr>BLIP_<wbr>FOR_<wbr>CAR || || | |[[02A4]] ||ADD_<wbr>SPRITE_<wbr>BLIP_<wbr>FOR_<wbr>CAR || || | ||
Line 99: | Line 172: | ||
|- | |- | ||
|[[02BE]] ||SET_<wbr>ARMY_<wbr>REQUIRED || || | |[[02BE]] ||SET_<wbr>ARMY_<wbr>REQUIRED || || | ||
+ | |- | ||
+ | |[[02C3]] ||START_<wbr>PACMAN_<wbr>RACE || ||Model and coordinates can be modified through a file named <code>pacman.dat</code> | ||
+ | |- | ||
+ | |[[02C5]] ||GET_<wbr>NUMBER_<wbr>OF_<wbr>POWER_<wbr>PILLS_<wbr>EATEN || || | ||
+ | |- | ||
+ | |[[02C6]] ||CLEAR_<wbr>PACMAN || || | ||
+ | |- | ||
+ | |[[02C7]] ||START_<wbr>PACMAN_<wbr>SCRAMBLE || ||Model can be modified through a file named <code>pacman.dat</code> | ||
+ | |- | ||
+ | |[[02C8]] ||GET_<wbr>NUMBER_<wbr>OF_<wbr>POWER_<wbr>PILLS_<wbr>CARRIED || || | ||
+ | |- | ||
+ | |[[02C9]] ||CLEAR_<wbr>NUMBER_<wbr>OF_<wbr>POWER_<wbr>PILLS_<wbr>CARRIED || || | ||
+ | |- | ||
+ | |02CD ||GOSUB_<wbr>FILE || || | ||
+ | |- | ||
+ | |02D2 ||SET_<wbr>COMEDY_<wbr>CONTROLS || || | ||
|- | |- | ||
|[[02D6]] ||IS_<wbr>CHAR_<wbr>SHOOTING_<wbr>IN_<wbr>AREA || || | |[[02D6]] ||IS_<wbr>CHAR_<wbr>SHOOTING_<wbr>IN_<wbr>AREA || || | ||
|- | |- | ||
− | |02EE ||IS_<wbr>PROJECTILE_<wbr>IN_<wbr>AREA || || | + | |[[02D9]] ||CLEAR_<wbr>NUMBER_<wbr>OF_<wbr>POWER_<wbr>PILLS_<wbr>EATEN || || |
+ | |- | ||
+ | |[[02DA]] ||ADD_<wbr>POWER_<wbr>PILL || || | ||
+ | |- | ||
+ | |[[02EE]] ||IS_<wbr>PROJECTILE_<wbr>IN_<wbr>AREA || || | ||
+ | |- | ||
+ | |[[02EF]] ||DESTROY_<wbr>PROJECTILES_<wbr>IN_<wbr>AREA || || | ||
|- | |- | ||
|[[02F0]] ||DROP_<wbr>MINE ||✓ ||Similar to [[0213]] with model <code>barrel1</code> type 9 | |[[02F0]] ||DROP_<wbr>MINE ||✓ ||Similar to [[0213]] with model <code>barrel1</code> type 9 | ||
|- | |- | ||
|[[02F1]] ||DROP_<wbr>NAUTICAL_<wbr>MINE ||✓ ||Similar to [[0213]] with model <code>barrel2</code> type 11 | |[[02F1]] ||DROP_<wbr>NAUTICAL_<wbr>MINE ||✓ ||Similar to [[0213]] with model <code>barrel2</code> type 11 | ||
+ | |- | ||
+ | |[[02FB]] ||ACTIVATE_<wbr>CRUSHER_<wbr>CRANE || || | ||
|- | |- | ||
|02FC ||PRINT_<wbr>WITH_<wbr>2_<wbr>NUMBERS || || | |02FC ||PRINT_<wbr>WITH_<wbr>2_<wbr>NUMBERS || || | ||
+ | |- | ||
+ | |02FE ||PRINT_<wbr>WITH_<wbr>2_<wbr>NUMBERS_<wbr>SOON || || | ||
|- | |- | ||
|0300 ||PRINT_<wbr>WITH_<wbr>3_<wbr>NUMBERS_<wbr>NOW || || | |0300 ||PRINT_<wbr>WITH_<wbr>3_<wbr>NUMBERS_<wbr>NOW || || | ||
+ | |- | ||
+ | |0301 ||PRINT_<wbr>WITH_<wbr>3_<wbr>NUMBERS_<wbr>SOON || || | ||
|- | |- | ||
|0303 ||PRINT_<wbr>WITH_<wbr>4_<wbr>NUMBERS_<wbr>NOW || || | |0303 ||PRINT_<wbr>WITH_<wbr>4_<wbr>NUMBERS_<wbr>NOW || || | ||
+ | |- | ||
+ | |0304 ||PRINT_<wbr>WITH_<wbr>4_<wbr>NUMBERS_<wbr>SOON || || | ||
|- | |- | ||
|0305 ||PRINT_<wbr>WITH_<wbr>5_<wbr>NUMBERS || || | |0305 ||PRINT_<wbr>WITH_<wbr>5_<wbr>NUMBERS || || | ||
|- | |- | ||
|0306 ||PRINT_<wbr>WITH_<wbr>5_<wbr>NUMBERS_<wbr>NOW || || | |0306 ||PRINT_<wbr>WITH_<wbr>5_<wbr>NUMBERS_<wbr>NOW || || | ||
+ | |- | ||
+ | |0307 ||PRINT_<wbr>WITH_<wbr>5_<wbr>NUMBERS_<wbr>SOON || || | ||
|- | |- | ||
|0309 ||PRINT_<wbr>WITH_<wbr>6_<wbr>NUMBERS_<wbr>NOW || || | |0309 ||PRINT_<wbr>WITH_<wbr>6_<wbr>NUMBERS_<wbr>NOW || || | ||
|- | |- | ||
− | | | + | |030A ||PRINT_<wbr>WITH_<wbr>6_<wbr>NUMBERS_<wbr>SOON || || |
|- | |- | ||
− | |031C ||IS_<wbr>SECOND_<wbr>CAR_<wbr>COLOUR || || | + | |[[031B]] ||IS_<wbr>FIRST_<wbr>CAR_<wbr>COLOUR ||✓ ||CLEO [[031B#For Vice City|code snippet]] alternative |
+ | |- | ||
+ | |[[031C]] ||IS_<wbr>SECOND_<wbr>CAR_<wbr>COLOUR ||✓ ||CLEO [[031C#For Vice City|code snippet]] alternative | ||
|- | |- | ||
|[[032D]] ||SET_<wbr>CAR_<wbr>BLOCK_<wbr>CAR || ||Has the same bug as GTA III | |[[032D]] ||SET_<wbr>CAR_<wbr>BLOCK_<wbr>CAR || ||Has the same bug as GTA III | ||
+ | |- | ||
+ | |0338 ||SET_<wbr>CAR_<wbr>VISIBLE || || | ||
+ | |- | ||
+ | |[[0344]] ||SET_<wbr>TEXT_<wbr>CENTRE_<wbr>SIZE || || | ||
+ | |- | ||
+ | |[[0346]] ||SET_<wbr>TEXT_<wbr>BACKGROUND_<wbr>COLOUR || || | ||
+ | |- | ||
+ | |[[0349]] ||SET_<wbr>TEXT_<wbr>FONT || || | ||
|- | |- | ||
|0351 ||IS_<wbr>NASTY_<wbr>GAME || || | |0351 ||IS_<wbr>NASTY_<wbr>GAME || || | ||
Line 134: | Line 249: | ||
|[[0367]] ||START_<wbr>KILL_<wbr>FRENZY_<wbr>HEADSHOT ||✓ ||CLEO [[0367#For Vice City|code snippet]] alternative | |[[0367]] ||START_<wbr>KILL_<wbr>FRENZY_<wbr>HEADSHOT ||✓ ||CLEO [[0367#For Vice City|code snippet]] alternative | ||
|- | |- | ||
− | |036E ||PRINT_<wbr>WITH_<wbr>3_<wbr>NUMBERS_<wbr>BIG || || | + | |[[0368]] ||ACTIVATE_<wbr>MILITARY_<wbr>CRANE || || |
+ | |- | ||
+ | |[[036E]] ||PRINT_<wbr>WITH_<wbr>3_<wbr>NUMBERS_<wbr>BIG || || | ||
|- | |- | ||
− | |036F ||PRINT_<wbr>WITH_<wbr>4_<wbr>NUMBERS_<wbr>BIG || || | + | |[[036F]] ||PRINT_<wbr>WITH_<wbr>4_<wbr>NUMBERS_<wbr>BIG || || |
|- | |- | ||
− | |0370 ||PRINT_<wbr>WITH_<wbr>5_<wbr>NUMBERS_<wbr>BIG || || | + | |[[0370]] ||PRINT_<wbr>WITH_<wbr>5_<wbr>NUMBERS_<wbr>BIG || || |
|- | |- | ||
− | |0371 ||PRINT_<wbr>WITH_<wbr>6_<wbr>NUMBERS_<wbr>BIG || || | + | |[[0371]] ||PRINT_<wbr>WITH_<wbr>6_<wbr>NUMBERS_<wbr>BIG || || |
+ | |- | ||
+ | |0375 ||PRINT_<wbr>STRING_<wbr>IN_<wbr>STRING || || | ||
|- | |- | ||
|[[0378]] ||SET_<wbr>2_<wbr>REPEATED_<wbr>PHONE_<wbr>MESSAGES || || | |[[0378]] ||SET_<wbr>2_<wbr>REPEATED_<wbr>PHONE_<wbr>MESSAGES || || | ||
Line 146: | Line 265: | ||
|[[0379]] ||SET_<wbr>2_<wbr>PHONE_<wbr>MESSAGES || || | |[[0379]] ||SET_<wbr>2_<wbr>PHONE_<wbr>MESSAGES || || | ||
|- | |- | ||
− | |037A ||SET_<wbr>3_<wbr>REPEATED_<wbr>PHONE_<wbr>MESSAGES || || | + | |[[037A]] ||SET_<wbr>3_<wbr>REPEATED_<wbr>PHONE_<wbr>MESSAGES || || |
+ | |- | ||
+ | |[[037B]] ||SET_<wbr>3_<wbr>PHONE_<wbr>MESSAGES || || | ||
+ | |- | ||
+ | |[[037C]] ||SET_<wbr>4_<wbr>REPEATED_<wbr>PHONE_<wbr>MESSAGES || || | ||
|- | |- | ||
− | | | + | |[[037D]] ||SET_<wbr>4_<wbr>PHONE_<wbr>MESSAGES || || |
|- | |- | ||
− | | | + | |[[037F]] ||GIVE_<wbr>PLAYER_<wbr>DETONATOR || || |
|- | |- | ||
− | | | + | |0385 ||PRINT_<wbr>STRING_<wbr>IN_<wbr>STRING_<wbr>SOON || || |
|- | |- | ||
|0386 ||SET_<wbr>5_<wbr>REPEATED_<wbr>PHONE_<wbr>MESSAGES || || | |0386 ||SET_<wbr>5_<wbr>REPEATED_<wbr>PHONE_<wbr>MESSAGES || || | ||
Line 161: | Line 284: | ||
|- | |- | ||
|0389 ||SET_<wbr>6_<wbr>PHONE_<wbr>MESSAGES || || | |0389 ||SET_<wbr>6_<wbr>PHONE_<wbr>MESSAGES || || | ||
+ | |- | ||
+ | |[[0393]] ||SET_<wbr>CHAR_<wbr>ANIM_<wbr>SPEED ||✓ ||CLEO [[0393#For Vice City|code snippet]] alternative | ||
|- | |- | ||
|[[03A0]] ||IS_<wbr>CRANE_<wbr>LIFTING_<wbr>CAR || || | |[[03A0]] ||IS_<wbr>CRANE_<wbr>LIFTING_<wbr>CAR || || | ||
Line 171: | Line 296: | ||
|- | |- | ||
|[[03C9]] ||IS_<wbr>CAR_<wbr>VISIBLY_<wbr>DAMAGED ||✓ ||CLEO [[03C9#For Vice City|code snippet]] alternative | |[[03C9]] ||IS_<wbr>CAR_<wbr>VISIBLY_<wbr>DAMAGED ||✓ ||CLEO [[03C9#For Vice City|code snippet]] alternative | ||
+ | |- | ||
+ | |[[03DB]] ||ADD_<wbr>BLIP_<wbr>FOR_<wbr>PICKUP_<wbr>OLD || || | ||
+ | |- | ||
+ | |[[03DD]] ||ADD_<wbr>SPRITE_<wbr>BLIP_<wbr>FOR_<wbr>PICKUP || || | ||
+ | |- | ||
+ | |03E9 ||IS_<wbr>CHAR_<wbr>IN_<wbr>CONTROL || || | ||
|- | |- | ||
|[[03EC]] ||HAS_<wbr>MILITARY_<wbr>CRANE_<wbr>COLLECTED_<wbr>ALL_<wbr>CARS || || | |[[03EC]] ||HAS_<wbr>MILITARY_<wbr>CRANE_<wbr>COLLECTED_<wbr>ALL_<wbr>CARS || || | ||
+ | |- | ||
+ | |03FB ||SET_<wbr>CAR_<wbr>STAYS_<wbr>IN_<wbr>CURRENT_<wbr>LEVEL || || | ||
+ | |- | ||
+ | |03FC ||SET_<wbr>CHAR_<wbr>STAYS_<wbr>IN_<wbr>CURRENT_<wbr>LEVEL || || | ||
+ | |- | ||
+ | |0410 ||SET_<wbr>GANG_<wbr>PED_<wbr>MODEL_<wbr>PREFERENCE || || | ||
|- | |- | ||
|[[0413]] ||SET_<wbr>GET_<wbr>OUT_<wbr>OF_<wbr>JAIL_<wbr>FREE ||✓ ||CLEO [[0413#For Vice City|code snippet]] alternative | |[[0413]] ||SET_<wbr>GET_<wbr>OUT_<wbr>OF_<wbr>JAIL_<wbr>FREE ||✓ ||CLEO [[0413#For Vice City|code snippet]] alternative | ||
+ | |- | ||
+ | |[[0415]] ||IS_<wbr>CAR_<wbr>DOOR_<wbr>CLOSED ||✓ ||CLEO [[0415#For Vice City|code snippet]] alternative | ||
+ | |- | ||
+ | |041A ||GET_<wbr>AMMO_<wbr>IN_<wbr>CHAR_<wbr>WEAPON || || | ||
+ | |- | ||
+ | |[[041B]] ||REGISTER_<wbr>KILL_<wbr>FRENZY_<wbr>PASSED || || | ||
+ | |- | ||
+ | |[[041C]] ||SET_<wbr>CHAR_<wbr>SAY || || | ||
+ | |- | ||
+ | |[[041F]] ||OVERRIDE_<wbr>HOSPITAL_<wbr>LEVEL || || | ||
+ | |- | ||
+ | |[[0420]] ||OVERRIDE_<wbr>POLICE_<wbr>STATION_<wbr>LEVEL || || | ||
|- | |- | ||
|[[0421]] ||FORCE_<wbr>RAIN || || | |[[0421]] ||FORCE_<wbr>RAIN || || | ||
Line 181: | Line 330: | ||
|- | |- | ||
|042A ||IS_<wbr>THREAT_<wbr>FOR_<wbr>PED_<wbr>TYPE || || | |042A ||IS_<wbr>THREAT_<wbr>FOR_<wbr>PED_<wbr>TYPE || || | ||
+ | |- | ||
+ | |0432 ||GET_<wbr>CHAR_<wbr>IN_<wbr>CAR_<wbr>PASSENGER_<wbr>SEAT || || | ||
+ | |- | ||
+ | |0438 ||SET_<wbr>CHAR_<wbr>IGNORE_<wbr>LEVEL_<wbr>TRANSITIONS || || | ||
+ | |- | ||
+ | |[[0444]] ||SET_<wbr>SCRIPT_<wbr>FIRE_<wbr>AUDIO || || | ||
|- | |- | ||
|[[0447]] ||IS_<wbr>PLAYER_<wbr>LIFTING_<wbr>A_<wbr>PHONE || || | |[[0447]] ||IS_<wbr>PLAYER_<wbr>LIFTING_<wbr>A_<wbr>PHONE || || | ||
+ | |- | ||
+ | |044E ||SET_<wbr>CAR_<wbr>IGNORE_<wbr>LEVEL_<wbr>TRANSITIONS || || | ||
+ | |- | ||
+ | |044F ||MAKE_<wbr>CRAIGS_<wbr>CAR_<wbr>A_<wbr>BIT_<wbr>STRONGER || || | ||
+ | |- | ||
+ | |0452 ||ENABLE_<wbr>PLAYER_<wbr>CONTROL_<wbr>CAMERA || || | ||
+ | |- | ||
+ | |[[047B]] ||LOCATE_<wbr>SNIPER_<wbr>BULLET_<wbr>2D || ||Has the same bug as GTA III | ||
+ | |- | ||
+ | |[[047C]] ||LOCATE_<wbr>SNIPER_<wbr>BULLET_<wbr>3D || ||Has the same bug as GTA III | ||
|- | |- | ||
|[[047D]] ||GET_<wbr>NUMBER_<wbr>OF_<wbr>SEATS_<wbr>IN_<wbr>MODEL || || | |[[047D]] ||GET_<wbr>NUMBER_<wbr>OF_<wbr>SEATS_<wbr>IN_<wbr>MODEL || || | ||
+ | |- | ||
+ | |[[0491]] ||HAS_<wbr>CHAR_<wbr>GOT_<wbr>WEAPON ||✓ ||CLEO [[0491#For Vice City|code snippet]] alternative | ||
+ | |- | ||
+ | |[[04A0]] ||GET_<wbr>OBJECT_<wbr>DISTANCE_<wbr>ALONG_<wbr>PATH ||✓ ||CLEO [[049F#Getting the distance|code snippet]] alternative | ||
|- | |- | ||
|[[04A7]] ||IS_<wbr>CHAR_<wbr>IN_<wbr>ANY_<wbr>BOAT || || | |[[04A7]] ||IS_<wbr>CHAR_<wbr>IN_<wbr>ANY_<wbr>BOAT || || | ||
Line 193: | Line 362: | ||
|- | |- | ||
|[[04C8]] ||IS_<wbr>CHAR_<wbr>IN_<wbr>FLYING_<wbr>VEHICLE || || | |[[04C8]] ||IS_<wbr>CHAR_<wbr>IN_<wbr>FLYING_<wbr>VEHICLE || || | ||
+ | |- | ||
+ | |04CC ||ADD_<wbr>SHORT_<wbr>RANGE_<wbr>BLIP_<wbr>FOR_<wbr>COORD_<wbr>OLD || || | ||
+ | |- | ||
+ | |04CD ||ADD_<wbr>SHORT_<wbr>RANGE_<wbr>BLIP_<wbr>FOR_<wbr>COORD || || | ||
+ | |- | ||
+ | |04D4 ||GET_<wbr>NTH_<wbr>CLOSEST_<wbr>CHAR_<wbr>NODE || || | ||
+ | |- | ||
+ | |04DC ||HAS_<wbr>PHOTOGRAPH_<wbr>BEEN_<wbr>TAKEN || || | ||
+ | |- | ||
+ | |0505 ||GET_<wbr>NEAREST_<wbr>TYRE_<wbr>TO_<wbr>POINT || || | ||
|- | |- | ||
|[[050F]] ||GET_<wbr>MAX_<wbr>WANTED_<wbr>LEVEL ||✓ ||CLEO [[050F#For GTA III and Vice City|code snippet]] alternative | |[[050F]] ||GET_<wbr>MAX_<wbr>WANTED_<wbr>LEVEL ||✓ ||CLEO [[050F#For GTA III and Vice City|code snippet]] alternative | ||
Line 199: | Line 378: | ||
|- | |- | ||
|[[0513]] ||PRINT_<wbr>HELP_<wbr>FOREVER_<wbr>WITH_<wbr>NUMBER || || | |[[0513]] ||PRINT_<wbr>HELP_<wbr>FOREVER_<wbr>WITH_<wbr>NUMBER || || | ||
+ | |- | ||
+ | |051F ||DISPLAY_<wbr>TEXT_<wbr>WITH_<wbr>3_<wbr>NUMBERS || || | ||
+ | |- | ||
+ | |052A ||ADD_<wbr>MONEY_<wbr>SPENT_<wbr>ON_<wbr>AUTO_<wbr>PAINTING || || | ||
|- | |- | ||
|052D ||GET_<wbr>PLAYER_<wbr>DRUNKENNESS || || | |052D ||GET_<wbr>PLAYER_<wbr>DRUNKENNESS || || | ||
Line 213: | Line 396: | ||
|- | |- | ||
|0547 ||IS_<wbr>CHAR_<wbr>TOUCHING_<wbr>VEHICLE || || | |0547 ||IS_<wbr>CHAR_<wbr>TOUCHING_<wbr>VEHICLE || || | ||
+ | |- | ||
+ | |0555 ||REMOVE_<wbr>WEAPON_<wbr>FROM_<wbr>CHAR || || | ||
+ | |- | ||
+ | |056E ||DOES_<wbr>VEHICLE_<wbr>EXIST || || | ||
+ | |- | ||
+ | |[[056F]] ||ADD_<wbr>SHORT_<wbr>RANGE_<wbr>BLIP_<wbr>FOR_<wbr>CONTACT_<wbr>POINT || || | ||
+ | |- | ||
+ | |0577 ||SET_<wbr>FADE_<wbr>AND_<wbr>JUMPCUT_<wbr>AFTER_<wbr>RC_<wbr>EXPLOSION || || | ||
+ | |- | ||
+ | |[[059D]] ||SHUFFLE_<wbr>CARD_<wbr>DECKS || || | ||
+ | |- | ||
+ | |[[059E]] ||FETCH_<wbr>NEXT_<wbr>CARD || || | ||
|} | |} | ||
[[Category:Mission Scripting]] | [[Category:Mission Scripting]] |
Latest revision as of 13:55, 15 August 2021
The Opcodes Restoration Project is a plugin for CLEO v2.0.0.5 and above for GTA III and Vice City that aims to restore functionality to many unsupported opcodes. Only US v1.0 has been thoroughly tested for both games. US v1.1 and Steam versions of Vice City are supported but they have not been tested.
Files
- III.Opcodes.cleo: The plugin for GTA III. Place in III\CLEO\CLEO_PLUGINS.
- VC.Opcodes.cleo: The plugin for Vice City. Place in VC\CLEO\CLEO_PLUGINS.
- III.OpcodesTest.cs: The test script for the plugin for GTA III. Place in III\CLEO.
- III.OpcodesTest.txt: The source code for the test script for GTA III.
- VC.OpcodesTest.cs: The test script for the plugin for Vice City. Place in VC\CLEO.
- VC.OpcodesTest.txt: The source code for the test script for Vice City.
- scm.txt: Let Sanny Builder recognize the new opcodes. Add onto SCM.INI in SB\data\gta3 and VCSCM.INI in SB\data\vc^.
- opcodes.txt: For reference. Add onto opcodes.txt in SB\data\gta3 and SB\data\vc.
[*] As of v3.7 Sanny Builder ships these opcodes as the Restoration extension in the Vice City mode.
Building
You can rebuild the plugin for yourself if you want to. Use git (e.g. through Git Shell) to clone the repository and the submodules.
git clone --recursive https://github.com/cleolibrary/opcodes-restoration-project
Run premake5.bat
to generate project files for Microsoft Visual Studio 2015. If you use a different version of Visual Studio, open the file with a text editor and change vs2015 to your preferred version. A folder named build
is created with the generated project files. Open build\opcodes-restoration-project.sln
, change the active solution configuration to Release
, then build III.Opcodes
or VC.Opcodes
. The plugin will be located in bin\CLEO\CLEO_PLUGINS
.
Restored opcodes
GTA III
This is a list of opcodes that have been restored and extended in GTA III.
Opcode | Command name | Notes |
---|---|---|
0116 | IS_ |
|
01E6 | PRINT_ |
|
02BD | SET_ |
|
02BE | SET_ |
|
0301 | PRINT_ |
|
0304 | PRINT_ |
|
0307 | PRINT_ |
|
030A | PRINT_ |
|
0385 | PRINT_ |
|
048F | REMOVE_ |
|
050F | GET_ |
|
0511 | PRINT_ |
|
0546 | IS_ |
|
0547 | IS_ |
Vice City
This is a list of over 170 opcodes that have been restored in Vice City. The "non-plugin alternative" column offers an equivalent or closely similar behavior of the opcode independent of the plugin.
Opcode | Command name | Non-plugin alternative |
Notes |
---|---|---|---|
00A2 | IS_ |
✓ | Exactly the same as 8118 |
00AC | IS_ |
✓ | Exactly the same as 8119 |
00BD | PRINT_ |
||
00C5 | RETURN_ |
✓ | Same as 0485 for most versions |
00C6 | RETURN_ |
✓ | Same as 059A for most versions |
00E2 | GET_ |
✓ | CLEO code snippet alternative |
0113 | ADD_ |
✓ | Similar to 0114 with player character |
0116 | IS_ |
||
0130 | HAS_ |
✓ | CLEO code snippet alternative |
0135 | CHANGE_ |
✓ | Exactly the same as 020A |
0136 | SHAKE_ |
✓ | CLEO code snippet alternative |
013B | IS_ |
||
013C | IS_ |
||
0155 | SET_ |
||
0156 | SET_ |
||
015E | IS_ |
✓ | CLEO code snippet alternative |
0163 | ADD_ |
||
016F | DRAW_ |
||
0178 | IS_ |
||
0179 | IS_ |
||
017B | SET_ |
✓ | CLEO code snippet alternative |
01C6 | DONT_ |
✓ | CLEO code snippet alternative |
01E6 | PRINT_ |
||
01EE | ACTIVATE_ |
||
01EF | DEACTIVATE_ |
||
0218 | PRINT_ |
||
021D | SET_ |
✓ | CLEO code snippet alternative |
021F | SET_ |
✓ | CLEO code snippet alternative |
0220 | IS_ |
✓ | CLEO code snippet alternative |
0228 | IS_ |
✓ | CLEO code snippet alternative |
023A | IS_ |
||
023B | IS_ |
||
023E | FLASH_ |
||
023F | FLASH_ |
||
0240 | FLASH_ |
||
0242 | ARM_ |
✓ | CLEO code snippet alternative |
024B | SET_ |
||
024C | SET_ |
||
024D | HAS_ |
||
0250 | DRAW_ |
||
0251 | STORE_ |
||
0252 | RESTORE_ |
||
0255 | RESTART_ |
||
0295 | IS_ |
||
0299 | ACTIVATE_ |
✓ | CLEO code snippet alternative |
029A | SWITCH_ |
||
029C | IS_ |
||
02A0 | IS_ |
||
02A1 | MESSAGE_ |
||
02A2 | ADD_ |
||
02A4 | ADD_ |
||
02A5 | ADD_ |
||
02A6 | ADD_ |
||
02B9 | DEACTIVATE_ |
✓ | CLEO code snippet alternative |
02BC | SET_ |
||
02BD | SET_ |
||
02BE | SET_ |
||
02C3 | START_ |
Model and coordinates can be modified through a file named pacman.dat
| |
02C5 | GET_ |
||
02C6 | CLEAR_ |
||
02C7 | START_ |
Model can be modified through a file named pacman.dat
| |
02C8 | GET_ |
||
02C9 | CLEAR_ |
||
02CD | GOSUB_ |
||
02D2 | SET_ |
||
02D6 | IS_ |
||
02D9 | CLEAR_ |
||
02DA | ADD_ |
||
02EE | IS_ |
||
02EF | DESTROY_ |
||
02F0 | DROP_ |
✓ | Similar to 0213 with model barrel1 type 9
|
02F1 | DROP_ |
✓ | Similar to 0213 with model barrel2 type 11
|
02FB | ACTIVATE_ |
||
02FC | PRINT_ |
||
02FE | PRINT_ |
||
0300 | PRINT_ |
||
0301 | PRINT_ |
||
0303 | PRINT_ |
||
0304 | PRINT_ |
||
0305 | PRINT_ |
||
0306 | PRINT_ |
||
0307 | PRINT_ |
||
0309 | PRINT_ |
||
030A | PRINT_ |
||
031B | IS_ |
✓ | CLEO code snippet alternative |
031C | IS_ |
✓ | CLEO code snippet alternative |
032D | SET_ |
Has the same bug as GTA III | |
0338 | SET_ |
||
0344 | SET_ |
||
0346 | SET_ |
||
0349 | SET_ |
||
0351 | IS_ |
||
0356 | IS_ |
||
0357 | IS_ |
||
0367 | START_ |
✓ | CLEO code snippet alternative |
0368 | ACTIVATE_ |
||
036E | PRINT_ |
||
036F | PRINT_ |
||
0370 | PRINT_ |
||
0371 | PRINT_ |
||
0375 | PRINT_ |
||
0378 | SET_ |
||
0379 | SET_ |
||
037A | SET_ |
||
037B | SET_ |
||
037C | SET_ |
||
037D | SET_ |
||
037F | GIVE_ |
||
0385 | PRINT_ |
||
0386 | SET_ |
||
0387 | SET_ |
||
0388 | SET_ |
||
0389 | SET_ |
||
0393 | SET_ |
✓ | CLEO code snippet alternative |
03A0 | IS_ |
||
03A5 | CHANGE_ |
Opcode is implemented but garage type 7 is buggy in Vice City | |
03C2 | IS_ |
||
03C6 | IS_ |
Checks the current level number instead, essentially the same behavior | |
03C9 | IS_ |
✓ | CLEO code snippet alternative |
03DB | ADD_ |
||
03DD | ADD_ |
||
03E9 | IS_ |
||
03EC | HAS_ |
||
03FB | SET_ |
||
03FC | SET_ |
||
0410 | SET_ |
||
0413 | SET_ |
✓ | CLEO code snippet alternative |
0415 | IS_ |
✓ | CLEO code snippet alternative |
041A | GET_ |
||
041B | REGISTER_ |
||
041C | SET_ |
||
041F | OVERRIDE_ |
||
0420 | OVERRIDE_ |
||
0421 | FORCE_ |
||
0422 | DOES_ |
Has the same bug as GTA III | |
042A | IS_ |
||
0432 | GET_ |
||
0438 | SET_ |
||
0444 | SET_ |
||
0447 | IS_ |
||
044E | SET_ |
||
044F | MAKE_ |
||
0452 | ENABLE_ |
||
047B | LOCATE_ |
Has the same bug as GTA III | |
047C | LOCATE_ |
Has the same bug as GTA III | |
047D | GET_ |
||
0491 | HAS_ |
✓ | CLEO code snippet alternative |
04A0 | GET_ |
✓ | CLEO code snippet alternative |
04A7 | IS_ |
||
04A9 | IS_ |
||
04AB | IS_ |
||
04C8 | IS_ |
||
04CC | ADD_ |
||
04CD | ADD_ |
||
04D4 | GET_ |
||
04DC | HAS_ |
||
0505 | GET_ |
||
050F | GET_ |
✓ | CLEO code snippet alternative |
0511 | PRINT_ |
||
0513 | PRINT_ |
||
051F | DISPLAY_ |
||
052A | ADD_ |
||
052D | GET_ |
||
0530 | ADD_ |
||
0532 | ADD_ |
Displays as a value "out of 0" in the stats menu | |
0535 | ADD_ |
||
0537 | SET_ |
||
0538 | ADD_ |
||
0547 | IS_ |
||
0555 | REMOVE_ |
||
056E | DOES_ |
||
056F | ADD_ |
||
0577 | SET_ |
||
059D | SHUFFLE_ |
||
059E | FETCH_ |