Difference between revisions of "00E2"
m |
|||
Line 1: | Line 1: | ||
− | {{Icon|3}} {{Icon|SA}} | + | {{OpCode |
− | + | | games = {{Icon|3}} {{Icon|SA}} | |
− | + | | command = GET_PAD_STATE | |
− | + | | description = Gets the state of the button | |
− | + | | syntax1 = 00E2: get_player [''int1''] key [''int2''] state_to [''var''] | |
− | + | | p1t = [''int1''] | |
− | + | | p1d = Pad, normally 0 for pad 1 (player 1), 1 for pad 2 (player 2) | |
− | + | | p2t = [''int2''] | |
− | + | | p2d = [[00E1|Button index]] | |
− | + | | p3t = [''var''] | |
− | + | | p3d = Variable to store the state, an integer value | |
− | + | }} | |
− | |||
− | This opcode gets the state of the button. It returns a value between 0 and 255, 255 meaning the button is completely pressed down. For left and right sticks (buttons 0 to 3), it returns a value between -128 and 128, -128 meaning the stick is completely pressed one | + | This opcode gets the state of the button. It returns a value between 0 and 255, 255 meaning the button is completely pressed down. For left and right analogue sticks (buttons 0 to 3), it returns a value between -128 and 128, -128 meaning the stick is completely pressed in one direction and 128 meaning the stick is completely pressed in the other direction. This opcode was never called in the original script of GTA III. |
== For Vice City == | == For Vice City == | ||
− | This opcode does not exist in Vice City but it is possible to retrieve the state of the button in the same manner as GTA III. The following example, using Sanny Builder with [[CLEO]] for Vice City in an external script (not the main one) and tested on US v1.0, retrieves the value of the state of the button for | + | This opcode does not exist in Vice City but it is possible to retrieve the state of the button in the same manner as GTA III. The following example, using Sanny Builder with [[CLEO]] for Vice City in an external script (not the main one) and tested on US v1.0, retrieves the value of the state of the button for player 1. |
<syntaxhighlight lang="scm"> | <syntaxhighlight lang="scm"> | ||
:opcode_00E2 | :opcode_00E2 | ||
Line 25: | Line 24: | ||
05F6: ret 1 0@ | 05F6: ret 1 0@ | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | |||
Use this line as a substitute for opcode 00E2. This can be placed anywhere within the external script: | Use this line as a substitute for opcode 00E2. This can be placed anywhere within the external script: | ||
<syntaxhighlight lang="scm"> | <syntaxhighlight lang="scm"> | ||
05F5: call_scm_func @opcode_00E2 inputs 1 button [button] result [variable] | 05F5: call_scm_func @opcode_00E2 inputs 1 button [button] result [variable] | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | |||
Note that this code's result does not distinguish between a dword (4 bytes) or a word (2 bytes), meaning that a pressed left or right stick can be interpreted as a dword value of 65408, which is a word value of -128 (0xFF80 in hex). | Note that this code's result does not distinguish between a dword (4 bytes) or a word (2 bytes), meaning that a pressed left or right stick can be interpreted as a dword value of 65408, which is a word value of -128 (0xFF80 in hex). | ||
Line 35: | Line 36: | ||
== See also == | == See also == | ||
− | * [[0494]], an alternative to getting state of the stick (buttons 0 to 3) | + | * {{Icon|t}} [[0494]], an alternative to getting state of the stick (buttons 0 to 3) |
− | |||
− | |||
− |
Revision as of 16:20, 26 February 2016
- Description
- Gets the state of the button
- Syntax
- 00E2: get_player [int1] key [int2] state_to [var]
- Parameter
- [int1]
- Pad, normally 0 for pad 1 (player 1), 1 for pad 2 (player 2)
- [int2]
- Button index
- [var]
- Variable to store the state, an integer value
This opcode gets the state of the button. It returns a value between 0 and 255, 255 meaning the button is completely pressed down. For left and right analogue sticks (buttons 0 to 3), it returns a value between -128 and 128, -128 meaning the stick is completely pressed in one direction and 128 meaning the stick is completely pressed in the other direction. This opcode was never called in the original script of GTA III.
For Vice City
This opcode does not exist in Vice City but it is possible to retrieve the state of the button in the same manner as GTA III. The following example, using Sanny Builder with CLEO for Vice City in an external script (not the main one) and tested on US v1.0, retrieves the value of the state of the button for player 1.
:opcode_00E2
// 0@ - input param (button)
0@ *= 2 // offset in memory
0@ += 0x7DBCB0 // add to base memory location
05E0: 0@ = read_memory 0@ size 2 virtual_protect 1 // retrieve state of button
05F6: ret 1 0@
Use this line as a substitute for opcode 00E2. This can be placed anywhere within the external script:
05F5: call_scm_func @opcode_00E2 inputs 1 button [button] result [variable]
Note that this code's result does not distinguish between a dword (4 bytes) or a word (2 bytes), meaning that a pressed left or right stick can be interpreted as a dword value of 65408, which is a word value of -128 (0xFF80 in hex).
Keywords
get, button, key, press, pressed, keypress
See also
- 0494, an alternative to getting state of the stick (buttons 0 to 3)