A slickproductions.org /forum/index.php?PHPSESSID=5f0fck550j2m4m2fpbtkj2vkm1&action=printpage;topic=1873.0 e:/My Web Sites/Slick Productions - FFIV Message Board/slickproductions.org/forum/index6eb8.html slickproductions.org /forum/index.php?PHPSESSID=5f0fck550j2m4m2fpbtkj2vkm1&topic=1873.0 e:/My Web Sites/Slick Productions - FFIV Message Board/slickproductions.org/forum/index6eb8.html.z x 7g^ OK text/html ISO-8859-1 gzip @ Tue, 10 Mar 2020 07:03:12 GMT 0 0 P 7g^ ph
Print Page - Keeping everyone in shadow party
Board of Slick
Library of the Ancients => Final Fantasy IV Research & Development => Topic started by: Pinkpuff on August 23, 2013, 06:13:58 PM
Title: Keeping everyone in shadow party
Post by: Pinkpuff on August 23, 2013, 06:13:58 PM
I seem to recall that Phoenix released a patch that allowed enough shadow slots to save the data for all the characters in the game. However, I think it was only for version 1.0, and I also seem to recall it didn't quite work correctly.
It would be a dream for me (and probably others) to be able to make a version of this game that operates more like FF4A near the end and be able to configure your party, or at the very least, even in a more linear plot hack, not have to worry so much about the logistics of different characters sharing a shadow slot.
If we can figure out how exactly he went about it and maybe get it working (preferably for v1.1) I might be able to put something into FF4kster to detect whether the patch has been applied and if so have the editor accomodate the new slots.
Title: Re: Keeping everyone in shadow party
Post by: Dragonsbrethren on August 23, 2013, 06:52:38 PM
There's a disassembly/interpretation included in the text file, so it shouldn't be too hard to adapt.
Title: Re: Keeping everyone in shadow party
Post by: chillyfeez on August 23, 2013, 08:46:53 PM
Huh... I had seen the thread where he talked about working on this patch, but never saw this. On the one hand, this is awesome. On the other hand, I can't believe I spent so much time thinking about the logistics of how I would work character exits and reappearances in my hack using only five slots!
Title: Re: Keeping everyone in shadow party
Post by: Pinkpuff on November 02, 2013, 06:18:37 AM
I'm not able to figure out from that file what to do to convert it to 1.1
Title: Re: Keeping everyone in shadow party
Post by: chillyfeez on July 16, 2014, 05:38:16 PM
Hey Grimoire LD (or anyone else, really), do you happen to have a map of character stat records that is more complete than the Bab-il document (http://rb.thundaga.com/tob/record.txt)? If I'm not mistaken, that was made by Phoenix, and therefore probably doesn't contain any of the info his shadow party hack ignored.
I'm interested in reworking the hack, but it would be silly to try without knowing which pieces of data are essential.
Title: Re: Keeping everyone in shadow party
Post by: Grimoire LD on July 16, 2014, 09:08:17 PM
That's pretty much all you need for this. Outside of battle the game only stores 40 bytes and the rest are added in-battle.
2D - Critical Hit Chance 2E - Critical Hit Bonus Damage 2F - ?Steal Evade?
3A and 3C are still unknown, but I've never personally seen them referenced. They are quite possibly unused, which could have interesting ideas for mods down the line....
Phoenix's idea was to get rid of extraneous bytes like current HP/MP, modified stats, status, resistances/weaknesses, physical attack, defense, and magical defense (this would all be recalculated when they would rejoin the party anyhow) so there would be room enough. Would his plan work? Difficult to say, there is a problem with experience that was never addressed. (though there is a mention of disabling Exp. gain for the Shadow Slots, which should, in theory solve the problem) The only real issue is the loss of critical hits from thereon out when using it. All you would need is three more bytes of space, if I'm not mistaken. Thereby the amount of space would go from 0B to 0E which should still be enough space for all of the characters.
Title: Re: Keeping everyone in shadow party
Post by: Pinkpuff on July 16, 2014, 09:31:28 PM
This wouldn't remember equipment either, would it? Like, if you were to try to implement some kind of dynamic party configuration a-la FF4Advance the character would just get the actor's initial equips replacing whatever it had before, correct?
Title: Re: Keeping everyone in shadow party
Post by: Grimoire LD on July 16, 2014, 10:10:05 PM
It does, here is what his Shadow Party hack checks...
1140 character id/handedness 1141 class id 1142 level 1143-4 max HP 1145-6 max MP 1147 strength 1148 agility 1149 vitality 114A wisdom 114B will 114C helmet 114D armor 114E gauntlet 114F right-hand item 1150 right-hand quantity 1151 left-hand item 1152 left-hand quantity 1153-5 experience His hack also changes matters to a Class based rather than Actor based for Events. I imagine that the Actors are still referenced for their commands, but I couldn't say for sure.
His hack is a good foundation, but it is extremely specific and would be difficult to make work in a basic sense without a heavy overhaul. I'm hoping that Chillyfeez's attempt might be a bit more open, so to speak.
Title: Re: Keeping everyone in shadow party
Post by: chillyfeez on July 16, 2014, 11:39:21 PM
This is going to be a bit ramble-y... The whole shadow party would need to be stored in the first 1800 bytes of RAM, because that's all that's copied into a save file - and what's the point of a full shadow party if it's erased every time you turn the game off? I don't think there's any significant amount of free space there. Maybe if you're willing to give up the fat chocobo's inventory... Anybody know what 7E:12A0 - 143F are used for? Something, I presume. If it's used for anything at all, then it can't be used for shadow...
As oit stands, shadow data is 320 bytes long.
There are 12 characters. This assumes there is no going back to young Rydia or DK Cecil.
That's 26 (DEC) bytes per character, IF you include Cecil. 29 if you don't. 32 if you also take out the option of keeping Tellah after he dies.
Character ID and upper byte of MP could, in theory, be combined. Handedness (upper two bits) can be determined and recalculated by ID, and the max value for the upper byte of MP is 03 (two bits).
So... Sprite/class -1 Level - 1 Max HP - 2 Max MP/chr ID - 2 Base str - 1 " agi -1 " vit - 1 " wis - 1 " will - 1 Crit hit chance - 1 " " bonus - 1 Helmet - 1 Armor - 1 Gauntlet - 1 R hand item - 2 L hand item - 2 Exp - 3 TNL - 3
Total - 26. So, that should work, unless you can see something I missed? Steals evade (if that's what it is) shouldn't matter for party members, and I think everything I left out can be calculated based on everything that would be saved, right?
Hmm... Come to think of it, if every character has its own shadow slot, then there's really no need to store the first two bytes of character data, either...
Title: Re: Keeping everyone in shadow party
Post by: Grimoire LD on July 17, 2014, 01:41:28 AM
1340 to 143F is ridiculously the amount of space that the Fat Chocobo has...
12A0-133F appear to be default visibilities of NPC's. Now the Fat Chocobo section... FF Bytes... 255 slots... this begs the question of Why FFIV chose to do it in this frankly silly manner instead of having a slot open for each item! This is already more than enough slots for items! I wonder what would happen if you tied all item use and acquisition in battle and outside to the Fat Chocobo Bag. Would you not have to worry about item space the?
Title: Re: Keeping everyone in shadow party
Post by: chillyfeez on July 17, 2014, 08:23:11 AM
It would probably work out of battle but not in-battle. The active inventory gets transferred to a different location in battle, which is only big enough for 64 items.
There are only 44 battle ITEMS, but weapons alone, there are more than 64... Plus, shields. I can't think of a way to make that work...
Title: Re: Keeping everyone in shadow party
Post by: chillyfeez on July 17, 2014, 11:15:28 AM
Hmm... There's a block of several hundred bytes near the end of the 7E block of RAM (7E:F600-FE00 or so) that seems to be unused. We could change that to the in-battle location of inventory, and extend back the out-of-battle inventory to be 100 (h) bytes long (begin it at 1390), then move flags and default visibilities up, giving SOME extra space to shadow data. All that's easy enough (though time consuming), except I don't know how to increase the size of the inventory display window.
Thoughts?
Title: Re: Keeping everyone in shadow party
Post by: Grimoire LD on July 17, 2014, 11:57:11 AM
I was going to say that this space may have been the space I had previously located for my failed "keeping commands in RAM" hack. But if it's only accessed inside of battle then it shouldn't cause any issues I'd imagine. But yes, as you said the problem the size of the inventory display window. That part is a little bit difficult to actually deal with, I'd imagine. Likely something says to repeat the screen 64 times before stopping, in theory it would be a matter of finding LDA/X 0040 that is continually decreased to building the screen and changing it to FF.
Title: Re: Keeping everyone in shadow party
Post by: chillyfeez on July 18, 2014, 01:40:58 PM
Ok, well, I can't figure out how to make the item window bigger, but I have some new ideas for how to use the normal 320 bytes of shadow data... if every character has his/her own shadow slot, then anything that doesn't change doesn't need to be saved in the shadow. The character loading routine can simply run a check on which character it's loading, and fill in the necessary information from a table somewhere. As far as I know, bytes 2D-2F are in that category of data. I just cheated P. Cecil from level 11 to 99 in a single battle, and these bytes did not change. Furthermore, I think I can work into the character loading routine a jump through the level-up subroutine, so that the shadow wouldn't need to store the three bytes of TNL data. The necessary bytes to store, then, would be:
total20 (14h) With 20 bytes needed per character, and 320 bytes total, that's enough for 16 characters.
1 DK Cecil 2 Kain 3 Child Rydia 4 Tellah 5 Edward 6 Rosa 7 Yang 8 Palom 9 Porom 10 P Cecil 11 Cid 12 Teen Rydia 13 Edge 14 FuSoYa
That gives us enough space with 40 bytes to spare!
It'll take a massive load of coding - I'll have to completely rewrite the shadow loading and storing routines, plus edits to the experience awarding routine... probably more.
Not gonna start immediately, but I'll keep you guys posted on progress as it comes.
Title: Re: Keeping everyone in shadow party
Post by: Grimoire LD on July 18, 2014, 09:01:36 PM
These are some creative ideas you have! Yes, Critical Hit chance only changes if you have a weapon equipped (x2 with a normal weapon, x4 with a Bow&Arrow) and the Critical Hit Bonus is added from half of the weapon's power + a default amount for each specific character and Steal Evade... is used by Porom and Porom only in the initial Cry command which would increase the chance of stealing an enemy's item, it doesn't ever change, but in most cases it matches the default level of the character.
16 characters would be an ideal amount, it would allow us to use Golbez and Anna's slots to their fullest potential. (Eventually...)
Title: Re: Keeping everyone in shadow party
Post by: chillyfeez on July 23, 2014, 05:13:19 PM
So I've got shadow storage complete. That's the easy part. I'm sort of tackling things in order, so next up is awarding experience to shadowed party members. This will be a two-part process - rewriting the experience awarding routine to store experience awards in the right places, as well as rewriting the level-up routine to ignore shadow data (TNL is not stored, and leveling up will instead occur when a character is loaded FROM the shadow). I expect this to be a relatively quick process, but the character loading sequence (from the shadow) will be a massive rewrite.
Title: Re: Keeping everyone in shadow party
Post by: Grimoire LD on July 23, 2014, 08:38:32 PM
Yes, quite so. But you've worked this part out quite quickly on its own! Keep up the fantastic work!
Title: Re: Keeping everyone in shadow party
Post by: Pinkpuff on July 24, 2014, 04:58:35 AM
Great work! This is so exciting!
Since we're at it, I always thought it was a little cheezy that everyone in the shadow party gets the full EXP, allowing a solo character to basically turbo-level everyone at once, as well as being a little silly to think that the people out fighting are levelling up just as quickly as the people in reserve. Maybe it could be divided by something? Or maybe make it customizable... multiply by X and divide by Y where X and Y default to 1 but you can give the addresses so that the person applying the patch can customize the ratio as he or she sees fit? Anyway I don't mean to add unnecessary complication, just indulging in a little wishful thinking since that part of the code is being rewritten anyway.
Title: Re: Keeping everyone in shadow party
Post by: chillyfeez on July 24, 2014, 07:29:58 AM
That occurred to me too, Pinkpuff, but I had intended on ignoring it and hoping nobody else noticed :blush: The part of the code I need to change might not be anywhere near the part that assesses the total exp and divides it by active party members, so I don't know how easy or difficult that may be to find. Once found, I don't know how easy it will be to manipulate. My guess is, the original program probably looks at the data at 7E:405F in RAM - this is a series of 01s and 00s, one per character slot including shadow, that the game looks at in order to determine who GETS experience. Trouble is, I don't know how feasible it is to extend this by eleven bytes to begin with, then once expanded if possible, how feasible it is to make this edited range the new EXP divisor. Obviously now that you've mentioned it I'll be looking into it, but I just don't wanna make any promises yet that I can do anything about it.
Title: Re: Keeping everyone in shadow party
Post by: chillyfeez on July 24, 2014, 09:59:45 AM
Well, long story short, this is where the EXP divisor comes from:
$13/FF5F A6 AB LDX $AB [$00:00AB] A:0082 X:0000 ;load # active party into X $13/FF61 DA PHX A:0082 X:0002 ;store for use as EXP divisorI don't know how 00AB becomes the counter for active party members, but it doesn't really matter. Here's what I'm gonna do: After this value is loaded into X, I'm going to have the game look into each shadow party slot. If it shows there is a character being stored there, it will increase X by one. So, EXP will be divided by all active (living and not stone) party members plus all characters stored in the shadow, then awarded to each of those characters. I don't want to skip the exp award for the shadow party entirely, because think about when Rydia rejoins. If she's level 15 and she comes in to save a near death Cecil and crew, she'll do little good. She of all characters needs to be gaining experience while in the shadow. So, anyway, that's the plan.
Title: Re: Keeping everyone in shadow party
Post by: Pinkpuff on July 24, 2014, 10:10:28 AM
Sorry, it didn't even occur to me that it would be in an entirely different part of the code (not sure why though, that does make sense).
So wait... does this mean the people in the normal party will also get less EXP the more people are in shadow? If so, maybe it should be a separate (but compatible) patch? After all, that would still mean that people in shadow progress at the same rate as those in the acutal party, but the rate itself is slower.
Title: Re: Keeping everyone in shadow party
Post by: chillyfeez on July 24, 2014, 10:44:06 AM
Right.
I can't really think of a better way to go about it. The way I see it, the options are: 1) Divide by active party, award to all of active party and shadow 2) Divide by active party, award to active party only 3) Divide by active party plus shadow, award to active party and shadow
It's simply not a reasonable expectation to divide by active party, then award to active party, then divide again by shadow, then award to shadow. That's too much of a deviation from how the game normally awards EXP.
Anyway, it's in there now (option 3), and it's working as intended. The whole divisor change is a jump to a separate, entirely custom line of code. To avoid it would only require changing three bytes (13/FF5F-13/FF61). Once the whole patch is done, I can release a patch in tandem that allows the user to bypass that entirely, effectively giving you the choice of divisor accounting for shadow party or not.
Title: Re: Keeping everyone in shadow party
Post by: Grimoire LD on July 24, 2014, 12:47:54 PM
Terrific! This was a clever way to go about it. Balancing Exp. for the foes to compensate 10... oh wait... would it eventually compensate 21 characters? That... could be a little bit of trouble balancing accordingly, eh heh.
Title: Re: Keeping everyone in shadow party
Post by: chillyfeez on July 24, 2014, 02:57:16 PM
Well... 13, with a maximum of 15 if someone ever successfully got both Golbez and Anna working. A character will either be counted in the shadow or in the main party, or not at all (if they haven't joined yet). Never in both places. Also this hack will assume child Rydia and Teen Rydia ARE the same person, so they share shadow data (though you will be able to go back to child Rydia but keep her stats).
Title: Re: Keeping everyone in shadow party
Post by: Pinkpuff on July 24, 2014, 07:00:20 PM
(though you will be able to go back to child Rydia but keep her stats).
Forgive the tangent, but this reminded me of an experience I had back in the early days, before rom hacking was a thing (or at least, if it was, then it was nothing like what it is now) and people were messing around with the game genie to get different effects similar to what we're doing now with the editor (changing people's battle commands, accessing all the "dummy"/hidden items etc). Anyway there was this one code someone found that completely reset all the plot flags, but left everything else the way it was. So for example, lets say you get to near the end of the game and save. You apply this code and then load up your save. Now you go to Mist. Boom, package opens, Mist re-burns-down, Kain leaves, and now you have a second Rydia, child version, who mysteriously now has Cure 2 in her white magic list (I know why that is now but at the time it was very mysterious and intriguing). She even has all the advanced summons (kind of amusing seeing little girl summon big ol' Bahamut and Odin). I can't remember off hand if she had all the advanced levels and stats of the older version or if they reset but anyway it was an incredibly fun code and messing with it and others like it was part of what drew me to hacking this game.
Title: Re: Keeping everyone in shadow party
Post by: Grimoire LD on July 24, 2014, 09:44:06 PM
The only difference between Child Rydia and Teen Rydia is the sprite, everything else about them (except for White Magic) is the same.
What got me into hacking FFIV was trying to get W. Meteo to trigger in that it was using the "change character" codes until eventually you were able to get FuSoYa with the Twin command and then you were able to use W. Meteo as you pleased. I always loved the idea of W. Meteo (because as a kid I thought it meant White Meteo, a combination of the most powerful White Magic and Black Magic, I'm still disillusioned that it means Double Meteo, heh). What drew me to here was just the basic knowledge of wanting to learn more about FFIV, I never dreamed at the start that I'd be fully understanding the innards of much of the game's system and being able to alter them as I willed.
Title: Re: Keeping everyone in shadow party
Post by: chillyfeez on July 24, 2014, 10:27:56 PM
I'm guessing that child Rydia #2 started from original stats, since the original programming of the game only has a "child Rydia" who loads initial stats (and likewise only has a "teen Rydia" who loads shadow stats), but of course they use the same spell sets.
For me, FFIIUS was the first game I ever *loved*. Back in the early days of console gaming, my favorite games were always the ones that encouraged me to play for hours, days, weeks, &c. I guess Zelda and Zelda II were always my favorite, though I spent quite a while on Dragon Warrior, too. But when I played FFII (I never even had FFI as a kid), it was like a revolution and I was instantly hooked. In the late 90s I played quite a bit of FFVI with Game Genie - loved giving Celes Shock instead of crappy Runic - but was always disappointed with how much fewer codes like that were available for FFIV. I dabbled in cosmetic hacks for NES ROMs, but doing that kind of stuff with SNES seemed out of reach. I didn't discover that it had become possible until about 2011, with Euclid's Link to the Past hack, at which point I almost instantly decided that this was something I NEEDED to learn how to do with FFVI.
Anyway, yeah, that was a tangent... I've planned out what needs to change in the EXP awarding and level-up routines. About to implement the changes and then test it out. Barring any unforeseen disasters, that will leave only the character loading processes (again, the biggest part of all of this, with the most things that might go wrong)!
Title: Re: Keeping everyone in shadow party
Post by: LordGarmonde on July 25, 2014, 10:31:45 PM
Oh how quickly days become weeks and then months... :isuck:
To not go on-and-on I will cut to the chase. I recently picked up (and finished!!) my revised TNL Experience formula. The goal there was to calculate the TNL values based on as few stored values as possible and without having to square or cube numbers. I just posted what I came up:
I'm sorry I was away so long; but let me say going through all the posts here and seeing the three of you still banded and kicking ass - it brings quite the smile to my face. Keep up the good work, everyone! :childish:
Title: Re: Keeping everyone in shadow party
Post by: chillyfeez on July 26, 2014, 05:17:24 PM
So I'm getting close to where I can start planning how the loading routine will work - after how quickly all the rest of this went, that's kind of disappointing to say, but what can ya do?
The way it's going to work is this: There will only be 14 actors - DkC, Kain, CRy, Tellah, Ed, Rosa, Yang, Pal, Por, PC, Cid, TRy, Edge, FuSoYa - but there will be room for Golbez and Anna if anyone ever figures out how to make them fully functional. That is to say, there is no Kain 2, Tellah 2, etc. When an event instructs the game to load an actor, the game will first look into the Shadow to see if the character is being stored there (every character has his or her own slot). If there is no shadow data for that actor, then the game will run the initial stat loading routine (which will be essentially unchanged). If there IS relevant Shadow data, then the game will load that, then will load the five character-dependent stat bytes (ID, job, crit%, crit bonus, steal evade) from a custom table. Then the game will run the level-up routine, since exp is stored in the shadow but level gains are not performed there. :edit: Rydia will be the exception to the process. Teen Rydia will load only from the Shadow (has no initial stats), but will have a unique entry in the five-byte table. Child Rydia will load either from intial stats or the shadow, like any other character would, but it would only be wise to load one or the other at a time. If Teen Rydia is in the party, and Child Rydia is added, then Child Rydia will load from initial stats (because Teen's load would have cleared the shadow). In that case, if Teen is removed from the party, her stats wouldbe stored in teh shadow. If Child was removed from the party after that (but before Teen was loaded back in), then Child's (presumably lower) stats would overwrite Teen's shadowed stats... does that make sense? That should work. Although TNLs don't work exactly as I thought, I don't think, so I might have to throw in some extra calculations. I keep saying I'll cross that bridge when I come to it...
Title: Re: Keeping everyone in shadow party
Post by: LordGarmonde on July 26, 2014, 08:12:18 PM
Although TNLs don't work exactly as I thought, I don't think, so I might have to throw in some extra calculations. I keep saying I'll cross that bridge when I come to it...
Yeah - the native TNL coding certainly isn't doing anyone any favors; on that I think we can all agree. :wink:
But what you have sketched out sounds great; the freedom to add/drop any character any time would be a dream come true. I too got started with the character change codes via game genie: good memories. :happy: - I'd never have thought there were others in the world just as curious and passionate about FF4. My only problem was the overuse of hypnosis... if you are going to reuse plot elements you have to hide it better; but maybe someday I'll put my money where my mouth is :wink:
Title: Re: Keeping everyone in shadow party
Post by: Pinkpuff on July 27, 2014, 05:15:29 AM
So does this affect the way actor data is stored? Specifically, FF4kster looks for (and saves) the information for whether the actor loads initial character data or loads it from a certain shadow slot. Will those bytes still be there and just do nothing (in which case the editor should be already compatible, at least in that respect), or will it mess everything up if it writes something strange to those places?
Also, welcome back LordGaramonde! Good to see you again!
Title: Re: Keeping everyone in shadow party
Post by: chillyfeez on July 27, 2014, 08:45:38 AM
It uses those bytes, in a way that is compatible with Ff4kster (I'm using it as I go, as I usually do :happy: ). Every character's load and save byte reads as a shadow slot that is a multiple of 05. So for loading, they read 80, 85, 8A, 8F, 94, &c. For saving they read 00, 05, 0A, 0F, 14, &c. If there is no shadow data in that slot, the loading code will instead use the actor ID to load initial stats. Ff4kster seems entirely cool with all of this. It just reads the load and save bytes as "shadow slot 0, shadow slot 5, shadow slot 10, &c." The user can't set those, but the editor won't change them either.
Title: Re: Keeping everyone in shadow party
Post by: chillyfeez on July 27, 2014, 08:02:02 PM
OK, I have a first draft of the loading code written. Loading from initial stats works like a charm. Loading from the shadow needs testing and debugging - probably a lot. Depending on how much time I get over the next few days - and how extensive my inevitable mistakes were - I'd say I'll have this thing up and running by the end of the week.
Title: Re: Keeping everyone in shadow party
Post by: Grimoire LD on July 27, 2014, 09:27:48 PM
Well done! We are nearly there to be free of this poorly conceived Shadow Slot idea that Square used for FFIV.
Title: Re: Keeping everyone in shadow party
Post by: LordGarmonde on July 28, 2014, 05:02:26 AM
OK, I have a first draft of the loading code written. Loading from initial stats works like a charm. Loading from the shadow needs testing and debugging - probably a lot. Depending on how much time I get over the next few days - and how extensive my inevitable mistakes were - I'd say I'll have this thing up and running by the end of the week.
I'm excited! When it's ready I'll definitely give it a good testing; it'd be my pleasure. :wink:
Well done! We are nearly there to be free of this poorly conceived Shadow Slot idea that Square used for FFIV.
Seconded! :yabin:
Looking at the last few posts got me to thinking (uh-oh...). What about a system where an incoming member's level is set using Cecil's level as reference. Instead of having the shadow party gain the whole time what about these as alternatives:
1) Every time Cecil gains a level, so does everyone in the Shadow Party. Possibly not even 1-to-1, maybe something like (3/4 Shadow)-to-(4/5 Cecil) - or
2) Similar thinking: when someone joins they advance as many levels as required to catch up to Cecil +/- (1/2). This would require looping through level gain one at a time to take care of stats (right?) - I have no idea how noticeable that slow down would be.
Those were just a couple things to throw out there. Actually, that's one of the things I never really worked out in my mind: just as to how one is going to actually be at (x) Level when first loaded - without the TNL table to reference, I can't see any way to do it other than looping through a string of off-screen level gains - which may be OK; I don't know yet. I'll expand more on what I've found so far over on the drawing board. - See you there! :kedgar:
Also, welcome back LordGaramonde! Good to see you again!
Thanks Pinkpuff! It's good to be back and it's definitely great to see you! :childish:
Title: Re: Keeping everyone in shadow party
Post by: Grimoire LD on July 28, 2014, 11:10:26 AM
There is a "Party Level Average" the game looks at when calculating certain things at the start of battle such as Preemptive Strike/Ambushing/Back Attack. It's quite likely this can be taken advantage of to be used to average out Shadows, the difficulty lies in looping to that correct level for the TNL though, that would probably be the killer of that idea..
Title: Re: Keeping everyone in shadow party
Post by: chillyfeez on July 28, 2014, 08:27:44 PM
Ho-ly-crap. It works! My TNL code is off slightly, and that needs to be fixed before I can put patch out, but it's not crashing! I had to learn how to do some things I've never done before (change direct page and data bank registers) but the mechanics of it all are working exactly as planned. It's cool, I can load a character, then send them to the shadow, then cheat their experience up to 98967F (9,999,999) then reload the character and actually watch the game level them up to 99! That was the most outside the box part of the plan, and was the part I was SURE would go wrong. Can't wait to share this with you guys!
Title: Re: Keeping everyone in shadow party
Post by: Grimoire LD on July 28, 2014, 08:48:45 PM
You mean in data you watch their Exp continue to increase, their level go up and the exp continue to increase, all in real time?
Title: Re: Keeping everyone in shadow party
Post by: chillyfeez on July 28, 2014, 09:14:37 PM
Well, after the character loads from the shadow, the game runs through the level up routine to account for all of the exp collected while in the shadow. So, if you put level 1 Rydia in the shadow, then increase her exp to max, then load her back into the party, the game runs through the level up routine 98 times. The whole process (for that many levels) takes about half a second or so, so if you're actually watching the RAM data at 7E:1000 (or wherever the applicable character slot is), you can actually see it roll up from lv 1 to lv 99.
Title: Re: Keeping everyone in shadow party
Post by: Grimoire LD on July 28, 2014, 09:22:43 PM
Oh, that's really neat! I was wondering what the slowdown in that regard would be, seems it is a lot less than I had thought it would be. I did not know the game could actually run the level-up routine outside of battle, since... well it never does normally to my knowledge, heh.
Title: Re: Keeping everyone in shadow party
Post by: chillyfeez on July 28, 2014, 09:39:31 PM
Yeah, as long as the internal registers are set to their proper values (direct page =0000, data bank =7E. As mentioned above, I had to learn how to do this), it works just fine. I also had to set a couple of bytes in RAM so that the level up routine runs as though it were leveling up a shadow character, so it doesn't try to display "soandso gained a level," "learned such-and-such spell."
Title: Re: Keeping everyone in shadow party
Post by: LordGarmonde on July 29, 2014, 02:04:22 AM
I was actually thinking about that yesterday - what a continuous loop would look like. That brought me back to the old Game Genie days and using a code to let Exp keep piling up & watching the gang fist-pump so long that the total gained actually rolls over and all that time was for not. The times I wasn't so greedy I remember watching the levels come pouring in. I'm definitely going to watch the RAM and see that ticker work its way up - too cool!
Oh, that's really neat! I was wondering what the slowdown in that regard would be, seems it is a lot less than I had thought it would be. I did not know the game could actually run the level-up routine outside of battle, since... well it never does normally to my knowledge, heh.
Yeah - I'd have lost money on that one: but it appears that the 68516c is indeed the little processor that coulddid! Running it outside of battle was something I was considering - but only for the reason of splitting up when to add levels - but what a pain in the ass that would turn out to be. What made me think of that was the classic approach to covering load times in FF7 with cur scenes.
1/2 sec to make it through 98 level gains - sounds good to me! :wink:
But oh man - can't wait to have a look at that code and then see what it can do!
There is a "Party Level Average" the game looks at when calculating certain things at the start of battle such as Preemptive Strike/Ambushing/Back Attack. It's quite likely this can be taken advantage of to be used to average out Shadows, the difficulty lies in looping to that correct level for the TNL though, that would probably be the killer of that idea..
Apparently we'll be able to make good use of it. Do you happen to know how the "Party Level Average" is calculated - probably a pretty conventionally way - but at the same time I thought of all the backwards broken mechanics when it came to party statistics in FF1. Really I was more wondering if the calculation lent greater weight to Cecil or was it more even.
- Happen to know - LOL - Of course you know! - Now so do I - Hey, at least (for once) I thought to look before actually clicking 'Post' - http://slickproductions.org/forum/index.php?topic=1883.msg19959#msg19959
:edit: I knew I had seen another entry about that! http://slickproductions.org/forum/index.php?topic=1940.msg20858#msg20858 :happy:
- I just had to cite that one again. Holy crap indeed! :childish:
Title: Re: Keeping everyone in shadow party
Post by: chillyfeez on July 31, 2014, 09:49:03 PM
OK, this is almost finished, but I've run into a hang-up and I'm looking for help if anyone knows what's going on here...
The characters' level up data don't match up with the pointers on a 1-to-1 basis. Theoretically, one should be able to add the pointer value to 0F/0000 (LoROM) to find the beginning of the data, but this only works for Rydia and P.Cecil. everybody else's data is off by some. For a lot of characters, it's off by 2D, but not all. Here's what I've got:
CHARPOINTERDATA(LoROM)DIFF ------------------- CECILB4FB0F/B5282D KAINB62F0F/B65C2D RYDIAB7900F/B79000 TELLAHB8920F/B8F15F EDWARDB9DF0F/B9F213 ROSABB130F/BB402D YANGBC470F/BC742D PALOMBD7B0F/BDA82D POROMBEAF0F/BEDC2D P cECC0100F/C01000 CIDC1120F/C1715F EDGEC1FB0F/C27378 FUSOYAC2670F/C35CF5 This difference affects the automatic adjustment of TNL data when characters are loading from the shadow (since I'm not storing that in the shadow anymore). Now, I can just write those differences into the coding to make this work just fine, but I don't know if they will remain consistent if the hacker were to change level up data. So... does anyone understand why these differences exist, and/or where they come from? I'm thinking they may, possibly, have something to do with the character's starting level, since a lot of characters start at level 10 and a lot of characters have a difference of 2D, plus Rydia and P.Cecil, who both start at level 1, bot have a difference of 00, but that's the best I can figure, and even still that doesn't really help, since 2D is not a multiple of 0A (or 09).
Thoughts?
:wtf:
:edit: alternatively, if anybody can confirm that these differences do not change at all regardless of how much you edit level up data, then I can just figure them into the coding and be done with it... :edit: 2 - It's definitely related to the character's starting level in some way...
Starting level Difference ------------- ----- 01 (1) 00 (0) 05 (5) 13 (19) 0A (10) 2D (45) 14 (20) 5F (95) 19 (25) 78 (120) 32 (50) F5 (245)Anybody understand the pattern here? :edit: 3 oh, there it is... (S-1)*5=D Where S is starting level and D is difference. except Edward's difference is 19 instead of 20?! Again, I say :wtf:
Title: Re: Keeping everyone in shadow party
Post by: Grimoire LD on July 31, 2014, 11:25:05 PM
Those Have to be something dealing with starting levels.
It is 00 for every Level 1 Starter It is 13 for Edward - Level 5 Starter It is 2D for every Level 10 starter. It is 5F for Tellah and Cid - Level 20 Starter It is 78 for Edge - Level 25 Starter It is F5 for FuSoYa - Level 50 Starter
Now 13 into 5 Levels? Is 19 in Decimal (20 if counting byte 0?) which does align well with the concept of 5... 2D is 45 (46?) which doesn't split well into 10, nor is it just double that...
I'll take a look at the data and see if I can find anything.
In any event, these initial pointers do something with the TNL, even though in Dark Knight Cecil's case for instance they should start B528 if you null the first row of B4FB the game will assume that he has a much higher length to go to reach Level 11. Sorry, afraid that really wasn't much help.
Title: Re: Keeping everyone in shadow party
Post by: chillyfeez on July 31, 2014, 11:45:31 PM
Got it. The info on rb.thundaga.com is off by 1 for Edward's data. He starts at B9F3, meaning his difference is 20. So, great, that's settled. I'm done messing with this for the night but I think I'll be all done with it tomorrow and ready to post!
:edit: now that I think about it, this makes perfect sense - it allows the game to use the same formula to find the level data for a specific level regardless of character: (Current level - 1) * 5 + Character's Pointer + 0F/0000 = Level Data Offset
Title: Re: Keeping everyone in shadow party
Post by: LordGarmonde on August 01, 2014, 04:29:32 AM
now that I think about it, this makes perfect sense - it allows the game to use the same formula to find the level data for a specific level regardless of character: (Current level - 1) * 5 + Character's Pointer + 0F/0000 = Level Data Offset
Nice work! Now I'm sorry I went to be so early - I missed all the action. :lame:
In any event, these initial pointers do something with the TNL, even though in Dark Knight Cecil's case for instance they should start B528 if you null the first row of B4FB the game will assume that he has a much higher length to go to reach Level 11. Sorry, afraid that really wasn't much help.
It's still very interesting. I'm not exactly sure what's going on there, so now I want to look into it. The first value stored in the ROM for Dk.C is 931 which when subtracted from the in-game TNL of (3334) yields 2403. It would seem then that that initial value of 2403 is loaded at some point and then to it is added 931 to get 3334 as seen in-game.
I can see the sense in that - just like the level formula being offset to allow it to work for Lv 1 characters I'd think similarly this would be done so that TNL in-game can always be calculated by adding your last in-game TNL and the difference (in this case 931) which are stored in the ROM
That may be way more confusing than I thought it was coming out as. I'll come back to that. One question: Pinkpuff's editor seems consistent with what I just worked out in that in addition to the in-ROM TNL table starting at 931 she has values listed for Dk. C of: Experience = 3000, and TNL = 2403 -- My question then would be when are those values called and where are they stored...
It came to me as I typed that: http://rb.thundaga.com/tob/starting.txt :tongue: -- OK; I'm going after a formula for HP!
Title: Re: Keeping everyone in shadow party
Post by: chillyfeez on August 01, 2014, 11:21:13 AM
Sorry, folks, more unexpected delays. Nothing major, but I've run out of time for today.
I'm this close, but the job I get paid for has to take precedence. :lame:
Sorry, I barely even gave myself enough time to write that message earlier. Just so everyone knows where I'm at - I've got the TNLs working properly (totally awesome), but as I was playtesting each character, I discovered that Edge doesn't follow the initial stats pattern that everyone else does. It's probably got something to do with Teen Rydia, and it's probably that I'm using the wrong character identifier to determine his initial stats location (like I should use actor instead of character, or vice versa, or whatever). Anyway I'm going to follow through initial stats loading to see what the game does by default, and probably just copy those steps, but if that proves to be unnecessarily complex, I can think of various other quick fixes for the problem...
Title: Re: Keeping everyone in shadow party
Post by: Grimoire LD on August 02, 2014, 10:33:36 AM
Something to do with Teen Rydia? That would be strange, in any case. looks like we're nearly there, eh? I'll be gone for the next two days, but I'm looking forward to seeing the applications for this!
Title: Re: Keeping everyone in shadow party
Post by: LordGarmonde on August 02, 2014, 01:13:57 PM
Teen Rydia - I've seen stranger things; I can sort of see that one - but I could be way-way off. I'd have thought she wouldn't have to mess with initial stat loading because of the her data already being shadowed. Could it be that Edge is designed to first appear mid fight - I know I first noticed that because he always joined at Lv 25 with 790 HP no matter where I was at. - Just a thought. That could also mess with Rydia since she comes in mid fight - but I guess so does Edward - idk
:hmm: I'll keep that in mind as I'm pushing these numbers around
Also as a quick update I am expecting to settle on a formula for HP at some point today. I've dissectted it many way and I think I've settled on an approach. One thing that threw me for a while was the idea that maybe Cecil's HP as a Paladin isn't so high just because - but the fudged it so he wouldn't die facing himself in the mirror.
I'll note that Edge is a bit weird with HP anyway - his ranges aren't as routinely divisible as most others; and neither are Edward nor DkC - all introduced via combat...hmm more for me to keep in mind - but I'll be back with I've formula in hand.
It sure does! chilly is about about to blow this game wide open - I can't wait! :childish:
Title: Re: Keeping everyone in shadow party
Post by: chillyfeez on August 02, 2014, 02:35:15 PM
Yeah, Teen Rydia. Long story short, because most characters' initial stats are loaded using some index number that is rendered invalid by the way I've redistributed actors, I was using actor value - 1 to index initial stats, but Teen Rydia's value is wedged between Edge and FuSoYa and everyone else.
New thing to fix, though: my workaround to skip overwriting stored equipment also skipped loading equipment for the initial load, so I have to rewrite that now... I don't wanna say it'll be done then, because how many times have I said that so far? But I'm gettin' there...
Title: Re: Keeping everyone in shadow party
Post by: chillyfeez on August 03, 2014, 09:21:24 PM
*sigh*
New bug to fix... For some reason, moving a character in and out of the party multiple times can cause unwarranted level-ups. I think I know what's going on, but the fix will take some more time. God, this is a helluva lot more complicated than I even expected originally. But I don't want to release anything buggy, or else what was the point in remaking the patch? :bah:
Title: Re: Keeping everyone in shadow party
Post by: chillyfeez on August 08, 2014, 03:26:58 PM
OK, I'm still trying to get this to work. I finally know why it's not working, and it's because I'm still not figuring TNL right. Does anybody know exactly how the game interprets TNL data? I know it uses the two bytes in the Level-up table, and adds them to the previous (3-byte) TNL for the character in question, but... it looks like it somehow determines (at a different point for each character?) to add an extra 01 to the highest TNL byte (that is, when 2 bytes becomes too small to represent the amount to add to the previous value, aka when adding more than 0xFFFF), then at level 70, it adds the two bytes to the upper two bytes instead of adding them to the lower two bytes. That's easy enough, but it's that middle step that I can't figure out. How does the game know that it should start adding the extra 01 to the upper byte? Anybody have any insight on this? :shadow: :yabin:
Title: Re: Keeping everyone in shadow party
Post by: chillyfeez on August 08, 2014, 05:38:37 PM
Well, I think I figured out a way to account for this, though I'm SURE it's not how they intended, but I've watched the level up routine step-by-step, and I cannot for the life of me understand how it's making the determination. If you look at level-up data - specifically the TNL bytes - you can see the places where the game would be adding an extra 01 to the upper byte, because the values look like: DD86 EC8B FC3A 0C97 So, I'll just tell the code to compare the current TNL value with the previous one, and if the current one is lower, I'll increase some place-holding RAM byte by 01, then add the value of that byte to the upper byte of TNL. Total pain in the ass, but it should work. And I'm operating under the assumption that once I get this fixed, I should be all done with this patch, though I won't rule out the possibility that I'm wrong about that. This all would be so much easier if they had just figured out some workable formulas like LordGarmonde's trying to do. Oh well, onward.
Title: Re: Keeping everyone in shadow party
Post by: Grimoire LD on August 08, 2014, 05:58:43 PM
Ah good, you found a fix, I went searching a little but came up empty. Glad to see you've thought of a work around though.
Out of curiosity how Does the TNL work? Does it look at your current Exp. and see if it matches or is above it then loads the next TNL? Or does it look at things in a more dynamic fashion and go down as it tries to reach less than 000000 to reach the next level?
Title: Re: Keeping everyone in shadow party
Post by: LordGarmonde on August 08, 2014, 06:12:42 PM
Out of curiosity how Does the TNL work? Does it look at your current Exp. and see if it matches or is above it then loads the next TNL? Or does it look at things in a more dynamic fashion and go down as it tries to reach less than 000000 to reach the next level?
Well, more like the first choice there, but it's much more stupid than that. I don't know exactly how the game interprets the data, but this is how it all looks: The TNL that appears in the character's current record is the value that current experience needed to be to achieve current level. Upon level up, the TNL value from that level's data is added to the value currently in the TNL portion of the character's record.
SO... in order to determine if a character is supposed to level up, the game must look at the current TNL data, add the next level's TNL data to that, then compare the result to current exp. If current exp is equal or higher, the level and stats are increased.
For (a simple) example: Rydia starts at level 1, at which point her exp and TNL are both 000000. After acquiring 44 (2C) exp, she levels up to level 2, at which point her TNL reads 00002C. Her TNL value for level 3 is 004C, so, add that to 00002C to get 000078 (120). That's how much exp she needs to get to level 3, and when she does, her TNL will read 000078. I can easily, off the top of my head, devise a handful of less stupid ways they could have made this work, but whattaya gonna do?
Title: Re: Keeping everyone in shadow party
Post by: LordGarmonde on August 08, 2014, 09:13:02 PM
Thanks! I was hoping, with a day off today, my birthday present to myself could be finally finishing this patch, but alas, alas...
You figured it out! :childish: Way to go! :cookie:
I'm finishing up with attributes to which I think I'll include MP instead to do-away with individual checks. I would think I can take a similar approach to HP to likewise ditch the current Case-Select. So with your victory over TNL and the above we should be in good shape. As a bonus I can see using all of these as the basis for which new characters can be defined. But one thing at a time.
Title: Re: Keeping everyone in shadow party
Post by: chillyfeez on August 10, 2014, 03:00:15 PM
*whew* Ok, at long last, here it is! Is it perfect? No... there are a few oddities that will be discussed below. Is it really cool? Well, I think so, but judge for yourself.
First of all, what's attached: -ShadowMod.ips - This is the Mod, and nothing else -ShadowTest.ips - This is the same thing, except the town of Baron has Cid standing right at the entrance. Talk to him, and you will hear the "cure" sound, then open your menu and you will see Edge has been added to your party. Talk to Cid again and you'll here the "Thunder" sound, and Edge is gone - added to the shadow. You can change which character is added/deleted from the party by editing the events in Ff4kster (the events changed here are "Behemoth Battle 51" and "Behemoth Battle 52"). The Mod is, for the most part, compatible with Ff4kster, but, beware that there are not as many Actors as there used to be, since adding and removing always adds and removes the same actor. This leads me to... -actors.dat - replace the actors.dat config file in Ff4kster with this one in order to make sure you're adding/removing the right actors. Only the valid choices will appear as character's names, all other choices are marked "empty" and should be left alone. Also, I say this is "compatible with Ff4kster," but this assertion is not fully tested. If I were you, I would avoid editing "Characters" or "Actors," as this mod does make specific references to those sets of data, and I don't know how changing them would affect how it all works (changing initial equipment should be safe, though).
Now, what else is important to say?
Ah, yes - This mod only implements the ability to smoothly add and remove all characters to and from the Shadow. I did NOT go through every event in the game and correct all instances of adding and removing characters. You'll have to do that yourself.
Once a character is first added to the party, s/he will continue to divide and receive experience thereafter. So, by the end of the game, all experience will be divided by 13 and every character will receive this amount, whether in the main party or not. Making a patch to undo this division among the shadow would be easy enough, making a patch to avoid awarding experience to the shadow party, not so much.
As mentioned previously, Child Rydia and Adult Rydia share the same shadow data. Adult Rydia will not load correctly unless Child Rydia has been added and removed at least once. Adding both to the party at the same time will cause confusion and/or glitches and is therefore not advisable.
Equipment is saved and loaded. So, when Adult Rydia comes back, for instance, she will be equipped with whatever Child Rydia had equipped when she was removed (instead of the whip and whatever else she normally comes with). The same goes for Kain, Rosa, &c... any character who normally did use the shadow and came back with new equipment, now will not.
Finally, and this is the least happy part of this story, while I did finally get TNLs to calculate correctly, the leveling up system is not perfect. A couple of characters - as I recall, P. Cecil and FuSoYa - will have trouble leveling up completely if they gain a ton of experience in the shadow. For example, if you get P. Cecil enough experience to level up to 99 while he's in the shadow, then add him back to the party, he may only level up to 32 or so. If you remove and add him again, he will level up further, but it usually takes about for or five adds and removes before he comes out right. I don't know why this happens, but it has something to do with the game's regularly programmed level up routine, so I can't really fix it. A few other characters similarly will only level up to 98 instead of 99 (I think DK Cecil, Tellah, possibly one or two more). Those characters will, however, reach 99 after one battle (even with 3 Imps).
I think that's all there is to say here. If you discover any weirdness that I may have missed, feel free to let me know. I promised myself that I'd take a break from the Shadow hack for a while by the time I got to this point, but I'm not against the idea of making big corrections down the road if there is a need.
Have fun!
:edit: It's come to my attention that this mod and User Options are not compatible. While I don't plan on going back and checking for the compatibility of all of my mods, I do acknowledge that these two may be those of most value and interest to ROM hackers with larger projects in mind. In light of that, I've developed a patch that will ensure compatibility between the two. Bear in mind that I can only guarantee this will work on a ROM that has no other custom code inserted (edited with FF4kster should be fine, though) beforehand.
Follow the steps in this order: 1) Apply User Options (this will work with versions 2.2 and later) 2) Apply the Shadow Mod 3) Download and apply the patch below, "UO-Shadow Fix.ips"
Title: Re: Keeping everyone in shadow party
Post by: LordGarmonde on August 10, 2014, 03:26:40 PM
*whew* Ok, at long last, here it is! Is it perfect? No... there are a few oddities that will be discussed below. Is it really cool? Well, I think so, but judge for yourself.
WAY TO GO chilly!! :childish: :cookie: -> for Sir!
I'm happy to say that I finished my arduous trek through Stat-Land and after a short sanity break (LOL) and some real work (BOO) I will write it up. Going in sets of 6 levels over 5 definitely made the difference there - but more on that later. I can't think of a better way to relax then to watch the limits stripped away from my favorite game! :banonsmash:
I'm sure that I will - my thanks to you, and my compliments! I'd love to take a look at you code sometime I'm sure that's quite an impressive sight.
Title: Re: Keeping everyone in shadow party
Post by: chillyfeez on August 10, 2014, 03:46:02 PM
Oh, yeah, I did forget to include disassembles. Well, I'll have to compile. All of the purely custom code is in the 4/B000s (LoROM, that's the 2/3000s in ROM), but there are also some modifications made to some already a existing routines, such as exp awarding.
Title: Re: Keeping everyone in shadow party
Post by: Grimoire LD on August 10, 2014, 10:34:59 PM
And it's finally here! You've now fully improved upon Phoenix's old idea and made a much more workable setup. And thank you for saving equipment, that was one of my major pitfalls with my Edge/Cid Switch Item. Perhaps with the other Event Item, I'll switch out Rosa and Rydia for Palom and Porom... it wasn't a possibility before, but now it is. The issue in that is that they are basically made for the part of the game in which they appear, I didn't do anything else nifty with them as I did with Cid to give them sustainability hmm... I'm sure I'll think of something.
Let's give this a whirl in a test rom and see how it goes...
And it works beautifully!
Fought a couple of battles with Edge (And Of course get the Imp summon on a basic playthrough sense in this test rom...) put him back in the Shadow and reloaded him and his Exp. was still the same. Oh man, this opens up So many options, now all that remains is that blasted TNL silliness and we will have so much more freedom on character placement.
Let's open up FF4kster and see what the new actor arrangements are...
Ah, yes... that makes all proper sense, quick question though... the other Actor slots, does that mean that we can't have Tellah learn or forget Recall? That's... pretty much all that was ever used for that function now that I think about it. Every other instance of a returning character aside from Rydia used their base set anyhow.
In any case this is The De Facto hack made for FFIV, Ever. You sir have done a wondrous job for us all! The wheels of linear programming that is all too often a hallmark of FFIV is starting to come loose, we are very close to a true freedom where characters are concerned.
I suppose next will be utilizing LordGarmonde's research and putting them into the game to get rid of space limitations as far as levels go.
Title: Re: Keeping everyone in shadow party
Post by: LordGarmonde on August 10, 2014, 11:01:28 PM
In any case this is The De Facto hack made for FFIV, Ever. You sir have done a wondrous job for us all! The wheels of linear programming that is all too often a hallmark of FFIV is starting to come loose, we are very close to a true freedom where characters are concerned.
That they are. Again, great work - a huge block now gone that road to creativity is opening up.
I suppose next will be utilizing LordGarmonde's research and putting them into the game to get rid of space limitations as far as levels go.
My derivations are more-or-less complete! I've worked out numbers for each stat for each character - all that remains there is to back extrapolate to Lv 1 so I can assign new appropriate starting stats. That should be no trouble - with the growth rates in hand I just need to run in reverse until I make it down to Lv 1.
With that the set should be complete - TNL, HP, MP & Stats. Tomorrow night I'll write up/release the Stat data and my final sketch for the decoding algorithm - after that it's for you guys to do what you do! :wink:
Title: Re: Keeping everyone in shadow party
Post by: chillyfeez on August 10, 2014, 11:21:04 PM
... Yeah... Tellah and Recall. Unfortunately, this hack does not allow Tellah to "lose" Recall. I may be able to put that back in at some point, but it's not a big enough concern at the moment.
I got the imp spell in a test run, too! Those jerks...
Yeah, I'm equal parts looking forward to and dreading LordGarmonde finishing his stat algorithms. It should help circumnavigate whatever weirdness is going on in the level up routine that causes the issues in my shadow hack, but will of course require a full rewrite of the level up routine.
Title: Re: Keeping everyone in shadow party
Post by: LordGarmonde on August 11, 2014, 11:21:25 AM
... Yeah... Tellah and Recall. Unfortunately, this hack does not allow Tellah to "lose" Recall. I may be able to put that back in at some point, but it's not a big enough concern at the moment.
What about changing the command to something more like "Call" in FFV - give him a no-cost random shot of magic (maybe tweak the % of each result) but then he could keep it forever. In my head I'm thinking of it sort of like when Edge learns Flood+Blitz...I can so see Tellah losing control of his magic with mixed results. I toyed with something similar up for Palom - only for him it was a renamed Sing - but it corresponded to him trying magic that might have been beyond him...my test with with Fire 1/2/3 & Self-Destruct - LOL
Yeah, I'm equal parts looking forward to and dreading LordGarmonde finishing his stat algorithms. It should help circumnavigate whatever weirdness is going on in the level up routine that causes the issues in my shadow hack, but will of course require a full rewrite of the level up routine.
I'm writing it up now since it turns out I've got some time. Hopefully when you see it I can shift that ratio to 60/40 :wink:
Title: Re: Keeping everyone in shadow party
Post by: Grimoire LD on August 11, 2014, 12:18:11 PM
Tellah losing control of magic is actually part of the reason he left Mysidia. His bio in the information book says that he was breaking the seals on magic at a rapid rate, but he eventually unleashed a spell he couldn't control (I have a feeling that this spell was probably supposed to be Meteo, but that piece of information may have fallen through the cracks during development) and ended up injuring many people in Mysidia and for this he left to atone for his hubris and became renowned as a wizard (according to TAY), eventually settling down in Kaipo and lived in peace, but due to the passage of time and his old age he began to forget his magic.
So Tellah losing control is completely canon and it would be a fitting trait. That's not to say that Recall doesn't have its fair share of interesting things about it. After all it can cast Death and Tornado multi-targeted... rarely. The Recall command could easily be boosted a bit if need be for long-term usage, maybe change its name.
Title: Re: Keeping everyone in shadow party
Post by: Pinkpuff on August 11, 2014, 02:10:49 PM
Having Recall be more based on effects (like the Death and Tornado you mentioned) than elemental damage would probably help it with being more long-term useful; or at least consistent usefulness throughout the game.
That said, he probably doesn't need it anyway. I mean, in FF2US he didn't even have it, and even in the versions where he does have it I find myself not using it that often in favor of the reliability of just using the element I know I need, and knowing I won't get a "fail", or worse, a spell I didn't want and wasting precious MP on it.
Either way it's more a decision for the individual hacker and doesn't seem like it should be part of the scope of the basic patch.
On that note, is there a "undo shadow EXP splitting" patch to go with this?
Also this is totally fantastic and a dream come true! Chillyfeez is my new hero.
Title: Re: Keeping everyone in shadow party
Post by: chillyfeez on August 11, 2014, 03:06:27 PM
By the time I got this put together yesterday, I was happy to be finally "done," but , yes, there will be a "skip shadow exp division" patch. As I recall, the exp division was a subroutine, so I just have to find where I put that jump and blank it out. Possibly this afternoon, I'll be compiling disassemblies of everything in the patch, at which point I will undoubtedly find said jump. So whenever I get there, I'll put the patch together.
You were already my hero, so I guess now we're even.
Title: Re: Keeping everyone in shadow party
Post by: TheBigT2000 on August 16, 2014, 04:04:29 PM
So, can this be used as a way of making it so that you can edit your party near the end of the game like in the GBA version?
Title: Re: Keeping everyone in shadow party
Post by: chillyfeez on August 16, 2014, 06:40:02 PM
That's the idea. Or any other time, for that matter.
Title: Re: Keeping everyone in shadow party
Post by: Pinkpuff on August 17, 2014, 07:35:28 AM
So, can this be used as a way of making it so that you can edit your party near the end of the game like in the GBA version?
It would get you most of the way there. What you would be missing is a nice menu interface for editing your party freely. But what you can do is set up a bunch of NPCs with events that will put people in or take people out. Then the player can edit their party by talking to them in the appropriate order.
Title: Re: Keeping everyone in shadow party
Post by: TheBigT2000 on August 17, 2014, 04:19:35 PM
Yeah, that's what I thought. Also, I would probably make it so that you can never take Pali Cecil out of the party. lol
Title: Re: Keeping everyone in shadow party
Post by: Pinkpuff on August 17, 2014, 04:41:24 PM
That makes total sense plotwise, but strictly speaking there should be no technical issue with removing him.
Title: Re: Keeping everyone in shadow party
Post by: TheBigT2000 on August 17, 2014, 04:49:45 PM
What would happen if you got rid of everyone in your party though? I would make it so you could never have an empty party, and making it so you can't get rid of Pali Cecil would be the wisest solution.
Title: Re: Keeping everyone in shadow party
Post by: Pinkpuff on August 17, 2014, 05:14:46 PM
What would happen if you got rid of everyone in your party though?
Hm, never tried it but my guess would be that the game would function normally until you press the R button whereupon your sprite would probably become something strange, or you got into a battle whereupon most likely the game would freeze up.
So yeah, I agree, it's probably best to make sure that can't happen...
Title: Re: Keeping everyone in shadow party
Post by: TheBigT2000 on August 17, 2014, 05:17:14 PM
I think it would just make your ROM explode faster than a fat kid at an all-you-can-eat buffet!
Title: Re: Keeping everyone in shadow party
Post by: chillyfeez on August 17, 2014, 07:59:08 PM
Or if you open the menu. That causes a freeze, too, with no party members.