Wednesday, December 20, 2017

Version 1.08 Open beta

The Lunarian Shuffle Version 1.08 is, maybe, complete!  In addition to the changes advertised before (including playable Golbez!), it also has an option to change characters' musical cues to match the characters they have been replaced by.

A lot of the changes made have a rather high chance of breaking things.  I believe I've caught the big ones, but it's hard to be sure.  I need players to test The Lunarian Shuffle both with and without the new options active, and most importantly, to let me know what things are broken or just don't seem right.

The beta can be found here:

Monday, November 27, 2017

Currrent intended Lunarian Shuffle v1.08 feature list

Here are the things I'm currently planning to add to The Lunarian Shuffle's next major release:
  • Golbez as a playable character
    • Dark Knight / Black Mage hybrid; low damage, high durability.
    • The villain will be randomly replaced with one of the player characters.
    • Need to figure out how to handle black magic; I'm out of spell learning list slots.
  • Bugfix to the Dark Wave attack so it works properly at higher levels.
    • At present, the random portion of its damage is limited to a 1-byte variable, shorting the player up to 60% of the intended damage.
  • The Paladin Cecil replacement joins at level 5, not 1, if Normal mode is active.
  • Duplicate characters beyond the first will be renamed.
    • Not sure whether to use combined names (like FuRoSa) or references to other similar characters (like Celes).
  • Inclusion of the Assassin Dagger as an obtainable weapon.
    • This weapon gives physical stats at the expense of magic, and can inflict instant death.
    • It is in the game code, but is not normally obtainable, just like the Hand Axe.
I'm also looking at the summoned monster sidequests as perhaps needing tuned up, but I'm not sure what can be both clearly communicated to the player and thematically appropriate.

Wednesday, November 1, 2017

Version 1.07 complete!

My test run yesterday found only one glitch, which was easy to fix.  With that bug squished, version 1.07 is live!  As always for a major release, check occasionally for minor updates should I discover something is broken.

In addition to the big changes mentioned in my previous post, this version also slightly widens the level range for random spell learning levels from +/-5 to +/-6, and there is a publicly posted version of the character tracker that allows duplicate characters.

My decision regarding Tellah's early game black magic randomization was to randomly select one of the three level 2 elemental spells to include in the list.  This keeps the odds of having one low rather than nearly guaranteed.  Hard Mode removes this possibility.

Get all these new features at the usual location:


Monday, October 30, 2017

New features coming soon - Character Specifier, Tellah's initial magic randomized

The gears are turning in the production of Version 1.07 of The Lunarian Shuffle.  The theme of most of the changes is to follow up on the duplicate characters patch, and include some features that make sense to have because of the duplicates.  Some improvements include:
  •  A Character Specifier and a Character Counter are being introduced as ways to customize your duplicate characters.  If you want only bearded characters, or if you want to do a solo character challenge, your needs are going to be met.
  • All equipment is now going through the "Do you have a character that can use this?" check.
    • Previously, I was exempting things that were usable by 4 or more characters, since the odds you wouldn't have any use for it was so small.  Now with duplicate characters, this is a more likely scenario.
  • Adult Rydia is being introduced to more seeds.
    • She will have a small (~20%?) chance to be an adult when she joins the party at a position where she will not leave the party then rejoin in order to age.
    • Also, if Rydia remains Rydia after Mt. Ordeals, she will at least change her age.
  • Everyone else learns their spells at randomized levels, so why not Tellah?  Now, Tellah's pre-Ordeals magic set will be a random selection of early to mid game spells.
    • I'm not sure whether to allow the level 2 elemental Black magic spells or not.  I can make a few arguments for their inclusion, but it could severely warp the game.
 This is in addition to the usual round of minor bugfixes and balance changes.

While I have your attention, here's a PSA that V1.062 had a major error regarding spell sets.  Update to a more recent version if you have not already.

Sunday, October 15, 2017

Small improvements incrementing to v1.063

Various minor self explanatory GUI improvements, bug fixes, and bug fixes to the bug fixes bring us to v1.063 as the current.  Update is live at the usual download location:

Monday, October 9, 2017

Full Experience Sharing

Recently I've had some more players giving The Lunarian Shuffle a try.  A common point of feedback is that they don't care for how much time it takes to grind levels.

On one hand, this can mostly be attributed to the players not being FFIV speed runners; if they were, they would know to simply get one fight that was worth a lot of experience, and then kill off all but one character and win.  This would multiply the experience onto one character, which would then get copied onto all the shadow party characters, making them super powerful when they rejoin.  However, I cannot and should not expect all my players to be FFIV speed runners, so I should accommodate for them somehow.

