Opcodes Restoration Project

From GTAModding
Jump to: navigation, search

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

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_PLAYER_STILL_ALIVE
02BD SET_FBI_REQUIRED
02BE SET_ARMY_REQUIRED
050F GET_MAX_WANTED_LEVEL
0511 PRINT_HELP_WITH_NUMBER
0546 IS_PLAYER_TOUCHING_VEHICLE
0547 IS_CHAR_TOUCHING_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.

Opcode Command name Non-plugin
alternative
Notes
00A2 IS_CHAR_STILL_ALIVE Exactly the same as 8118
00AC IS_CAR_STILL_ALIVE Exactly the same as 8119
00BD PRINT_SOON
00C5 RETURN_TRUE Same as 0485 for most versions
00C6 RETURN_FALSE Same as 059A for most versions
00E2 GET_PAD_STATE CLEO code snippet alternative
0113 ADD_AMMO_TO_PLAYER Similar to 0114 with player character
0116 IS_PLAYER_STILL_ALIVE
0130 HAS_PLAYER_BEEN_ARRESTED CLEO code snippet alternative
0135 CHANGE_CAR_LOCK Exactly the same as 020A
0136 SHAKE_CAM_WITH_POINT CLEO code snippet alternative
013B IS_CAR_DEAD_IN_AREA_2D
013C IS_CAR_DEAD_IN_AREA_3D
0155 SET_CAR_DENSITY
0156 SET_PED_DENSITY
015E IS_CAR_IN_AIR CLEO code snippet alternative
0163 ADD_BLIP_FOR_OBJECT_OLD
016F DRAW_SHADOW
0178 IS_PLAYER_TOUCHING_OBJECT
0179 IS_CHAR_TOUCHING_OBJECT
017B SET_CHAR_AMMO CLEO code snippet alternative
01C6 DONT_REMOVE_CAR CLEO code snippet alternative
01E6 PRINT_WITH_NUMBER_SOON
01EE ACTIVATE_CRANE
01EF DEACTIVATE_CRANE
0218 PRINT_WITH_NUMBER_BIG_Q
021D SET_FREE_BOMBS CLEO code snippet alternative
021F SET_ALL_TAXI_LIGHTS CLEO code snippet alternative
0220 IS_CAR_ARMED_WITH_ANY_BOMB CLEO code snippet alternative
0228 IS_CAR_ARMED_WITH_BOMB CLEO code snippet alternative
023A IS_PLAYER_TOUCHING_OBJECT_ON_FOOT
023B IS_CHAR_TOUCHING_OBJECT_ON_FOOT
023E FLASH_CAR
023F FLASH_CHAR
0240 FLASH_OBJECT
0242 ARM_CAR_WITH_BOMB CLEO code snippet alternative
024B SET_REPEATED_PHONE_MESSAGE
024C SET_PHONE_MESSAGE
024D HAS_PHONE_DISPLAYED_MESSAGE
0250 DRAW_LIGHT
0251 STORE_WEATHER
0252 RESTORE_WEATHER
0255 RESTART_CRITICAL_MISSION
0295 IS_TAXI
0299 ACTIVATE_GARAGE CLEO code snippet alternative
029A SWITCH_TAXI_TIMER
029C IS_BOAT
02A0 IS_CHAR_STOPPED
02A1 MESSAGE_WAIT
02A2 ADD_PARTICLE_EFFECT
02A4 ADD_SPRITE_BLIP_FOR_CAR
02A5 ADD_SPRITE_BLIP_FOR_CHAR
02A6 ADD_SPRITE_BLIP_FOR_OBJECT
02B9 DEACTIVATE_GARAGE CLEO code snippet alternative
02BC SET_SWAT_REQUIRED
02BD SET_FBI_REQUIRED
02BE SET_ARMY_REQUIRED
02C3 START_PACMAN_RACE Model and coordinates can be modified through a file named pacman.dat
02C5 GET_NUMBER_OF_POWER_PILLS_EATEN
02C6 CLEAR_PACMAN
02C7 START_PACMAN_SCRAMBLE Model can be modified through a file named pacman.dat
02C8 GET_NUMBER_OF_POWER_PILLS_CARRIED
02C9 CLEAR_NUMBER_OF_POWER_PILLS_CARRIED
02CD GOSUB_FILE
02D2 SET_COMEDY_CONTROLS
02D6 IS_CHAR_SHOOTING_IN_AREA
02D9 CLEAR_NUMBER_OF_POWER_PILLS_EATEN
02DA ADD_POWER_PILL
02EE IS_PROJECTILE_IN_AREA
02EF DESTROY_PROJECTILES_IN_AREA
02F0 DROP_MINE Similar to 0213 with model barrel1 type 9
02F1 DROP_NAUTICAL_MINE Similar to 0213 with model barrel2 type 11
02FB ACTIVATE_CRUSHER_CRANE
02FC PRINT_WITH_2_NUMBERS
02FE PRINT_WITH_2_NUMBERS_SOON
0300 PRINT_WITH_3_NUMBERS_NOW
0301 PRINT_WITH_3_NUMBERS_SOON
0303 PRINT_WITH_4_NUMBERS_NOW
0304 PRINT_WITH_4_NUMBERS_SOON
0305 PRINT_WITH_5_NUMBERS
0306 PRINT_WITH_5_NUMBERS_NOW
0307 PRINT_WITH_5_NUMBERS_SOON
0309 PRINT_WITH_6_NUMBERS_NOW
030A PRINT_WITH_6_NUMBERS_SOON
031B IS_FIRST_CAR_COLOUR CLEO code snippet alternative
031C IS_SECOND_CAR_COLOUR CLEO code snippet alternative
032D SET_CAR_BLOCK_CAR Has the same bug as GTA III
0338 SET_CAR_VISIBLE
0344 SET_TEXT_CENTRE_SIZE
0346 SET_TEXT_BACKGROUND_COLOUR
0349 SET_TEXT_FONT
0351 IS_NASTY_GAME
0356 IS_EXPLOSION_IN_AREA
0357 IS_EXPLOSION_IN_ZONE
0367 START_KILL_FRENZY_HEADSHOT CLEO code snippet alternative
0368 ACTIVATE_MILITARY_CRANE
036E PRINT_WITH_3_NUMBERS_BIG
036F PRINT_WITH_4_NUMBERS_BIG
0370 PRINT_WITH_5_NUMBERS_BIG
0371 PRINT_WITH_6_NUMBERS_BIG
0375 PRINT_STRING_IN_STRING
0378 SET_2_REPEATED_PHONE_MESSAGES
0379 SET_2_PHONE_MESSAGES
037A SET_3_REPEATED_PHONE_MESSAGES
037B SET_3_PHONE_MESSAGES
037C SET_4_REPEATED_PHONE_MESSAGES
037D SET_4_PHONE_MESSAGES
037F GIVE_PLAYER_DETONATOR
0385 PRINT_STRING_IN_STRING_SOON
0386 SET_5_REPEATED_PHONE_MESSAGES
0387 SET_5_PHONE_MESSAGES
0388 SET_6_REPEATED_PHONE_MESSAGES
0389 SET_6_PHONE_MESSAGES
0393 SET_CHAR_ANIM_SPEED CLEO code snippet alternative
03A0 IS_CRANE_LIFTING_CAR
03A5 CHANGE_GARAGE_TYPE_WITH_CAR_MODEL Opcode is implemented but garage type 7 is buggy in Vice City
03C2 IS_PHONE_DISPLAYING_MESSAGE
03C6 IS_COLLISION_IN_MEMORY Checks the current level number instead, essentially the same behavior
03C9 IS_CAR_VISIBLY_DAMAGED CLEO code snippet alternative
03DB ADD_BLIP_FOR_PICKUP_OLD
03DD ADD_SPRITE_BLIP_FOR_PICKUP
03E9 IS_CHAR_IN_CONTROL
03EC HAS_MILITARY_CRANE_COLLECTED_ALL_CARS
03FB SET_CAR_STAYS_IN_CURRENT_LEVEL
03FC SET_CHAR_STAYS_IN_CURRENT_LEVEL
0410 SET_GANG_PED_MODEL_PREFERENCE
0413 SET_GET_OUT_OF_JAIL_FREE CLEO code snippet alternative
0415 IS_CAR_DOOR_CLOSED CLEO code snippet alternative
041A GET_AMMO_IN_CHAR_WEAPON
041B REGISTER_KILL_FRENZY_PASSED
041C SET_CHAR_SAY
041F OVERRIDE_HOSPITAL_LEVEL
0420 OVERRIDE_POLICE_STATION_LEVEL
0421 FORCE_RAIN
0422 DOES_GARAGE_CONTAIN_CAR Has the same bug as GTA III
042A IS_THREAT_FOR_PED_TYPE
0432 GET_CHAR_IN_CAR_PASSENGER_SEAT
0438 SET_CHAR_IGNORE_LEVEL_TRANSITIONS
0444 SET_SCRIPT_FIRE_AUDIO
0447 IS_PLAYER_LIFTING_A_PHONE
044E SET_CAR_IGNORE_LEVEL_TRANSITIONS
044F MAKE_CRAIGS_CAR_A_BIT_STRONGER
0452 ENABLE_PLAYER_CONTROL_CAMERA
047B LOCATE_SNIPER_BULLET_2D Has the same bug as GTA III
047C LOCATE_SNIPER_BULLET_3D Has the same bug as GTA III
047D GET_NUMBER_OF_SEATS_IN_MODEL
0491 HAS_CHAR_GOT_WEAPON CLEO code snippet alternative
04A0 GET_OBJECT_DISTANCE_ALONG_PATH CLEO code snippet alternative
04A7 IS_CHAR_IN_ANY_BOAT
04A9 IS_CHAR_IN_ANY_HELI
04AB IS_CHAR_IN_ANY_PLANE
04C8 IS_CHAR_IN_FLYING_VEHICLE
04CC ADD_SHORT_RANGE_BLIP_FOR_COORD_OLD
04CD ADD_SHORT_RANGE_BLIP_FOR_COORD
04D4 GET_NTH_CLOSEST_CHAR_NODE
0505 GET_NEAREST_TYRE_TO_POINT
050F GET_MAX_WANTED_LEVEL CLEO code snippet alternative
0511 PRINT_HELP_WITH_NUMBER
0513 PRINT_HELP_FOREVER_WITH_NUMBER
051F DISPLAY_TEXT_WITH_3_NUMBERS
052A ADD_MONEY_SPENT_ON_AUTO_PAINTING
052D GET_PLAYER_DRUNKENNESS
0530 ADD_LOAN_SHARK_VISITS
0532 ADD_MOVIE_STUNTS Displays as a value "out of 0" in the stats menu
0535 ADD_GARBAGE_PICKUPS
0537 SET_TOP_SHOOTING_RANGE_SCORE
0538 ADD_SHOOTING_RANGE_RANK
0547 IS_CHAR_TOUCHING_VEHICLE
056F ADD_SHORT_RANGE_BLIP_FOR_CONTACT_POINT
0577 SET_FADE_AND_JUMPCUT_AFTER_RC_EXPLOSION
059D SHUFFLE_CARD_DECKS
059E FETCH_NEXT_CARD