Coding

 Reply to this postStart new topic

GTAG Opcode Database

Sweet
post Jan 9 2011, 12:01 PM
Post #81


Ameteur Member

Posts: 48
Joined: 19-August 10



Any info about 07B1? It's like... stores sound in current coords?
Go to the top of the page
 
+Quote Post
Deji
post Jan 9 2011, 03:16 PM
Post #82


Coding like a Rockstar!

Group Icon

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



Ah yeah, I actually figured out what it did a while ago, but never got around to testing it to be sure.


The opcode gets information about the next beats of the current playing soundtrack.

Passed:
1 - Beat Number (from the previous beat)

For the next beat, pass 1. For the beat after that, pass 2.

Returned:
1 - Time for the beat to hit the ring?
2 - Beat type? (up, down, left, right)
3 - Number of beats passed


--------------------
Go to the top of the page
 
+Quote Post
Towncivilian
post Jan 10 2011, 06:09 AM
Post #83


The New Guy!

Posts: 2
From: Florida, USA
Joined: 4-January 11



QUOTE (Deji @ Dec 15 2010, 08:37 AM) *
New Opcode!

0771 sets the license plate town number. Although I've yet to get it to work...

Edit: See here for a little hack to get it to work smile.gif


This sets the plate for the next car only, so your "hack" is not really a hack at all. happy.gif


--------------------
Multi Theft Auto forum moderator & unofficial MTA 0.5 developer
Go to the top of the page
 
+Quote Post
Deji
post Jan 10 2011, 03:12 PM
Post #84


Coding like a Rockstar!

Group Icon

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



Nah, the value get's overwritten in the memory. It didn't even work in the 1 mission that Rockstar used it in. That's why NOP'ing the address I posted will cause it to work.


--------------------
Go to the top of the page
 
+Quote Post
Deji
post Jan 25 2011, 11:45 PM
Post #85


Coding like a Rockstar!

Group Icon

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



Opcode Update!

04A5 creates suitable coordinates for a pickup to be created for a dead actor, although it works on alive actors, too. Used to create the clothes pickup for the Valet you kill in "555 We Tip".

I could've done with this a while ago... Instead I used randomized angles, sine, cosine and loads of pickup radius checks tongue.gif


--------------------
Go to the top of the page
 
+Quote Post
Deji
post Jan 31 2011, 05:20 AM
Post #86


Coding like a Rockstar!

Group Icon

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



[warn=rant]

Okay, I'm officially creating a new system called "Deji Approved Opcodes". I've spent most of the last few nights going through GTAG v2's Opcode Database (by the way.. I'm not updating the Opcode Database anymore until the GTAG v2 one is up..) fixing opcodes. Here is a big assumption that was made. 0603 doesn't have a timelimit flag at all. It doesn't take too much looking at in IDA to figure it out and took this tiny script to test:

SANNY
{$CLEO}
0000:

repeat
    003D:
    if
        0ADC:   test_cheat "TEST"
    then
        04C4: store_coords_to 0@ 1@ 2@ from_actor $PLAYER_ACTOR with_offset 0.0 5.0 0.0
        04C4: store_coords_to 3@ 4@ 5@ from_actor $PLAYER_ACTOR with_offset 0.0 9.0 0.0
        0247: load_model #FCR900
        while 8248:   not model #FCR900 available
            003D:
        end
        00A5: 6@ = create_car #FCR900 at 3@ 4@ 5@
        0603: AS_actor $PLAYER_ACTOR goto 0@ 1@ 2@ mode 7 timelimit 6@
    end
until false


What happens: The player does not go forward 5 units and stop. He goes 9 units, jumps on the bike, drives a tiny bit, gets off and then goes back 4.0 units. The "timelimit" is actually a vehicle flag. The game checks if the value is above or equal to 0 and if so, attempts to get the vehicle handle. This doesn't cause a crash, since the vehicle is probably checked again later.

So really, this opcode makes the character go to the coords, yes. But if you pass a vehicle handle, he'll use that vehicle to get there. The mode param is just like in most other goto opcodes. 4 makes the character walk, etc. Still needs documenting further.

TASK_GO_TO_COORD_ANY_MEANS <<< smile.gif


Alas, Rockstar never actually used the last parameter (probably because it's buggy as hell) and kept it at -1 or -2 (which both do the same thing, don't be fooled by Rockstars lack of consistency).

I seriously feel I should go through each of these opcodes in order to discover the ins and outs of each opcode.
[/rant]


--------------------
Go to the top of the page
 
+Quote Post
Deji
post Jan 31 2011, 06:29 PM
Post #87


Coding like a Rockstar!

Group Icon

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



0657 is actually a componentB opcode.

However, all "componentB" opcodes are to be renamed, since "componentB" is natively named "door", which makes it much easier to understand the various opcodes which use these ID's. For example, 08A7 checks if a door is open or not present. Which can apply to any of the doors, the bonnet and the boot.


--------------------
Go to the top of the page
 
+Quote Post
Adler
post Feb 13 2011, 05:35 AM
Post #88


Devil's Advocate

Group Icon

Posts: 413
From: CA US
Joined: 26-July 09



Hmmm the angle_axis_relation opcodes might be using quaternions to define rotations.


--------------------
Go to the top of the page
 
+Quote Post
Deji
post Feb 13 2011, 07:03 AM
Post #89


Coding like a Rockstar!

Group Icon

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



QUOTE (GTAG v2)
Description Sets the rotation of a vehicle using quaternion values.
Parameters 1) Vehicle handle (Variable)
2) Float
3) Float
4) Float
5) Float
Games SA
Category Vehicle
Native Function SET_VEHICLE_QUATERNION
San Andreas