On the other hand, FFIV speed runners had a different complaint - when a bad character such as Dark Knight Cecil or Edward joins the party, the correct decision was always to kill that character and leave him dead, lest he waste valuable experience and turns.  If I simply multiplied the experience gained by fights, this conclusion would not change, and instead speed runners would simply need to win one or two fights and then the party would have gained so many levels that searching for equipment could be skipped for a very long time.  That does not work well.

I can solve both of these problems at once by adding the option to remove experience division among party members.  When selected, experience gained will always act as if each fight was completed with a single character.  This is a significant change to the game's basic strategy that addresses a frustration inherent to the game rather than one caused by The Lunarian Shuffle, which lands it solidly as an optional feature rather than something mandatory.

And so, that is what I have done.  Version 1.06 is now live, and it features the option described above, as well as a reorganization of the GUI to better support the growing number of build options.

Wednesday, October 4, 2017

Duplicate characters are go! V1.05 posted.

It took a lot of ASM coding on the SNES side as well as a reorganization of the randomizer's code on my side, but the game can now handle duplicate characters!  This is available as an option, in case you still want the characters simply reordered instead of each individual one being random.

No longer will you be depressed by the knowledge that seeing Edward in Palom's spot means he won't be your FuSoYa replacement.  Now you can have however many bards you get lucky enough to roll!

The main reason duplicate characters were a problem before was the game only has space for 13 spell sets - Rydia alone uses three, so if you have 5 Rydias on the team everything would have crashed and burned.  The solution was to make the game lie to itself about which spells a character knows - the game will now hide the spells an individual character technically knows but doesn't have the level to cast.  With that code in place, I could have two different characters, at two different levels, share the same spell list without major issues.

In other news, I've attempted to alleviate the most common point of complaint The Lunarian Shuffle receives by making Valvalis start with 50% less HP if your party does not feature Kain.  If you roll a bad team (and the worst case scenario just got worse with the addition of duplicate characters!), you still need to devise a way to deal damage and stay alive, but at least the fight won't drag on for so long once you have achieved that.

Get The Lunarian Shuffle version 1.05 here!

Friday, September 8, 2017

V1.04 - Minor bugfixes

I have unceremoniously updated The Lunarian Shuffle to version 1.04.  Here's the changelog:
  • Characters who have a 2-handed weapon as their initial equipment cannot also start with a shield.
  • The prices for Hermes Shoes and Bacchus Wine were reversed if Faster Cutscenes was selected; this has been fixed.
  • Character who start with a bow and arrows as their initial equipment have 40 arrows in their initial quiver, instead of 50.
The arrows were changed as a matter of convenience rather than a matter of balance; an archer that frequently swaps arrow types is likely to get 3 stacks of the same arrow type if they start with 50, since during battle you can only equip 20 at a time.

Thursday, August 31, 2017

Version 1.03 Released

The Lunarian Shuffle has been upgraded to version 1.03.  Get it at the usual location,

Initial equipment randomization has been added!  Characters who join later in the game will likely have stronger equipment, but armor in particular might or might not be significantly behind the times.  If you are brave enough to choose Hard Mode, your characters will be missing their hats and rings twice as often, and they might even not have body armor!

Hold Y to Run is in!  Most of the credit for this addition goes to Myself086, though we had to work together on some changes to his original patch.  Grabbing out of the way chests feels better than ever.

Wednesday, August 30, 2017

Version 1.03 nearly complete!

Version 1.03 is almost done.  Here's a preview of the changelog:
  • The initial equipment of each character is now randomized.
    • Compared to v1.02, this is on average a nerf to early game characters, but a buff to the later game ones.
  • When an ally leaves and rejoins the party, that character will retain whatever equipment was being worn, rather than being given another set of equipment.
  • The King of Fabul will award a random "level 16" equipment of "goodness" 80+.
  • Trapped chests give equipment only, unless the original had an Elixir.
  • Implemented Myself086's "improved" Y to dash code.
  • Minor balance changes.
  • Minor "shorter cutscenes" mode improvements.

Thursday, August 10, 2017

V1.02 released!

The next version of The Lunarian Shuffle is now live!  This version features balance changes, bug fixes, and most importantly, a "shorter cutscenes" option that can make the game play about 40 minutes faster than usual by giving the player a tl;dr version of the plot.

As always, get the new version here: 

V1.02 nearly complete!

I have done the bulk of the work for The Lunarian Shuffle's v1.02 release.  "Shorter cutscenes" are now an option.

I decided against the "faster menus" patch.  It changes the feel of the game rather significantly without impacting the actual time expenditure much, which is the opposite of what I'm going for with these single-sitting-friendly options.

