Particles
From CloudModding OoT Wiki
Located after the current scene file's position in RAM is a static array that manages the game's particle effects. It can be found at 80384980 in the retail versions, and 803CE1D0 in Debug.
Particle Overlay Table
The particle overlay table manages the particle effect files (overlays). It defines a particle effect's id, maps the particle's code to a virtual address, and during gameplay is used to find the overlay in ram
Format
xxxxxxxx yyyyyyyy aaaaaaaa bbbbbbbb
rrrrrrrr pppppppp ????????
- x y: Start/End Virtual Rom addresses of the particle effect's file
- a b: Start/End Virtual Ram addresses of the particle effect's file
- r: Ram address of the overlay, when loaded into ram. Set to 0 in Rom
- p: ?, possibly a pointer to the initialization routine
- ?: Unknown, set to 0x01000000 in Rom
Particle Effect List
# | Filename | Translation | Description | Texture Source |
---|---|---|---|---|
0000 | ovl_Effect_Ss_Dust | Soft Sprite - Dust | Dust - Spawned by rolling or horse hooves. | gameplay_keep |
0001 | ovl_Effect_Ss_KiraKira | Soft Sprite - Sparkle | Motes - Spawned by Navi. | gameplay_keep |
0002 | ovl_Effect_Ss_Bomb | Soft Sprite - Bomb | Bomb Blast 1 - Unused | gameplay_keep |
0003 | ovl_Effect_Ss_Bomb2 | Soft Sprite - Bomb 2 | Bomb Blast 2 - Spawned by Bombs & Bombchus. | gameplay_keep |
0004 | ovl_Effect_Ss_Blast | Soft Sprite - Blast | Shockwave Effect | gameplay_keep |
0005 | ovl_Effect_Ss_G_Spk | Soft Sprite - G Spark | Spark - Spawned by Beamos. | gameplay_keep |
0006 | ovl_Effect_Ss_D_Fire | Soft Sprite - Dodongo Fire | Dodongo Fire | object_dodongo |
0007 | ovl_Effect_Ss_Bubble | Soft Sprite - Bubble | Water Bubble | gameplay_keep |
0008 | unset | unset | ||
0009 | ovl_Effect_Ss_G_Ripple | Soft Sprite - G Ripple | Water Ripple | gameplay_keep |
000A | ovl_Effect_Ss_G_Splash | Soft Sprite - G Splash | Water Splash | gameplay_keep |
000B | ovl_Effect_Ss_G_Magma | Soft Sprite - G Magma | gameplay_keep | |
000C | ovl_Effect_Ss_G_Fire | Soft Sprite - G Fire | Magma Flare - Spawned when walking on lava. | gameplay_keep |
000D | ovl_Effect_Ss_Lightning | Soft Sprite - Lightning | [?] - Spawned upon contact with a Biri. | gameplay_keep |
000E | ovl_Effect_Ss_Dt_Bubble | Soft Sprite - Dt Bubble | Bubbles (random mix of translucent and opaque) | gameplay_keep |
000F | ovl_Effect_Ss_Hahen | Soft Sprite - Fragment | Leaf - Spawned for Deku Baba's toxic breath. | |
0010 | ovl_Effect_Ss_Stick | Soft Sprite - Stick | ||
0011 | ovl_Effect_Ss_Sibuki | Soft Sprite - Splash | ||
0012 | ovl_Effect_Ss_Sibuki2 | Soft Sprite - Splash 2 | gameplay_keep | |
0013 | ovl_Effect_Ss_G_Magma2 | Soft Sprite - G Magma 2 | object_king_dodongo | |
0014 | ovl_Effect_Ss_Stone1 | Soft Sprite - Stone 1 | gameplay_keep | |
0015 | ovl_Effect_Ss_HitMark | Soft Sprite - Hit Mark | Impact Effects - Spawned when something is hit or deflected. | gameplay_keep |
0016 | ovl_Effect_Ss_Fhg_Flash | Soft Sprite - Phantom Ganon Flash | Electric shock and light ball effect - Spawned by Phantom Ganon & upon contact with a Biri. | object_fhg |
0017 | ovl_Effect_Ss_K_Fire | Soft Sprite - K Fire | Flame I - Spawned by [?]. | gameplay_keep |
0018 | ovl_Effect_Ss_Solder_Srch_Ball | Soft Sprite - Soldier Search Ball | ||
0019 | ovl_Effect_Ss_Kakera | Soft Sprite - Shard | gameplay_keep | |
001A | ovl_Effect_Ss_Ice_Piece | Soft Sprite - Ice Piece | Ice Shards - Spawned when Link breaks out of ice. | gameplay_keep |
001B | ovl_Effect_Ss_En_Ice | Soft Sprite - En Ice | Ice Shards - Spawned by icicle shattering. | gameplay_keep |
001C | ovl_Effect_Ss_Fire_Tail | Soft Sprite - Fire Tail | Fire - Spawned when Link is on fire. | gameplay_keep |
001D | ovl_Effect_Ss_En_Fire | Soft Sprite - En Fire | Flame III - Used by [?]. | gameplay_keep |
001E | ovl_Effect_Ss_Extra | Soft Sprite - Extra | Minigame Score Points - Used by Minigames | object_yabusame_point |
001F | ovl_Effect_Ss_Fcircle | Soft Sprite - F Circle | Fire Circle | |
0020 | ovl_Effect_Ss_Dead_Db | Soft Sprite - Dead Deku Baba | Flames and sound used when an enemy dies | gameplay_keep |
0021 | ovl_Effect_Ss_Dead_Dd | Soft Sprite - Dead Dodongo | gameplay_keep | |
0022 | ovl_Effect_Ss_Dead_Ds | Soft Sprite - Dead Deku Scrub | Burn mark on the floor | gameplay_keep |
0023 | ovl_Effect_Ss_Dead_Sound | Soft Sprite - Dead Sound | Plays a sound effect | |
0024 | ovl_Effect_Ss_Ice_Smoke | Soft Sprite - Ice Smoke | object_fz |
Instance Structure
The following is a documentation of the structure of a single particle in ram. Tests were done on NTSC 1.0.
//Misc Info Record Size = 0x60 Length = 0x1FE0 Number of records = 55 800E7B44 (int) - index to next spot to insert a particle in the array //Structure. Offsets relative to structure start 0000 float - x 0004 float - y 0008 float - z 000C uint - unknown 0024 ptr - ? (points to overlay file) 0028 ptr - Draw Particle? 0038 ptr - Display List address 005C short - Animation frame? (counts down, -1 causes it to disappear) //This is how the space is used for Link's hit marker. More investigation needed //color 1? 0044 short - Red 0046 short - Green 0048 short - Blue //color 2? 004A short - Red 004C short - Green 004E short - Blue
Notes
- The function at 80027798 (Debug?) is used to spawn particle effect overlays. (A1 = actor index to ovl_Effect_Ss actor list)
- Effect actors are actors that spawn attached to other actors at a limb point.