FF8/Field/Script/Opcodes

From Final Fantasy Inside
< FF8‎ | Field‎ | Script
Revision as of 05:22, 23 May 2019 by BukTop (talk | contribs) (13 revisions imported)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

By Aali, myst6re and Shard.

The language

The field script language in ff8 is a simple assembly language with a stack. Here is an example:

stack = []
PSHM_W       1024      # push var1024 onto the stack (stack = [var1024])
PSHN_L       6         # push number 6 onto the stack (stack = [6 ; var1024])
CAL          EQ        # compare the two numbers at the top of the stack, pop this numbers, and push the result (1 or 0) into the stack (stack = [1 or 0]) 
JPF          LABEL1    # if the popped top of the stack is 0, jump to LABEL1 (stack = [])
PSHN_L       0         # push 0 at the top of the stack (stack = [0])
POPM_W       1024      # pop the top of the stack into var1024 (stack = [])
JMP          LABEL2    # goto LABEL2
LABEL1
PSHN_L       1         # push 1 at the top of the stack (stack = [1])
POPM_W       1024      # pop the top of the stack into var1024 (stack = [])
LABEL2
...

In standard code, it's equivalent to:

if(var1024 == 6) {
    var1024 = 0;
} else {
    var1024 = 1;
}

Reading Documentation

Each Opcode's page lists all the parameters for that function in the order you would put them on the stack before the function call. The inline argument is listed separately, if the function requires one. For example, on the page for SET3, the parameters are listed like this:

XCoord
YCoord
ZCoord
SET3

Which means when you call SET3, the ZCoord is the top item on the stack, YCoord is under it, and XCoord is under that, for example

PSHN_L      402   (XCoord)
PSHN_L      -381  (YCoord)
PSHN_L      20    (ZCoord)
SET3        17    (walkmesh triangle ID)

Opcode list

Opcode Name Function Type
000

000 NOP (Unused)

Script Processing
001

001 CAL

Script Processing
002

002 JMP

Script Processing
003

003 JPF

Script Processing
004

004 GJMP (Unused)

Script Processing
005

005 LBL

Script Processing
006

006 RET

Script Processing
007

007 PSHN_L

Memory
008

008 PSHI_L

Memory
009

009 POPI_L

Memory
00A

00A PSHM_B

Memory
00B

00B POPM_B

Memory
00C

00C PSHM_W

Memory
00D

00D POPM_W

Memory
00E

00E PSHM_L

Memory
00F

00F POPM_L

Memory
010

010 PSHSM_B

Memory
011

011 PSHSM_W

Memory
012

012 PSHSM_L

Memory
013

013 PSHAC

Memory
014

014 REQ

Script Processing
015

015 REQSW

Script Processing
016

016 REQEW

Script Processing
017

017 PREQ

Script Processing
018

018 PREQSW

Script Processing
019

019 PREQEW

Script Processing
01A

01A UNUSE

Entity
01B

01B DEBUG (Unused)

01C

01C HALT

Script Processing
01D

01D SET

Entity
01E

01E SET3

Entity
01F

01F IDLOCK

Field related
020

020 IDUNLOCK

Field related
021

021 EFFECTPLAY2

Music and Sound
022

022 FOOTSTEP

023

023 JUMP

Entity
024

024 JUMP3

Entity
025

025 LADDERUP

Entity
026

026 LADDERDOWN

Entity
027

027 LADDERUP2

Entity
028

028 LADDERDOWN2

Entity
029

029 MAPJUMP

Field related
02A

02A MAPJUMP3

Field related
02B

02B SETMODEL

Entity
02C

02C BASEANIME

Animation
02D

02D ANIME

Animation
02E

02E ANIMEKEEP

Animation
02F

02F CANIME

Animation
030

030 CANIMEKEEP

Animation
031

031 RANIME

Animation
032

032 RANIMEKEEP

Animation
033

033 RCANIME

Animation
034

034 RCANIMEKEEP

Animation
035

035 RANIMELOOP

Animation
036

036 RCANIMELOOP

Animation
037

037 LADDERANIME

Animation
038

038 DISCJUMP

Field related
039

039 SETLINE

Entity
03A

03A LINEON

Entity
03B

03B LINEOFF

Entity
03C

03C WAIT