The "hold Y to run" patch has been implemented, but I'm pulling it out of this release.  It was designed to work in the Ancient Cave project, which has no real cutscenes and no vehicles.  When beginning a plot event or while riding an airship or chocobo, the code behaves rather strangely, often making you move slowly when you shouldn't.  I still want the feature, but its interaction with the main story is not yet up to The Lunarian Shuffle's standards.

A few other minor changes have happened, most noticeably another buff to FuSoYa's spell learning levels.

Today I will be streaming a final test run of v1.02's shortened cutscenes before making that version live!

Sunday, August 6, 2017

Goals for v1.02

The Lunarian Shuffle is a play experience that is designed to appeal to players who want to show off their skills at planning strategies to complete the game.  It will reward you for coming up with new solutions to familiar problems.  Players who want to test their skills in a challenge run are already well served by the current state of the randomizer, especially with Hard Mode selected.  However, players who want to race through the game are presently blocked by something incredibly basic: without knowing exactly what tools lie ahead, even a technically-easier version of FF4 winds up taking about twice as long as the normal speed run; simply finding 5-7 hours to play the game in one setting is prohibitively difficult.

To better serve would-be racers, v1.02 is going to focus on adding options that make the game shorter for a speed run without removing actual content.  I am including these as options because I do not want to force casual or challenge runners to have the game be altered from its original form any more than necessary.  Options that are presently planned include:
  • "Y to dash."  This is a feature developed by Myself for a different ROM hack; he has offered to share the code for it.  Hold Y and the main character will walk faster than usual.
  • "Fast Menus."  Also a donation from Myself, this option will remove a lot of the lag that normally slows down scrolling through a list of items.
  • Shortened cutscenes.  This will be a major project; I will go through each cutscene and hand-craft a quicker version of it.
    • Text boxes will mostly be removed (except for obtaining / losing key items).
    • Characters will walk faster.
    • Plot-fights will be untouched.
Again, these will all be optional.

I am currently planning to hold a race next weekend; for now, that race is planned to be a v1.01 race because I don't know if the above options will be ready in time.  If they are, then you can bet I'll be showcasing them.

Wednesday, August 2, 2017

Version 1.01 Released

The Lunarian Shuffle has had its first patch since its official release!  Get it at the usual location:

tl;dr: Massive buffs to chests inside dungeons.  Item duplication glitch patched out.

Here's the full changelog:


“What is this item?” page added to the information panel.

Mist Dragon’s physical defense is now 0.  This should help all-mage starting parties, without affecting more “normal” parties very much.

Patched out the Item Duplication Glitch.

Significant balance pass:
  • Items that are completely useless (as every character that can equip it starts with something at least as good) have been removed.
  • Items that are specific to a small number of characters will stop appearing after all of those characters have left for good.
  • The Rat Tail can no longer appear in the final dungeon.
  • The “level” of most dungeon chests have been increased, especially chests that are “out of the way” or trapped.
  • Chests and shops before the “level” of Mysidia’s shops are 2x as likely to contain Cure1, Heal, Ether1, and Life potions, as well as Tents.
  • Items that are useful over a long range of levels, but aren’t as amazing at the high levels, now have 2 “Goodness” ratings.  In other words, they will move from high-value to low-value chests as the game progresses, instead of clogging late-game chests with their mediocrity.
  • Various items that I previously overrated have been reigned in and should no longer clog high value chests.

The Tower of Babil ascent now has appropriately flagged treasures, instead of all being “whatever” like vanilla implied.

Now everyone can play the harp during Edward’s cutscenes, rather than turning into copies of Edward.

The kissing sprite is now a heart bubble, rather than only allowing Rosa and Cecil to get it on.

Fixed an issue where if one of the Twins replaced FuSoYa, WMeteo would be solo cast.

Tuesday, August 1, 2017

Speedrunner drama

Well, it turns out the FF4 speedrun community doesn't like change.

Yesterday, after the topic came up in Discord, I decided to hunt down the code that was supposed to fix the item duplication glitch, and write a patch that makes it actually work.  A few hours of RAM value hunting and assembly code writing later, FF4 ROM hackers now have a patch that can make GP actually matter in their projects if so they choose.  I posted the fix on Discord and left for the night.

Today I logged on to the Discord to find about 100 comments from speed runners who were furious at the concept that a version of FFIV without item duplication could exist.  Mind you, nobody had yet indicated that the patch would actually be used.  I find this situation frustrating because I designed my project to be a strategic / competitive experience and also to work best when resource management actually exists - while I don't generally want to take decisions on this sort of thing out of the hands of the players, I know that if a player wanted to play the game in the way I designed it, that player would have a terribly difficult time finding anyone willing to race against them that way.

