Coding

 Reply to this postStart new topic

GTAG Opcode Database

DK22
post Mar 19 2013, 03:10 PM
Post #201


Member

Posts: 197
From: Liberty City, Shoreside
Joined: 15-July 10



072D & 072E check if there's flame thrower fired in rectangle/cube.
Go to the top of the page
 
+Quote Post
fastman92
post Apr 2 2013, 04:54 PM
Post #202


Trained Member

Posts: 77
Joined: 25-October 10



http://gtagmodding.com/opcode-database/opcode/011D/

It's the worst case of an opcode ever.
This opcode doesn't exist in any of games (III, VC, SA)

I have no clue where did modding community get this opcode described in the first place.
Go to the top of the page
 
+Quote Post
fastman92
post Apr 7 2013, 06:22 PM
Post #203


Trained Member

Posts: 77
Joined: 25-October 10



http://gtagmodding.com/opcode-database/opcode/0347/
Why there is no 0x0347 command in GTAG and anywhere in INI files to the present day?

This command exists in games: (GTA III)
Native command name: SET_TEXT_BACKGROUND_ONLY_TEXT

http://gtagmodding.com/opcode-database/opcode/0349/
This command doesn't exist in GTA VC. This command exists in III and SA.

This post has been edited by fastman92: Apr 7 2013, 06:44 PM
Go to the top of the page
 
+Quote Post
DK22
post Aug 19 2013, 12:54 PM
Post #204


Member

Posts: 197
From: Liberty City, Shoreside
Joined: 15-July 10



Just a random find.
09C5 >>> IS_CHAR_USING_MAP_ATTRACTOR
0642 >>> GET_PED_AT_HEAD_OF_QUEUE

This post has been edited by DK22: Aug 19 2013, 01:02 PM
Go to the top of the page
 
+Quote Post
Deji
post Aug 19 2013, 02:11 PM
Post #205


Coding like a Rockstar!

Group Icon

Posts: 1,468
From: ???
Joined: 28-May 09



QUOTE (DK22 @ Aug 19 2013, 01:54 PM) *
Just a random find.
09C5 >>> IS_CHAR_USING_MAP_ATTRACTOR
0642 >>> GET_PED_AT_HEAD_OF_QUEUE

It will be great if youre about to share a whole heap of info on attractors smile.gif I wanted to get a chance to look into improving NPC AI.


--------------------
Go to the top of the page
 
+Quote Post
DK22
post Aug 28 2013, 12:23 AM
Post #206


Member

Posts: 197
From: Liberty City, Shoreside
Joined: 15-July 10



But I haven't much documentation on this subject... Just few functions named.
Go to the top of the page
 
+Quote Post
fastman92
post Aug 30 2013, 06:19 PM
Post #207


Trained Member

Posts: 77
Joined: 25-October 10



GTAG opcode database has many errors, it's rarely updated making it only useful because of having no other choice (there's no GTAG opcode DB competitor).

CODE
; Game name: GTA III
; Author: fastman92
; Commands that exist in game executable, but do not exist in GTAG database for this game
0x0052
0x00B2
0x00B3
0x00B4
0x00B5
0x00B6
0x00B7
0x00B8
0x00B9
0x01BF
0x01CD
0x01DA
0x01F8
0x021A
0x021F
0x0238
0x023E
0x023F
0x0246
0x0251
0x0252
0x0292
0x0295
0x029A
0x029D
0x02A4
0x02A5
0x02A6
0x02BA
0x02BB
0x02C4
0x02D2
0x02D6
0x02DA
0x02DC
0x02F0
0x030B
0x031B
0x031C
0x0328
0x032E
0x0333
0x0334
0x0338
0x033D
0x0347
0x0364
0x038E
0x0393
0x03A7
0x03A8
0x03A9
0x03DB
0x03E9
0x0416
0x041B
0x0429
0x0432
0x0439
0x043E
0x0456
0x0457
0x0458
0x0459
0x045A
0x045C
0x045D
0x045E
0x045F
0x0460
0x0461
0x0462
0x0464
0x0465
0x0466
0x0467
0x0468
0x0469
0x046A
0x046B
0x046C
0x046D
0x046E
0x046F
0x0470
0x0471
0x0472
0x0473
0x0474
0x0475
0x0476
0x0478
0x0479
0x047A
0x047B
0x047C
0x047D
0x047E
0x047F
0x0480
0x0481
0x0482