Script Processing
03D

03D MSPEED

03E

03E MOVE

Entity
03F

03F MOVEA

040

040 PMOVEA

041

041 CMOVE

042

042 FMOVE

043

043 PJUMPA

044

044 ANIMESYNC

Script Processing
045

045 ANIMESTOP

Animation
046

046 MESW (Unused)

047

047 MES

Message
048

048 MESSYNC

Script Processing
049

049 MESVAR

Message
04A

04A ASK

Message
04B

04B WINSIZE

Message
04C

04C WINCLOSE

Message
04D

04D UCON

Misc
04E

04E UCOFF

Misc
04F

04F MOVIE

Movie
050

050 MOVIESYNC

Script Processing
051

051 SETPC

Party management
052

052 DIR

Entity
053

053 DIRP

054

054 DIRA

055

055 PDIRA

056

056 SPUREADY

Timer
057

057 TALKON

Entity
058

058 TALKOFF

Entity
059

059 PUSHON

Entity
05A

05A PUSHOFF

Entity
05B

05B ISTOUCH

05C

05C MAPJUMPO

Field related
05D

05D MAPJUMPON

Field related
05E

05E MAPJUMPOFF

Field related
05F

05F SETMESSPEED

Message
060

060 SHOW

Entity
061

061 HIDE

Entity
062

062 TALKRADIUS

Entity
063

063 PUSHRADIUS

Entity
064

064 AMESW

Message
065

065 AMES

Message
066

066 GETINFO

067

067 THROUGHON

Entity
068

068 THROUGHOFF

Entity
069

069 BATTLE

Battle
06A

06A BATTLERESULT

Battle
06B

06B BATTLEON

Field related
06C

06C BATTLEOFF

Field related
06D

06D KEYSCAN

Input
06E

06E KEYON

Input
06F

06F AASK

Message
070

070 PGETINFO

071

071 DSCROLL

072

072 LSCROLL

073

073 CSCROLL

074

074 DSCROLLA

075

075 LSCROLLA

076

076 CSCROLLA

077

077 SCROLLSYNC

Script Processing
078

078 RMOVE

079

079 RMOVEA

07A

07A RPMOVEA

07B

07B RCMOVE

07C

07C RFMOVE

07D

07D MOVESYNC

Script Processing
07E

07E CLEAR

Field related
07F

07F DSCROLLP

080

080 LSCROLLP

081

081 CSCROLLP

082

082 LTURNR

083

083 LTURNL

084

084 CTURNR

085

085 CTURNL

086

086 ADDPARTY

Party Management
087

087 SUBPARTY

Party Management
088

088 CHANGEPARTY

Party Management
089

089 REFRESHPARTY

Party Management
08A

08A SETPARTY

Party Management
08B

08B ISPARTY

Party Management
08C

08C ADDMEMBER

Party Management
08D

08D SUBMEMBER

Party Management
08E

08E ISMEMBER (Unused)

Party Management
08F

08F LTURN

090

090 CTURN

091

091 PLTURN

092

092 PCTURN

093

093 JOIN

Entity
094

094 MESFORCUS (Unused)

095

095 BGANIME

Field related
096

096 RBGANIME

Field related
097

097 RBGANIMELOOP

Field related
098

098 BGANIMESYNC

Field related
099

099 BGDRAW

Field related
09A

09A BGOFF

Field related
09B

09B BGANIMESPEED

Field related
09C

09C SETTIMER

Timer
09D

09D DISPTIMER

Timer
09E

09E SHADETIMER (Unused)

09F

09F SETGETA

0A0

0A0 SETROOTTRANS

0A1

0A1 SETVIBRATE

0A2

0A2 STOPVIBRATE (Unused)

0A3

0A3 MOVIEREADY

Movie
0A4

0A4 GETTIMER

Timer
0A5

0A5 FADEIN

Field related
0A6

0A6 FADEOUT

Field related
0A7

0A7 FADESYNC

Script Processing
0A8

0A8 SHAKE

Field related
0A9

0A9 SHAKEOFF

Field related
0AA

0AA FADEBLACK

Field related
0AB

0AB FOLLOWOFF

0AC

0AC FOLLOWON

0AD

0AD GAMEOVER

Field related
0AE

0AE ENDING (Unused)