In short, the severity of the opposition to the existence of the patch is itself a demonstration of why I may have to actually use it.  My project is largely one about resource management, but given the state of the community, I don't know how I can get anyone to actually manage their resources without using a heavy hand.

In other news, I've tested a few versions of cutscene shortening, and I've not found anything I like.  Most of the cutscene time is spent with the main character and/or NPCs walking around and doing other animations, rather than talking.  Removing those motions makes the game a baffling whirlwind of teleportations.  I'll keep thinking about the issue, but for now I have no clear path forward on that front.

I'm getting feedback that the distribution of items is not "nice" enough.  To some degree I think this is players' usual tendencies to call for power creep in every game, but in this case I do think that some improvements are in order.  My current plans are to:
  • Mark items that are specific to one character, and remove those items from item sources from beyond the point in the game where that character permanently leaves.
  • Increase the "level" of most chests in dungeons, while either leaving stores untouched or reducing them.
    • Especially increase the "level" of chests that are trapped or out of the way.
  •  Take some items that have a wide level range (stuff like the Gaea hat and elemental arrows that are still potentially useful long after they are current) and make them no longer have as high a "goodness" rating at the upper ranges.

Monday, July 31, 2017

Cutscene dilemma

During the launch celebration race on the RandomizerMania channel, the most common bit of feedback I received was a request to remove the cutscenes.  This feature is not one that I'm a big fan of, but it is common practice for randomizers that are intended for races.  In general, The Lunarian Shuffle has a policy of leaving the original game as close to unchanged as possible.

To put things in perspective, FFIV has about 85 minutes of cutscenes, out of an average total play time of 5-7 hours with glitches, or 6-8 hours without.  For a racing setting, if 1 hour of the plot events were cut, this would be a 15-20% reduction in the amount of time players would have to be able to set aside in order to race it.  As a speed runner myself, I can definitely say that this would be a big difference in terms of being able to schedule time to run the game or not, which is consistent with The Lunarian Shuffle's vision as the randomizer that is the best suited for strategy and competition.

Another consideration is that, given the way I randomize the final dungeon optional boss item awards, any changes to the game's event script will require me to move several pointers in the randomizer that change those items.  Maintaining two versions of the base ROM, one with and one without cuts to the plot, could therefore be a huge pain in the long run.

I will experiment with removing the many dramatic pauses in the game, to see if changing that but leaving the scenes otherwise untouched will make the game still feel the same while supporting speed runs better, or if instead it winds up being the worst of both worlds instead of the best.

Saturday, July 29, 2017

Character tracker overlay

The Lunarian Shuffle now has a character tracking overlay!

Available in the same folder as The Lunarian Shuffle itself, simply click a small character at the top, then the slot where the character has appeared, and this simple webpage will track who is who for broadcasters' viewers to see - or to help your own failing memory.

Credit for this tool goes to HungryTenor.

Thursday, July 27, 2017

Finishing touches

Provided that the changes I made yesterday play well today, I will be releasing The Lunarian Shuffle this weekend!

Today featured some nice cosmetics; FuSoYa is now the face of the GUI, and he changes poses as you progress making your modified ROM.  I have also copied the contents of the build log text box into a log.txt file in the working directory of the program.

I've also been writing up my advertising blurb for Discords and what not.

Wednesday, July 26, 2017

Fixing FF2US's faulty documentation

While watching casual streams of a retro video game, one thing I often do is I inform the player of things that they are supposed to know from having read the instruction manual - which, 9 times out of 10, they don't possess.  Video games of the past expected players to do some reading before playing, and some, especially RPGs before thorough tooltips became standard, expected players to refer to provided charts when making shopping decisions.

Recently, I did this while watching someone play Final Fantasy IV, and I noticed something interesting:
The Dark Knight is listed as being able to equip a whole lot of things that he actually can't.  Frankly, a lot of it is clearly bogus (Bow and Arrows were listed for the Dark Knight but not the Paladin, for example), but of interest to me is the late game armor.  The Dark Knight is listed as being allowed to equip all the non-paladin-specific heavy armors and shields.

The Lunarian Shuffle has a policy of deferring to the original's choices for balance and design whenever it is reasonable to do so.  This is why getting the Adamant Armor always involves turning in a Pink Tail from the final dungeon, for example.  In this case, it's not clear what that means, though - the game's ROM disagrees with Squaresoft's own claims.  So I think I am justified to pick whichever version I feel is best.

