11 March 2016 - Forum Rules

Main Menu

Secret of Mana, Turbo - Beta 210915

Started by Queue, January 31, 2019, 06:45:12 PM

Previous topic - Next topic


Okay, so far, I've done this:

@OFF $C13A24
'CMP #0D
CMP #26

@OFF $D02E08
RAW 970E 446E 0000 F694
RAW 970E 446E 0000 F694

I'm guessing that aim type is 0E of 970E.  As it currently is, the animation doesn't even play, so I tried to play around with it (replaced 0E with the numbers you listed -- 00, 01, 02, 05, 06, 07, 0C, 0D, 0E).  No luck so far.  I think I had the same problem before with Dust Flare, and you helped me to fix it... but I forgot.  Looking back at what was done, I don't see it.  I'm guessing Spell.Data.Exploder (target, stat, effect, accuracy, power, element, and cost) doesn't need to be changed, since that's already altered from Hellfire patch.  Could you please teach me once again how that was fixed?  Sorry, and thanks.

Also, is it the aim type that makes some Lv9 spell animations not recharge during the freeze animation?  I noticed that some Lv9 spells don't recharge until the animation is over (like Dust Flare/Fire Bouquet, Burst, Dark Force, Evil Gate, and Lucent Beam).  I'm guessing that's also why the fireball animation spells (like Fireball and Sabers) reset the recharge.


0E is the aim type, 97 is the palette (though very unlikely to be used by the hardcoded animations).

The following 6 bytes are 3 16-bit pointers used by normal spell animations.

Oh, right, I was sorta forgetting what you were doing here.
@OFF $C13A24
CMP #26 enabling a hardcoded animation for spell 26 (Dispel Magic). This was taking that hardcoded animation slot from Exploder and giving it to Dispel Magic. Obviously that wasn't your objective.

You need spell 0D (Exploder / Hellfire) to play hardcoded animation 02 (which is Evil Gate) instead of 01 (which is Exploder). There are at least 3 ways to accomplish this:

1) Leave $C13A24 as CMP   #0D, and change $C13A48 to LDA   #01
2) Leave $C13A24 as CMP   #0D, and change $C13A26 to BEQ   $24
3) Change $C13A24 to CMP   #24, and change $C13A28 to CMP   #0D

Option 1 is probably the worst way of the three. Options 2 or 3 are both better. An even better way is to rewrite the hardcoded spell animation loader to be data driven, so that spell data in bank $D0 can specify which hardcoded animation to play, but I don't expect you to do that. A long term plan I have is to give the hardcoded animations to bosses so the art will still be used, without leaving it for the players to abuse to stop time.

Yes, aim type affects some of how spell recharge times work, though it's worth noting that the 7 hardcoded spell animations completely lock up the game while they play; they work completely differently than all other spell animations. The timing of when recharge starts ultimately falls on zhaDe's design of the recharge system. It's not like it couldn't work differently, but I'm not interested in changing how it works.


Oh right.  24 is Evil Gate.  Whoops.  I'll go with option 3.  I don't know why, but that feels betters.  Anyhow, thanks to you, I was able to call Lv9 Evil Gate animation.  Now for the color changes.  Hmm.  I'll look at Dust Flare to see if I can figure it out, but I'd appreciate some help (as usual).  I looked at D194F6 (D194F8 had 8F for value, so I figured changing that to 84 would change the target color to red), but no luck so far.

QuoteA long term plan I have is to give the hardcoded animations to bosses so the art will still be used, without leaving it for the players to abuse to stop time.

That sounds cool and all, but I feel like that'll make some boss fights incredibly hard (perhaps impossible), esp against Mana Beast.  Remember, bosses can move around and cast additional spells while Lv9 animation freezes everyone.  So combining with Faster Bosses, it might be a bit troublesome.  That's one of the reasons why I don't use Spells Pause Gameplay anymore.

