ACS PCodes
Jump to navigation
Jump to search
The following is a list of ACS p-code.
# | PCode | Arguments | Stack Offset | Extension | Description |
---|---|---|---|---|---|
0 | NOP | 0 | 0 | Hexen | Does nothing. |
1 | TERMINATE | 0 | 0 | Hexen | Finishes the current script. |
2 | SUSPEND | 0 | 0 | Hexen | Holds the execution of the script until it is executed again, at which point it will resume. |
3 | PUSHNUMBER | 1 | 1 | Hexen | Pushes an integer onto the stack. |
4 | LSPEC1 | 1 | -1 | Hexen | Executes the line special, popping one argument from the stack. |
5 | LSPEC2 | 1 | -2 | Hexen | Executes the line special, popping two arguments from the stack. |
6 | LSPEC3 | 1 | -3 | Hexen | Executes the line special, popping three arguments from the stack. |
7 | LSPEC4 | 1 | -4 | Hexen | Executes the line special, popping four arguments from the stack. |
8 | LSPEC5 | 1 | -5 | Hexen | Executes the line special, popping five arguments from the stack. |
9 | LSPEC1DIRECT | 2 | 0 | Hexen | Executes the line special given by the first argument with a constant parameter given by the second argument. |
10 | LSPEC2DIRECT | 3 | 0 | Hexen | Executes the line special given by the first argument with two constant parameters given by the rest of the arguments. |
11 | LSPEC3DIRECT | 4 | 0 | Hexen | Executes the line special given by the first argument with three constant parameters given by the rest of the arguments. |
12 | LSPEC4DIRECT | 5 | 0 | Hexen | Executes the line special given by the first argument with four constant parameters given by the rest of the arguments. |
13 | LSPEC5DIRECT | 6 | 0 | Hexen | Executes the line special given by the first argument with five constant parameters given by the rest of the arguments. |
14 | ADD | 0 | -1 | Hexen | Pops two integers from the stack, adds them, and pushes the result. |
15 | SUBTRACT | 0 | -1 | Hexen | Pops two integers from the stack, subtracts them, and pushes the result. |
16 | MULTIPLY | 0 | -1 | Hexen | Pops two integers from the stack, multiplies them, and pushes the result. |
17 | DIVIDE | 0 | -1 | Hexen | Pops two integers from the stack, divides them, and pushes the result. Division by zero causes an error. |
18 | MODULUS | 0 | -1 | Hexen | Pops two integers from the stack, divides them, and pushes the remainder. Division by zero causes an error. |
19 | EQ | 0 | -1 | Hexen | Pops two integers from the stack and compares them for equality. If they are equal, a 1 is pushed to the stack, otherwise 0. |
20 | NE | 0 | -1 | Hexen | Pops two integers from the stack and compares them for inequality. If they are not equal, a 1 is pushed to the stack, otherwise 0. |
21 | LT | 0 | -1 | Hexen | Pops two integers from the stack and compares the second popped number to the first. If the second number is less than the first, a 1 is pushed to the stack, otherwise 0. |
22 | GT | 0 | -1 | Hexen | Pops two integers from the stack and compares the second popped number to the first. If the second number is greater than the first, a 1 is pushed to the stack, otherwise 0. |
23 | LE | 0 | -1 | Hexen | Pops two integers from the stack and compares the second popped number to the first. If the second number is less than or equal to the first, a 1 is pushed to the stack, otherwise 0. |
24 | GE | 0 | -1 | Hexen | Pops two integers from the stack and compares the second popped number to the first. If the second number is greater than or equal to the first, a 1 is pushed to the stack, otherwise 0. |
25 | ASSIGNSCRIPTVAR | 1 | -1 | Hexen | Pops an integer from the stack and assigns it to a local variable specified as the argument. |
26 | ASSIGNMAPVAR | 1 | -1 | Hexen | Pops an integer from the stack and assigns it to a map variable specified as the argument. |
27 | ASSIGNWORLDVAR | 1 | -1 | Hexen | Pops an integer from the stack and assigns it to a world variable specified as the argument. |
28 | PUSHSCRIPTVAR | 1 | 1 | Hexen | Pushes an integer from the local variable specified as the argument onto the stack. |
29 | PUSHMAPVAR | 1 | 1 | Hexen | Pushes an integer from the map variable specified as the argument onto the stack. |
30 | PUSHWORLDVAR | 1 | 1 | Hexen | Pushes an integer from the world variable specified as the argument onto the stack. |
31 | ADDSCRIPTVAR | 1 | -1 | Hexen | Pops an integer from the stack and adds it to the specified local variable. |
32 | ADDMAPVAR | 1 | -1 | Hexen | Pops an integer from the stack and adds it to the specified map variable. |
33 | ADDWORLDVAR | 1 | -1 | Hexen | Pops an integer from the stack and adds it to the specified world variable. |
34 | SUBSCRIPTVAR | 1 | -1 | Hexen | Pops an integer from the stack and subtracts it from the specified local variable. |
35 | SUBMAPVAR | 1 | -1 | Hexen | Pops an integer from the stack and subtracts it from the specified map variable. |
36 | SUBWORLDVAR | 1 | -1 | Hexen | Pops an integer from the stack and subtracts it from the specified world variable. |
37 | MULSCRIPTVAR | 1 | -1 | Hexen | Pops an integer from the stack and multiplies it with the specified local variable. |
38 | MULMAPVAR | 1 | -1 | Hexen | Pops an integer from the stack and multiplies it with the specified map variable. |
39 | MULWORLDVAR | 1 | -1 | Hexen | Pops an integer from the stack and multiplies it with the specified world variable. |
40 | DIVSCRIPTVAR | 1 | -1 | Hexen | Pops an integer from the stack and divides it from the specified local variable. Division by zero causes an error. |
41 | DIVMAPVAR | 1 | -1 | Hexen | Pops an integer from the stack and divides it from the specified map variable. Division by zero causes an error. |
42 | DIVWORLDVAR | 1 | -1 | Hexen | Pops an integer from the stack and divides it from the specified world variable. Division by zero causes an error. |
43 | MODSCRIPTVAR | 1 | -1 | Hexen | Pops an integer from the stack and divides it from the specified local variable, leaving the remainder in the variable. Division by zero causes an error. |
44 | MODMAPVAR | 1 | -1 | Hexen | Pops an integer from the stack and divides it from the specified map variable, leaving the remainder in the variable. Division by zero causes an error. |
45 | MODWORLDVAR | 1 | -1 | Hexen | Pops an integer from the stack and divides it from the specified world variable, leaving the remainder in the variable. Division by zero causes an error. |
46 | INCSCRIPTVAR | 1 | 0 | Hexen | Increments the specified local variable by 1. |
47 | INCMAPVAR | 1 | 0 | Hexen | Increments the specified map variable by 1. |
48 | INCWORLDVAR | 1 | 0 | Hexen | Increments the specified world variable by 1. |
49 | DECSCRIPTVAR | 1 | 0 | Hexen | Decrements the specified local variable by 1. |
50 | DECMAPVAR | 1 | 0 | Hexen | Decrements the specified map variable by 1. |
51 | DECWORLDVAR | 1 | 0 | Hexen | Decrements the specified world variable by 1. |
52 | GOTO | 1 | 0 | Hexen | Jumps to the specified offset in the script. |
53 | IFGOTO | 1 | -1 | Hexen | Pops an integer off the stack and jumps to the specified offset in the script if the popped number is not 0. |
54 | DROP | 0 | -1 | Hexen | Pops an item off the stack and discards it. |
55 | DELAY | 0 | -1 | Hexen | Pops an integer off the stack and delays the script by the popped number of tics. See: Delay. |
56 | DELAYDIRECT | 1 | 0 | Hexen | Delays the script by the number of tics specified by argument. See: Delay. |
57 | RANDOM | 0 | -1 | Hexen | Pops two numbers from the stack. A random number between those two popped numbers is then pushed to the stack. See: Random. |
58 | RANDOMDIRECT | 2 | 1 | Hexen | Push a random number between the two numbers specified as arguments to the stack. See: Random. |
... to be continued ...
CALLFUNC Functions
The CALLFUNC PCode references the following table to decide which function to call. All functions push a single return value to the stack, and thus must be dropped by hand if the return value is ignored.
# | Function | Arguments | Return Type |
---|---|---|---|
1 | GetLineUDMFInt | 2 | integer |
2 | GetLineUDMFFixed | 2 | fixed |
3 | GetThingUDMFInt | 2 | integer |
... to be continued ...
External links
- ACC++ repository — this article is sourced from /docs/manual.odt