Command 0D - npc movement properties Bitmask 01 - NPC walks around map solidity 02 - NPC walks around PC solidity FC - unused Interpretation NPCMoveProps([walk around walls], [walk around PCs]) Command 0E - sprite positioning properties (determines where to stop a moving sprite) Bitmask 01 - center sprite on tile, used for move commands 02 - center sprite on object, used for follow commands FC - unused Command 16 - if statement Operator enumeration 0: A == M 1: A != M 2: A > M 3: A < M 4: A >= M 5: A <= M 6: A & M != 0 7: A | M != 0 If bit 0x08 of the operator is set, then its the same as above, except that the 8-bit accumulator flag is also…
Read moreRead less
Command 0D - npc movement properties
Bitmask
01 - NPC walks around map solidity
02 - NPC walks around PC solidity
FC - unused
Interpretation
NPCMoveProps([walk around walls], [walk around PCs])
Command 0E - sprite positioning properties (determines where to stop a moving sprite)
Bitmask
01 - center sprite on tile, used for move commands
02 - center sprite on object, used for follow commands
FC - unused
Command 16 - if statement
Operator enumeration
0: A == M
1: A != M
2: A > M
3: A < M
4: A >= M
5: A <= M
6: A & M != 0
7: A | M != 0
If bit 0x08 of the operator is set, then its the same as above, except that the 8-bit accumulator flag is also set at the end. This makes little since though, since it looks like its always set anyway before the command is decoded, and is never reset by it.
If bit 0x80 of the operator is set, 0x0100 is added to the offset.
M should be the third byte (marked vv in my notes) and A should be the value loaded from the offset marked oo in my notes. But I might have them mixed up, so if it doesn't appear to work properly, assume that I have them reversed.
Command 2E - multi-mode memory copy
Mode
40: 2E 4c ii nn se dd . c - colors affected, same as ColorAdd command . ii - starting color index . nn - number of colors affected . s - starting intensity . e - ending intensity . dd - duration of change . Color Addition
50: Color Subtraction, same params as 40
80: 2E 8? ps nnnn . p - palette num . s - starting color . nnnn - bytes to copy, immediately after the command (+2) . does different things based on mode . two byte version of 88
Command 84 - npc solidity properties
Bitmasks
01 - npc is solid
02 - npc can be pushed
FC - unused
Interpretation
NPCSolidProps([solid], [pushable])
Command 88 - multi-mode memory copy
Does different things based on mode. IMS, 30 and 50 do the same thing as 20 and 40. Modes 81 and 20 are commonly used for portals.
Mode
00: 88 00 . reset palette
20: 88 20 ?? ??
30: 88 30 ?? ??
40: 88 4? ?? ?? ??
50: 88 5? ?? ?? ??
80: 88 8? cc ?? . cc - bytes to copy, immediately after the command (+2)
Command A8, A9 - face npc
These commands will change a sprite's apparent facing, but not the actual facing value in memory. This means "relative" facing really cannot even be faked by facing an object, getting the value, and modifying it with bit and byte math.
Command C8 - special dialog
Displays special game dialogs
if bits C0 are clear:
0 - Character replace menu
1 - Load screen
2 - Save screen
values 80 - BF are shops
values C0 - C7 are naming screens
0 - Crono
1 - Marle
2 - Lucca
3 - Robo
4 - Frog
5 - Ayla
6 - Magus
7 - Epoch
Command D8 - Battle
Byte 1
01: No win pose
02: Menu at bottom
04: Close enemies (PC solidity reduced from 1 tile to 1/2 tile)
08: Unused. Appears to have been an "easy mode" flag, as it is only set in battles where Crono is the only possible party member.
10: Persistent Enemy (must have bit 80 set in Load Enemy)
20: Pre-scripted events (Attract mode)
40: Unknown, appears unused, not set in any battle
80: No run
Byte 2
01: Unknown, appears unused, not set in any battle
02: Unknown, appears unused, not set in any battle
04: Unknown, appears unused, not set in any battle
08: Unknown, appears unused, not set in any battle
10: Unknown, used in 6 battles: Location 071 Truce Canyon portal [039C], Location 0DF Lab 32 West entrance [0309], [040E], Location 0E2 Proto Dome [0FB0], [1081], [10BE]
20: No game over
40: Map music
80: Auto-regroup
Command D9 - Move Party
Does not always seem to work. Changing Y Coord for PC1 in Gato's room to 5 results in no change. Changing both to 1 does though.
Top bit of coords controls PC facing:
00,00 - Up
80,00 - Left
00,80 - Down
80,80 - Right
Command E0 - Warp Party
I think the difference between this command and DF, E1 is that they wait for VBlank before updating
Location bitmasks
01FF - Location
1E00 - Unknown
6000 - Ignored
8000 - Unknown
Interpretation reads:
E0 [Location] [Mask1E00] [Mask8000] xx yy
Command E4, E5 - Copy Tiles
Need more examples to look at for this command. E5 is almost identical to E4, but E5 looks at bits 07 again after it copies the tiles, for some reason I have not yet determined.
ff bitfield arguments:
01 - copy layer 1
02 - copy layer 2 (?)
04 - copy layer 3 (?)
08 - copy tile properties (layer 1 only?)
F0 - ???
Command E6 - Scroll Layers
E6 is a bit different from E7 (Scroll Screen). It can do two scrolls (to and back) and can scroll individual layers.
Command EC - All purpose sound command
Commands:
11 ss 00 . play song ss
14 ss 00 . note position of current music and play song ss
18 ss pp . play sound ss at panning position pp (left = 00, right = FF)
19 ss pp . appears to be the same as 18
82 ss vv . change sound effect volume to vv over duration ss
83 ?? ?? . no discernable effect, usually follows 82
85 ss rr . appears to be the same as 86
86 ss rr . change song's rate of play to rr over duration ss . rr is a signed byte.
88 01 01 . change song's state (eg: Chrono Trigger attract mode)
F0 00 00 . song goes to silence (only used once)
F2 00 00 . sound effect goes to silence (only used once)
Only three songs can have their states changed:
0D - Lavos' Theme
18 - Chrono Trigger
23 - The Hidden Truth
Command FF - Mode 7 scene
Calls a Mode 7 scene. causes data at 0x031513 to be decompressed. A few values:
00 - highway race
01 - none
02 - title screen
03 - top of black omen, "blurs" into view (Does Not Load new graphics, may not be visible)
04 - lavos falls to earth
0A - fireworks
0C - credits over moving star background
0D - programmer's ending credits
25 - lavos summoned to 600AD (DNL)
66 - Epoch, first person view
67 - world globe exploding, "But the future refused to change"
68 - world globe, "But the future refused to change" (short version)
69 - attract mode highway race
80 - long wormhole (first warp to 600 A.D.)
81 - normal wormhole
82 - quick wormhole
89 - wormhole to lavos
90 - black circle that opens similar to a portal and covers the entire screen (DNL)
91 - none
92 - the screen wipe effect used during attract mode (left to right)
93 - the screen wipe effect used during attract mode (right to left, open)
94 - left to right wipe (close)
95 - right to left wipe (close)
96 - Reset (see Castle Magus Inner Sanctum)
97 - unknown, not used. Stores next 3 bytes to 7E013A,7E013B,7E013D, and 0x04 to 7E0139 and 0x00 to 7E013C
98 - used by Taban during Moonlight Parade ending
99 - used during Death Peak summit sequence, no noticable effect
9A - used after Crono revived in Death Peak sequence
9B - Massive Portal (see Castle Magus Inner Sanctum)
9D - unknown, not used. Resets bit 0x02 in 7E0154. L3 and/or ASCII text related?
9E - Reality Distortion (see Castle Magus Inner Sanctum)
9F - set New Game+, and possibly other related data. Only used once in Location 1DF Tesseract, offset [01A4]
*PAR code 7E01DFxx will change any Mode 7 event to the new value entered