I've been wondering about expanding the FF1 magic list to 128 spells, 16 per level (8 white and 8 black).
Has anyone attempted to do this, and if so, what blockers did you encounter?
Examining the assembly, I'm not sure how feasible this is, I spotted some difficulties, including but not limited to:
-The out-of-battle spell handling routine is a mess;
-Out-of-battle stores spells by in-level slot (1-8) instead of absolute ID, and there's a bug to fix (ORA vs. ADC) before attempting to expand it;
-The battle attack IDs for magic start at $B0 (MG_START), leaving a range that only has room for 8 spells per level;
-How to rearrange the spell list (and related info) to reflect the move from 8 spells/level to 16.
I experimentally added support for an alternate set of 64 spells to the game (I made space to add the new spell data, names, and prices).
In addition to the 64 standard spells (4 STD white and 4 STD black per level),
I've added 64 alternate spells (4 ALT white, and 4 ALT black per level).
Classes are assigned to use either the standard set of spells or the alternate set, but not both.
So that allows, for example, the Red mage to have his own set (or 2) of spells, or a new class like a Sage to have a separate line of spells.
Rewriting the hard-coded out-of-battle handler to use a jump table also allows both differing sets of STD and ALT spells to be cast.
Here's a sample video showing the Red mage buying and using ALT magic, while the White and Black mages uses STD:https://youtu.be/LhyD-kk09ns
I went with this implementation as a "half-step" to my initial goal.
Also, I'm experimenting with a related set of changes to make an expanded magic system a little easier to use:
-Use one inn, and the price is based on character levels (currently the highest level, not an average or anything);
-Use one clinic, and the price is based on the level of the revived character;
-Hijack the first 8 inns, and use them as ALT white magic shops;
-Hijack the first 8 clinics, and use them as ALT black magic shops;
-Introduce new menu strings to give the ALT WMAGIC and BMAGIC shopstheir own names.