object
games/tbs/src/object on GitHub
The Field objects guide explains this folder.
Folders
battle_cue.c
games/tbs/src/object/battle_cue.c
Globals
gEncounter_BattleMusic
const u16 gEncounter_BattleMusic[35]
Battle music: each song as 0x8000 | song, followed by the encounters that use it as (zone << 4) + slot, ended by 0 (BattleFx_SelectBattleCue).
Used by BattleFx_SelectBattleCue.
colorfx.c
games/tbs/src/object/colorfx.c
Functions
ReelGame_Start
s32 ReelGame_Start(void)
Plays the slot machine: blanks the screen, seeds the random numbers with the play time and runs the game. Returns 0.
Graphics_ScaleRgb555
s32 Graphics_ScaleRgb555(u16 *src, u16 *dst, s32 scale, s32 count)
Writes count RGB555 colours from src to dst scaled by scale (16.16, 0x10000 keeps them). Returns 0.
Used by ReelGame_Run.
ReelGame_TransferCanvas
void ReelGame_TransferCanvas(void)
A scheduler callback: on a frame whose canvas is ready (transferPending), sends the canvas to its tiles in VRAM (REEL_CANVAS_TILES), then clears it or fades it into trails as transferMode says.
Used by ReelGame_Run.
Palette_DarkenSceneStep
void Palette_DarkenSceneStep(void)
Darkens the screen one step: lowers each channel of the 16 colours of BG palette 10 and of OBJ colours 1 to 239 by 1.
Used by ReelGame_Run.
Palette_StepTowardResource
void Palette_StepTowardResource(s32 resource)
Moves the first 64 BG colours one step toward the palette of resource; the backdrop colour is not written back.
Used by ReelGame_Run.
ReelGame_DrawCanvasLine
void ReelGame_DrawCanvasLine(s32 x0, s32 y0, s32 x1, s32 y1, s32 color)
Draws a line from (x0, y0) to (x1, y1) on the 256 x 128 8bpp canvas (32 tiles across), writing only over lower colour numbers.
Used by ReelGame_Run.
ReelGame_RunFrame
void ReelGame_RunFrame(void)
The slot machine's frame callback: reads the keys, runs the game's state (betting, spinning and stopping the reels, scoring the paylines, choosing reels to hold, showing a win) and builds all 128 sprites: the cursor, the title letters of a win, the frame, the hold lamps, the spin counter, the paylines, the reel symbols, the lever and the bottom bar.
Used by ReelGame_Run.
ReelGame_InitTitle
void ReelGame_InitTitle(void)
Sets up the bouncing title letters of a win, the brightness wave of the screen's lines and the betting window, and starts at betting.
Used by ReelGame_Run.
ReelGame_Run
void ReelGame_Run(void)
The slot machine: loads its backgrounds, sprites and palettes, fills each of the five reels with 21 random symbols (with eight placed symbols of rank 0 to 5), then runs until the player leaves: fading in, drawing the paylines on the canvas while betting or winning, and the jackpot's sparks and colour cycle while showing a win. Then fades out and frees its memory.
Used by ReelGame_Start.
LzPack_ResetSlotBuckets
void LzPack_ResetSlotBuckets(void)
The LZ packer below: empties its 256 hash chains (one per byte value) and numbers its 1024 window nodes.
Used by LzPack_PackStream.
LzPack_InsertSlotNode
void LzPack_InsertSlotNode(s32 index)
Adds window position index to the chain of the byte it holds.
Used by LzPack_ConsumeSlotBytes.
LzPack_RemoveSlotNode
void LzPack_RemoveSlotNode(s32 slot)
Removes window position slot from its chain.
Used by LzPack_ConsumeSlotBytes.
LzPack_ConsumeSlotBytes
void LzPack_ConsumeSlotBytes(s32 start, s32 count, const u8 *input)
Reads count more input bytes into the window from position start, dropping the bytes they replace from their chains; past the end of the input the positions are marked empty (-1).
Used by LzPack_PackStream.
LzPack_CopyBufferedBytes
void LzPack_CopyBufferedBytes(u8 *destination)
Appends the finished group (a flag byte and up to eight items) to the output.
Used by LzPack_PackStream.
LzPack_FindWindowMatch
static __inline__ void LzPack_FindWindowMatch(s32 start)
Finds the longest earlier match (up to PACK_MATCH_MAX bytes, at most PACK_DISTANCE_MAX back) for the bytes at window position start; matchLen stays 1 for none.
Used by LzPack_PackStream.
LzPack_PackStream
UNUSED s32 LzPack_PackStream(const u8 *input, u8 *dst, s32 size)
Packs size bytes of input into dst with a small LZ scheme and returns the packed size. Each group starts with a flag byte, a set bit marking a match: two bytes of distance and length (lengths 2 to 16), or three for lengths up to 272; a match is put off by one byte when the next position matches further. A zero match ends the stream. Nothing in this game calls it.
Structures
Reel
struct Reel
One of the slot machine's five reels: how far it has turned, its 21 symbols, whether it is held, and the countdown to its stop (-1 until one starts).
| Field | Declared as | |
|---|---|---|
position | s32 position | pixels, 16 a symbol |
symbols | u8 symbols[21] | |
held | u8 held | |
stop | s8 stop | frames |
Used by ReelGame_Run, ReelGame_RunFrame.
ReelWork
struct ReelWork
The slot machine's work in heap slot 45: its reels, state, bet and spins, keys, timer, winning lines, sprites and windows.
| Field | Declared as | |
|---|---|---|
reels | struct Reel reels[5] | |
state | s32 state | |
cursor | s32 cursor | |
spins | s32 spins | |
bet | s32 bet | |
keys | u16 keys | |
direction | u16 direction | |
pressed | u16 pressed | |
repeat | u16 repeat | |
unk0a4 | u8 unk0a4[4] | |
timer | s32 timer | |
winningLines | s32 winningLines[7] | |
obj | struct OamShadow obj[128] | |
window | struct UiWindow *window | |
subWindow | struct UiWindow *subWindow | |
unk4d0 | u8 unk4d0[8] | |
scanlineOffsets | u16 scanlineOffsets[160] | |
phase | s32 phase |
Used by ReelGame_InitTitle, ReelGame_Run, ReelGame_RunFrame.
ReelSave
struct ReelSave
gGameState seen from +12, the base the bytes load: wonPrizes is gGameState.wonPrizes (through the field itself ReelGame_RunFrame differs 12)
| Field | Declared as | |
|---|---|---|
unk000 | u8 unk000[0x120] | |
wonPrizes | s8 wonPrizes[16] |
Used by ReelGame_Run, ReelGame_RunFrame.
Enumerations
ReelGameState
enum ReelGameState
The slot machine's states (ReelWork.state).
| Value | = | |
|---|---|---|
REEL_BETTING | 0 | Up and Down change the bet, A spins, B leaves |
REEL_SPINNING | 1 | the reels spin until R or time stops each |
REEL_WON | 2 | a payline won: a pause |
REEL_SHOWING_WIN | 3 | the win is shown until A |
REEL_CHOOSING_HOLDS | 5 | choose reels to hold, or pull the lever |
REEL_DONE | 10 | the game ends |
REEL_NO_WIN | 11 | no payline won: A to choose holds |
REEL_OUT_OF_SPINS | 20 | the fourth spin lost: a pause, then the end |
Macros
REEL_SPARKS
#define REEL_SPARKS ((struct EffectStep *)Ram_MapCellBuffer)
The sparks of the jackpot, kept in the map cell buffer.
Used by ReelGame_InitTitle, ReelGame_Run.
REEL_HEAP_SLOT
#define REEL_HEAP_SLOT 45
The slot machine's own work block (struct ReelWork), beside the battle effect blocks it borrows.
Used by ReelGame_InitTitle, ReelGame_Run, ReelGame_RunFrame.
REEL_CANVAS_SIZE
#define REEL_CANVAS_SIZE (256 * 128)
The paylines' canvas: 256 x 128 pixels of 8-bit colour, shown on BG2 from its tile 212, where the third row of its map begins.
Used by ReelGame_Run, ReelGame_TransferCanvas.
Also, macros without a comment: REEL_CANVAS_TILES, PACK_WINDOW_MASK, PACK_MATCH_MAX, PACK_DISTANCE_MAX, PACK_LOOKAHEAD.
fxdata.c
Effect tables: object scripts, curves and lookup tables of the object bank.
Globals
gField_TileMessageOffsets
const u8 gField_TileMessageOffsets[6]
The message of each searchable tile code from 242 to 247, as an offset from MsgTileChecked and MsgTileResult.
Used by Field_SearchTile.
gAnimation_ChildPaletteCycle
const u8 gAnimation_ChildPaletteCycle[8]
The palette cycle of Animation_ChildPaletteCycle ((gFrameCount >> 1) & 7).
Used by Animation_ApplyChildPalette.
gBattleFx_ParticleEmitterScript
const s32 gBattleFx_ParticleEmitterScript[]
Grows from half size to full size, a step every 2 frames.
Used by BattleFx_StartRandomParticleEmitter, EffectRuntime_RunRisingObjectSequence.
gBattleFx_RisingPulseScript
const s32 gBattleFx_RisingPulseScript[]
Pulses twice, then rests, over and over.
Used by ItemDisplay_RaiseAboveLeader.
gBattleFx_ParticleScript
const s32 gBattleFx_ParticleScript[]
Rises for 60 frames, then disappears.
Used by BattleFx_ClearRandomParticles, BattleFx_StartRandomParticleEmitter, Object_InitializeSparkle.
gDisplayTransition_NoiseWidths
const u8 gDisplayTransition_NoiseWidths[34]
The width of the bars of window transition mode 0, by progress.
Used by DisplayTransition_UpdateScanlineTable.
gDisplayTransition_EdgeOffsets
const s8 gDisplayTransition_EdgeOffsets[32]
The wobble of the circle edge of window transition mode 8.
Used by DisplayTransition_UpdateScanlineTable.
gDisplayTransition_DitherTable
const u8 gDisplayTransition_DitherTable[64]
0 to 63 shuffled: the order in which the dissolve sets the pixels.
Used by DisplayTransition_UpdateFrame.
gBattlePalette_ChannelCurve
const u16 gBattlePalette_ChannelCurve[32]
Colour channel curves (0 to 31, to channels up to 0x7c00).
Used by BattleFx_BuildBuffer.
gBattleFx_DefinitionTable
const struct BattleEffectEntry gBattleFx_DefinitionTable[131]
Speaker definitions: {sprite, portrait (0xff for none), idle line flags}. BattleFx_FindDefinition searches all 131; the last is the default.
Used by BattleFx_FindDefinition.
gObjectMotion_VariantScripts
const s32 gObjectMotion_VariantScripts[97]
Squashes as many times as the variant (1 to 3): variant v starts at word (3 - v) * 32 and runs to the end. field.h declares it const u8[], and psynergy_effects.c adds (3 - v) << 7 bytes and reads it through an s32 *.
Used by ObjectMotion_SetVariantCallback.
gObjectGroup_BlinkChildValues
const u8 gObjectGroup_BlinkChildValues[4]
A child value by frame ((gFrameCount >> 1) & 3).
Used by ObjectGroup_ApplyIndexedChildValue.
gDisplayScroll_WaveSine
const s16 gDisplayScroll_WaveSine[256]
Sine times 4096, 256 steps to a turn.
Used by DisplayScroll_BuildAndSwapHBlankPage.
gFieldFx_GroundParticleFrames
const s16 gFieldFx_GroundParticleFrames[80]
{dx, dy, tile, shape, size} for each of 16 frames.
Used by FieldFx_UpdateGroundParticles.
gFieldFx_SparkleFrames
const struct SparkleFrame gFieldFx_SparkleFrames[32]
{dy, tile}
Used by FieldEffect_UpdateSparkles.
gBattleFx_PulseScales
const u32 gBattleFx_PulseScales[3]
Two scales that alternate ((gFrameTick >> 2) & 1); nothing reads the third word.
Used by BattleFx_SetObjectAlternatingWords.
gBattleFx_CommonParticleScript
const s32 gBattleFx_CommonParticleScript[]
[0] only frees the actor, +1 waits for it to arrive and frees it; +3 is gBattleFx_SourceHoldScript, which follows.
Used by BattleEffect_SpawnBurstParticleField, BattleFx_InitializeFallingFragment, BattleFx_RunSparkEmitter, BattleFx_RunVenusDjinnCapture, BattleFx_UpdateDriftingFallObject, BattleFx_UpdateOrbitingParticleFade, BattleFx_UpdateShrinkingOrbitObject, BattleFx_WanderAroundAnchor, FieldFx_RunForce, FieldFx_RunLiftOnTarget, FieldFx_SpawnRandomAngleTriplet, FieldFx_UpdateScaledArcObjectA, FieldFx_UpdateScaledArcObjectB, SpawnHeavyImpactEffect.
gBattleFx_CyclePatternWords
const u16 gBattleFx_CyclePatternWords[16]
An angle for each value of the right, left, up and down bits of the +Control Pad; 0xffff for none.
Used by Input_GetDpadAngle.
gBattleFx_BurstParticleObjectScript
const s32 gBattleFx_BurstParticleObjectScript[]
Word +4 is gBattleFx_HeavyImpactScript.
Used by FieldFx_RunForce, FieldFx_RunGrowth.
gUnused_BattleFxBytes
const u8 gUnused_BattleFxBytes[4]
The same four bytes as gBattleFx_QuadrantModes; nothing reads them.
gBattleFx_ShortEffectScript
const s32 gBattleFx_ShortEffectScript[]
The three scripts of gEffectScripts.
gWorldMap_MarkerBlendCycle
const u8 gWorldMap_MarkerBlendCycle[32]
The brightness of the world map markers ((gFrameCount >> 1) & 31).
Used by Map_UpdateWorldMapMarkers.
gWorldMap_CursorDirectionAngles
const u16 gWorldMap_CursorDirectionAngles[16]
An angle for each +Control Pad direction (eight of them); 0xffff for none.
Used by Map_UpdateWorldMapMarkers.
Also, globals without a comment: gBattleFx_TargetRangeByMode, gBattleFx_MarkerParticleScript, gBattlePalette_ChannelCurveLight, gBattlePalette_ChannelCurveContrast, gBattleFx_SourceHoldScript, gBattleFx_FragmentScript, gBattleFx_QuadrantModes, gBattleFx_HeavyImpactScript, gBattleFx_MediumEffectScript, gBattleFx_LongEffectScript, gBattleFx_RandomChildValues.
object.c
The field object: the main loop and scene changes, random encounters, a field scene's actors, the leader's steps and the requests they raise, the scene's events, using items and Psynergy on the field, the map's markers, and the window transitions and colour buffer that the field and battles share. object_internal.h holds the includes and the few macros and types more than one part uses; the code is in the files under object/, included here in ROM order, each opening with what it holds (head -2 object/*.c). The ROM shows one object; the parts are ours, cut where one family ends and the next begins.
README.md in this folder gives the words, prefixes and spellings the parts share.
object_internal.h
games/tbs/src/object/object_internal.h
Unions
PolarOffsetPosition
union PolarOffsetPosition
The polar-offset routine walks three array elements. Named coordinates remain useful to callers; the union gives that array real storage.
| Field | Declared as | |
|---|---|---|
vector | struct EffectVector vector | |
coordinates | s32 coordinates[3] |
Used by BattleFx_StartRandomParticleEmitter, Field_GetCollisionAheadOfLeader, ItemDisplay_EmitSparkles, Object_GetTriggerTileAheadOfCurrent, RevealMarker_EmitSparkles.
Macros
EXIT_NONE
#define EXIT_NONE 999
Field_RunScene's result when the scene was not left (scene.c, run_scene.c).
Used by Field_RunScene, Scene_TakeExit.
REGION_FIXED
#define REGION_FIXED(value) ((s32)((u32)(s32)(value) << 16))
A scene region's bounds, in pixels, as 16.16 fixed point.
Used by Field_CheckExitRegions, Scene_ApplyEntrance.
PSYNERGY_EV
#define PSYNERGY_EV(phase) ((phase) << 28 | EVENT_PSYNERGY)
The flags of a Psynergy event (kind 5) in the given phase.
Used by Field_RunPsynergyEvents, Field_UsePsynergy.
PSYNERGY_MESSAGE
#define PSYNERGY_MESSAGE(who, act, m)
Shows message m with the user's and the Psynergy's names, and waits.
Used by Field_UsePsynergy.
Also, macros without a comment: ABILITY_ID, ACT_UNIT, ACT_PACKED, UNIT_NONE, ALLY_MAX, EXIT_RETREAT, FLAG_PSYNERGY_EFFECT, FLAG_PSYNERGY_TARGET, PSYNERGY_EV_ANY.
psynergy_effects.c
games/tbs/src/object/psynergy_effects.c
The field Psynergy and event object: the commands scene scripts run (waits, items, questions, destinations, actors, messages and the camera), moving on the field (views, jumps and climbing), the field's weather and wavy backgrounds, Djinn joining the party, each field Psynergy's effect, the effect slots its particles use, and the world map screen. psynergy_effects_internal.h holds the includes and the macros, types and inline helpers more than one part uses; the code is in the files under psynergy_effects/, included here in ROM order, each opening with what it holds (head -2 psynergy_effects/*.c). The ROM shows one object; the parts are ours, cut where one family ends and the next begins.
A field Psynergy reaches its effect through its field kind, the type column of games/tbs/src/game/actions.tsv; dispatch.c runs the kind's handlers.
README.md in this folder gives the words, prefixes and spellings the parts share.
psynergy_effects_internal.h
games/tbs/src/object/psynergy_effects_internal.h
Functions
BattleFx_MoveAfterimageHalfway
static inline void BattleFx_MoveAfterimageHalfway(union FieldObject *fieldObject)
Per-frame update of an afterimage: closes half the distance to the object it is linked to, on all three axes.
Used by BattleFx_HalveDistanceToTarget, ObjectMotion_MoveHalfwayTowardTarget.
FieldFx_UpdateSceneSlots
static __inline__ void FieldFx_UpdateSceneSlots(void)
Runs the update of each of the 24 effect slots.
Used by BattleFx_UpdateAllEffectSlots, BattleFx_UpdateAllSlots.
BattleFx_InitializeFallingFragment
static inline void BattleFx_InitializeFallingFragment(struct ItemBreakFragmentObject *fragment)
Both item fragments and Lift shed the same short-lived falling particle.
Used by BattleFx_SpawnFallingParticles, BattleFx_UpdateItemBreakFragment.
Structures
Object
struct Object
A FieldActor seen with its position as one vector, to pass it whole. The gaps are FieldActor fields this view does not use.
| Field | Declared as | |
|---|---|---|
pad0 | u8 pad0[6] | |
angle | u16 angle | |
pos | struct EffectVector pos | |
pad1 | u8 pad1[14] | |
kind | u8 kind | |
pad2 | u8 pad2[0x2d] | |
sprite | struct AnimationObject *sprite |
Used by BattleEffect_UpdatePhasedRadialParticle, FieldFx_RunDouse, Object_GetTriggerTileAheadOfCurrent.
DescendingOrbitObject
struct DescendingOrbitObject
A FieldActor seen with the halfword at 0x64 unsigned and the one at 0x66 signed, as the bytes read them (FieldActor's own types change the code).
| Field | Declared as | |
|---|---|---|
unk00 | u8 unk00[8] | |
x | s32 x | |
y | s32 y | |
z | s32 z | |
unk14 | u8 unk14[80] | |
timer | u16 timer | |
angle | s16 angle |
Used by BattleFx_UpdateDescendingOrbitObject.
CaptureObject
struct CaptureObject
A FieldActor seen with the halfword at 0x5e (lifetime), which FieldActor does not name.
| Field | Declared as | |
|---|---|---|
unk00 | u8 unk00[8] | |
x | s32 x | |
y | s32 y | |
z | s32 z | |
baseY | s32 baseY | |
scaleX | s32 scaleX | |
scaleY | s32 scaleY | |
unk20 | u8 unk20[8] | |
gravity | s32 gravity | |
unk2c | u8 unk2c[4] | |
speed | s32 speed | |
unk34 | u8 unk34[33] | |
mode | u8 mode | |
unk56 | u8 unk56[5] | |
visible | u8 visible | |
unk5c | u8 unk5c[2] | |
lifetime | u16 lifetime | |
unk60 | u8 unk60[4] | |
timer | u16 timer | |
angle | u16 angle | |
linkedObject | struct FieldActor *linkedObject | |
callback | void (*callback)(union FieldObject *object) |
Used by BattleFx_RunVenusDjinnCapture.
WaveFxSprite
struct WaveFxSprite
A particle's sprite, seen as the two fields Douse and Mind Read set on it.
| Field | Declared as | |
|---|---|---|
unk00 | u32 unk00[2] | |
unk08 | u8 unk08 | |
unk09_0 | u32 unk09_0 : 2 | |
mode | u32 mode : 2 | |
unk09_4 | u32 unk09_4 : 4 | |
unk0a | u8 unk0a[0x1c] | |
palette | u8 palette |
Used by FieldFx_UpdateMindReadWave.
ItemBreakFragmentObject
struct ItemBreakFragmentObject
A FieldActor seen with the halfword at 0x5e (its lifetime), which FieldActor does not name.
| Field | Declared as | |
|---|---|---|
reserved00 | u8 reserved00[72] | |
gravity | s32 gravity | |
reserved4c | u8 reserved4c[9] | |
motionFlags | u8 motionFlags | |
reserved56 | u8 reserved56[8] | |
lifetime | u16 lifetime |
Used by BattleFx_InitializeFallingFragment, BattleFx_SpawnFallingParticles, BattleFx_UpdateItemBreakFragment.
SparkObject
struct SparkObject
A FieldActor seen with the halfword at 0x5e (its lifetime), which FieldActor does not name.
| Field | Declared as | |
|---|---|---|
unk00 | u8 unk00[8] | |
x | s32 x | |
y | s32 y | |
z | s32 z | |
unk14 | u8 unk14[4] | |
scaleX | s32 scaleX | |
scaleY | s32 scaleY | |
unk20 | u8 unk20[24] | |
anchorX | s32 anchorX | centre of the sway (FieldActor's targetX) |
unk3c | u8 unk3c[12] | |
gravity | s32 gravity | as in FieldActor |
unk4c | u8 unk4c[9] | |
motionFlags | u8 motionFlags | as in FieldActor |
unk56 | u8 unk56[8] | |
lifetime | u16 lifetime | |
unk60 | u8 unk60[4] | |
phase | s16 phase | phase of the sway (128 frames a cycle) |
unk66 | u8 unk66[6] | |
update | void (*update)(union FieldObject *object) |
Used by BattleFx_RunSparkEmitter, BattleFx_SwayParticle.
Macros
PSYNERGY_EFFECT_SLOT_COUNT
#define PSYNERGY_EFFECT_SLOT_COUNT 24
The effect slots of a Psynergy effect's scene (gEffectWork->slots).
Used by BattleFx_ClearActiveSlotsAndScheduleUpdates, FieldFx_RunRetreat, FieldFx_UpdateSceneSlots.
DJINNI_0
#define DJINNI_0 300
gGameState.pendingDjinnEvent of Djinni 0 (requests.c, djinni.c).
Used by Djinn_ResolvePendingEvent, FieldObject_PlaceSceneActors, Field_RequestDjinnBattle.
DEFINE_SHRINK_AND_DESTROY
#define DEFINE_SHRINK_AND_DESTROY(name, step)
Defines a per-frame update that spins an object 1/8 turn a frame while its scale changes by step, releasing the object once the scale falls below 0x3000.
HEAP_SLOT_FX
#define HEAP_SLOT_FX 56
the Psynergy effect's work (gWorkSlot[56], gEffectWork)
Used by BattleEffect_CleanupSceneObjects, BattleFx_ClearActiveSlotsAndScheduleUpdates, BattleFx_DispatchRequestKind, BattleFx_InitializeSlots, BattleFx_LoadActionEffectResources, BattleFx_Run.
ITEM_BREAK_SHARD_MAX
#define ITEM_BREAK_SHARD_MAX 24
The shards DEFINE_ITEM_BREAK_EFFECT's effects scatter.
DEFINE_ITEM_BREAK_EFFECT
#define DEFINE_ITEM_BREAK_EFFECT(name, spawn)
Defines an effect cast with no target: spawn makes an object 16 pixels above the effect's position and 32 pixels to either side; each moves 24 pixels its way, then 24 shards scatter 8 to 32 pixels.
Also, macros without a comment: ABOVE.
zonedata.c
games/tbs/src/object/zonedata.c
Globals
gWorldMap_EncounterRules
const s16 gWorldMap_EncounterRules[132]
The world map's encounter zones (struct TerrainRule): {terrain kind, terrain behavior (-1 for any), flag (-1, or a flag that turns the rule off once set), zone}, ended by kind -1.
Used by Encounter_ResolveWorldMapZoneAndBackdrop.
gEncounter_AreaEntryTable
const u16 gEncounter_AreaEntryTable[160]
The encounter of each Djinni battle (Encounter_GetDjinnEnemyGroup): {zone, slot}.
Used by Encounter_GetDjinnEnemyGroup.