I'll go ahead and try out allowing heavy armors to be equipped on Dark Knight Cecil.  Perhaps this will make using him occasionally correct, whereas at present he's best as either a Valvalis attacker or a dead body.  Hopefully this will make sense to the players.

Tuesday, July 25, 2017

Final Fantasy IV 5 Job Fiesta - minor update

The Final Fantasy IV 5 Job Fiesta, my simpler, semi-joke project, has been updated to 1.02.  The game itself is unchanged; all I did was implement a MD5 check to avoid crashes if someone accidentally used a version 1.0 ROM.

For more information and a download link, check my longer post here.

MD5 check on input ROM, Golbez fight improvements

In a move that I should have done a long time ago, the randomizer now looks at the MD5 of the input ROM, as a checksum.  This should prevent the program from crashing when someone inputs a version 1.0 ROM, either due to their own carelessness, or that of the source of the ROM they obtained.  I will also implement this into an update to the 5 Job Fiesta.

Using our newfound actor vs. job check technology, we've made the Golbez + Shadow fight where Rydia's replacement rejoins much more consistent with the original.  Previously, the fight was checking for Adult Rydia's job for some aspects of the fight, but her actor for others, which made the game crash when those were not one and the same.  Now it always checks for actor, which means the fight can do things like summon the Mist Dragon and have the returning character start hidden and then show partway though the fight.  I'll need to check all the corner cases to be sure Adult Rydia's job doesn't get used at all now.

Monday, July 24, 2017

Special Commands: Done and dusted!

Thanks to work by HungryTenor, with some minor extensions by myself, The Lunarian Shuffle has fixed all the characters' special commands.  This means that Twin will now work as expected (and won't be selectable when the other twin is absent), Cover will work for Paladin Cecil for all his appearances, and Edward will Auto-Hide in all of his appearances.

Also, the Cover command had been coupled to the "main character" of the game for determining the speed scale of combat.  For example, the speed run would frequently reduce Paladin Cecil's agility in various ways to make running away from fights easier.  These things are now decoupled; whoever has taken the place of Dark Knight or Paladin Cecil will now be correctly identified as the "main character," regardless of who else is in the party.

This means we get to get rid of the goofy solo casted Flare and Comet nonsense on Palom and Porom, too.

Sunday, July 23, 2017

Hidden features

My randomizer places items into chests in a very simple way: for each chest, it rolls a random item.  The chest then asks that item, "Are you okay with being placed inside a chest like me?"  When the chest finds an item that says yes, that chest is filled and the randomizer moves on.

This created a bit of bias when placing "unique" items: the first chests to be filled were more likely to be the one to hold a unique item, if that unique item got placed at all.  So, I have solved this issue by randomizing the order in which the chests are randomized.  The Rat Tail will still be more likely to show up in the first chests that could contain it than in others, but the player has no way of knowing which chests were "first."

In another hidden feature, FuSoYa's spell list from levels 2-18 now demands that White magic be learned on even levels, whereas Black magic must be learned on odd levels.  This is to avoid an issue where the player could identify the approximate starting level of FuSoYa based on how hard it was for the randomizer to find a spell list that avoided collisions.  The spell table is much more sparse at higher levels, and it usually takes no more than a few hundred attempts to randomly achieve apartheid there.

HungryTenor has again graced the project with a continuity fix; the Twins should now look like their replacement characters when they turn to stone.  They won't be in a "hold the wall still!" pose, but it should still make more sense than the characters turning into Palom and Porom during that scene.

Saturday, July 22, 2017

Special commands: Still rearing their ugly heads

Another playtest, another set of glitches to fix.

Cover was not working correctly in today's test run.  DK Cecil's first appearance, replacing Yang, did not have an Item menu option, and DK Cecil 2 was the cover actor.  Turns out this one was completely my fault; I miskeyed Rosa (who was PCecil) and Yang in the Cover rewiring code.  This has been fixed.

More troubling is Auto-Hide.  Edward himself is auto-hiding correctly; no problems there.  However, whoever took Edward's place is losing the ability to take turns when he/she hits critical HP.  While this isn't the most game breaking issue, it's not at all intended.  I've notified PinkPuff, since any ROM made with FF4kster that used that program's function to change the Auto-Hide actor would also be affected.  We'll see if he finds something; otherwise, I'll have to hunt it down myself.

I'm still thinking this project is within a week of completion, though!  Stay tuned.

Thursday, July 20, 2017

Nearing completion, maybe?

Given how many major bugs I've had to fix over the past couple weeks, it feels good when a day goes by where my edits to the project involve balance more so than making things not-broken.  Today's updates included things like making FuSoYa learn his magic earlier, changing level ranges and "goodness" levels of items that turn out to be better or worse than I thought they would be before testing, and adding a "credits" entry to the information panel.

