Alchemy
Loading...
Searching...
No Matches

helm_splitter.c File Reference

Helm Splitter, formations and the impact burst. More...

Go to the source code of this file.

Macros

#define HELM_SPLITTER_FRAMES   70
#define HELM_SPLITTER_STRIKE_FRAME   18
 the swirl strikes the target
#define HELM_SPLITTER_STAR_CELLS   0x3e80
 The pink star animation, after the swirl.
#define HELM_SPLITTER_CLEARED_SLOTS   1024
 PARTICLES slots freed first.
#define HELM_SPLITTER_SPARKS   16
 sparks scattered by the strike
#define HELM_SPLITTER_SPARK_SLOTS   128
 spark slots moved and drawn
#define IMPACT_BURST_SHARD_CELLS   0x59d8
 The fragment pictures in the sheet, four of 12x24, after the flash.
#define IMPACT_BURST_FRAGMENT_WIDTH   12
 each fragment picture's width
#define IMPACT_BURST_FRAGMENT_HEIGHT   24
 and height
#define IMPACT_BURST_FRAMES   72
#define IMPACT_BURST_FRAGMENTS   3
 fragments, work->particles 61 to 63
#define IMPACT_BURST_DRAWN_LARGE   30
 large sparks drawn
#define IMPACT_BURST_DRAWN_SMALL   60
 small sparks drawn
#define IMPACT_BURST_LARGE_SPARKS   64
 large sparks thrown
#define IMPACT_BURST_SMALL_SPARKS   64
 small sparks thrown
#define IMPACT_BURST_FIRST_FRAGMENT   61
 the first fragment in work->particles

Functions

void BattleFx_RunHelmSplitter (struct BattleEffectArgument *effect)
 The user leaps at the first target and strikes through a fire swirl; on frame 18 the target flashes and reels and 16 sparks scatter, bouncing off the ground.
void BattleFx_PlaceFormationObjects (s32 formation, s32 x, s32 z)
 Arranges work->objects in a formation; x and z are its origin in 16.16 pixels.
void BattleFx_RunImpactBurst (s32 formation, s32 x, s32 y)
 Opens an impact flash and scatters sparks and fragments, keeping the effect's objects in formation for the first 36 frames.

Detailed Description

Helm Splitter, formations and the impact burst.

Part of effect.c, the battle effect object, compiled only through it.

Definition in file helm_splitter.c.

Macro Definition Documentation

◆ HELM_SPLITTER_FRAMES

#define HELM_SPLITTER_FRAMES   70

Definition at line 16 of file helm_splitter.c.

Referenced by BattleFx_RunHelmSplitter().

◆ HELM_SPLITTER_STRIKE_FRAME

#define HELM_SPLITTER_STRIKE_FRAME   18

the swirl strikes the target

Definition at line 17 of file helm_splitter.c.

Referenced by BattleFx_RunHelmSplitter().

◆ HELM_SPLITTER_STAR_CELLS

#define HELM_SPLITTER_STAR_CELLS   0x3e80

The pink star animation, after the swirl.

Definition at line 19 of file helm_splitter.c.

Referenced by BattleFx_RunHelmSplitter().

◆ HELM_SPLITTER_CLEARED_SLOTS

#define HELM_SPLITTER_CLEARED_SLOTS   1024

PARTICLES slots freed first.

Definition at line 20 of file helm_splitter.c.

Referenced by BattleFx_RunHelmSplitter().

◆ HELM_SPLITTER_SPARKS

#define HELM_SPLITTER_SPARKS   16

sparks scattered by the strike

Definition at line 21 of file helm_splitter.c.

Referenced by BattleFx_RunHelmSplitter().

◆ HELM_SPLITTER_SPARK_SLOTS

#define HELM_SPLITTER_SPARK_SLOTS   128

spark slots moved and drawn

Definition at line 22 of file helm_splitter.c.

Referenced by BattleFx_RunHelmSplitter().

◆ IMPACT_BURST_SHARD_CELLS

#define IMPACT_BURST_SHARD_CELLS   0x59d8

The fragment pictures in the sheet, four of 12x24, after the flash.

Definition at line 238 of file helm_splitter.c.

Referenced by BattleFx_RunImpactBurst().

◆ IMPACT_BURST_FRAGMENT_WIDTH

#define IMPACT_BURST_FRAGMENT_WIDTH   12

each fragment picture's width

Definition at line 239 of file helm_splitter.c.

Referenced by BattleFx_RunImpactBurst().

◆ IMPACT_BURST_FRAGMENT_HEIGHT