I'm trying to see if I can come up a way to delay spells from coming out for specific spells (uses the same macro for Magic Recharge, except instead of recharge, it requires charging for spells to come out).  I think it's the latter 6 bytes of the element summon that decides that -- Kethinov mentioned that a long time ago I think (so for Earth Slide, 3286 8403 8403 8403), but I wasn't able to figure anything out.  It's a little hard to tell the difference, and the numbers are all quite different for all spells, so I can't figure out the pattern.  If you know something, I'd appreciate some explanation on how that works.  Even if I succeed in creating that, I don't know how that'll feel in-game, which is why I want to experiment by delaying spells a lot.

Okay, I got it.  I'm not sure if 8A is the color of the original Hellfire (I think it is, based on what I saw in the zps), but here it is:

IF Spell_System_Extensions
IF _Shadow_Saber_-_Replaces_Evil_Gate

@OFF $C13A24
'CMP #0D ' Exploder
CMP #24 ' Evil Gate

@OFF $C13A28
'CMP #24 ' Evil Gate
CMP #0D ' Exploder

@OFF $D02E08
RAW 970E 446E 0000 F694
RAW 970E 446E 0000 F694

'ADR.16 $D1FBE6 ' Evil Gate, $D1F600 + 0x0A * 0x97
ADR.16 $D1FB64 ' Hellfire?, $D1F600 + 0x0A * 0x8A

'[target color]:
'ADR.16 $C820C2 ' Black, $C81000 + 0x1E * 0x8F
ADR.16 $C81F78 ' Red, $C81000 + 0x1E * 0x84


You can rearrange it however you think is best for better view or save space.  If 8A is the wrong color, feel free to correct that too.