[EDIT] Perhaps I spoke too soon.  A thing I thought was a minor issue yesterday turns out to be a major pain.

In that video, I gave FuSoYa the grind fight experience, and wound up missing 3 Black spells.  I had assumed it was an error coming from the sheer number of spells I learned in that fight - perhaps the game could only store 64 learned spells between the active and shadow party members.  But no, it's worse.

PinkPuff helped me track down that the cause was a collision between the levels of learned White magic and learned Black magic.  Apparently, the game only allows a single type of spell to be learned at a given level; if you learn both Cure1 and Ice-1 at level 3, Ice-1 doesn't make it into your spell list.

This will be a major pain to fix because of the way I coded the spell list randomizer.  It goes through each element of the list, randomizes it, then moves on, without keeping any records of any sort.  I'll need a completely different procedure to identify and then resolve any collisions between two different spell lists.

Wednesday, July 19, 2017

Unnecessary Epicness

I had to move the Golbez + Shadow fight out of the formation number it had been in, because that fight had special properties that did things to Adult Rydia by "job", whereas some of the battle's special scripted actions behaved on Adult Rydia's "actor."  This wasn't a problem when Rydia was not in the party, not an adult, or was in her correct slot.  But otherwise, she became effectively dead and unhealable for the whole fight.

My first solution to the problem had an unintended side effect:
Apparently, the game picks the background for a fight based on fight number.  Unused fight 441 uses Zeromus's background, so that was no good.  Fight 421 worked fine.

In other news, Palom and Porom will now have Comet and Flare in their normal spell lists from the get-go, rather than using the completely borked Twin command.  I'd rather they learn the spells naturally, but the game gets very confused by the fact that those spells are past the usual White and Black magic spell positions.  Anyway, Flare costs 25 and Comet costs 40 MP.  They'll wreck in some early game boss fights, but will be outclassed by proper late game spells once those are obtained.

A fellow who goes by HungryTenor has given me solutions for adding text to the title screen, for making the summon orbs usable even when the game doesn't think Rydia's in the party, and for customizing which characters's images show up to bless the party during the Zeromus cutscene.  I'll be implementing these changes today, and I'll also need to add a Credits page somewhere in the program for my tester(s) and contributor(s), now that I have those.

Tuesday, July 18, 2017

Balance changes

After some playthroughs between myself and Couch_23, I've decided to make the following balance changes to the randomizer's logic:

The level 2 spell items will not appear until just before the Tower of Zot.  I was previously allowing them as early as Mysidia, figuring that was when the level 2 spells were available, anyway.  But it turns out they are generally much more useful than magic, and after looking it up, it appears they normally only started appearing as rare drops in the Tower of Babil.

The optional bosses in the Lunar Subterrane are now only going to yield weapons or armor.  There were several consumable items that were both good enough and allowed at high enough level that they were allowed to be the reward of those fights, which in a race setting would almost assuredly push all  those fights out of the range of worthwhile risk/reward ratios.

The Gold and Silver Apple price tags are going up.  If they show up in a shop, they enable you to dump money for stats for defeating Zeromus with less EXP grinding, and the ratio turned out to be about twice as good as I think was appropriate.

Monday, July 17, 2017

Fights against allies: Working better now!

I managed to hunt down the way the game specifies which character to use when fighting against a party member in a plot fight.  I have implemented this to make those fights look consistent with which character should logically be there, given the randomized seed.  The results are sometimes pretty funny.

The above clip is from Couch_23's testing yesterday.  He was using the item duplication glitch, which resulted in some... very different gameplay experiences from what I've been doing so far.

In other news, after giving it some thought, I think I will flag the Mt. Hobbs "kick fight" as one where the game continues even if you lose.  Thematically, it works because your party runs to his aid after the first fight. Game mechanically, it works because if you fail to set your Yang replacement up for success by opening up a back row slot, your penalty is a dead character at the start of the MomBomb fight.

Sunday, July 16, 2017

Heal Potions vs a rainbow of status curers

I'm starting to feel less confident in a decision I made early on while designing the Lunarian Shuffle.

One of the design points of this randomizer is that, although it is for the most part a randomization of the "easy type" of FFIV that the USA received as "Final Fantasy II", I am restoring the "hard type" consumable items - stuff like ZeusRage can attack enemies, and Bacchus Wine can buff your party members.  This gives more options for more randomness overall, and it incentivizes a player who is missing something very important (say, a black mage for the Kainazzo fight) to scour treasure chests and shops in optional towns to find a replacement for what they need.