#define IMPACT_BURST_FRAGMENT_HEIGHT   24

and height

Definition at line 240 of file helm_splitter.c.

Referenced by BattleFx_RunImpactBurst().

◆ IMPACT_BURST_FRAMES

#define IMPACT_BURST_FRAMES   72

Definition at line 242 of file helm_splitter.c.

Referenced by BattleFx_RunImpactBurst().

◆ IMPACT_BURST_FRAGMENTS

#define IMPACT_BURST_FRAGMENTS   3

fragments, work->particles 61 to 63

Definition at line 243 of file helm_splitter.c.

Referenced by BattleFx_RunImpactBurst().

◆ IMPACT_BURST_DRAWN_LARGE

#define IMPACT_BURST_DRAWN_LARGE   30

large sparks drawn

Definition at line 244 of file helm_splitter.c.

Referenced by BattleFx_RunImpactBurst().

◆ IMPACT_BURST_DRAWN_SMALL

#define IMPACT_BURST_DRAWN_SMALL   60

small sparks drawn

Definition at line 245 of file helm_splitter.c.

Referenced by BattleFx_RunImpactBurst().

◆ IMPACT_BURST_LARGE_SPARKS

#define IMPACT_BURST_LARGE_SPARKS   64

large sparks thrown

Definition at line 246 of file helm_splitter.c.

Referenced by BattleFx_RunImpactBurst().

◆ IMPACT_BURST_SMALL_SPARKS

#define IMPACT_BURST_SMALL_SPARKS   64

small sparks thrown

Definition at line 247 of file helm_splitter.c.

Referenced by BattleFx_RunImpactBurst().

◆ IMPACT_BURST_FIRST_FRAGMENT

#define IMPACT_BURST_FIRST_FRAGMENT   61

the first fragment in work->particles

Definition at line 249 of file helm_splitter.c.

Referenced by BattleFx_RunImpactBurst().

Function Documentation

◆ BattleFx_RunHelmSplitter()

void BattleFx_RunHelmSplitter ( struct BattleEffectArgument * effect)

The user leaps at the first target and strikes through a fire swirl; on frame 18 the target flashes and reels and 16 sparks scatter, bouncing off the ground.

Abilities: Helm Splitter (kind 51).

Definition at line 29 of file helm_splitter.c.

Referenced by BattleFx_RunHelmSplitter().

◆ BattleFx_PlaceFormationObjects()

void BattleFx_PlaceFormationObjects ( s32 formation,
s32 x,
s32 z )

Arranges work->objects in a formation; x and z are its origin in 16.16 pixels.

Each summon that ends in an impact burst keeps its objects in its own formation, every frame while it plays and then through BattleFx_RunImpactBurst. Places the objects through Object_ApplyProjectedPlacementFar and changes nothing else.

formation: 0 = nine in a 3x3 grid at 32-pixel spacing (Thor); 1 = twelve in rows of 1, 3, 4 and 4, from 16 left and 32 up (Nereid); 2 = eight in rows of 3, 2 and 3, from 16 right (Cybele); 3 = eight drawn at 1.25 times their size (Tiamat's BattleFx_RunPaletteParticles). Any other value places nothing.

Definition at line 191 of file helm_splitter.c.

Referenced by BattleFx_PlaceFormationObjects(), BattleFx_RunCybele(), BattleFx_RunImpactBurst(), BattleFx_RunNereid(), BattleFx_RunPaletteParticles(), and BattleFx_RunThor().

◆ BattleFx_RunImpactBurst()

void BattleFx_RunImpactBurst ( s32 formation,
s32 x,
s32 y )

Opens an impact flash and scatters sparks and fragments, keeping the effect's objects in formation for the first 36 frames.

The close of four summons: Thor, Nereid, Cybele and Tiamat's BattleFx_RunPaletteParticles call it once their own frames are over, each with its own formation. Builds and frees both blitters, starts and stops the canvas transfer, sets REG_BG2PA, REG_BG2X and REG_BLDCNT, loads pictures into the sheet slot and work->sheet and overwrites work->particles 0 to 63 and PARTICLES 0 to 63. It leaves the canvas's VRAM cleared; ending the canvas layer is left to the caller.

formation: the layout for BattleFx_PlaceFormationObjects. x, y: the formation's origin in 16.16 pixels; the burst is drawn 40 pixels right of x, halved for the wide canvas.

Definition at line 265 of file helm_splitter.c.

Referenced by BattleFx_RunCybele(), BattleFx_RunImpactBurst(), BattleFx_RunNereid(), BattleFx_RunPaletteParticles(), and BattleFx_RunThor().