; Commands that exist in GTAG database for this game, but do not exist in game executable
0x009D
0x011D
0x0137
0x0149
0x014B
0x014C
0x014D
0x014E
0x014F
0x0151
0x0152
0x0154
0x0156
0x0157
0x0158
0x0159
0x015A
0x015C
0x015D
0x015E
0x015F
0x0160
0x0161
0x0162
0x0164
0x0165
0x0166
0x0167
0x0168
0x0169
0x016A
0x016B
0x016C
0x016D
0x016E
0x016F
0x0170
0x0171
0x0172
0x0173
0x0174
0x0175
0x0176
0x0177
0x0178
0x0179
0x017A
0x017B
0x0180
0x0181
0x0182
0x0183
0x0184
0x0185
0x0186
0x0187
0x0188
0x0189
0x018A
0x018B
0x018C
0x018D
0x018E
0x018F
0x01D8
0x01E6
0x0235
0x0301
0x0304
0x0307
0x030A
0x0385
0x0494
0x05F7


CODE
; Game name: GTA VC
; Author: fastman92
; Commands that exist in game executable, but do not exist in GTAG database for this game
0x0150
0x03A7
0x03A8
0x03A9
0x0416
0x043E
0x045C
0x045D
0x0473
0x0474
0x0475
0x0476
0x0485
0x0488
0x04AC
0x0515
0x0584
0x0597
0x059C
0x059D
0x059E
0x05A0
0x05A5

; Commands that exist in GTAG database for this game, but do not exist in game executable
0x004C
0x009D
0x00A2
0x00AC
0x00C5
0x00C6
0x00E2
0x0113
0x011D
0x0130
0x0135
0x0149
0x014D
0x0156
0x015E
0x016F
0x0178
0x0179
0x017B
0x0182
0x01C6
0x01E6
0x01EE
0x01EF
0x0218
0x021D
0x0228
0x023A
0x023B
0x0240
0x0242
0x024B
0x024C
0x024D
0x0250
0x0255
0x0299
0x029C
0x02A0
0x02A1
0x02A2
0x02B9
0x02BC
0x02C3
0x02C5
0x02C6
0x02C7
0x02C8
0x02C9
0x02CD
0x02D9
0x02EE
0x02EF
0x02F1
0x02F4
0x02F5
0x02FB
0x02FC
0x02FE
0x0300
0x0301
0x0303
0x0304
0x0305
0x0306
0x0307
0x0309
0x030A
0x032D
0x033A
0x033B
0x033C
0x0344
0x0346
0x0349
0x034A
0x034B
0x034C
0x0351
0x0354
0x0355
0x0356
0x0358
0x0359
0x035A
0x035B
0x0367
0x0368
0x036E
0x036F
0x0370
0x0371
0x0374
0x0375
0x037F
0x0385
0x0386
0x0387
0x0388
0x0389
0x0398
0x0399
0x039A
0x039B
0x03A0
0x03A5
0x03A6
0x03B2
0x03B3
0x03B4
0x03B5
0x03B9
0x03C2
0x03C6
0x03C9
0x03DD
0x03E0
0x03EC
0x03F7
0x03F8
0x03FB
0x03FC
0x03FF
0x0406
0x040A
0x0410
0x041A
0x041C
0x041F
0x0420
0x0421
0x0422
0x0426
0x0427
0x042A
0x0438
0x043A
0x043B
0x043D
0x0444
0x0447
0x044C
0x044E
0x044F
0x0575
0x05B0
0x05F7


CODE
; Game name: GTA SA
; Author: fastman92
; Commands that exist in game executable, but do not exist in GTAG database for this game
0x00C3
0x00C4
0x0166
0x0181
0x0189
0x021C
0x0231
0x0250
0x0319
0x03DF
0x0451
0x050B
0x0556
0x05DF
0x05E0
0x05E1
0x05E3
0x05E4
0x05F2
0x067D