However, I'm also attempting to avoid adding my own balance choices whenever possible.  For example, I think the 2000GP price tag on the Power staff is far too low, but the original game really does sell them at that price, so I'm leaving that untouched.  The same principle led me to leave the Heal potion untouched - the "easy type" version sold Heal potions at a super cheap 100GP, rather than the "hard type" list of 10 different status curing items, most of which only cure a single condition, with price tags ranging from 40 to 5000GP.

I'm beginning to think, though, that perhaps I should be basing my balance decisions on the "hard type" version of the game, since it.  If so, the "Heal" potions will need to have their price tags jacked the heck up, and there will also be a lot more garbage in the treasure chests.  (How often will you be happy finding an eyedrop?)  If you have an opinion on this, let me know!


Here's one of the many problems I created in yesterday's build.  Various NPCs were either missing (usually Kain), or extras were inexplicably present (... again, usually Kain).  I was also greatly disappointed that my plan to make a Rydia who is replacing Rosa become an adult the instant she pulled away from the kiss with Cecil didn't work out.  Instead, she'll age when she is pulled away from the death trap.

I think I've hunted down the causes of all the problems that happened yesterday and I've implemented fixes, but I have no guarantees that those worked until I test Rydia aging in each of her possible aging points.

In other words: I need testers!

Saturday, July 15, 2017

Paladin Cecil initial equipment change

My overall philosophy for this randomizer is that I want it to test the player's knowledge of the game, not their knowledge of this program's quirks.  One problem that's been flying in the face of that goal has been Paladin Cecil's initial equipment.

The original version of the game gives you the Legend Sword as Cecil's initial equipment.  This has problems; it's way the heck too strong for you to be allowed to have it at level 1, plus it's marked as a "plot item," meaning it can't be trashed, sold, or stored in the Fat Chocobo.  If Cecil leaves and rejoins, and his initial equipment features the Legend Sword each time, you could get multiple into your inventory, which would then be weird when you upgraded one to the Excalibur.

Previously, my solution was to award the Legend Sword at the time you're supposed to get it according to the plot, but replace Paladin Cecil's initial equipment with the Silver Dagger, which is much weaker but has the same zombie-busting power.  But with play tests, I was finding that giving the player a Silver Knife was warping the game much more than I intended - so long as it stayed on Cecil it wasn't so bad, but your early game success was often defined by whether you realized you could strip the dagger from Cecil and hand it off to Edge or Edward or Kain, who normally have some problems getting equipment for the early game.

I was thinking about replacing the dagger with a bow and arrows, which Paladin Cecil is allowed to use, but that has the problem that it activates the Long Range glitch even for casual players who would have no idea that was a thing.

Earlier today I realized an alternative solution: Paladin Cecil will now start with the Silver Staff rather than the Silver Dagger.  The staff has 12 attack, which is more than the Shadow Sword but less than the Darkness Sword.  It also busts zombies (though not spirits).  And although it can be transferred to other characters, giving +3 Will to a white mage is far less of a game changer than giving Kain +17 attack and zombie/spirit busting power.

Today's Hard Mode test will include this change.

Lessons from Friday's test run

Yesterday I completed a test run of the Lunarian Shuffle.  I had started that run 2 days before, and since then many bugs had been fixed, so I was tempted to skip completing it.  I'm glad I kept going, though, because I learned a few things!

First of all, I got to see what happens when you hit the jackpot:
More importantly, I noticed that Cid, who had taken over my Paladin Cecil, was actually allowed to use the Crystal against Zeromus!  I did not expect this at all, since every other combat item in the game flags its usability by job rather than by actor.  I should have figured that Squaresoft would "special case" something like this, considering how much of this game was made that way.

In any case, this means that I can remove the "Zeromus automatically transforms" hack that I had been applying to the fight.  I just hope it's clear to the player that, even if they have a Paladin Cecil in their party, the "main character" is the one that should be using the Crystal.

Also, Porom and Yang's replacements were not being displayed properly in the epilogue; they remained as their original characters, resulting in a wedding with 2 sets of clones.

Final Fantasy IV 5 Job Fiesta

Before I started working on the Lunarian Shuffle, I completed a much simpler project called the Final Fantasy IV 5 Job Fiesta.  It's a semi-serious spoof on the Final Fantasy V 4 Job Fiesta, which is a cool charity-related challenge run for Final Fantasy V which does not require a ROM hack, since that game actually supports the concept.

The 5 Job Fiesta will add 5 characters to your party over the course of the early game, and those characters will stick with you for the entirety of the game.  It uses much more simplistic methods than The Lunarian Shuffle, which resulted in fewer bugs in some ways (PCecil could Cover without extra hacks) but more in others (many scripted fights that refer to specific Actor numbers had to be edited.)

