# Articles

# AGI Command Reference

This is a tutorial for AGI Programming if you have any questions post them at

http://www.agigames.com/site.php
Thanks to the Sarien team and to Nick Sonneveld for some info on the unknown commands.

**Table of Contents**

- ARITHMETIC COMMANDS
- COMMANDS TO LOAD AND UNLOAD RESOURCES
- PROGRAM CONTROL COMMANDS
- OBJECT CONTROL COMMANDS
- OBJECT DESCRIPTION COMMANDS
- OBJECT MOTION CONTROL COMMANDS
- INVENTORY ITEM MANAGEMENT COMMANDS
- PICTURE RESOURCE MANAGEMENT COMMANDS
- SOUND RESOURCE MANAGEMENT COMMANDS
- TEXT MANAGEMENT COMMANDS
- STRING MANAGEMENT COMMANDS
- INITIALIZATION COMMANDS
- MENU MANAGEMENT COMMANDS
- TEST COMMANDS
- OTHER COMMANDS
- UNKNOWN COMMANDS

## I ARITHMETIC COMMANDS

Commands that operate on variables:

### increment(n);

The value of the variable Var(n) is incremented by one, i.e.

Var(n) = Var(n)+1. If the value is already 255, it is left unchanged.

### decrement(n);

The value of the variable Var(n) is decremented by one, i.e.

Var(n) = Var(n)-1. If the value is 0, it is left unchanged.

### assign(n, m);

Variable Var(n) is assigned the value m, i.e. Var(n) = m

### assignv(n, m);

Variable Var(n) is assigned the value of Var(m), i.e.

Var(n) = Var(m).

### addn(n, m);

The value of variable Var(n) is incremented by m, i.e.

Var(n) = Var(n) + m.

### addv(n, m);

The value of variable Var(n) is incremented by the value of Var(m), i.e. Var(n) = Var(n) + m.

[Now what happens in the above two commands on 8-bit overflow: does the result wrap over 0 or stays 255?

I.e. is 250 + 10 == 4 or 250 + 10 == 255?]

### subn(n, m);

The value of Var(n) is decremented by m, I.e. Var(n) = Var(n) - m

### subv(n, m);

The value of Var(n) is decremented by Var(m), i.e. Var(n) = Var(n) - Var(m).

[Again, what happens when the result must be negative: is

1 - 2 == 255 or 1 - 2 == 0?]

### lindirectn(n, m);

Variable Var(i) where i is the value of Var(n) is assigned a value m, i.e. Var(Var(n)) = m.

### lindirectv(n, m);

Variable Var(i) where i is the value of Var(n) is assigned the value of Var(m), i.e. Var(Var(n)) = Var(m).

### rindirect(n, m);

Variable Var(n) is assigned the value of Var(i) where i is the value of Var(m), i.e. Var(n) = Var(Var(m)).

### muln(n, m);

Variable Var(n) is multiplied by m, i.e. Var(n) = Var(n) * m.

### mulv(n, m);

Variable Var(n) is multiplied by the value of Var(m), i.e.

Var(n) = Var(n) * Var(m).

[What happens on overflow?]

### divn(n, m)

Variable Var(n) is divided by m, i.e. Var(n) = Var(n) / m.

### divv(n, m)

Variable Var(n) is divided by the value of Var(m),

i.e. Var(n) = Var(n) / Var(m). [What happens on division by 0?]

### random(n, m, k)

Variable Var(k) is assigned a random value in the range between n and m.
Now let us consider the commands changing flag values. Remember that a flag can only have a value 0 or 1.

### set(n)

flag(n) is set to 1.

### set.v(n)

flag(i), where i is the value of var (n), is set to 1. i.e.

flag(var(n)) = 1.

### reset(n)

flag(n) is set to 0.

### reset.v(n)

flag(i), where i is the value of var (n), is set to 0, i.e.

flag(var(n)) = 0.

### toggle(n)

flag(n) toggles its value.

### toggle.v(n)

flag(i), where i is the value of var (n), i.e. flag(var(n)), toggles is value.

Page: **[ 1 ]**
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16