0AF

0AF SHADELEVEL

0B0

0B0 SHADEFORM

0B1

0B1 FMOVEA

0B2

0B2 FMOVEP

0B3

0B3 SHADESET

0B4

0B4 MUSICCHANGE

Music and Sound
0B5

0B5 MUSICLOAD

Music and Sound
0B6

0B6 FADENONE

0B7

0B7 POLYCOLOR

0B8

0B8 POLYCOLORALL

0B9

0B9 KILLTIMER

Timer
0BA

0BA CROSSMUSIC

0BB

0BB DUALMUSIC

0BC

0BC EFFECTPLAY

Music and Sound
0BD

0BD EFFECTLOAD

Music and Sound
0BE

0BE LOADSYNC

0BF

0BF MUSICSTOP

Music and Sound
0C0

0C0 MUSICVOL

Music and Sound
0C1

0C1 MUSICVOLTRANS

Music and Sound
0C2

0C2 MUSICVOLFADE

Music and Sound
0C3

0C3 ALLSEVOL

Music and Sound
0C4

0C4 ALLSEVOLTRANS

Music and Sound
0C5

0C5 ALLSEPOS (Unused)

Music and Sound
0C6

0C6 ALLSEPOSTRANS

Music and Sound
0C7

0C7 SEVOL

Music and Sound
0C8

0C8 SEVOLTRANS

Music and Sound
0C9

0C9 SEPOS

Music and Sound
0CA

0CA SEPOSTRANS

Music and Sound
0CB

0CB SETBATTLEMUSIC

Music and Sound
0CC

0CC BATTLEMODE

Battle
0CD

0CD SESTOP

Music and Sound
0CE

0CE BGANIMEFLAG (Unused)

0CF

0CF INITSOUND

0D0

0D0 BGSHADE

0D1

0D1 BGSHADESTOP

0D2

0D2 RBGSHADELOOP

0D3

0D3 DSCROLL2

0D4

0D4 LSCROLL2

0D5

0D5 CSCROLL2

0D6

0D6 DSCROLLA2

0D7

0D7 LSCROLLA2 (Unused)

0D8

0D8 CSCROLLA2

0D9

0D9 DSCROLLP2 (Unused)

0DA

0DA LSCROLLP2 (Unused)

0DB

0DB CSCROLLP2 (Unused)

0DC

0DC SCROLLSYNC2

0DD

0DD SCROLLMODE2

0DE

0DE MENUENABLE

Menus
0DF

0DF MENUDISABLE

Menus
0E0

0E0 FOOTSTEPON

0E1

0E1 FOOTSTEPOFF

0E2

0E2 FOOTSTEPOFFALL

0E3

0E3 FOOTSTEPCUT

0E4

0E4 PREMAPJUMP

0E5

0E5 USE

Entity
0E6

0E6 SPLIT

Entity
0E7

0E7 ANIMESPEED

Animation
0E8

0E8 RND

0E9

0E9 DCOLADD

0EA

0EA DCOLSUB

0EB

0EB TCOLADD

0EC

0EC TCOLSUB

0ED

0ED FCOLADD

Field related
0EE

0EE FCOLSUB

Field related
0EF

0EF COLSYNC

Script processing
0F0

0F0 DOFFSET

0F1

0F1 LOFFSETS

0F2

0F2 COFFSETS

0F3

0F3 LOFFSET

0F4

0F4 COFFSET

0F5

0F5 OFFSETSYNC

0F6

0F6 RUNENABLE

Entity
0F7

0F7 RUNDISABLE

Entity
0F8

0F8 MAPFADEOFF

Field related
0F9

0F9 MAPFADEON

Field related
0FA

0FA INITTRACE

0FB

0FB SETDRESS

Entity
0FC

0FC GETDRESS (Unused)

Entity
0FD

0FD FACEDIR

Entity
0FE

0FE FACEDIRA

0FF

0FF FACEDIRP

100

100 FACEDIRLIMIT

101

101 FACEDIROFF

102

102 SARALYOFF

103

103 SARALYON

104

104 SARALYDISPOFF

105

105 SARALYDISPON

106

106 MESMODE

Message
107

107 FACEDIRINIT

108

108 FACEDIRI

109

109 JUNCTION

Party Management
10A