; Commands that exist in GTAG database for this game, but do not exist in game executable
0x064A
0x064D
0x0651
0x0659
0x065A
0x0666
0x066F
0x0670
0x0671
0x0675
0x0678
0x068F
0x069C
0x069D
0x069E
0x069F
0x06A0
0x06A1
0x06A4
0x06A6
0x06C6
0x06CB
0x06CE
0x06F4
0x06F6
0x06F7
0x06F9
0x06FB
0x06FE
0x0700
0x0711
0x0712
0x0718
0x071B
0x071C
0x071D
0x0720
0x0721
0x0722
0x0725
0x0728
0x0738
0x0739
0x073A
0x073D
0x0740
0x0744
0x0748
0x0758
0x0759
0x0764
0x0765
0x0766
0x076E
0x0773
0x0774
0x0775
0x0779
0x077F
0x0785
0x0787
0x078D
0x078E
0x0791
0x0795
0x079A
0x079B
0x079C
0x07A2
0x07AA
0x07AD
0x07AE
0x07B2
0x07B5
0x07B6
0x07B7
0x07B8
0x07BA
0x07C2
0x07C8
0x07CA
0x07CE
0x07CF
0x07D1
0x07D2
0x07D4
0x07DC
0x07E2
0x07E3
0x07E9
0x07EA
0x07EB
0x07EC
0x07ED
0x07F4
0x0805
0x0807
0x0808
0x0809
0x080C
0x080D
0x080F
0x0813
0x081B
0x0821
0x0824
0x0832
0x0838
0x083B
0x0848
0x0849
0x084A
0x084B
0x084C
0x084F
0x0857
0x085C
0x085D
0x085F
0x0862
0x0863
0x086D
0x086E
0x086F
0x0870
0x0877
0x0880
0x0882
0x0885
0x0886
0x088F
0x0891
0x0892
0x0894
0x0895
0x0896
0x0899
0x089A
0x089D
0x08A1
0x08AA
0x08AE
0x08B0
0x08CC
0x08CD
0x08CE
0x08CF
0x08D5
0x08FC
0x0902
0x0903
0x090A
0x090B
0x0911
0x0921
0x0927
0x092A
0x092C
0x092D
0x0932
0x0935
0x0938
0x093C
0x093F
0x0943
0x0962
0x0963
0x0979
0x097E
0x097F
0x098F
0x0990
0x0993
0x0999
0x09A5
0x09B1
0x09C6
0x09D3
0x09DC
0x09EA
0x09F3
0x09F9
0x0A00
0x0A04
0x0A05
0x0A0D
0x0A8E
0x0AE3
0x0B01


It's been months and opcodes mentioned by me still weren't updated. That sucks.

This post has been edited by fastman92: Oct 22 2013, 06:36 PM
Go to the top of the page
 
+Quote Post
Deji
post Dec 14 2013, 11:53 PM
Post #208


Coding like a Rockstar!

Group Icon

Posts: 1,468
From: ???
Joined: 28-May 09



I'll be working on the OpcodeDB soon. SCR (v2) definitions should be coming out of BETA! smile.gif


--------------------
Go to the top of the page
 
+Quote Post
Wesser
post Dec 15 2013, 11:45 AM
Post #209


The Assistant

Posts: 84
From: Matera, IT
Joined: 16-June 11



Don't know if you let this post slip, but it will be helpful anyway. smile.gif
Go to the top of the page
 
+Quote Post
Deji
post Dec 15 2013, 01:22 PM
Post #210


Coding like a Rockstar!

Group Icon

Posts: 1,468
From: ???
Joined: 28-May 09



QUOTE (Wesser @ Dec 15 2013, 11:45 AM) *
Don't know if you let this post slip, but it will be helpful anyway. smile.gif


I found the command list elsewhere. I'm just going to import it straight into the v2 DB (including non-command opcodes) and that will make writing SCR in Sanny Builder almost perfect with keywords.txt. Also, I have my own computer back now, so I'm able to actually work on the website again (without causing more loss of synchronisation) and work on a more advanced generator for SCRambl which will probably provide all required definitions for GTA in a zipped archive.