sascm.ini 07C6=5,set_car %1d% axis_angle_relation_to %2d% %3d% %4d% %5d%
Example 07C6: set_car 90@ axis_angle_relation_to -0.0448 0.0178 1.003 -0.0611


whistling.gif


--------------------
Go to the top of the page
 
+Quote Post
Adler
post Feb 13 2011, 05:56 PM
Post #90


Devil's Advocate

Group Icon

Posts: 413
From: CA US
Joined: 26-July 09



Whoops already found? sleep.gif


--------------------
Go to the top of the page
 
+Quote Post
Deji
post Feb 21 2011, 02:07 AM
Post #91


Coding like a Rockstar!

Group Icon

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



Opcode Lead

Yes, finally! Some info on the very unknown opcode: 06FA

It's accessed by the game during a 2 player mission, when a player seats a vehicle. I'm not actually sure whether it applies to the first player or both players, since I've never messed around with 2 player modes enough to know how to control the other guy. It's used once in the PS2 main.scm - during the "2player Ram" mission.

It's unfortunate to find that the most mysterious opcode is a 2 player one, though... I'm sure Silent might have more success at finding this smile.gif


06F3 - seems to have something to do with player weapons. Possibly related to auto-aim?


--------------------
Go to the top of the page
 
+Quote Post
Silent
post Feb 21 2011, 12:34 PM
Post #92


The master of cut retort

Group Icon

Posts: 239
From: Warsaw, PL
Joined: 21-July 10



This mission is a rampage one... any special game behaviours during that event?

Anyway, I wanted to recognize how 06E0 opcode params work, and I noticed that it's probably a bugged one... Looks like it even don't get a opcode parameter and always sets the mode to 1 and one more flag proper camera mode flag to 2. So, looks like I've discovered these modes:

0 - camera on player 1
1 - camera on player 2
2 - camera between both players (default one, that opcode ALWAYS enabled that cam)


I'll try to fix that opcode, it shouldn't be so hard, but it might require some ASM work.

This post has been edited by Silent: Feb 21 2011, 12:38 PM
Go to the top of the page
 
+Quote Post
Deji
post Feb 21 2011, 03:53 PM
Post #93


Coding like a Rockstar!

Group Icon

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



QUOTE (Silent @ Feb 21 2011, 12:34 PM) *
I'll try to fix that opcode, it shouldn't be so hard, but it might require some ASM work.


Since Silent moved onto something else, I decided to finish it off for him whistling.gif

Injection Code
SANNY
0AC6: 0@ = label @_Opcode06E0 offset
000E: 0@ -= 0x4980FA
0A8C: write_memory 0x4980F5 size 1 value 0xE9 virtual_protect 1
0A8C: write_memory 0x4980F6 size 4 value 0@ virtual_protect 1


ASM
SANNY
:_Opcode06E0
hex
A1783CA400      // mov eax,[00A43C78]
C6414301        // mov byte ptr [ecx+43],01
A2505E8A00      // mov [008A5E50],al
B8FA804900      // mov eax,[004980FA]
FFE0            // jmp eax
end


Built for listeners .exe - it should work with the HOODLUM 1.0us .exe too.


--------------------
Go to the top of the page
 
+Quote Post
DK22
post Mar 6 2011, 01:56 PM
Post #94


Member

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



00F1 must be fixed. There is no radius params in examples.
Go to the top of the page
 
+Quote Post
Deji
post Apr 1 2011, 06:11 PM
Post #95


Coding like a Rockstar!

Group Icon

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



00BE clears priority text and styled GXTs which can also be cleared with 03D6.



The image is in mega-HD, if it looks bad quality, it's because your monitor or GFX card doesn't support the technology yet. Oh yeah, it's also in 3D.


Oh yeah and the last flag param on all priority text opcodes are written to memory, but never used.


--------------------
Go to the top of the page
 
+Quote Post
Spider-Vice
post Apr 1 2011, 06:15 PM
Post #96


In motus...

Group Icon

Posts: 361
From: Portugal
Joined: 28-May 09



That's old 3D that hurts your eyes (If you're supposed to cross your eyes there), and "look at me I got a new PC". tongue.gif
Go to the top of the page
 
+Quote Post
Deji
post Apr 13 2011, 12:54 AM
Post #97


Coding like a Rockstar!

Group Icon

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



@Spider-Vice - I was being sarcastic, that is obviously not either a HD image or 3D tongue.gif

Anyway... Whoever the hell originally thought 0114 was vehicle related needs some head medicine. It simply adds xx amount of ammo to the characters weapon (or gives him it if he doesn't already have that weapon).


--------------------
Go to the top of the page
 
+Quote Post
Spider-Vice
post Apr 13 2011, 06:47 PM
Post #98


In motus...

Group Icon

Posts: 361
From: Portugal
Joined: 28-May 09



Well whoever confuses car_weapon with weapon is pretty... crazy no? Also I knew you were being sarcastic huh?
Go to the top of the page
 
+Quote Post
Adler
post Apr 13 2011, 10:10 PM
Post #99


Devil's Advocate

Group Icon

Posts: 413
From: CA US
Joined: 26-July 09



car_weapon?


--------------------
Go to the top of the page
 
+Quote Post
Spider-Vice
post Apr 14 2011, 02:24 PM
Post #100


In motus...

Group Icon

Posts: 361
From: Portugal
Joined: 28-May 09



Oh shit, I confused VC code with SA. Silly me.
Go to the top of the page
 
+Quote Post
Reply to this postStart new topic

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