I actually didn't know what I was doing for the address.  I just looked at bank 1C (that's where Dust Flare's color was done), and just searched for the value of C2 20 (that's the black target color).  And then just tested it in the game to see if it changed anything for Evil Gate Lv9.  One of them was, so yay.  And I just subtracted 4 bytes from the target color address (that's what was done for Dust Flare), and that was the animation color.  Yay.

What is the "correct" method of doing this?

Also, for Herbal Boost's Luna Revive Lv9 animation background color (gotta change from green to yellow), if you haven't already done so, could you tell me what value I'm supposed to look for?  I know the rough addresses (prob within 100 bytes), but I don't know what I'm looking for, so I have no idea what needs to be changed to what.  If possible, if you can tell me all background colors, I'd appreciate it (there's black, white, red, yellow, green, and probably blue).

Hey, I was replaying the game, and I thought it'd be neat if you put an actual trap in Enable Matango Caves Trap.  Specifically, this:

'@OFF $C8CCB0 ' map 320 matango cave 1
'RAW 000F 2C 49 40 18 01C0 '(Steamed Crab)
RAW      28 10 40 32 '(Spider Legs); reposition
'RAW 000F 16 35 40 13 01C0 '(Kimono Bird)
RAW      2A 10 40 32 '(Spider Legs); reposition

That way, the trap will actually be dangerous to the party at that point in game (gotta have 2 Spider Legs to be actually interesting).  And it'll use one of the stuck monsters that's not being unstuck from No Missable Monsters (Steamed Crab).  And instead of the Kimono Bird from the end of the cave, you can choose to use the Kimono Bird from the beginning of the cave between Upperland and Matango (if you think that's a better idea).  And yes, I know that Spider Legs will yield more EXP/GP than other monsters in that area, but it's not that much (it's available in the next area).  I think it's worth it.  What do you think?

Perhaps you've already noticed, but the current version is doing this:

I'm guessing it's due to Turtle Tour.  There might be other graphical errors.


Version 2021-08-18:

- fixed Miscellaneous\Turtle_Tours corrupting the Pure Land clouds on the world map
- added a monster to Miscellaneous\Enable_Matango_Caves_Trap at hmsong's suggestion
- added hmsong's Magic\Spell_Timing_Tweaks for Lava Wave
- added hmsong's Balance\Better_Magic_Rope which allows use of the Magic Rope in 4 dungeons where it couldn't be used before
- added hmsong's hardcoded Hellfire animation (if Shadow_Saber is On)
- changed the high level Luna Revivifier colors from green to yellow
- implemented Miscellaneous\Centered_Spawns which alters NPC positioning all over the game world; spider legs are now centered in their pits, kings now sit in the middle of their thrones, guards are now positioned symmetrically, etc. but please report any issues this usually 4 pixel shift causes for cutscenes and such
- implemented Miscellaneous\Tasnican_Countryside which adds a gigantic new adventuring location a little east from a certain castle-bound city-state, on the mainland; see below

Technical Changes:
- relocated bug fix code block from $CCEB00 to $DC0540
- reorganized various bank $C9 mod-added event data
- compatibility fixups to Farmable_Sword_Orb, Remove_Empire_Castle_Gate, Neko_And_Watts_In_Fortress and Weapons_Progression_Balance to accommodate Better_Magic_Rope
- additions to Overwrite_Unused_Data

So Tasnican_Countryside was my new big project; it took over a month to make, and I've been kicking around the idea for over a year, so it's been a long time in the making. Aside from the map piece data being currently uncompressed, it's more-or-less done. Its objective is to provide a location after travel opens up to fight for experience, money, and a couple rare drops (that should be useful at the point in the game you can get there), while also looking interesting and pushing the engine to its limits: it is larger than any vanilla map, at 128x128, which is the maximum possible, and has 32 possible spawn points, also the maximum. I tried to use a tileset that isn't used for combat in vanilla and to misuse its tiles in unexpected ways to provide new (and hopefully appealing) visuals.

Here are some pictures of Centered_Spawns:

And a single vague spoiler for Tasnican_Countryside:

Oh, and Centered_Spawns fixes positioning of a certain space laser.

hmsong, I'm out of time at the moment, but I have a whole heap of replies to write to you. Thanks for all the work you put into your recent stuff, and the bug report, and the Matango trap idea. Try this version out and tell me if I messed up anywhere; I handled Better_Magic_Rope compatibility in basically the exact opposite way you had, so hopefully didn't break anything.


Very beautiful.  I didn't test things a lot (I'll have to do that over the weekend), but from my initial testings, it's great.  All the things I intended seem to work well.

And Matango trap works very well, although different than my design (yours is better).  I'm surprised the drop didn't kill the Spider (typically, the drop damages any enemy near the fall).  And somehow, the Spider doesn't respawn either (which prevents the farming).  I don't know how you did that.  Did you use a different map or something?

For the Tasnican Countryside, I'm guessing it's a fighting area (the enemies are quite tough, but they also drop good equipments).  Feels great.  How did you add so many new monsters?  Based on what Kethinov did in the past, you had to delete the existing monsters to add new monsters.  But I have a feeling that you didn't do that.  I see lots of houses, but I'm guessing that none of the doors are working there.  Are there any surprises there?  The pumpkin patch was a nice touch -- absolutely loved it (and Nitro Pumpkin needed way more love).  I love the detail that the overworld map and the actual field map matches each other.

When you land on the north section of the countryside, you land 1/2 panels north of where you typically land.  Was that intentional?  I feel like your intention was to make the landing spots the same (or if they were to be different, they would be further apart).

I feel like adding new monsters as the game plot progresses may be an excellent idea to incorporate here (for example, replace some of those monsters with some Pure Land monsters and change the visibility flag to make them appear only after the Sunk Continent resinks).  Sort of a town for monsters, and they accept new monsters from different areas (although you are still not welcome, so the residents there are hostile towards you).  And a maybe a sign board that says, "Monster Haven.  All monsters, big or small, strong or weak, are welcome.  No Humans!" or something.

If you can post a pic of the map of that area (it's a huge area), I'd appreciate it.

I haven't really gotten to see Centered Spawns, but I suppose I'll notice as the game progresses.


I'm out of town until sunday, so I probably can't accurately answer the more technical questions you had until I get home, but here goes...

For the Matango trap, first off, if I was ever aware of that lost crab, I didn't remember it, so a huge thanks for bringing that up. I did some tricky stuff to make the enemy not get hurt by the fall animation, so that he gets in a free attack, and so that he only spawns for the fall.

So that he doesn't get hurt he's set to spawn on the opposite collision layer to the players, which prevents melee and ranged attacks from colliding with him, and then the event sets him back to the normal layer when it ends (after the fall and head-shake animations) so he's attackable.

So that he casts a spell as soon as possible, I use the event \unlock command as soon as you change maps, which technically means the AI buddies or other two players can move around slightly during the fall, but that's not a big deal, since unlocking lets the spider legs AI be active while the heroes are playing fall and head-shake animations.

As for him not respawning, event flag 0x0A controls the pit trap visuals and the trap itself resetting, so I tied the spider legs spawning to that event flag as well, and the event just sets it to 02 after he's spawned, so that if you leave and go back down the stairs, the flag will still be 02 while he requires it to be 01.

For Tasnican Countryside, none of the doors are functional. There are very few available unused doors, so I intentionally designed the new area to use none.

I did want to have a sign for the player to read, but that tileset doesn't have the signpost! I also had wanted waist-deep water, but the water in that tileset doesn't work that way, so I had to fake extra shallow water in the northeast. That tileset has tons of stuff in it, but because it's so varied it also lacks some of the specialized stuff of the more specific-purpose tilesets.

Because the map is so huge, even 31 monsters is spread just a little thin, so I can't reasonably add spawning conditions to them without making them even more sparse. What I mean is, 32 is the maximum possible spawn table size, and monsters with spawning conditions (event flag X is at least Y, etc.) still use up one of those 32 slots. To make the map not feel underpopulated, I need them all to always be available. If there wasn't that limit, I'd have had more rules for what spawns when.

Thematically, it's not a monster village; it's not like monsters built it, they're just what took over the area after the Tasnicans were pushed back to their castle during their war with the Empire. That's why I mostly used wild animals (bees, flowers, ducks, pumpkins, etc.), with some ghouls to represent dead villagers. I had considered having it be imperial troops (knights, ninjas, etc.) but figured they wouldn't just stick around long after the war to guard an abandoned village.

The slight difference in landing spot was a "just because I can" sorta thing. You land at a small dirt cliff; if you land on the top half you're placed above the cliff, if you land on the bottom half you're placed just below it. The world map landing zones have low granularity; there happen to be two spots because it straddles two landing zones. You're basically centered in the area when you land, and I didn't put enemy spawns where you land.

There should be 3 farmable items available, all with reasonable stats for the point in the game you can first get there and probably worth the player's time.

It's very difficult to change objects (enemy spawns, NPCs, treasure chests) on an existing map, which is why doing so generally requires stealing objects from another map, but since I added a map I had a little more flexibility to set up some of its data. I'm still limited by free unused space in bank $C8 and I had to modify the map piece loader to allow an additional data bank for map piece data.

My creative process was to first make the buildings; I knew I really wanted to use the town tileset and to make overgrown buildings. Then I made the area on the world map, and used it to guide my full-size map design. As I came up with details that didn't quite match the world map, I'd tweak the world map, and so on, so that's how I kept the details fairly close to each other.


Yeah, I noticed how the trap Spider casts the Earth Slide by the time you recover from the fall.  I like it.  And I like it how it can't be farmed.

As for Tasnican Countryside, thanks for the explanation.  I was simply stating an idea that may or may not be used.  Even I have no idea if that's a good idea.  So there are 31 monsters?  Now I see why there's ghoul there.  Heh.

I looked at the codes, and I noticed that there's Henchman (I'm guessing that's the Scorpion Gang guy).  But I killed all the monsters there (I didn't count, but I'm guessing I killed them all) and wondered around a bit, but I didn't see the henchman.  Or is the henchman for something else?

Love the detail you put on the plants overgrown on the buildings.  It gives a very different feeling.


Curious, any time frame in mind for a submission? I can relate to having a million additions in work, jw how stable the current version is.


I sorta expect that I won't submit this to RHDN until I don't want to work on it ever again, so it hinges on me reaching that point. Having gone through the process of RHDN submission and then quite a few update resubmissions for the SoM retranslation, I thoroughly dislike the time and effort spent on that process. Nothing against RHDN itself, I love the site and am happy with how it works, just that if I commit to submitting, I'd want to keep that version at least fairly up-to-date (I don't want many-version-out-of-date bug reports that I have to keep double-checking because they're using an older RHDN release if I didn't keep resubmitting, etc.), and the more consistently I do that, the more time burned (for the RHDN submission reviewers too!). Compare that to random upload site + forum releases, where it takes me less than 60 seconds to pack the zip, drop onto a browser window, copy a URL, and edit first post + start a new post. Typing up a changelog is the longest part of the release process currently. The worst case scenario is I start to resent submitting updates, which makes me disinterested in working on this project, and that would be a sad reason to stop.

Oh, and as for stability, it's been pretty solid for at least a year. Occasionally bugs slip through, and the two newest complex features (Centered_Spawns and Turtle_Tours) haven't been thoroughly checked to make sure they don't have unexpected side effects, but are both fundamentally sound and bug-free as far as I'm aware.

If you mean literal stability, like crashing an SNES, the game has never been as crash-free as it is now.

Tasnican Countryside Map:

Really, this spoils the fun of exploring the new location:

hmsong, the Scorpion Gang henchman should be "hiding" somewhere if you visit before the sunken continent rises (at which point, you'll see him there, like usual). I figured it'd give some sense of continuity between the Tropics and Underground City instead of them being completely absent between those two points. In the future, I had another area to add in mind where I'd probably have the same sort of little easter egg, to add a Scorpion Gang appearance between the Tropics and flight travel (this one).

I do intend to answer your questions about spell colors (and such), but there's just enough I need to figure out how to explain that I need to commit a decent chunk of time to doing so, and I keep running out (of time). -_-


Quote from: Queue on August 24, 2021, 03:36:38 PM
(...) I thoroughly dislike the time and effort spent on that process.

I think you've got enough people following and enjoying your project that they could take care of that for you, if that's convenient for you. Just post the zip here as you always do, and random people could keep it up to date on RHDN.


I mitigate the submission time by writing to my changelog as I go. But that's why I asked if there was a stable release that wouldn't have as many bugs to report; you'd get a lot more eyes on your game and a lot more feedback. Also my intuition tells me, submissions are never perfect the first time, and you'll have to fix SOMEthing afterwards.


Stifu, if someone really wants to do that, I wouldn't stop them or request it be undone, and I know I can always submit a change if I'm not happy with the description, etc. I think my only requirement is that a link to this thread be prominent in the description.

But seeing as I wouldn't want to do it, I'm not going to request that someone do it for me.

Sarah Shinespark, in hindsight, I wish I had kept a changelog text file; I just hadn't expected Turbo to be more than like a one-month project originally.


Quote from: Queue on August 24, 2021, 04:08:35 PM
Sarah Shinespark, in hindsight, I wish I had kept a changelog text file; I just hadn't expected Turbo to be more than like a one-month project originally.

How's this for a start?

Created from print view of the thread, may need some (more) manual fixes.

Anyway, I found this project about a month ago, awesome work, keep it up :)


@Sarah Shinespark

I actually submitted numerous SoM hacks to RHDN, and I specifically put in the document and strongly recommended that they check out the SoM Turbo (even more than my own hacks, as my hacks get updated regularly in Turbo), and posted the address for SoM Turbo hack forum.  I assume that some people who posted here came from that (at least, I'd like to think so).


Heh.  Found him.  Haha.  I see what you mean by easter egg.


Ooh, that was a quick first changelog! Someone should be on the lookout for good screenshots too; the imgbb links all expired so I can't get much of a look at the project.

And yes, this mod's certainly popular with forum users. Looks like the most viewed on this board, congrats  :)


Hello, I have watched the project for quite some time and in the last few days I have played the whole game ( two versions ago from the new Beta ) It worked smoothely for the most part.
Some bugs/oddities (?) I have encountered are:
- sometimes the palette for summoned slamander is blue instead of red
- Aegagropilon attacked me continuously with burst on one character (boy) and did not stop, I had to kill him with the other characters
- in the fight with the Dark Lich, if I run around the most time, he don't attack me at all with spells or attacks and I could hammer him with      spells

The Turbo hack is a great compilation of mods and it gives amazing new and fast gameplay experience. I love it :)


derula, oh that is excellent, thank you so much. I'll use that as a base to add on to going forward.

Davias, let's see what answers I can come up with...
- Thoughts that cross my mind regarding Salamando: the girl and sprite each have their own palette for each elemental, and the girl's Salamando is less red than the sprite's; the time of day was affecting his color scheme in a way that made it rather blue; or maybe if an Undine spell (e.g. Freeze) or healing item (e.g. Candy) was hitting the girl or sprite as they cast a Salamando spell, it interfered in such a way as to override that character's spell palette? (not sure if that can even happen, just brainstorming how the colors could come out wrong)
- I haven't yet reviewed Aegagropilon's AI; I've been slowly working my way through the bosses, trying to clean them up a little, but only made it as far as Vampire so far. I expect a combination of features (Faster_Bosses, Burst_-_Health_Cost, maybe others) has messed up some of his logic and led to the result you encountered; also most boss AI is just bad, so it could be it's a vanilla problem depending on things like where you're positioned, etc.
- Hm, I thought the Dark Lich was in okay shape thanks to Dark_Lich_-_Nether_Pursuit and Dark_Lich_Head_Bang_Fix; his AI will get reviewed again eventually. Hammering him with spells is the pretty typical way through that fight though; he's a somewhat annoying melee target, and by that point, your magic is as strong as you're going to have it and you should have the mana to cast it.


Ah, thanks for the clarifications.
Another bug I had, when the epilog was finished, the sentence "history repets..." cannot be cancelled. Everytime I hit a button, it repeats. I had to restart the emulator. I think it has something to do with a not working New Game Plus feature?


Sorry, the New Game Plus prompt is meant to be sort've vague. If you had pressed right or left, some of the text would've highlighted. Without anything highlighted, the message repeats, if "repeats" is highlighted, you start a NG+, if "ends" is highlighted, you get the "The End" screen.

Edit: Think I'm happy with the map piece compressor I threw together:

Left is uncompressed, right is compressed.
The large spaces are bytes freed up by compression, and the remaining data is organized to still visually match the layout of the uncompressed data, so a human can sorta tell what they're looking at.

Edit: Ok, here's a walkthrough of spell data; going to use Fireball because it has variety in its data.

Here's the RAW data as you've seen in the disassembly:
D0/2DA0: E085 C304 C304 C304 ;{Anim/Gfx}Elemental
D0/2DA8: 8902 206A 0297 398D 8902 226A 0297 528D ;{Anim/Gfx}Low lvl
D0/2DB8: 8902 246A 0297 6F8D 8902 266A 0297 908D ;{Anim/Gfx}Mid lvl
D0/2DC8: 890C 266A 0000 908D 890C 266A 0000 908D ;{Anim/Gfx}High lvl
D0/2DD8: 81 ;Targeting
D0/2DD9: 00 ;(UNUSED)
D0/2DDA: 34 ;Spell Power
D0/2DDB: 4B ;Spell Accuracy
D0/2DDC: 08 ;Element
D0/2DDD: 0000 ;Status Effect
D0/2DDF: 02 ;MP Cost

And in ZPS RAW:
@OFF Spell.Data.Fireball
RAW E085 C304 C304 C304 ' elem. anim, gfx 0-3/4-7/8+
RAW 8902 206A 0297 398D ' spell anim, 0/1
RAW 8902 226A 0297 528D ' spell anim, 2/3
RAW 8902 246A 0297 6F8D ' spell anim, 4/5
RAW 8902 266A 0297 908D ' spell anim, 6/7
RAW 890C 266A 0000 908D ' spell anim, 8/9
RAW 890C 266A 0000 908D ' spell anim, 10+
@OFF %Spell.Data.Fireball%*%
RAW Spell.Target.Enemies
RAW Spell.Stat.None
RAW Spell.Power.Medium
RAW Spell.Accuracy.Default
RAW Spell.Element.Salamando
ADR.16 Spell.Effect.None
RAW 02 ' mana cost

Here's the formatted art/animation data:
@OFF Spell.Data.Fireball
ADR.16 $D185E0 ' animation script (elemental summon, salamando)
ADR.16 #0x04C3 ' graphics 0-3 = (0x04C3 & 0x07FF) * 24 = $D47248
ADR.16 #0x04C3 ' graphics 4-7
ADR.16 #0x04C3 ' graphics 8+
' spell level 0/1
RAW 89 ' palette
RAW 02 ' aim type, homing projectile
ADR.16 $D36A20 ' particles script
ADR.16 $D19702 ' animation script
ADR.16 $D18D39 ' animation script
' spell level 2/3
RAW 89 ' palette
RAW 02 ' aim type, homing projectile
ADR.16 $D36A22 ' particles script
ADR.16 $D19702 ' animation script
ADR.16 $D18D52 ' animation script
' spell level 4/5
RAW 89 ' palette
RAW 02 ' aim type, homing projectile
ADR.16 $D36A24 ' particles script
ADR.16 $D19702 ' animation script
ADR.16 $D18D6F ' animation script
' spell level 6/7
RAW 89 ' palette
RAW 02 ' aim type, homing projectile
ADR.16 $D36A26 ' particles script
ADR.16 $D19702 ' animation script
ADR.16 $D18D90 ' animation script
' spell level 8/9
RAW 89 ' palette
RAW 0C ' aim type, hardcoded
ADR.16 $D36A26 ' particles script
ADR.16 #0x0000 ' null
ADR.16 $D18D90 ' animation script
' spell level 10+
RAW 89 ' palette
RAW 0C ' aim type, hardcoded
ADR.16 $D36A26 ' particles script
ADR.16 #0x0000 ' null
ADR.16 $D18D90 ' animation script

So, the first 2 bytes (E085) are a 16-bit pointer into bank $D1 for the elemental summon animation that heroes use. Obviously enemies ignore this when they cast spells.

The next 6 bytes are 3 16-bit encoded pointers, whose value gets multiplied by 24 (0x18), and then used as a 16-bit pointer into bank $D4 for the start of the spell's graphics to load.

After this is 6 8-byte chunks of data that specify animations for each 2 spell levels.
- The first byte is a palette number, but it depends on the animation scripts for how much this palette number is used, if at all.
- The second byte is the animation type for the spell: whether it directly occurs on the target, fires homing projectiles that have to contact the target, plays a hardcoded animation, etc. AKA "aim type" because this specifies how the spell reaches its target.
- The next two bytes are a 16-bit pointer into bank $D3 that seems to be sprite construction data for spell "particles" which I guess are the lesser parts of the spell animation (small twinkles, etc.). I don't recall if this points at an animation script or just frame construction data.
- The next two bytes are a 16-bit pointer into bank $D1 and many animations don't use this pointer so it's set to 0000 instead. I think this tends to be used by projectile-style spells.
- The last two bytes are a 16-bit pointer into bank $D1 and are the spell's primary animation script.

Hardcoded animations tend to ignore all of the data in the above described chunk, aside from the "aim type" byte causing the spell animation loader to go check for a hardcoded animation for the current spell number in the first place.


Hmm.  This sounds a bit more complicated than I thought.  I can see why very few people tackle this (except you and NGI).  Or rather, very few people have the skills to even attempt this.  I'm gonna see if I come up with any idea, but I feel like this is one of those things that I shouldn't get my hopes up on.  I just don't... have the skills.  Magic Recharge is really the best, and I wish Magic Recharge weirdness (the fireball types resetting the timer, the hardcoded animations of Lv9 animation not starting the timer) is fixed.  I know you said it's on your to do list, but you also said that it'll take a while for you to tackle that, as you have many more things of higher priority.

For the first 2 bytes of spells (the elemental summon), is the timing different?  For example, Gnome uses 5 seconds, but Salamando uses 6 seconds?  Or does the summon frames depend on the spells? (ex: Fireball vs Lava Wave)  If I wanted to change the element summon length, how would I go about that?  Currently, the caster "crouches", then does a little pose, then the summon materializes from the ground, then the summon gets materialized, then the summon does a little pose, which then casts a spell.  I feel like if I wanted to change the timing, then changing the first "crouch" is the easiest.