QUOTE
; Commands that exist in GTAG database for this game, but do not exist in game executable
0x064A
0x064D
0x0651
0x0659
...

These are valid opcodes smile.gif However, due to the fact they were commented-out of the switch instead of being NOP'd, default cases are used. This is why R* used GOTO's to skip debug commands. In my opinion it would have been smarter to just comment out the debug behaviour or skip it completely from the engine, but it seems R* like to cut the fat (in some strange cases - though they also might as well have commented out the debug code completely).


--------------------
Go to the top of the page
 
+Quote Post
Wesser
post Dec 15 2013, 03:22 PM
Post #211


The Assistant

Posts: 84
From: Matera, IT
Joined: 16-June 11



QUOTE (Deji @ Dec 15 2013, 02:22 PM) *
I found the command list elsewhere.

Where? Seemingly the executable is the only place where they can be found or are you referring to the Net? If so, could you show me the link?

QUOTE (Deji @ Dec 15 2013, 02:22 PM) *
These are valid opcodes smile.gif However, due to the fact they were commented-out of the switch instead of being NOP'd, default cases are used.

In the official R* compiler released with VCTA (available in the Android game, hope to see it into that of SA Mobile aswell), the first flag of each struct element of the command list denotes whether a particular command is visible or not to the compiler during the parsing process, something like m_bIsHandled. Those cut commands were not valid to the compiler yet because they probably had such flag unset. The same does not go for those NOPed.

This post has been edited by Wesser: Dec 15 2013, 03:24 PM
Go to the top of the page
 
+Quote Post
Deji
post Dec 15 2013, 04:08 PM
Post #212


Coding like a Rockstar!

Group Icon

Posts: 1,468
From: ???
Joined: 28-May 09



QUOTE (Wesser @ Dec 15 2013, 03:22 PM) *
Where? Seemingly the executable is the only place where they can be found or are you referring to the Net? If so, could you show me the link?


The guys on SB forums posted a list, too.

QUOTE
In the official R* compiler released with VCTA (available in the Android game, hope to see it into that of SA Mobile aswell), the first flag of each struct element of the command list denotes whether a particular command is visible or not to the compiler during the parsing process, something like m_bIsHandled. Those cut commands were not valid to the compiler yet because they probably had such flag unset. The same does not go for those NOPed.


Ah, but these cut commands would seem to be handled in the same way, returning 0 from the handler to continue execution immediately whereas some other opcodes - possibly those which don't represent commands - return -1 and break execution (like a WAIT 0). An example of those are:
CODE
003D=IS_INT_VAR_NOT_EQUAL_TO_NUMBER
003E=IS_INT_LVAR_NOT_EQUAL_TO_NUMBER
003F=IS_INT_VAR_NOT_EQUAL_TO_INT_VAR
0040=IS_INT_LVAR_NOT_EQUAL_TO_INT_LVAR
0041=IS_INT_VAR_NOT_EQUAL_TO_INT_LVAR


--------------------
Go to the top of the page
 
+Quote Post
Wesser
post Dec 15 2013, 09:23 PM
Post #213


The Assistant

Posts: 84
From: Matera, IT
Joined: 16-June 11



QUOTE (Deji @ Dec 15 2013, 05:08 PM) *
The guys on SB forums posted a list, too.

That list is a bit incomplete (it also came after mine tongue.gif). Strangely, only some compiler-dependent commands aren't present (not a big deal), including REPLAY and IS_REPLAY_PLAYING.

QUOTE (Deji @ Dec 15 2013, 05:08 PM) *
Ah, but these cut commands would seem to be handled in the same way, returning 0 from the handler to continue execution immediately whereas some other opcodes - possibly those which don't represent commands - return -1 and break execution (like a WAIT 0).

I made this assumption but never verified it with IDA. Sounds like the code of such cases was commented till the return or break (excluded), whereas some others were totally commented and so the default case is executed. These commands should be somewhat unhandled however. The possible countercheck is finding one of them being used in the script. By the way, it is SA-specific.

This post has been edited by Wesser: Dec 16 2013, 12:38 PM
Go to the top of the page
 
