Toomai
Smash Ace
(hopefully this belongs here and not in the 1-Player Modes section)
[cooltitle][/cooltitle]
Since I don't really know how to start this right now, I'll just leap right into what I've found so far.
ENEMY ATTRIBUTES (EnmXXX.pac)
0x000: Filesize.
0x004: Data size? I don't know enough about offsets and so on to know this, it's probably the same as whatever Smasher files have.
0x008: Don't know this one either. Generally proportional to Filesize and 0x004.
0x00c: An integer between 5 and 10. Don't really know what it means: only Armanks have a 10, only Autolances, Duon, and Porky have a 9, and the rest of the enemies have 8, 7, 6, or 5.
0x010: An integer clustering around 27. Jyks have the lowest value by far at 8 (next lowest is Petey at 16), while Koopas have the highest at 35.
0x014: Always 0.
0x018: Always 0.
0x01c: Always 0.
0x020: A float, usually 1.0. Roturrets have the only lower value at 0.98, Shaydas have the highest at 1.6.
0x024: A float. The only enemy that doesn't have a 56 here is the Metal Primid, which has a 99. My theory is that this is weight for things like platform tipping and throw speed.
0x028: A float, usually 0.75, with 0.5 being a common value (the lowest). Feyeshes and Floows have a 1.0 (the highest).
0x02c: Integer. Always 2.
0x030: An integer, usually 3. Tickens have the lowest value at 2, while Tabuu has a whopping 16 and a Gamyga head has 13 (next highest is 7).
0x034: Always either 00000000 or 01000000; probably a true/false value. Usually false, but true for: Floows, Gamygas (both head and base), Giant Goombas, Glices, Glires, Glunders, Goombas, Jyks, Petey, Porky, Roturrets, and Spaaks.
0x038: Always 0.
0x03c: A float, usually 1.0. Ranges from 0.05 (Autolances) to 1.2 (Bucculuses).
0x040: Normal Death boolean. A true/false value (00000000 or 01000000) of whether the enemy dies a normal death (that is, goes into BulletMode and rockets around). True for most enemies; false for all bosses and Tickens.
0x044: Float. Always 120.0.
0x048: Integer. Always 1.
0x04c: Always 0.
0x050: A float. Always 0.7 except for Greaps, which have 0.5.
0x054: A float. Always 1.0 except for Greaps, which have 0.8.
0x058: Always 0.
0x05c: An integer. Usually 7, but 9 for all bosses, Armanks, Big Primids, Gamygas (head and base), and Roturrets.
0x060: Usually false, but true for all bosses, Armanks, Gamygas (head and base), Roturrets, and Tickens.
0x064: Integer. Always -1, except for Petey, where it's 1. Presumably this has to do with the cages.
0x068: A float, usually 0.1. Big Primids have a 0.24, while Duon, Galleom, Porky, and Rayquaza have a 1.8.
0x06c: Float. Always 0.1.
0x070: Float. Always 0.1.
0x074: Float. Always 1.4.
0x078: Always 0.
0x07c: Float. Always -15, except for Roturrets, where it's -20.
0x080: Integer. Has a range from 0 (Goomba) to 64 (both stationary and moving R.O.B. Blasters). No apparent pattern or common value.
0x084: Integer. -1 for most enemies, but 174 for Shaydases and Spaaks, while 165 for Armanks, Autolances, Greaps, Shellpods, Tickens, and Trowlons. The distribution here leads me to believe this has something to do with weak points.
0x088: Like the previous value, this is usually -1, but it's otherwise for the same enemies (except Shellpods). Armanks have a 9518 here while the others have a value near 64.
0x08c: Float. Always 8.0.
0x090: Always 0.
0x094: Float. Always 12.0.
0x098: Always 0.
0x09c: Point Value. How many points the enemy gives when defeated.
0x0a0: Always 0.
0x0a4: A true/false value. False for all bosses and some of the bigger/tougher enemies, but otherwise no pattern.
0x0a8: An integer. Ranges from 3 (Jyk) to 142 (Tabuu). Values seem to correspond to how tough the enemy is; bosses that aren't Petey have higher values while weaker enemies have lower ones. The back of my mind is saying "catch rate for Trophy Stands".
0x0ac: An integer. Most enemies have an "average integer", but all the Primids have a 91, while all enemies with a value of false for 0x0a4 (except for Floows) have a -1.
0x0b0: An integer. Always 50.
0x0b4: An integer. Always 45.
0x0b8: A value of (in hex) 01040000 for enemies and 03050000 for bosses (no, I don't know what this means).
0x0bc: A float, usually 50.0. Bosses have a 10.0, while Floows, Koopas, and Nagagogs have 100.0.
0x0c0: A float ranging from 110.0 to 0.0. Again, this seems to corelate to perceived difficulty: all non-Tabuu bosses have rather high numbers (at least 80), while most big enemies have between 30 and 50 while most others are below 20. Jyks, Floows, Gamyga bases, and Tabuu have a 0.
0x0c4: A float. This one ranges from 4.1 to 49.0 and, while bosses and such again get higher numbers, there seems to be no pattern.
0x0c8: An integer. Range of values is 0 (most common), 3, 64, 67, 264, 267, 328, 331, 516, 580, 780 (second most common), 783, 844, and 28672 (Bucculuses).
0x0cc: A float, usually 1.5 but can be 1.4 (Mites) or 2.2 (all bosses).
0x0d0: A float. I think this one has to do with base HP - Jyks have a -1, Petey has a 99999 (presumably he only dies once a cage's health is depleted instead of his own), and bosses have things in the hundreds while enemies are in the 10-range.
0x0d4: A float. I think this one has to do with HP scaling per difficulty level - bosses have values up to 50 (possibly +50 HP per difficulty level?), while enemies cluster around 1. Bombeds, Jyks, Petey, and Shaydases have a 0 here.
0x0d8: A float. Always 25.0, except for Jyks, which have 30.0.
0x0dc: A float. Usually 10.0, with a 12.5 for bosses (but not Petey and Rayquaza).
0x0e0: A float. Usually 20.0, but ranges by multiples of 5 from 10.0 (Jyks) to 25 (most bosses, some enemies).
0x0e4: A float. Always 8.0.
0x0e8: A float. Usually 15.0, sometimes 10.0, no clear pattern.
0x0ec: Always 0.
0x0f0: Always 0.
0x0f4: Always 0.
0x0f8: An integer. Sometimes 0, sometimes 50, no clear pattern.
0x0fc: An integer. Always 20.
0x100: Always 0.
0x104: Always 0.
0x108: A float. Usually 25.0, but can go up to 100.0. Ridley has a 5.0 here.
0x10c: A float. Usually 50.0, but can go up to 180.0. Ridley has a 6.0 here.
0x110: A float. Usually 80.0, but can go up to 600.0. Ridley has a 50.0 here.
0x114: A float. Almost always 90.0 - Big Primids have a 122 while Scope Primids have an 80.
0x118: An integer - maybe. Usually 1, but 0 for Autolances, Glices, Glire, Glunders, and Goombas, and -101 for all Primids.
0x11c: Normal Damage. How much damage is taken by Normal attacks.
0x120: Slash Damage. How much damage is taken by Slash attacks.
0x124: Electric Damage. How much damage is taken by Electric attacks.
0x128: Freezing Damage. How much damage is taken by Freezing attacks.
0x12c: Flame Damage. How much damage is taken by Flame attacks.
0x130: Grass Damage. How much damage is taken by Grass attacks.
0x134: Water Damage. How much damage is taken by Water attacks.
0x138: Darkness Damage. How much damage is taken by Darkness attacks. Not 100% confirmed.
0x13c: Aura Damage. How much damage is taken by Aura attacks. Not confirmed.
0x140: Special:Direct Damage. How much damage is taken by special attacks not involving articles. Uncomfirmed.
0x144: Special:Indirect Damage. How much damage is taken by special attacks involving articles. Unconfirmed, but at the very least it affects projectiles.
0x148: Normal Damage (weak point). How much damage is taken by Normal attacks on the weak point.
0x14c: Slash Damage (weak point). How much damage is taken by Slash attacks on the weak point.
0x150: Electric Damage (weak point). How much damage is taken by Electric attacks on the weak point.
0x154: Freezing Damage (weak point). How much damage is taken by Freezing attacks on the weak point.
0x158: Flame Damage (weak point). How much damage is taken by Flame attacks on the weak point.
0x15c: Grass Damage (weak point). How much damage is taken by Grass attacks on the weak point.
0x160: Water Damage (weak point). How much damage is taken by Water attacks on the weak point.
0x164: Darkness Damage (weak point). How much damage is taken by Darkness attacks on the weak point. Not 100% confirmed.
0x168: Aura Damage (weak point). How much damage is taken by Aura attacks on the weak point. Not confirmed.
0x16c: Special:Direct Damage (weak point). How much damage is taken by special attacks not involving articles on the weak point. Uncomfirmed.
0x170: Special:Indirect Damage (weak point). How much damage is taken by special attacks involving articles on the weak point. Unconfirmed, but at the very least it affects projectiles.
0x174: A float. Always 100.0.
0x178: Always 0.
0x17c: A float. Possibly flinch resistance; Greaps and Metal Primids have super-high values of 70 and 50, while most everything else has something 10 or less. Bosses all have a 10 here, that's probably the default.
0x180: If 0x17c is flinch resistance, this is probably flinch resistance scaling by difficulty level. Usually 0, otherwise it's less than 1, while for Gamyga heads it's a whopping 5.
0x184: Trophyizability. A boolean that's only false for Jyks and Gamyga bases.
EVENTS/COMMANDS
A look through EnmJyakeel.pac shows a grand total of 0 hitbox events. However, it did turn up some totally new events:
65040100 (value): Used three times in the Jyk file, with values of 3, 0, and 1.
65070200 (variable, variable): Used twice in the Jyk file, both uses appear to affect float variables. The two uses operated on [IC-Basic[44003],LA-FLoat[2]] and [IC-Basic[44004],LA-Float[5]].
66000400 (value, value, scalar, value): Used five times in the Jyk file, with the values going up inconsistently but steadily for each subsequent use - this probably has something to do with difficulty. Uses: [2,14,35791,3], [3,16,35791,3], [4,18,35791,6], [5,19,35791,7], [6,20,35791,8].
ENEMY-SPECIFIC
Jyk
Subspace Generator
Galleom
VARIOUS OTHER STUFF
[cooltitle][/cooltitle]
Since I don't really know how to start this right now, I'll just leap right into what I've found so far.
ENEMY ATTRIBUTES (EnmXXX.pac)
0x000: Filesize.
0x004: Data size? I don't know enough about offsets and so on to know this, it's probably the same as whatever Smasher files have.
0x008: Don't know this one either. Generally proportional to Filesize and 0x004.
0x00c: An integer between 5 and 10. Don't really know what it means: only Armanks have a 10, only Autolances, Duon, and Porky have a 9, and the rest of the enemies have 8, 7, 6, or 5.
0x010: An integer clustering around 27. Jyks have the lowest value by far at 8 (next lowest is Petey at 16), while Koopas have the highest at 35.
0x014: Always 0.
0x018: Always 0.
0x01c: Always 0.
0x020: A float, usually 1.0. Roturrets have the only lower value at 0.98, Shaydas have the highest at 1.6.
0x024: A float. The only enemy that doesn't have a 56 here is the Metal Primid, which has a 99. My theory is that this is weight for things like platform tipping and throw speed.
0x028: A float, usually 0.75, with 0.5 being a common value (the lowest). Feyeshes and Floows have a 1.0 (the highest).
0x02c: Integer. Always 2.
0x030: An integer, usually 3. Tickens have the lowest value at 2, while Tabuu has a whopping 16 and a Gamyga head has 13 (next highest is 7).
0x034: Always either 00000000 or 01000000; probably a true/false value. Usually false, but true for: Floows, Gamygas (both head and base), Giant Goombas, Glices, Glires, Glunders, Goombas, Jyks, Petey, Porky, Roturrets, and Spaaks.
0x038: Always 0.
0x03c: A float, usually 1.0. Ranges from 0.05 (Autolances) to 1.2 (Bucculuses).
0x040: Normal Death boolean. A true/false value (00000000 or 01000000) of whether the enemy dies a normal death (that is, goes into BulletMode and rockets around). True for most enemies; false for all bosses and Tickens.
0x044: Float. Always 120.0.
0x048: Integer. Always 1.
0x04c: Always 0.
0x050: A float. Always 0.7 except for Greaps, which have 0.5.
0x054: A float. Always 1.0 except for Greaps, which have 0.8.
0x058: Always 0.
0x05c: An integer. Usually 7, but 9 for all bosses, Armanks, Big Primids, Gamygas (head and base), and Roturrets.
0x060: Usually false, but true for all bosses, Armanks, Gamygas (head and base), Roturrets, and Tickens.
0x064: Integer. Always -1, except for Petey, where it's 1. Presumably this has to do with the cages.
0x068: A float, usually 0.1. Big Primids have a 0.24, while Duon, Galleom, Porky, and Rayquaza have a 1.8.
0x06c: Float. Always 0.1.
0x070: Float. Always 0.1.
0x074: Float. Always 1.4.
0x078: Always 0.
0x07c: Float. Always -15, except for Roturrets, where it's -20.
0x080: Integer. Has a range from 0 (Goomba) to 64 (both stationary and moving R.O.B. Blasters). No apparent pattern or common value.
0x084: Integer. -1 for most enemies, but 174 for Shaydases and Spaaks, while 165 for Armanks, Autolances, Greaps, Shellpods, Tickens, and Trowlons. The distribution here leads me to believe this has something to do with weak points.
0x088: Like the previous value, this is usually -1, but it's otherwise for the same enemies (except Shellpods). Armanks have a 9518 here while the others have a value near 64.
0x08c: Float. Always 8.0.
0x090: Always 0.
0x094: Float. Always 12.0.
0x098: Always 0.
0x09c: Point Value. How many points the enemy gives when defeated.
0x0a0: Always 0.
0x0a4: A true/false value. False for all bosses and some of the bigger/tougher enemies, but otherwise no pattern.
0x0a8: An integer. Ranges from 3 (Jyk) to 142 (Tabuu). Values seem to correspond to how tough the enemy is; bosses that aren't Petey have higher values while weaker enemies have lower ones. The back of my mind is saying "catch rate for Trophy Stands".
0x0ac: An integer. Most enemies have an "average integer", but all the Primids have a 91, while all enemies with a value of false for 0x0a4 (except for Floows) have a -1.
0x0b0: An integer. Always 50.
0x0b4: An integer. Always 45.
0x0b8: A value of (in hex) 01040000 for enemies and 03050000 for bosses (no, I don't know what this means).
0x0bc: A float, usually 50.0. Bosses have a 10.0, while Floows, Koopas, and Nagagogs have 100.0.
0x0c0: A float ranging from 110.0 to 0.0. Again, this seems to corelate to perceived difficulty: all non-Tabuu bosses have rather high numbers (at least 80), while most big enemies have between 30 and 50 while most others are below 20. Jyks, Floows, Gamyga bases, and Tabuu have a 0.
0x0c4: A float. This one ranges from 4.1 to 49.0 and, while bosses and such again get higher numbers, there seems to be no pattern.
0x0c8: An integer. Range of values is 0 (most common), 3, 64, 67, 264, 267, 328, 331, 516, 580, 780 (second most common), 783, 844, and 28672 (Bucculuses).
0x0cc: A float, usually 1.5 but can be 1.4 (Mites) or 2.2 (all bosses).
0x0d0: A float. I think this one has to do with base HP - Jyks have a -1, Petey has a 99999 (presumably he only dies once a cage's health is depleted instead of his own), and bosses have things in the hundreds while enemies are in the 10-range.
0x0d4: A float. I think this one has to do with HP scaling per difficulty level - bosses have values up to 50 (possibly +50 HP per difficulty level?), while enemies cluster around 1. Bombeds, Jyks, Petey, and Shaydases have a 0 here.
0x0d8: A float. Always 25.0, except for Jyks, which have 30.0.
0x0dc: A float. Usually 10.0, with a 12.5 for bosses (but not Petey and Rayquaza).
0x0e0: A float. Usually 20.0, but ranges by multiples of 5 from 10.0 (Jyks) to 25 (most bosses, some enemies).
0x0e4: A float. Always 8.0.
0x0e8: A float. Usually 15.0, sometimes 10.0, no clear pattern.
0x0ec: Always 0.
0x0f0: Always 0.
0x0f4: Always 0.
0x0f8: An integer. Sometimes 0, sometimes 50, no clear pattern.
0x0fc: An integer. Always 20.
0x100: Always 0.
0x104: Always 0.
0x108: A float. Usually 25.0, but can go up to 100.0. Ridley has a 5.0 here.
0x10c: A float. Usually 50.0, but can go up to 180.0. Ridley has a 6.0 here.
0x110: A float. Usually 80.0, but can go up to 600.0. Ridley has a 50.0 here.
0x114: A float. Almost always 90.0 - Big Primids have a 122 while Scope Primids have an 80.
0x118: An integer - maybe. Usually 1, but 0 for Autolances, Glices, Glire, Glunders, and Goombas, and -101 for all Primids.
0x11c: Normal Damage. How much damage is taken by Normal attacks.
0x120: Slash Damage. How much damage is taken by Slash attacks.
0x124: Electric Damage. How much damage is taken by Electric attacks.
0x128: Freezing Damage. How much damage is taken by Freezing attacks.
0x12c: Flame Damage. How much damage is taken by Flame attacks.
0x130: Grass Damage. How much damage is taken by Grass attacks.
0x134: Water Damage. How much damage is taken by Water attacks.
0x138: Darkness Damage. How much damage is taken by Darkness attacks. Not 100% confirmed.
0x13c: Aura Damage. How much damage is taken by Aura attacks. Not confirmed.
0x140: Special:Direct Damage. How much damage is taken by special attacks not involving articles. Uncomfirmed.
0x144: Special:Indirect Damage. How much damage is taken by special attacks involving articles. Unconfirmed, but at the very least it affects projectiles.
0x148: Normal Damage (weak point). How much damage is taken by Normal attacks on the weak point.
0x14c: Slash Damage (weak point). How much damage is taken by Slash attacks on the weak point.
0x150: Electric Damage (weak point). How much damage is taken by Electric attacks on the weak point.
0x154: Freezing Damage (weak point). How much damage is taken by Freezing attacks on the weak point.
0x158: Flame Damage (weak point). How much damage is taken by Flame attacks on the weak point.
0x15c: Grass Damage (weak point). How much damage is taken by Grass attacks on the weak point.
0x160: Water Damage (weak point). How much damage is taken by Water attacks on the weak point.
0x164: Darkness Damage (weak point). How much damage is taken by Darkness attacks on the weak point. Not 100% confirmed.
0x168: Aura Damage (weak point). How much damage is taken by Aura attacks on the weak point. Not confirmed.
0x16c: Special:Direct Damage (weak point). How much damage is taken by special attacks not involving articles on the weak point. Uncomfirmed.
0x170: Special:Indirect Damage (weak point). How much damage is taken by special attacks involving articles on the weak point. Unconfirmed, but at the very least it affects projectiles.
0x174: A float. Always 100.0.
0x178: Always 0.
0x17c: A float. Possibly flinch resistance; Greaps and Metal Primids have super-high values of 70 and 50, while most everything else has something 10 or less. Bosses all have a 10 here, that's probably the default.
0x180: If 0x17c is flinch resistance, this is probably flinch resistance scaling by difficulty level. Usually 0, otherwise it's less than 1, while for Gamyga heads it's a whopping 5.
0x184: Trophyizability. A boolean that's only false for Jyks and Gamyga bases.
EVENTS/COMMANDS
A look through EnmJyakeel.pac shows a grand total of 0 hitbox events. However, it did turn up some totally new events:
65040100 (value): Used three times in the Jyk file, with values of 3, 0, and 1.
65070200 (variable, variable): Used twice in the Jyk file, both uses appear to affect float variables. The two uses operated on [IC-Basic[44003],LA-FLoat[2]] and [IC-Basic[44004],LA-Float[5]].
66000400 (value, value, scalar, value): Used five times in the Jyk file, with the values going up inconsistently but steadily for each subsequent use - this probably has something to do with difficulty. Uses: [2,14,35791,3], [3,16,35791,3], [4,18,35791,6], [5,19,35791,7], [6,20,35791,8].
ENEMY-SPECIFIC
Jyk
- Jyks use an If-ElseIf-ElseIf system to determine what graphic effects to put out based on IC-Basic[24000]; this must be the value that stores whether they're a Flame Jyk, Zap Jyk, or Hydro Jyk.
Subspace Generator
- Subspace Generators are considered stage elements, not enemies, and so don't have a MiscData[0] (and therefore have not been examined).
Galleom
- Through experimental testing, Galleom's HP has been determined to be the following:
- 205 on Easy
- 225 on Normal
- 240 on Hard
- 265 on Very Hard
- 290 on Intense
- This HP data doesn't match the 300 base/30 per level theory I have above, nor does it comform to any simple formula (the scaling isn't consistent) or have a defined array in the values.
VARIOUS OTHER STUFF
- If you don't know where I found this stuff, you have to look in stage/adventure. All the Primids are in adventure_common.pac, while all other enemies and bosses are part of the stages in which they appear.
- The data I scoured is labelled in BrawlBox as MiscData[0]. I attemped to get other MiscDatas out but BrawlBox kept giving concurrent modification errors for no reason.
- You may have noticed that characters feel different when played in the Subspace Emissary, but not when playing Boss Battles Mode. This is because every character has two sets of attributes: one for regular gameplay, and another for the Subspace Emissary, with the regular attributes used when in a boss battle. In general, the SSE attributes:
- Normalize walking speed.
- Reduce running speed.
- Reduce time taken to jump by 2 frames.
- Increase jump force by 118%.
- Increase gravity.
- Increase max falling speed by 119%.
- Normalize horizontal air speed.
- A few isolated changes like tweaking specific characters' double jumps, and a few other things that I don't recognize.