The following warnings occurred:
Warning [2] count(): Parameter must be an array or an object that implements Countable - Line: 895 - File: showthread.php PHP 7.3.33 (Linux)
File Line Function
/showthread.php 895 errorHandler->error




Users browsing this thread: 1 Guest(s)
MMMMMMMagic update

#1
Posts: 763
Threads: 83
Thanks Received: 55
Thanks Given: 7
Joined: Apr 2015
Reputation: 22
Status
Obliviscence
So, when I first joined the site... my first major patch was to make it so any character could use magic if you wanted them to. It was a little sloppy, only reused magic lists in a very specific character ID order, and would cost Gogo's cumulative magic setup... It's time to revisit this. There is a better way!

I've got some ideas, but I'd like some feedback, or maybe a coder or two willing to help out with the patch. I will likely release 2 versions of the hack.

Version A:
  • compatible with any current game progress,
  • keeps magic system in tact
  • 12 reusable lists applicable to any character via table
  • Gogo's magic still works like normal and is selectable in the table for any character
Version B:
  • requires restarting your game (not an issue for people making original hacks)
  • loses the ability to learn magic from equipment
  • 16 reusable lists applicable to any character via table
  • free's up 88 ($58) bytes of SRAM
  • includes room for up to 10 new learnable spells.
  • Gogo's magic still works like normal and is selectable in the table for any character
Version A is assuming most people will want to keep the magic system as-is. Some hacks rely heavily on magic-teaching equipment... it is essentially just an updated version of my original "MMMMMMMagic" patch that no longer has the downside of forfeiting Gogo's magic system.


Version 2 is what I really want to talk about. This would be a relatively major overhaul of the way the game reads/writes magic... but its actually pretty simple. And it only costs the ability to learn magic via equipment... also, checking your % learned from your magic menu would be troublesome, instead that will be moved to the Espers menu.

Esentially, this is the logic. Learned magic will be binary, on or off. This allows us to fit every learned spell into 7 bytes (with 2 extra bits)... I want to increase that to and "even" 8 bytes, which allows up to 10 more learnable spells. This should be pretty easy to fix in natural magic as its binary as well (you hit the right level, you learn it, flip the bit on). Progression-based learning is a lot harder... so how are we going to handle this? ESPERS! instead of having a byte per spell... we will use a byte per-Esper per-list. By using multipliers, each esper can easily display how far along you are in each spell (even if you have to add percentages from other espers that learn the same spells). Once you hit 100% on a spell, it turns on the appropriate bit in the list and BAM, magic learned. There are 27 Espers so 27 bytes + the 8 bytes of binary = 35 ($23) per magic list. This is in contrast to the 54 ($36) of per-spell learning in vanilla. Which means we can make up to 16 magic lists and have 88 ($58) left over bytes that can be used for other things in the SRAM. I don't see any practical reason to go above 16 lists, but hypothetically giving up the extra SRAM you can make up to 18 lists this way.

The reason this removes learning spells by weapons is the fact that it's progression-based learning by individual spells. I can't add bytes for each weapon for each character, and I could add a system where you could learn from 1 piece of equipment at a time, and if you unequip you lose all your progress... but that's just getting REALLY muddy and complicates things a lot... So I think in this instance, you'd be better off just dropping equipment-based learning entirely. To replace it, it would be pretty easy to learn spells via event or item, as both of those methods would be binary.

So this is where you guys come in... I'm trying to keep track of all the places the game interacts with the magic lists. I need a complete list to make sure I'm doing this right. Also, if any coders would be willing to work on building this patch, in part or in whole, so I don't have to, I'd be totally fine with that and obviously you would get credit for your work. If anyone can help me hunt down the exact locations in each bank, that would be really helpful.
  • Menu Magic list (C3 bank)
  • Menu Esper list (C3 bank)
  • Magic list loaded for battle (C2 bank)
  • Battle Magic menu (C1 bank)
  • Battle Magic menu (C2 bank)
  • Colluseum/Confused (C2 bank)? (Is this independent or based on what was loaded pre-battle?)
  • Learning magic from Espers post-battle (C2 bank)
  • Learning magic via level-up post-battle (C2 bank)
  • Learning magiv via event (C0 bank) (unused code in vanilla but useful for hackers)
I can't help but feel like I'm forgetting things... Also, I might be remembering some of this wrong. Does the spell list get loaded to an active party location for battle, or is it called directly from the spell list during battle?

Anyway, the magic lists take up soooooooo much SRAM, and a more efficient system would be a Godsend for hackers, especially those wanting to add a 15th and 16th permanent party character. So help me out! Let's do this.

Happy Hacking!




Final Beta Round!

MMMMMagic 1.9.5 Beta!

Includes:
  • headered FF3us 1.0 patched with the plug-and-play MMMMMagic update patch (no guest adder)
  • a save file with all magic unlearned
  • the full disassembly for the update
I will be making the expert hackers version this week that has no preset new magic, and desperations still enabled. It will have a .ips, a .asm, and this Thursday's stream will be dedicated to how to use/modify the patch: setting magic lists, what data to edit, and how to create and set up new spells in the lists.



  Find
Quote  
[-] The following 1 user says Thank You to B-Run for this post:
  • SSJ Rick (07-01-2016)



Messages In This Thread
MMMMMMMagic update - by B-Run - 06-30-2016, 09:34 AM
RE: MMMMMMMagic update - by m06 - 06-30-2016, 11:39 AM
RE: MMMMMMMagic update - by B-Run - 06-30-2016, 12:21 PM
RE: MMMMMMMagic update - by m06 - 06-30-2016, 01:43 PM
RE: MMMMMMMagic update - by B-Run - 06-30-2016, 02:06 PM
RE: MMMMMMMagic update - by HatZen08 - 07-01-2016, 05:51 PM
RE: MMMMMMMagic update - by Imzogelmo - 07-07-2016, 12:37 AM
RE: MMMMMMMagic update - by B-Run - 07-07-2016, 07:38 AM
RE: MMMMMMMagic update - by B-Run - 07-22-2016, 07:48 AM
RE: MMMMMMMagic update - by B-Run - 08-18-2016, 12:18 PM
RE: MMMMMMMagic update - by seibaby - 08-18-2016, 02:21 PM
RE: MMMMMMMagic update - by Lockirby2 - 08-19-2016, 08:24 PM
RE: MMMMMMMagic update - by B-Run - 08-31-2016, 09:17 AM
RE: MMMMMMMagic update - by madsiur - 08-31-2016, 11:54 AM
RE: MMMMMMMagic update - by seibaby - 08-31-2016, 12:17 PM
RE: MMMMMMMagic update - by B-Run - 08-31-2016, 01:50 PM
RE: MMMMMMMagic update - by B-Run - 09-01-2016, 08:13 AM
RE: MMMMMMMagic update - by B-Run - 09-04-2016, 02:46 PM
RE: MMMMMMMagic update - by B-Run - 09-11-2016, 11:16 AM
RE: MMMMMMMagic update - by B-Run - 09-23-2016, 08:43 AM
RE: MMMMMMMagic update - by Scorcher - 09-23-2016, 09:57 AM
RE: MMMMMMMagic update - by Turbotastic - 09-23-2016, 10:40 AM
RE: MMMMMMMagic update - by B-Run - 09-23-2016, 11:20 AM
RE: MMMMMMMagic update - by Turbotastic - 09-23-2016, 04:44 PM

Forum Jump:

Users browsing this thread: 1 Guest(s)


Theme by Madsiur2017Custom Graphics by JamesWhite