+Quote Post
jayd00
post Mar 29 2014, 04:48 AM
Post #214


Ameteur Member

Posts: 42
From: Guatemala
Joined: 22-December 09



I have a question, why negative opcodes, were removed from opcode database? sad.gif
like these ones:
CODE
82D8:   not actor $PLAYER_ACTOR current_weapon == 56
8AAB:  not file_exists "CLEO\version.dll"
8A9A:  not 30@ = openfile "settings.ini" mode 0x6272
80F2:   not actor 1@ near_actor $PLAYER_ACTOR radius 100.0 100.0 0
85AD:   not  $5365(227@,10s) == 142@s // s$ == 'short'
86B9:   not cutscene_data_loaded
80DF:   not actor $PLAYER_ACTOR driving
8597:   not actor $PLAYER_ACTOR crouching
8965:   not actor $PLAYER_ACTOR swimming
8611:   not actor $PLAYER_ACTOR performing_animation "WALK_player"
83EE:   not player $PLAYER_CHAR controllable
8039:   not 7@ == #NULL
8248:   not model #MP5LNG available
856D:   not actor 1@ defined

80E1:   not player 0 pressed_key 4

and many more. they are useful sad.gif


--------------------


Go to the top of the page
 
+Quote Post
Deji
post Mar 29 2014, 03:23 PM
Post #215


Coding like a Rockstar!

Group Icon

Posts: 1,468
From: ???
Joined: 28-May 09



QUOTE (jayd00 @ Mar 29 2014, 04:48 AM) *
I have a question, why negative opcodes, were removed from opcode database? sad.gif
like these ones:
CODE
82D8:   not actor $PLAYER_ACTOR current_weapon == 56
8AAB:  not file_exists "CLEO\version.dll"
8A9A:  not 30@ = openfile "settings.ini" mode 0x6272
80F2:   not actor 1@ near_actor $PLAYER_ACTOR radius 100.0 100.0 0
85AD:   not  $5365(227@,10s) == 142@s // s$ == 'short'
86B9:   not cutscene_data_loaded
80DF:   not actor $PLAYER_ACTOR driving
8597:   not actor $PLAYER_ACTOR crouching
8965:   not actor $PLAYER_ACTOR swimming
8611:   not actor $PLAYER_ACTOR performing_animation "WALK_player"
83EE:   not player $PLAYER_CHAR controllable
8039:   not 7@ == #NULL
8248:   not model #MP5LNG available
856D:   not actor 1@ defined

80E1:   not player 0 pressed_key 4

and many more. they are useful sad.gif


Because 'NOT' is an opcode modifier, not an opcode. In order to apply the modifier on Sanny Builder 3, you simply change the first 0 to 8 and optionally add 'not' to indicate it.

However, if you're using the SCR definitions and keywords for SB, the syntax can be much easier:
not is_char_holding_weapon $PLAYER_ACTOR 56
not has_cutscene_loaded
not is_char_in_any_car $PLAYER_ACTOR

IF OR
   not is_button_pressed 0 button 19
   is_button_pressed 0 button 15
...


The SCR definitions also have the advantage of being correctly named according to the original names they were given by R*, unlike the SB defaults which were formed by heavy speculation over the first few years of modding. In most common opcodes, the SB definitions are clear enough, but these are very outdated and purely maintained for compatibility reasons and cause the creation of bad scripts where the writer was mislead by them.

However, it's a bit of a move to start writing it, especially in an IDE which wasn't built for it. Though SB3 apparently has a SCR mode now, but I'm not sure what it does tongue.gif


--------------------
Go to the top of the page
 
+Quote Post
jayd00
post Apr 6 2014, 05:16 AM
Post #216


Ameteur Member

Posts: 42
From: Guatemala
Joined: 22-December 09



QUOTE (Deji @ Mar 29 2014, 09:23 AM) *
Because 'NOT' is an opcode modifier, not an opcode. In order to apply the modifier on Sanny Builder 3, you simply change the first 0 to 8 and optionally add 'not' to indicate it.
However, if you're using the SCR definitions and keywords for SB, the syntax can be much easier:
not is_char_holding_weapon $PLAYER_ACTOR 56
not has_cutscene_loaded
not is_char_in_any_car $PLAYER_ACTOR
IF OR
   not is_button_pressed 0 button 19
   is_button_pressed 0 button 15
