ff3:ff3us:doc:asm:codes:overworld_character_script

00-3F                   $EE7922     Graphical Actions
40-7F                   $EE7932     Graphical Actions, flipped horizontally
  100nnndd
  ___ _ __
   |  | |__ d: direction (0: up, 1: right, 2: down, 3: left)
   |  |____ n: number of steps (1 is added to this, so 1-8 steps possible)
   |_______ always 100

Movement table in tiles:
1      2      3      4      5      6      7      8 
------------------------------------------------------
80     84     88     8C     90     94     98     9C   | Move character up
81     85     89     8D     91     95     99     9D   | Move character right
82     86     8A     8E     92     96     9A     9E   | Move character down
83     87     8B     8F     93     97     9B     9F   | Move character left

A0                                  Move character right/up 1x1 tiles
A1                                  Move character right/down 1x1 tiles
A2                                  Move character left/down 1x1 tiles
A3                                  Move character left/up 1x1 tiles
A4                                  Move character right/up 1x2 tiles
A5                                  Move character right/up 2x1 tiles
A6                                  Move character right/down 2x1 tiles
A7                                  Move character right/down 1x2 tiles
A8                                  Move character left/down 1x2 tiles
A9                                  Move character left/down 2x1 tiles
AA                                  Move character left/up 2x1 tiles
AB                                  Move character left/up 1x2 tiles
  ci: sbbbbbbb bbbbbiii
      _ ___________ ___
      |      |       |__ i: bit index (0-7)
      |      |__________ b: byte (added to $1E80)
      |_________________ s: if 1, check that bit is set; else, check that bit is clear

Summary:
B0 c1 aaaaaa                        if(c1), goto aaaaaa
B1 c1 c2 aaaaaa                     if(c1 || c2), goto aaaaaa
B2 c1 c2 c3 aaaaaa                  if(c1 || c2 || c3), goto aaaaaa
B3 c1 c2 c3 c4 aaaaaa               if(c1 || c2 || c3 || c4), goto aaaaaa
B4 c1 c2 c3 c4 c5 aaaaaa            if(c1 || c2 || c3 || c4 || c5), goto aaaaaa
B5 c1 c2 c3 c4 c5 c6 aaaaaa         if(c1 || c2 || c3 || c4 || c5 || c6), goto aaaaaa
B6 c1 c2 c3 c4 c5 c6 c7 aaaaaa      if(c1 || c2 || c3 || c4 || c5 || c6 || c7), goto aaaaaa
B7 c1 c2 c3 c4 c5 c6 c7 c8 aaaaaa   if(c1 || c2 || c3 || c4 || c5 || c6 || c7 || c8), goto aaaaaa
B8 c1 aaaaaa                        if(c1), goto aaaaaa
B9 c1 c2 aaaaaa                     if(c1 && c2), goto aaaaaa
BA c1 c2 c3 aaaaaa                  if(c1 && c2 && c3), goto aaaaaa
BB c1 c2 c3 c4 aaaaaa               if(c1 && c2 && c3 && c4), goto aaaaaa
BC c1 c2 c3 c4 c5 aaaaaa            if(c1 && c2 && c3 && c4 && c5), goto aaaaaa
BD c1 c2 c3 c4 c5 c6 aaaaaa         if(c1 && c2 && c3 && c4 && c5 && c6), goto aaaaaa
BE c1 c2 c3 c4 c5 c6 c7 aaaaaa      if(c1 && c2 && c3 && c4 && c5 && c6 && c7), goto aaaaaa
BF c1 c2 c3 c4 c5 c6 c7 c8 aaaaaa   if(c1 && c2 && c3 && c4 && c5 && c6 && c7 && c8), goto aaaaaa
C0                                  Set entity's speed (within the event) to slowest
C1                                  Set entity's speed (within the event) to slow
C2                                  Set entity's speed (within the event) to normal
C3                                  Set entity's speed (within the event) to fast
C4                                  Set entity's speed (within the event) to fastest
C7 xx xx

Bit manipulation (C8-C9):
  bbbbbbbb bbbbbiii
   ____________ ___
         |       |__ i: bit index (0-7)
         |__________ b: byte (added to $1E80)

C8 xxxx                 $EE7D46     Set event bit
C9 xxxx                 $EE7D6F     Clear event bit
CC                                  Turn character up
CD                                  Turn character right
CE                                  Turn character down
CF                                  Turn character left
D0                                  Show character
D1                                  Hide character
D2 nnnn xx yy mm                    Load map nnnn, position (xx, yy), mode mm
D3 nnnn xx yy mm                    Load map nnnn, position (xx, yy), mode mm
D4 aaaaaa                           If ($08 & 0x80 == 0), goto $aaaaaa
D5 xx aaaaaa                        If ($F6 != xx), goto $aaaaaa
D8                                  Unfade screen
D9                                  Fade screen
DD                                  Hide mini-map
DF                                  Show mini-map
E0 xx                               Pause for xx units
FC                                  Change character to ship graphic
FD                                  Show Figaro Castle submerging
FE                                  Show Figaro Castle emerging
FF                                  End Map Script
  • ff3/ff3us/doc/asm/codes/overworld_character_script.txt
  • Last modified: 5 years ago
  • (external edit)