10A SETCAMERA

Field related
10B

10B BATTLECUT

10C

10C FOOTSTEPCOPY

10D

10D WORLDMAPJUMP

Field related
10E

10E RFACEDIRI (Unused)

10F

10F RFACEDIR

110

110 RFACEDIRA

111

111 RFACEDIRP

112

112 RFACEDIROFF

113

113 FACEDIRSYNC

114

114 COPYINFO

115

115 PCOPYINFO (Unused)

116

116 RAMESW

Message
117

117 BGSHADEOFF

Field related
118

118 AXIS

119

119 AXISSYNC (Unused)

11A

11A MENUNORMAL

Menus
11B

11B MENUPHS

Menus
11C

11C BGCLEAR

11D

11D GETPARTY

Party Management
11E

11E MENUSHOP

Menus
11F

11F DISC

Field related
120

120 DSCROLL3 (Unused)

121

121 LSCROLL3

122

122 CSCROLL3

123

123 MACCEL

124

124 MLIMIT

125

125 ADDITEM

Item/Magic/Card/GF
126

126 SETWITCH

127

127 SETODIN

128

128 RESETGF

129

129 MENUNAME

Menus
12A

12A REST

12B

12B MOVECANCEL

12C

12C PMOVECANCEL (Unused)

12D

12D ACTORMODE

12E

12E MENUSAVE

Menus
12F

12F SAVEENABLE

Menus
130

130 PHSENABLE

Menus
131

131 HOLD

Party Management
132

132 MOVIECUT

133

133 SETPLACE

134

134 SETDCAMERA

135

135 CHOICEMUSIC

136

136 GETCARD

137

137 DRAWPOINT

Menus
138

138 PHSPOWER

139

139 KEY

13A

13A CARDGAME

Menus
13B

13B SETBAR

13C

13C DISPBAR

13D

13D KILLBAR

13E

13E SCROLLRATIO2

13F

13F WHOAMI

140

140 MUSICSTATUS

141

141 MUSICREPLAY

142

142 DOORLINEOFF

Entity
143

143 DOORLINEON

Entity
144

144 MUSICSKIP

145

145 DYING

Party Management
146

146 SETHP

Party Management
147

147 GETHP (Unused)

Party Management
148

148 MOVEFLUSH

149

149 MUSICVOLSYNC

14A

14A PUSHANIME

14B

14B POPANIME

14C

14C KEYSCAN2

Input
14D

14D KEYON2 (Unused)

Input
14E

14E PARTICLEON

14F

14F PARTICLEOFF

150

150 KEYSIGHNCHANGE

151

151 ADDGIL

Item/Magic/Card/GF
152

152 ADDPASTGIL

Item/Magic/Card/GF
153

153 ADDSEEDLEVEL

Item/Magic/Card/GF
154

154 PARTICLESET

155

155 SETDRAWPOINT

156

156 MENUTIPS

Menus
157

157 LASTIN

158

158 LASTOUT

159

159 SEALEDOFF

15A

15A MENUTUTO

Menus
15B

15B OPENEYES (Unused)

15C

15C CLOSEEYES

15D

15D BLINKEYES (Unused)

15E

15E SETCARD

Item/Magic/Card/GF
15F

15F HOWMANYCARD

Item/Magic/Card/GF
160

160 WHERECARD

Item/Magic/Card/GF
161

161 ADDMAGIC

Item/Magic/Card/GF
162

162 SWAP

163

163 SETPARTY2 (Unused)

164

164 SPUSYNC

Timer
165

165 BROKEN

166

166 UNKNOWN1

167

167 UNKNOWN2

168

168 UNKNOWN3

169

169 UNKNOWN4

170

170 UNKNOWN5

Item/Magic/Card/GF
171

171 UNKNOWN6

Animation
172

172 UNKNOWN7

Animation
173

173 UNKNOWN8

Animation
174

174 UNKNOWN9

Animation
175

175 UNKNOWN10

176

176 UNKNOWN11

177

177 UNKNOWN12

178

178 UNKNOWN13

Music and Sound
179

179 UNKNOWN14

Music and Sound
180

180 UNKNOWN15

181

181 UNKNOWN16

Field related
182

182 UNKNOWN17

Field related
183

183 UNKNOWN18

Menus