It also features a Hard Mode as well as "EDWARD RISK!" as a play on the 4 Job Fiesta's "BERSERKER RISK!" mode.

For anyone looking for a simple but fun FFIV challenge, try it out here:

Friday, July 14, 2017

Rat and Pink Tails

In FFIV, if you obtain the Pink Tail before the Rat Tail, the Adamant Grotto guy will ignore your Pink Tails until after you've hunted down and turned in the Rat Tail.  This was extremely unlikely in the original version of the game, but in a randomizer it starts seeming fairly likely.

I want to include the possibility of obtaining the Rat Tail and Pink Tail in chests and completing those side quests as in the normal game.  However, considering that the Rat Tail might literally not even exist in a given seed, I have to fix this bug that Square left in.

I think the answer is to make the person standing to the right ask for the Pink Tail, while the one in the center asks for the Rat Tail, and each mentions which tail they want and that their partner wants.

Hard Mode

Here are my current plans for this randomizer's Hard Mode:
  • Fewer options in shops.
    • The Lunarian Shuffle normally gives each shop as many different items as it originally had.
    • Hard Mode will make shops instead stock a random number of items, from 1 to the number of items it would normally have.
  • More GP chests.
    • Normally, 15% of all (non-trapped) chests have GP in them instead of an item.
    • Hard Mode will increase that to 40%.
  • Extra "Bad" characters.
    • Most characters cause problems when more than one copy of that character is in the party.
    • It turns out that Dark Knight Cecil, Edward, and Cid, all usually the worst characters, are not problems in that regard!
      • Well, Edward's Auto-Hide will only work for his first appearance, but that's not so big a problem.
    • Hard Mode will add one extra Cid, Dark Knight Cecil, and Edward to the pool of characters you may obtain.
  • No early spell learning.
    • The Lunarian Shuffle usually randomizes the level a given spell is learned between -5 and +5 levels from the base version.
    • Hard Mode will change this to +0 to +5 levels, removing the chance that a spell will be learned earlier than usual, and making spells on average appear 2.5 levels later.

Current bugs

Here's a list and explanation of bugs I know are currently afflicting The Lunarian Shuffle.  Most of them pertain to characters' special commands, which the game implemented in a very "hack-y" fashion.
  • Paladin Cecil's Cover command is not working.  At all.
    • The issue here is that Cover explicitly refers to Paladin Cecil's "actor" in at least one place. An actor is an instance of a character joining the party.
    • If a character leaves and rejoins, it has two different actors, but the game's code only supports one actor for the Cover command.
    • However, even the one actor I'm trying to give the Cover command functionality to (the final appearance of Paladin Cecil) isn't working, either.
    • Someone posted a fix that might make Cover search by "job" instead of by actor, but it didn't work for PinkPuff and I've not tried it myself yet.
  • Twin is a glitchy mess.
    • Twin attempts to make Palom and Porom's "actors" each start to do a Twin attack.  These actors are the ones that join when you meet the Elder in Mysidia.
    • For example, if Palom has taken the place of Tellah, and Rydia and Paladin Cecil took the place of Palom and Porom, then using Palom's Twin command will make Rydia and Paladin Cecil attempt to twincast something.
      • So, if either of your "twins" doesn't have MP, the command is useless while they are in the party.
    • However, if those two actors are not currently in your party, Twin adds the Twin command to the middle character.  Twice.
      • So, if you have Palom or Porom in your party, and the "twins" are not in your party, then whoever is in your middle party slot can doublecast Flare and/or Comet whenever the Twin command is activated, provided they have the MP for it.
    • Possible solutions:
      • Try to make the game search by "job" like the supposed fix for Cecil.  But also make the ability fail if it doesn't find one of the two actors.  This will require tracing the assembly commands, editing what's there, and also fitting in some extra code on top of that.
      • Remove the Twin command altogether in favor of adding Flare and Comet to the twins' spell lists, replacing two other spells. 
  • Auto-Hide only works for one actor.
    • Edward is supposed to flee in terror when his HP falls low in a non-boss fight.
    • I have chosen to make this work for the "first" appearance of Edward.  After that, Edward will have gained enough courage not to auto-hide anymore.
  • Rydia's summon orbs can only be used when the game thinks Rydia is in the party - which for this ROM hack is often very different from the times she actually is.
    • I'll need to either look for actual Rydia or to make the item always usable.
    • Also, the spell learning message shows the person in Rydia's actor slot instead of Rydia's name... this is lower priority, but I'd like to fix that too.