...

The SCR definitions also have the advantage of being correctly named according to the original names they were given by R*, unlike the SB defaults which were formed by heavy speculation over the first few years of modding. In most common opcodes, the SB definitions are clear enough, but these are very outdated and purely maintained for compatibility reasons and cause the creation of bad scripts where the writer was mislead by them.

However, it's a bit of a move to start writing it, especially in an IDE which wasn't built for it. Though SB3 apparently has a SCR mode now, but I'm not sure what it does tongue.gif


ooh thanks!.. after a year, I think I missed this class, where you explain that tongue.gif

so, practically, all the conditions can be negative?


--------------------


Go to the top of the page
 
+Quote Post
LINK/2012
post Apr 6 2014, 01:42 PM
Post #217


I will kill you

Posts: 126
Joined: 13-May 11



QUOTE (jayd00 @ Apr 6 2014, 02:16 AM) *
ooh thanks!.. after a year, I think I missed this class, where you explain that tongue.gif

so, practically, all the conditions can be negative?
Yes
Go to the top of the page
 
+Quote Post
Deji
post Apr 6 2014, 03:12 PM
Post #218


Coding like a Rockstar!

Group Icon

Posts: 1,468
From: ???
Joined: 28-May 09



QUOTE (jayd00 @ Apr 6 2014, 06:16 AM) *
ooh thanks!.. after a year, I think I missed this class, where you explain that tongue.gif

so, practically, all the conditions can be negative?


Even your standard opcodes could be negated, but since they're not conditional, there's nothing to negate. Through modding, one could even add conditional returns to normal opcodes to indicate errors, which may make it necessary to use the conditional negation on it, but it's use-dependent, and therefore the OpcodeDB won't generate every NOT variation of every opcode and note that not even the original opcodes.txt files did that anyway - they only have negated opcodes that were actually used in the original SCM file or added afterwards due to other random decisions.


--------------------
Go to the top of the page
 
+Quote Post
Haf
post Oct 16 2014, 05:46 AM
Post #219


Newbie In Training

Posts: 12
Joined: 14-April 14



why this make the game crash?
CODE
0A9A: file = openfile "HAF.ini" mode "rt+"
0AD8: write_string_in_file file from 2@v


CODE
CLEO 4 Specialities

CLEO 4 simplifies the task of setting the mode using standard methods.

You can replace the mode parameter with a string to specify the opening mode. If you don't use a string, the CLEO 3 opening mode will be used.

"rb" = read binary file
"wb" = write binary file
"wb+" = write binary file (create it if it doesn't exist)
"ab" = append binary file (write at the end)
"ab+" = append binary file (create it if it doesn't exist)
"rt" = read text file
"wt" = write text file
"wt+" = write text file (create it if it doesn't exist)
"at" = append text file
"at+" = append text file (create it if it doesn't exist)
"rb+" = read/write binary file
"rt+" = read/write text file


This post has been edited by Haf: Oct 16 2014, 05:47 AM
Go to the top of the page
 
+Quote Post
Deji
post Oct 16 2014, 02:37 PM
Post #220


Coding like a Rockstar!

Group Icon

Posts: 1,468
From: ???
Joined: 28-May 09



QUOTE (Haf @ Oct 16 2014, 06:46 AM) *
CODE
"wb+" = write binary file (create it if it doesn't exist)
"ab+" = append binary file (create it if it doesn't exist)
"wt+" = write text file (create it if it doesn't exist)
"at+" = append text file (create it if it doesn't exist)
"rb+" = read/write binary file
"rt+" = read/write text file


Does the file already exist or not?

By the way, it's usually a bad idea to attempt to read and write a file at the same time. Why do you need to do this? Can you not simply read the file once into memory, change the data in memory, then write it back to the file once?


--------------------
Go to the top of the page
 
+Quote Post
Reply to this postStart new topic

4 User(s) are reading this topic (4 Guests and 0 Anonymous Users)
0 Members: