Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
Doom Goon
Sep 18, 2008


https://twitter.com/FF5ForFutures/status/1641936752683397120

I got Monster, Human, Esper, Human! I was hoping for at least one Monster so I could mess around with transubstantiation so that's good! I know humans are like equipment-based and stat item boosted (:retrogames: :retrogames:) and Espers have a kinda annoying thing where you may gain or lose monster skills randomly after battles (as well as increasing stats).

Oh, here's a Meat Calculator for those that also got a Monster. The skills don't seem to be working right and there's better guides there if you're shooting for something but it probably does the job. Good luck!

Adbot
ADBOT LOVES YOU

Man with Hat
Dec 26, 2007

Open up your Dethday present
It's a box of fucking nothing

Exciting Lemon
I have never played this, is it the Gameboy game called The Final Fantasy Legends I should be looking for to play this in a language I understand?

Got Human, Esper, Esper, Monster. Not a huge fan of a doubled class but I'll give it a go

Man with Hat fucked around with this message at 16:54 on Apr 1, 2023

meteor9
Nov 23, 2007

"That's why I put up with it."
FFL1 espers (mutants in the translation for some reason) are kinda awesome? Yeah the random skill changes every fight can suck, but they also gain stats like madmen early on. Usually having one will carry the first half of the game when they get an aoe ability and good magic power.

I got 3 humans 1 esper and good god that hurts the bank account.

free Trapt CD
Aug 22, 2013

*~:coffeepal:~*
I've got plenty of java
and Chesterfield Kings

*~:h:~*
Enjoyed the DQ3 run a lot, especially how much the Dark World ended up feeling like a kind of... victory lap, I guess? And the ending honestly took me by surprise.

It feels like it would be a total pain if you didn't roll either Mage or Priest, but hey, pretty enjoyable (and obviously a way bigger game than it had any right to be for the time). If the HD-2D remake has just a few more modern conveniences when it comes out I'm probably sold.

In for FF Legend, although I rolled no monsters at all. Probably better for speed but sad I'll be missing out on Meat.

Man with Hat posted:

I have never played this, is it the Gameboy game called The Final Fantasy Legends I should be looking for to play this in a language I understand?

I think so! There's also a 'Collection of SaGa Final Fantasy Legend' making the whole series playable on modern platforms, but I'm not sure it's ever gone below 50% discount and it might be a bit too much of a commitment.

ArashiKurobara
Mar 22, 2013

Man with Hat posted:

Got Human, Esper, Esper, Monster. Not a huge fan of a doubled class but I'll give it a go

FWIW, there are only three classes, so you're always going to have a double.

Man with Hat
Dec 26, 2007

Open up your Dethday present
It's a box of fucking nothing

Exciting Lemon

ArashiKurobara posted:

FWIW, there are only three classes, so you're always going to have a double.

I realized once I started playing. It's a very interesting game, very different. I've been reading the manual a bit to figure it out https://www.thegameisafootarcade.com/wp-content/uploads/2017/03/The-Final-Fantasy-Legend-Game-Manual.pdf

Modoh
Jul 23, 2007
I highly recommend the Wonderswan Color version of SaGa for those doing the Fiesta thing. There's an English translation patch for it on romhacking.net

I got 2 Humans and 2 Monsters. The monsters were useless early on but they're basically carrying me now at the start of W3. The WSC version giving you a preview of what a meat drop will turn them into helps a lot.

Nihilarian
Oct 2, 2013


Modoh posted:

I highly recommend the Wonderswan Color version of SaGa for those doing the Fiesta thing. There's an English translation patch for it on romhacking.net

I got 2 Humans and 2 Monsters. The monsters were useless early on but they're basically carrying me now at the start of W3. The WSC version giving you a preview of what a meat drop will turn them into helps a lot.
human had the rougher start for me. Stat boosters were expensive and i needed to spend money on equipment too. Of course the statbooster prices stay the same so i quickly reached the point where i could just purchase a suite of statboosters every time i went into town.

Ultimately i got carried out of world 1 by an esper with Power (sets str to 99) though

Nihilarian
Oct 2, 2013


Also the wonderswan version lets you preview what a meat will transform your monster into. Not HP or abilities they have but still useful

Mandoric
Mar 15, 2003
The Fiesta has me back to the full algorithms doc I've been poking at forever, but it's a bear of a project; not even the Japanese sources tend to line up completely on some fairly significant questions, and even major things like "what do stats actually do" tend to end up as "x happens almost never at 0 and often but not reliably at 255". So I'm torn between actually playing and learning how to read GB ASM.

As a tl;dr:

Things that are explained/heavily implied but not given numbers:
There are essentially six kinds of "normal" attack in the game; STR physical, AGI physical, Mana physical, flat physical, magic, and martial arts. Stat physicals do stat, plus floor(stat/4) * multiplier * 1..1.5, minus DEF. Flat physicals do flat damage plus a smaller random, minus DEF. Magic does Mana, plus floor(stat/4) * multiplier * random. Nothing reduces magic damage except when AoE magic hits a weakness. Martial arts do damage with an AGI component that gradually amps up over the life of the weapon before popping off on the very last use.
Multipliers scale linearly, prices scale multiplicatively, but the price of a weapon is a very good indicator of its multiplier (or at least that it has the same multiplier as ones with similar prices, better than anything much cheaper and worse than anything much more expensive.) There are a lot more STR than AGI weapons, but for much of the game it's a story of "there's only one x7~x9 AGI weapon, so you get the x9 the second you arrive, here's an x7 STR weapon and you'll find an x8 in a chest before being able to buy the x9 STR in the next town".
AGI also governs evade* and turn order**, so there's a very good argument for it being a flatly better stat, but its available weapons fall behind at the very beginning and very end of the game, and it locks you out of having budget but not poverty options.

Common-knowledge tricks:
FeMC > MC. Each has the same total stats, but he gets STR focus and she gets AGI focus, and then either gets the weapon one above baseline for their primary stat. For STR this is the 132 GP x3 you can walk 10 tiles and buy, but the next AGI weapon is 2060 GP and x6 found somewhere in the next world. Starting stat distribution and map sprite is the only way they differ, so you can either keep it and do around double damage until it breaks, or sell it and give her an added 6-9 stat points (when their starting total is only 12) plus the weapon he would have started with. Can't buy stats for a mutant/esper, but it does turn into two spellbooks then.
There's a particular meat sequence to launch monsters into endgame levels in as few as 15 battles, without facing anything nastier than you'd see in the first overworld.
Monster stats cap at whatever was supposed to be a fair random encounter in the endgame. Mutant stats grow completely randomly to cap at 99, and in fact mutants level down to the stat that would give them 99 after stat-boosting gear if they equip any that would bring them over. Human stats cap when you overflow back down to 0, go hog wild when you can afford it but remember to look at the numbers before you save again.
Yes, this means monsters kind of suck if you're optimizing. But they're cool, conversely it's impossible to end up too far behind the curve as long as you can find meat, and Pokemon probably would have never existed without them so it's a neat historical footnote.
The instakill melee weapon is bugged and works the exact opposite of how it should. Not as in "it's an instarevive weapon", the other meaning this could have.
Human HP gain is split into three items, but all of them are guaranteed to add at least 1 HP even if you've outleveled them. They give 20 HP max. The third one is 50x more expensive than the first one. The third one is a thumb pain avoidance tax.


:goonsay: hours:
Apart from manipulating the instakill weapon or overflowing, there's another trap in raising stats too high: there is a bug in which only the bottom byte of floor(stat/4) * multiplier is then multiplied by 1..1.5. This has a variety of unfortunate interactions; a capped human has more reliable damage but lower highs with the x9 filler weapons, and transitions to reliably behind (although with the lowest point not quite as low) for the x13 best sword. Mutants with a cap of 99 get hit extremely hard at x11 which includes the best AGI weapon--though you can delevel them back down easily--and fairly hard x12 which includes the best Mana weapon. You can't effectively delevel Mana enough because you'd need to get at least 12 from gear to get back under the breakpoint and you can only get 10. And finally, the best spellbook in the game turns into a pumpkin for the very first battle you have Mana-boosting armor equipped if you were capped before you found it, since the mutant level up/down logic hasn't had a chance to even you out yet and for that one battle you end up with 109 Mana x10 = 1090 %256 = 66 subject to the random multiplier rather than 99 x10 = 990 %256 = 222 and thus 0-33 rather than 0-111 bonus damage.
The infinite-use endgame weapons are themed STR and AGI, but are instead flat damage and flat+STR. The flat one targets groups and is worth it; the flat+STR is not tuned with the realization of how hard you can pump and falls behind even compared to normal gear just powered with 99s.
Martial arts have, to be more specific, two separate formulas.
code:
If uses remaining > 1,
RAND = 0..POWER
Damage = POWER + (100-Uses) + AGI + RAND – target DEF

If uses remaining = 1,
RAND = 0..POWER
Damage = (POWER + 99 + AGI + RAND) *3 – target DEF
Base is roughly equal to the multiplier of normal weapons that show up at the same time, so they fall behind very hard in general use as soon as AGI/4 * multiplier goes over 100 minus uses remaining, and even for their final shot when AGI/4 * multiplier goes over 300. AGI/4 * multiplier can go up to 693.
Healing is a magic attack roll with an x4 multiplier but adds the target's Mana in the end. This means the best possible heal is for 342, and the best possible heal on a human is 243 or 253 if they're wearing the endgame armor.
Certain drain skills (the ones that can hit undead, mostly Slime skills) and all multihit monster skills are supposed to be resisted by enemy Mana and AGI respectively, but are instead amped by them.


* No one can explain exactly how, but you hardly ever get physically hit with it capped. Less of a gamebreaker than it seems, even the most bruisery late-game monsters tend to get attacks which don't count as physical. There's at least one 1-character no gaining HP challenge run completion, and even with heavy savescumming and chainsaw exploitation they had to revive a buddy to eat Warmech's death beam, because Kawazu agrees that sufficiently advanced technology is indistinguishable from magic.
** No one can explain exactly how, but you almost always go first with it capped.

Mandoric fucked around with this message at 22:13 on Apr 2, 2023

Nihilarian
Oct 2, 2013


Monsters are only useless if you're leveling arbitrarily. I beat the game with around 610 hp on my human because gently caress buying hp one at a time with a maximum of 10 item slots, 610 hp was enough. My monsters had 700+ hp and great abilities. I cannot imagine picking 3 or 4 humans and leveling their hp to maximum, 1 point at a time.

Mandoric
Mar 15, 2003

Nihilarian posted:

Monsters are only useless if you're leveling arbitrarily. I beat the game with around 610 hp on my human because gently caress buying hp one at a time with a maximum of 10 item slots, 610 hp was enough. My monsters had 700+ hp and great abilities. I cannot imagine picking 3 or 4 humans and leveling their hp to maximum, 1 point at a time.

HP's the least significant of what humans get, though (and the least unique, mutants get to keep going too.) Even the stats aren't that huge of a deal. What really, really... Not that it makes monsters useless, because by definition you're taking them into formations of around the same size with the same stats but with AI brain is their multipliers. 3HEADS is legitimately a nice attack but it's on Chimeras and only Chimeras; if you have say a Ganesha--99 STR, the top tier of the family the game's been teaching you are the the physical powerhouses of the monster world since you picked a Red Bull as party leader, so buff it never actually appears in an enemy formation and is exclusively for if you get lucky with round-2 Fiend meat--your direct damage selection looks like:
Nose: 6x STR, 15 uses
Tusk: 6x STR, 10 uses
Bash: 9x STR, 3 uses
Gas: 4x Mana (and your Mana is your dump stat), 10 uses
P-Blast: 4x Mana, 5 uses

The total offensive power you can bring to bear, both in endurance and in peak damage, is lower than a human yanked out of the guild and handed nothing but one battle's worth of steroids. You get significantly better survivability with your innate defense and ○Weapon/○Para, but a comparable armor setup with the same resists has already come your way from chests and you can come close on subsequent characters in a few battles. You get Teleport but that's just a Door that doesn't eat inventory space.


Not useless. Definitely not useless. But very much like a level cap in a modern game, which can be its own fun.

E: And that Chimera, sole playable owner of the one monster attack that isn't tuned safely in "won't instagib players" range, is stuck with 262 HP, 37 STR, and a 6x, 4x (this one admittedly scaling off their high stat of 50 Mana), and 2x for backups. 10 rounds into a dungeon and they're attacking like a a biker bar mutant using their free skills, 30 rounds in and they're attacking like a biker bar human you decided to give a HAMMER for laughs. No utility other than, uh, Quake resist there either, and Quake itself is... a x4 scaler being driven by monster stats that only even shows up on two enemy monsters, one of which you only fight once.

Mandoric fucked around with this message at 22:48 on Apr 2, 2023

Nihilarian
Oct 2, 2013


I dont know much about multipliers all i know is the 2nd highest tier of skeleton had 3 elemental spells that dealt twice as much damage as my human with excalibur and had like 10 uses each per rest

Mandoric
Mar 15, 2003
Yep! Excalibur is one of the fixed-damage weapons that are tuned more in line with monsters, and I really need to start testing the conflicting claims about it but say 150 as a low end with it and 250-300 as a high end with BoneKing makes sense on one reading.

The point that I'm making is, Excalibur is basically a MISSILE--remember those? Of course not, they suck rear end--that justifies itself through infinite uses and being the best multitarget for the class that doesn't get to multitarget, while a mutant with the exact same stats and a 500 GP spellbook from floor 1 would tend toward the 300-350 range, and Flare would roll in at 450-500.

A Sun Sword with the BoneKing's stats, and there isn't so much muscle left on those bones, would be doing 400-450 single-target. A Sun Sword with a more physical monster's stats would be easily outdoing Flare. Monsters aren't understatted per se, being able to coax 1050-1150 out of a human with the same weapon is silliness and I'm mostly mentioning it because this is the thread for people who like opaque silliness manufactured out of programming oversights, but monster attacks specifically are in a very weird place of not being allowed to do threatening-to-a-player oneshot damage because AI oneshots suck, but getting free replenishment so they're still useful, but having very limited casts because they're replenishable in the field, but replenishment in the field involves having the right meat drop at the right time.

2 raised multipliers by 2-3 basically across the board, which does relatively help in comparison by raising the numerator in the comparison, but more importantly boosted "a good monster physical" from 5-10 uses to usually 30, and most importantly transformed 80s and 90s in endgame stats from "a mutant has these automatically, a human can go wildly beyond in a few tedious minutes" to "without luck or completely ignoring healing in the game we added heal check bosses to, only monsters will get this high". I think it's illustrative.

Mandoric fucked around with this message at 23:46 on Apr 2, 2023

Nihilarian
Oct 2, 2013


For the record: the bonekings spells do like 450, and the lich spells do like 480. They may be weaker in the gb version? I was playing wonderswan

Modoh
Jul 23, 2007

Mandoric posted:

The Fiesta has me back to the full algorithms doc I've been poking at forever, but it's a bear of a project; not even the Japanese sources tend to line up completely on some fairly significant questions, and even major things like "what do stats actually do" tend to end up as "x happens almost never at 0 and often but not reliably at 255". So I'm torn between actually playing and learning how to read GB ASM.

<words and numbers>

Thanks for posting this. Good info on how this game works (and doesn't work) is hard to find.

I wonder how much of the stat overflowing stuff applies to the WSC version. Probably most of it, as the saw bug is still there. I think humans are capped at 99 for stats now though (or at least it says gained 0 when using the potions).

Doom Goon
Sep 18, 2008


Fascinating stuff, thanks for posting! I peeked at mechanic threads online but found so many differing advice it was sometimes fruitless. You should submit a guide for it! Other people still use GameFAQs, right? :corsair:

I saw a thread about using a used up blank space that had a Martial Art in it before the Martial Art to always trigger the increased damage with that martial art (or, barring a blank space, just leave the top one at 1). Something to do with a sorting bug mixed with blank spaces still actually having the item/weapon info (just with a 0 so it blanks out). I'm guessing Martial Arts still aren't worth it but I still found it funny.

ESP w/ Gas carried my team as the tank until the Water area and then money wasn't rare enough everyone got a boost through armor and stat boosts (trying not to abuse it, at least until later). Didn't know AGI gave dodging so I should get that up! Monster seemed really weak until then but now my one seems... okay now that I got the 13th level (I'm digging Fireman even though there's stronger, it's pretty tanky). I'm hoping there's another way besides inns and transforming to regain Abilities later (I'm choosing not to run). The whole game has kind of an odd difficulty curve, definitely found the start more cumbersome (well, as long as you always save. Argh stone)!

Oh, I stopped using the old monster calculator and started using this one which is apparently trained for increase or lateral movement. It's not always right due to the monster level system (use the right row for specifics) but it helped me a lot w/o just actually following a guide and actually playing the game: http://quill18.com/final_fantasy_legend/Monster.html

Now I'm just in the Sky area but so far I'm actually digging this game quite a bit! It's janky, but the game just oozes strangeness. I like Blue Mages so having Monster abilities is great. Are the other ones this good?

Mandoric
Mar 15, 2003
I'd like to really nail things down rather than just operating on the level of "do sources newer than playground gossip mostly agree; if not, which one matches my experience/testing", primarily, which is probably going to mean disassembly. It's fine for :justpost:, but I don't want to write mostly-right guesswork FAQ #14 even if I have the advantage of being the first to adapt #5-#13's newer research into English. Part of why is that, for example, every description of that MA glitch differs or in many cases isn't even documented (the most convincing version I've seen, even in other aspects, also adds that it's a ROM version difference.) If it does work in your version, it's probably a decent budget option for mutants the whole way through unless you resort to extremely dark and clumsy underflow-based-on-MC-name tech? Except for the problem of using up half a mutant's inventory space on PUNCH.

You're stuck with inn or meat to regain, I believe; there's one uses-restore item you'll eventually get but it also applies to weapons and is priced accordingly, to the point where I've never actually tried it on a monster.

2 GB is very much the FF3 to the FF1 here, more content implemented more cohesively but maybe a little less conceptually wild at points and has some "guess what we're thinking" blocker bosses. 3 GB is a completely different game that's mostly the Mystic Quest team doing their own thing. 2 DS operates on a basis similar to 2 GB but with a lot of very later-SaGa-ish elements added in, 3 DS keeps the original's plot but is a complete systems redo to act mechanically similar to 2 DS. They're all worth tries in their own way, but 2 GB is definitely the closest, and the one where the differences are closest to "1 but playtested".

Doom Goon
Sep 18, 2008


I'll have to check them out! Though I also kinda want to wait and see if any of them pop up on a future Feista. Choices, choices!

Oof, that Power Plant area was too long. All the ESP in the world ain't hacking it to multiple teams of multiple ogres and dragons. Probably should've got some non-strength equipment, any of the strength stuff (elemental and dragon swords) was just not cost effective for me. I guess Rod heals? Maybe I should've tried out Balkans, forgot that existed, or see how much the Martial Art did. As it was, just got through just by the skin of my teeth! It was nice seeing Warmech from FF though.

Mandoric
Mar 15, 2003
Notes on the optimized monster process:

RNG manipulation is probably key to meaningful success with it; I've been here a couple hours, have some solidly midgame mutants (low 300s HP, 60s highest stat,) and only the leap from Behemoth to Giant put the selected monster notably ahead. Still wouldn't be the most mechanically promising surface for a TAS (since a glorified drinky bird on the "BUY AND USE STEROIDS" button is of course also a tool) but would be a lot more interesting.

In particular, more than the suffering of getting a meat drop is the suffering of just getting a redbull to show itself. Albatrosses (treasure room in bandit cave), zombies (rest of bandit cave), skeletons (bottom floor of Sword Castle), and wererats (symbol encounter) all have their own haunts where they're extremely common encounters, lizards and goblins are just the most common overworld encounters, but redbulls are very rare even in the two places they spawn and the bulk of my time played was stuck as a red bone waiting. If you fight every battle, mutants will tend to stay ahead until behemoth or giant; otoh fighting every battle only produced around 10k gold for me, so this is the rare case of monster-mutant synergy as currently everyone but my control-group monster is to at least floor 16 standards while a single human would have spent that just getting HP to around 400.

If you're going to grow attached to your characters, or especially if you have a monster as your leader and are forced to grow attached to them unless you overflow your GP total from 999999 back to 0, the place in memory that would have stored the millions digit instead stores which character is the MC and can't be removed you probably want to become familiar with the steps to become an Oni, the first player-available non-leader monster that isn't a sure kill for King Sword if he targets them. (Wererats have a fighting chance, at should be 32-48 damage taken, but can't be evolved into with 1F meat; everyone else is either under his lowest possible roll or under his lowest possible crit and is vulnerable.) E: Might be able to have other options specifically from P-Frog, if his meat drops and is useful at that point, but that's a once-chance-only deal.

Playing JP 1.0 would make it significantly easier; meat info is preloaded whether or not it drops by a variety of actions in the game (recruiting a character sets it to their meat, viewing the recruitment menu sets it to the meat of the first character on the list, transforming sets it to the target monster's meat, fleeing sets it to the leftmost enemy column; in addition humans and mutants count as Clippers for both meat and transformation purposes, and Clippers are used in a shorter transformation path than the standard one disfavored because Clippers are a rare encounter on a map where floor 1's most punishing encounter is common) and additionally selecting slot 8 from a character's ability menu will cause them to eat that meat out of combat. Some skip speedrun strats use this, as well as a related bug where you canceling use of ability 2 before doing this and clobber large parts of RAM, to access the True Tower directly (as True Tower is internally floor 33 but doesn't update the flag, the flag being 33 or higher lets you teleport directly there.)

Mandoric fucked around with this message at 19:28 on Apr 8, 2023

Mandoric
Mar 15, 2003
Completed my first run playthrough, and while I didn't do any hard analysis, a few notes.

BONEKING performed as I expected, lategame dealing 200-250 damage. Targeting weaknesses did not appear to seriously sway this, but there is a known bug that some AoE magic crits were not updated to the final version of the damage formula, and instead (like Pokemon Gen1) use Mana as both magical attack and magical defense. At endgame, this would pretty much completely eat the crit damage by making it a 100-150 hit that is then doubled; fixing that for WSC would instead give Nihilarian's observed 400-500.

The comparison I offered, Xclbr, did 50-150 on the final boss dialing in at a 'normal' hit of 75-85, roughly 150-175 on many endgame mobs, but usually around 300-400 on other endgame mobs (low-ish sample size.) Damage did not change between the low-STR wielder (60s) and the high-STR wielder (99). Specifically, the big gap was whether the target had ○Weapon.
There are several theories of Xclbr's actual stats and function, but I wrongly believed at the point of writing that this data implied:

Power ~240? (some sources claim 200 and ignores defense, but this is disproven by the lower damage on Creator)
Damage = POWER * 1..2 - DEF, then subsequently affected by ○Weapon

This would explain the soft cap of 400 (high roll - relatively low def), the behavior on mobs with def ~= 99 and ○ Weapon, and the high roll (480 - 200 / 2) on Creator, but doesn't explain a low roll of 50 rather than (240 - 200 / 2) unless I simply never hit the bottom of the RNG range on him. Thoughts?

Incidentally, a test run of Masamune output on Creator (STR = 99) produced 291 346 345 339 268 132 303 344 320. The 132 is very interesting and kind of inexplicable; the rest are quite in line with damage to normal enemies without special defenses, and thus fit Gesato's theory of it being STR + (POWER * 1..2), Power around 150, and completely defense-piercing. (Or maybe not COMPLETELY defense-piercing, 132 would be explained if one of his abilities caused a low roll to be treated as shield-blocked.) Not going to fish for a random encounter deigning to use a shield.

Flare of 350-450 is behaving exactly as expected and, with Xclbr's non-piercing status and lack of STR scaling, is the premiere waveclear ability of the lategame.

On RNG and why small or even large datasets can't truly be trusted:
Computers are deterministic and do exactly what you tell them reliably.
Meaning, computers can't produce an actually random number by themselves. They can only do basic math on two numbers and try to transform or pick from the result in a way that produces an appealingly swingy result; this often involves long sequences of heavy math on long numbers before returning middle digits or the remainder after a division by another large number, neither of which 1980s console hardware could really handle.
A common source of "better" randomization is to additionally add the current time--the Game Boy has no clock, so this is out--or current/recent button presses, which probably means there are some games out there where holding down+B actually does make the catch succeed at times. But this isn't one of them.
(Truly "good" randomization tends to come from atmospheric radio static, hypothetically deterministic but dependent on tens of millions of independent devices which it is unfeasible to model, or better yet by measuring the pace of decay of a radioisotope, something which modern physics considers truly unpredictable.)

Instead, for early Square games, the devs simply rolled the dice 256 times on a better-equipped machine, and then pop the numbers in sequence. For FF1 it mainly appears in some "random" effects happening more often than would otherwise make sense, because things like crits or Bane roll a random number, compare it to a base target minus enemy resists, and activate if equal or less, and 0 appears in the table three times; however it's not hugely manipulable other than finding certain encounters because the combat engine rolls a random number and throws it away every two frames, though I guess you can manually framecount without being a freak of nature by figuring out how many frames moving the cursor/confirming any given ability/playing the animation for any given ability locks out inputs for.

However, in SaGa 1, there are just two random number queues, one for escape chance and one for everything else, and every single playthrough with the same inputs will go exactly the same way regardless of timing, only diverging when one saves and resets (resetting the position in the RNG list to the beginning.) The appearance of randomness is only given by different choices pulling different amounts of random numbers, for example by having a character use a shield to not pull hit and damage rolls, casting an AoE spell to produce hit and damage rolls on several enemies, using a healing item to advance the RNG by one rather than two (or rather than 0 out of battle). Not sure if battles are actually rolled for or just pulled from a table indexed by steps, they weren't in 2 and you got punished for savescumming by a guaranteed encounter on steps 1, 5, and 6 after a hard reset (but also rewarded by a guaranteed Haniwa somewhere in the 60s on the proper floor).
Meaning that if you say put a custom-built solo character against a custom-built single enemy encounter, both too beefy to hurt the other, you are sampling particular patterns of the RNG table (not sure how many rolls are made for turn order, but assuming one, your attacks will pop entry 2 for hit and 3 for damage or 4 for hit and 5 for damage depending on order, 7-8 or 9-10, repeat) that may introduce additional bias. Knowing exactly which rolls you've hit lets you eventually round out the list if the number of rolls in a round is odd, but that requires stepping through the logic to be very sure you've accounted for every roll, and if you're stepping through the logic you can just look at what actual math is being done.

Mandoric fucked around with this message at 21:13 on Apr 10, 2023

Mandoric
Mar 15, 2003
Excuse my treating the thread as a scratchpad, but.

I found the weapon combat data; at least, i found a range of 8-byte records beginning at 0x1B804 in the ROM leading with multipliers/powers that are right or theorized right in the order of weapons Hammer through Grenade. I was wrong, Xclbr is 200 base damage. (Glass is 255, Masamune 150.)

A suitable number of entries after is a range of 00 (x) where x fits the theorized 30-40-50-60-60-80-100 shield curve, as well. The power "column" for shields appears to store barrier bytes; I haven't confirmed the exact order by comparing with monster immunity flags but taken as flags they are respectively nothing, nothing, nothing, a, b, a b c d, and e f g h, while shields are commonly believed to cover nothing, nothing, nothing, fire, ice, fire ice lit pois, and stone para weapon quake.

This probably isn't misaligned so presumably primary value is byte 5 and secondary value is byte 6. Running back to 0x1B704 where the 32 items before STR weapons in the overall list "should" begin, I find values matching 0x1B708~B, 0x1B710~3, etc in 0x1B700~4, and zero padding in the previous 30 bytes.

Running it back 32 entries reveals, among other things, 8/20/50 byte 5 ff/ff/ff byte 6 entries where the King gear would be, lining up with byte 5 multiplier/power/armor/evade and byte 6 element. I should experiment with King Sword damage on albatrosses and skeletons, the only floor 1 encounters with elemental resists
1b788. The three entries before that have byte 5 of 60, 40, and 20, and are HP600/HP400/HP200.

Conversely, looking downward the structure should remain identical through 0x1BB00--where items run out--and it does. In fact, it continues through 0x1BF00, where monster skills should also be exhausted, and the 0xF8th entry (〇Par/WP down there alone) shares a first byte with the 0xDDth and 0xDEth (〇Ice/WP and 〇All).

I'm going to pull the entire chunk and try to deduce what's stored where over the next few days, but this should crack open at least every input to the formulae.

E: Excalibur data bytes are 0xC8 0x64, while Glass and Masamune have 0xFF 0xFF and 0x96 0x96 respectively. This isn't plausible for Excalibur base and then random roll with no other adjustment, because it would top out at 300. But it's hard to tell exactly what it does because all three call their own unique damage formula (at least, there's a byte that's the same for all the strength attacks, the same for all the agi attacks, different for drains that work on undead and drains that don't but the same within these distinctions, etc, and each have a unique entry.) And it probably influences damage somehow because most other fixed damage weapons have one number (round in decimal) plus smaller number (also round in decimal) here. But it can't just be added because most fixed damage weapons could just use a single byte then.

SECONDARY + (PRIMARY * 1..1.5) + best offensive stat - DEF though? 100+200~300+99, so max 499, - 200 / 2 is my 150 peak on Creator. Min 399 then - 200 / 2 is my 50. I think we may have a winner, or at least a good candidate.
E2: and of course 399-499 - ~80-99 on normal mobs and that / 2 on 〇Weapon, also gives empirical 300-400 150-200.

Meanwhile bows etc do PRIMARY + 0..SECONDARY - DEF. Masamune numbers are PRIMARY + 0..SECONDARY-ish. Hmm.

Mandoric fucked around with this message at 02:21 on Apr 11, 2023

Mandoric
Mar 15, 2003
I think I've got a solid handle on the data.

Early takeaway is that the record format is:

- Byte 1: Usage flags: IS_VULN IS_RESIST IS_SHOE IS_GLOVE IS_SHIRT IS_HAT USABLE_MENU USABLE_COMBAT. King gear has the second-lowest bit set when no other weapons or armor do, the Powered suit has all clothing bits set, the top two bits are exclusively for ○/ื skills.

- Byte 2: Targeting flags, roughly: TARGET_ENEMY (but somehow both MIRRORs and ESP have this), DONT_INPUT_TARGET, SINGLE_TARGET, this is wrong but it got quoted :v: GROUP_TARGET (though non-tax-stamp guns and bows also live here; maybe a late dev change to make them non-group-targeting got done in their bespoke attack subroutines?)IS_THIS_LITERALLY_JUST_BURNING ie, is it a counter that does damage but based on one's own stats rather than raw incoming damage, DOES_A_SPECIAL_DEFENSE (exclusive to the MIRROR that doesn't raise evasion and the Rune Sword), IS_STATUS_SKIN (appears on every skin but BURNING), IS_DAMAGE_REFLECT, IS_SELF_EVADE_BOOST

- Byte 3: Formula.
code:
00 = hide in battle		01 = mutant empty slot
02 = dummied skill 0xFD 	03 = nonele shields, SHELL, SHELL, evasion MIRROR
04 = ele shields		05 = revenge, counter, skins
06 = pure STR scalers		07 = elemental STR scalers
08 = race-vuln STR scalers	09 = undead-immune drains: vampic, touch, kiss
0A = target-mana-scaling heals	0b = agi scalers (inc. beak and tail)
0c = mana scalers		0d = glass
0e = xcal			0f = masmune
10 = saw, both item and ability	11 = rock, guns, rocket
12 = bows			13 = whips
14 = explosives except...	15 = beam
16 = missile, n-bomb/fullAoE	17 = hyper
18 = item heals, honey		19 = status heals, care
1a = wand, dmg spells, group aoe1b = staff, status books, tempter, stone, kinesis
1c = book, uncurse		1D = martial arts
1e = multihit monster skills	1f = status skills
20 = debuffs			21 = esp
22 = flare, right, fullAoE	23 = explode
24 = steal			25 = revive (skill)
26 = d-beam			27 = leech
28 = barrier			29 = power
2a = armor			2b = left
2c = undead-ok drain drink, melt2d = sphere
2e = non-evasion mirror		2f = dummied skill 0xFC
30 = light, repent, riddle, sing: aoe status?
Byte 4: Unused in the English-language version. (Stores a table of max uses that is exactly the same as the one stored with item/ability strings, except here Glass has 1 use rather than 50. Whatever bug cleanup was done on the code for overseas release also saw them pull actual uses from the strings table, breaking that in the player's favor.)

Byte 5: Primary data. What it stores differs based on which formula is called:
code:
04 = barrier flags
06~0c = mult
0d = fixed pow?
0e = randomly-scaled pow?
0f = fixed pow?
10 = differs for the two SAWs; decimal 60 for the item, 30 for the skill. May be leftover hit% from it being random or pow from it damaging if it didn't kill?
11~16 = fixed pow?
17 = c4. some race/class mask which misses only bosses, presumably, as it also appears on EXPLODE.
18 = fixed pow?
19 = mask for statuses NOT to heal
1a = mult
1b = status
1c = mult
1D = pow
1e = mult
1f = status
20 = targeted stat; 1 = str 2 = agi
22 = mult
23 = c4, as appropriate here as STENCH being skill #0xB0 is
24 = fixed pow?
26 = fixed or random pow? dec 100
27 = mult
28~2a = pow
2b = fixed pow?
2c = mult
2e = evade? Agi boost?
30 = status
Byte 6: Secondary data. Like the fifth byte, serves different purposes for different formulae:
code:
03~04 = evade
05 = status flags
07 = element
08 = races-vulnerable
09 = races-immune
0A = 04 only for rod
0d = rand pow?
0e = fixed pow?
0f = rand pow?
10 = dec 99 for item saw, 45 for ability. Another dummy value that could be either a hit% the formula ignores or a power the forumla ignores
11~16 = rand pow?
18 = rand pow?
1a = element
1b = rate?
1c = race
1D = pow, repeated. essentially serves no use in the released game, as all existing martial arts do POW + 0..POW + (other math); a very late experiment after other things are solved will be to see if IE I can get a Punch that does 5-260 rather than 5-10.
1e = reps
1f = rate?
20 = rate?
21 = evade
24 = fixed or rand pow? 
26 = fixed or rand pow?	dec 30
2b = rand pow?
30 = rate?
Byte 7: Animation? Most groupings share both a visual and a sound, but N.BOMB and EXPLODE have differing values here, and Excalibur comes right by the other screenshakers.
code:
01 = slash
02 = arrow
03 = piercing
04 = beam
05 = skull & crossbones
06 = thunderbolt ; huh, elements are out of order
07 = flame
08 = blizzard
09 = small explosion
0a = gun
0b = MA/most multi-attacks
0c = flare (monster)
0d = skin and debuffs
0f = hyper, explode
2c = missile
10 = gaze (confuse)
20 = quake ; screenshakers
21 = xcalbr
30 = heal/buff so basically none?
31 = Glass
40 = acid
50 = tornado/whirl/riddle
60 = sing
70 = leech
91 = masamune
9c = flare (book)
9e = n. bomb
a0 = light, sphere, repent
Byte 8: Sound effect. No idea how to describe these even for my own note-taking so I haven't checked yet; if this assumption is accurate Glass and shields, LEECH and P-BLAST, and POWER and both FLAREs will match, KARATE may be an odd one out in martial arts, HONEY may be an odd one out in heals, and the two POISONs may differ. (But may not if they did at one point in dev and then both entries were overwritten with the same sound data; same values giving different sounds obviously disproves but different values giving the same sound doesn't.)

I have a deadline at work today, so I'm leaving off here for now, but later in the week I'll start producing variant ROMs like "HAMMER is an Excalibur with primary value intact and secondary zeroed, RAPIER is an Excalibur with primary value zeroes and secondary intact, LONG is an Excalibur with both set to 16" and seeing how they play.

Mandoric fucked around with this message at 08:34 on Apr 13, 2023

Prism
Dec 22, 2007

yospos

This is all really interesting! I don't know that I've ever seen anything even close to this detailed about how FFL1 stores its data.

But, what is a 'tax stamp gun'?

Mandoric
Mar 15, 2003

Prism posted:

This is all really interesting! I don't know that I've ever seen anything even close to this detailed about how FFL1 stores its data.

But, what is a 'tax stamp gun'?

Me trying to be clever. The US has a dumb technicality where you're letter-of-the-law allowed to own certain machine guns if you pay a $200 tax, and if you do so you will receive a stamp which serves as legal proof of payment/authorization; the twist is that when you try to pay the tax they run a background check on you before cashing the check and will just reject the payment and not give you the stamp if they don't like what they find. (The terms of the background check are also stupid.)

While I was trying to be clever, I got the actual facts backwards, though. BOW/LONGBOW/GR.BOW/COLT/MUSKET/MAGNUM, SMG/GRENADE/BAZOOKA/BALKAN, and LASER which sits away from either set in the tables all share a targeting bitmask, but it's 0x80/only "TARGET_ENEMY;" 0x10/BURNING is... only for BURNING.

The facts are goddamn weird, in my defense. This game appears to allow marking weapons as whole-battlefield or single-target but default, if they're unflagged, to entire enemy group.

E: And the question is still open re: "why do the bows and COLT/MUSKET/MAGNUM/LASER share a targeting byte with all sorts of AoEs but... don't AoE".

Mandoric fucked around with this message at 08:38 on Apr 13, 2023

Prism
Dec 22, 2007

yospos

Mandoric posted:

Me trying to be clever. The US has a dumb technicality where you're letter-of-the-law allowed to own certain machine guns if you pay a $200 tax, and if you do so you will receive a stamp which serves as legal proof of payment/authorization; the twist is that when you try to pay the tax they run a background check on you before cashing the check and will just reject the payment and not give you the stamp if they don't like what they find. (The terms of the background check are also stupid.)

While I was trying to be clever, I got the actual facts backwards, though. BOW/LONGBOW/GR.BOW/COLT/MUSKET/MAGNUM, SMG/GRENADE/BAZOOKA/BALKAN, and LASER which sits away from either set in the tables all share a targeting bitmask, but it's 0x80/only "TARGET_ENEMY;" 0x10/BURNING is... only for BURNING.

The facts are goddamn weird, in my defense. This game appears to allow marking weapons as whole-battlefield or single-target but default, if they're unflagged, to entire enemy group.

E: And the question is still open re: "why do the bows and COLT/MUSKET/MAGNUM/LASER share a targeting byte with all sorts of AoEs but... don't AoE".

Ah. I'm not American and I absolutely never would have known (or guessed) that.

Do those bows/the single-target guns do something weird with picking which target to hit, like always the first in line instead of random (or vice versa), or low/high HP, or something? I can't think of how else they would target differently. But if they've got an AoE target but don't actually hit AoE 'hitting the first one' instead of 'hitting a random one' seems like a possibility; they just stop after one target.

Mandoric
Mar 15, 2003
I believe targeting within group is just oldschool "first in line". (Something to check today out of curiosity: do monsters "file toward the front" in RAM when their front line is killed? This would cost a lot of CPU, but could be done in the downtime while printing "was defeated", while iterating through every slot would also cost some CPU but could be done in the downtime while printing the attack name. E: They do not skip in line, nor for that matter does their RAM position match their column position: with FLY and SKELETON 2, hitting the skeletons burns down the second monster slot completely until it's dead and then starts in on the third.)

That said, since in the end the damage formula handles applying the actual damage and there is no UI difference between TARGET_ENEMY and TARGET_ENEMY + SINGLE_TARGET (nor is there one between DONT_INPUT_TARGET and the bottom three bits,) it strikes me that this probably a) is semi-vestigial overridded by damage formulae and/or semi-unimplemented and they never set up giving you the ST/AoE choice AoE spells later developed, or b) it preheats certain pointers/flags/ROM banks that the formula will want or may have wanted at some point (sounds promising because in particular IS_STATUS_SKIN and IS_SELF_EVADE_BOOST both skip normal turn order and then differ in whether they will operate on enemies or on you+party.) I'll eventually play with what happens if you make a sword untargeted, or set SINGLE_TARGET on an AoE.


Anyway, yesterday was... elucidating but frustrating.

In order to see how Excalibur works--and, because I'd have at least one spare party member with how I conceived of it, I made a quick ROM hack turning Hammer, Long, Rapier, and Saber into various flavors of Excalibur with modified data bytes, tweak Punch as well because it's low-hanging fruit, and notes for myself to remind me what it does/what I expected from it.

The first round of testing produced results https://pastebin.com/iL6mcDgB, which were... Very off expectation. Hammer was slightly higher than expected, Rapiers far lower. And also I realized that I had to start with a FemC or I wasn't going to have a Saber anytime soon, so I restarted, and did as much fighting as I could until every one was dead from the rocket tag of starting HP, no armor, and monsters occasionally going first: https://pastebin.com/ZHcwbMgG

The good is that the use of the secondary byte in the MA formula is quickly confirmed: a number between 0 and SECONDARY is added to damage. This is almost irrelevant on vanilla martial arts where it is very low and always identical to PRIMARY, but if modders wanted to have martials arts deal damage in a wider band it's as simple as changing this.

The bad is that both 0 and 1 in PRIMARY turn Excaliburs into pumpkins, no matter how high SECONDARY is.
My first thought was that POW-scaling weapons, given that they're mostly projectiles, may have some requirement to score "a clean hit" in order to then potentially "fragment"/"tumble"/etc; cf. dud artillery shells or "got shot but it went cleanly through" as the low rolls for the second part compared to "plinked off armor" as the low rolls for the first part.

And the ugly is that an Excalibur clone without its secondary byte just acts like a normal Excalibur, though not hitting the top end of its demonstrated range on Creator. Damage is definitely = PRIMARY * RAND(1..2) + α, where somewhere in α there is - DEF and check for 〇Weapon.

Well, Excalipunch Edition has served its purpose, so it's time for Excalipunch Turbo. :v: SABER gets a boost to try and punch through even gobbo defenses, PUNCH gets its bytes flipped to see what primary does, and I also make a new party so inadvertent mutant levels mess with neither my math nor my ability to hold A through combat.

My first phase of testing, https://pastebin.com/muS2hiv8, is pretty quick. A bona-fide does damage hit with a decimal 8 PRIMARY/100 SECONDARY Excalibur is identical to an 8/0 version; secondary does not affect damage and the base damage values over 400 I was seeing on Creator are coming from somewhere completely different. Secondary does not appear to affect anything, and continues not to through my subsequent testing on the day; while I have not made it to testing the guns and bows, the only explanation I can think of for it even existing, especially at a value of decimal 100, is that before Excalibur's final routine was written at some point it was placeholdered in a formula that expected POWER and ACCURACY.

The higher base damage values also weren't some kind of stat thing, even an adaptive highest stat thing, either, as I can modify my characters' stats easily in realtime and this produces no changes from either STR or AGI.

I still want to look at its defense dependency, though, and that's going to involve either finding monster stats in the ROM and creating a new hack or finding monster scratchpad in the RAM and tweaking it there. That sounds easier, so going by what I know of the player stat format I look for their battle scratchpad by getting in a fight and hoping there's another current HP/max HP/flags/STR (so for my leader, a human F at 57 current HP, 39 00 3C 00 83 04) nearby in RAM.
This shows up at D002 and only D002 in RAM, which sounds promising; in fact, the entire 0x20 bytes from D000 is:
3 empty bytes
HP word, MaxHP word, STR byte, DEF byte, AGI byte
4 empty bytes the first one is mana, the second one is resists
8 bytes, aligning with her inventory contents, 8 bytes, aligning with her inventory remaining
one empty byte
class

The next three 32-byte records also exactly fit what I know about my other 3 characters.


And right after that, at D080, is:
code:
93 08 00 3c 00 3c 00 09 04 03 06 20 01 fe 95 d6
df fe fe fe fe fe 1e fe fe 00 00 00 00 00 00 78
Can you guess what I'm fighting?
What if I apply that same record format? The 93 08 00 is :iiam:, but it's got 60 HP, 9 strength, 4 defense, 3 agility, and 6 of something that smells suspiciously like mana. 20 01 FE I'm not sure about, but it's got a--let me check the item and ability table, it's carrying around a Nail, a 〇Para, and a ืFire, 30 uses on the Nail of course. Get to the end and confirm my suspicions with its class being 0x78--it is of course, as the class table says, a ZOMBIE.
Not only that, but there are 26 identical empty records under him before RAM starts holding something else, just perfect for three enemy groups of nine.

It's only at this point that I look over at the emulator's gameplay screen rather than debugger, and it feels real drat good when I'm not horribly wrong.
Well, you, Mr. Zombie, are getting an absurdly large amount of HP. 32,767 to be exact, stored little-endian as, what was it, 0xFF07; I've experimented with this before and established that the combat logic treats HPs as signed and instakills anyone who takes damage that brings them to the "-32767" that 32768 is. Now I can beat on you all day. You're also getting... Let's say, 9 defense, enough to block the lowest possible SABER and LONG rolls and see what happens.

https://pastebin.com/RYYcKhZJ happened. Little-endian makes my brain shut off. :saddumb:

Trying again, on a 32-defense (to start) and properly HP-boosted Goblin, works better but still leaves some questions: https://pastebin.com/tG8AmrG9
Excalibur isn't doing something weird involving your worst combat stat, nor is it doing something weird involving your average combat stat.
As I turn the defense down, I do notice that when defense is within a couple points of max possible damage small hits do sneak through. I'm not entirely sure what's going on here, and I don't know where to start looking. I don't really suspect defense being slightly random, yet OTOH it's as much as +25% damage over expected (so, Damage = POWER * 0..2.5), which surely would have shown up for the Hammer-wielder by now given it did 50% of the time for the others at 17 defense. Which sounds like the results on Creator, but also he has 〇ALL and there might be an interaction there.

Trying to figure out whether maybe the dicrepancy's there, I give the gobbo 200 defense, and my main character a real Excalibur, then play with turning 〇ALL on and off for him: https://pastebin.com/Yquz3kS2

It looks like 〇WEAPON and 〇ALL did 〇jack and 〇poo poo. Admittedly, I wasn't using ~normal weapons~ at all, but I'd definitely noticed significantly reduced damage on true tower mobs even with Excalibur.
While trying to figure out which mobs those were, I noticed something interesting. Several monsters get both 〇WEAPON and 〇CHANGE, something which should be meaningless: 〇CHANGE is supposed to be 〇WEAPON/〇PARA/〇STONE combined, and indeed it comes right after them and is just their flags added together. But what if...

I head back and buy an AXE, the one early weapon I haven't dicked with. It goes to the hammer guy. And I set myself up a new encounter with... what does it matter, I've replaced their HP to cap and defense to 0 anyway. I give them 〇CHANGE to start.
https://pastebin.com/TawUEBjy is deeply unsatisfying results. So I go hunt down an enemy with a natural resistance. And here we go, skeletons! their mystery bytes are 93 08 00, 60 01 fe. if one of those is giving ○WEAPON it's one with 40 in it, so either 40-7f or c0-ff; the only option is the 60. They're supposed to be strong against para as well, and 20 is the resists flag for para; let's turn back and update that battle scratchpad memory map to specify that resists come right after mana. So here's a target that I've made to have no defense, but ○WEAPON, and more importantly have given actual in-battle 〇WEAPON flags rather than just the skill that is checked when flags are initialized at the beginning of battle.

https://pastebin.com/uYXq3Pmj is what I got.

The RNG does not advance unless the player advances it. I had a quicksave before the 199 at 0 defense, basically a perfect roll. So I can control for RAND as well.
Remove weapon resist, 399.
Readd weapon resist and add 255 defense, 144.
Halve it, 72. All follows. 66, 6 lower. 1, 65 rather than 64 lower. 52, 51 higher. 51, 1 rather than 2 lower. So there's some shaky rounding happening somewhere. 38. 48. 8. 0. 47.

So everything there is working fine.

You know, let me quick check something now that I know having a ○ skill doesn't force you to have the flags. Lemme load up the unhacked rom, my savestate in heaven on that, and talk to the man in the hat.
... No dice, Creator does in fact truly have all resist flags set and not just a decorative ○ALL. He's still regularly taking over 100, though.
What if I give him 255 defense? Knocking 55 off whatever primary roll should make it auto-0.

Well, it knocks off exactly 55 instead.

Start the fight again, remove his defense and flags, 341, 414, 413. 405. 310. 470! 470 should not be possible.

At this point, I start seriously trying to pick through the code, and, uh. I can find where i the code the damage is being calculated. I can even see 0E the formula, CE the power, and CE the defense all go into registers, and then them leave around 100 instructions later. But I'm not galaxybrain enough to figure out floating-point math as implemented in GB machine code.

Wait, one last-ditch effort: is the useless secondary byte some kind of thing that gets added in some situations?

No, because the zeroed secondary byte versions bonk just as hard.

SUMMARY
So my attempt to figure out exactly what Excalibur is doing has come to a failed end. It did not, in a large range of samples on normal monsters (including normal monsters modified to have Creator's resists but not his race or statline,) deal over 400 base damage: Damage = POWER * 1..2 - DEF is secure there, except for an edge case that only occurred yet occurred quite frequently when DEF was slightly over the maximum result of the previous clause (which does not apply on CREATOR). Similar portions of the RNG table were traversed in both cases.
I'm going to have to leave it as that either:

- Damage = POWER * 1..2 - DEF, except floating point does not always convert back cleanly and may leave some mis-set bits in unpredictable places.
- Damage = POWER * 1..2 - DEF, except extra damage is dealt to Creator. (This damage is still not affected by the secondary byte; whacking him with a CE FF Excalibur does not change damage at all.)

or

- Damage = POWER * 1..2.5 - DEF, but values 2 < n < 2.5 do not occur as a full 1/3 of the scale.

The first is most appealing to me even though it's hazy, as it explains the high frequency of rolls between 17-20 at POWER = 8 DEF = 17 that do not appear at POWER = 8 DEF = 0 and the tendency for Excalibur hits on a defenseless Creator to do 300-500 evenly instead of 200-400 evenly as on normal monsters. Secondary may even have once been the amount before hardcoding it. But I'm honestly not sure.

Martial arts, though. The martial arts formula is definitely, at least if one takes the generally-accepted MA formula as true,
RAND = 0..SECONDARY
Damage = PRIMARY + (100-Uses) + AGI + RAND – target DEF.

Todo next time: Masamune and Glass, N.BOMB, ST guns and bows, MT guns, do the unique formulae for the two dummied skills crash the game.

E: Late-night thought that mayyyyyyyyybe the formula actually pulls canonical defense and not scratchpad defense (because it happens even if scratchpad defense is 0), and changes RAND from 1...2 to 1.5..2.5 if innate DEF > PRIMARY. It fits 100% of test cases, because absolutely every single overage I've seen in this testing has been either 8 power hacked Excalibur into 17-18 DEF hacked mob producing a 1-3 (roll before resists 17-20), unhacked Excalibur into unhacked Creator producing a 100-150, or unhacked Excalibur into hacked defenseless Creator producing a 400-500. Formulae have to be able to see beyond the scratchpad because evasion definitely isn't stored there and I don't think, even by "1980s Square programmers" standards, they'd be brazen enough to just have shields intentionally do nothing. But also, while rates seem to be stored as percentile adjustment in hex (shield evades from the OG Japanese strategy guide line up for example), absolutely nothing in RAM seems to increase by 0x30 after either selecting 🛡BRONZE from the menu, starting a combat round, or waiting for the user's turn in combat.

Mandoric fucked around with this message at 08:11 on Apr 15, 2023

Mandoric
Mar 15, 2003
I've mostly been working on just writing the actual document, which is a lot of retyping, formatting, and sometimes even translation; as soon as I get to discuss, say, shields--and that happens very early, shields are the first non-dummied formula on the list--I need to figure out a way to distinguish beween MIRROR and MIRROR, of which one is a shield with an unusual targeting byte and the other is its own bespoke formula.

But today as I got started, I happened to be on martial arts, and looking at the generally-accepted formula:

For martial arts which have more than one use left, damage is:
RAND = 0..SECONDARY
Damage = PRIMARY + (100-Uses) + AGI + RAND – target DEF
For their final use, martial arts deal
RAND = 0..SECONDARY
Damage = (PRIMARY + 99 + AGI + RAND) * 3 – target DEF


I realized that with the poking I already did (showing that PRIMARY contributed flat damage and SECONDARY contributed random damage) I could just completely solve it.

I get in a fight, immediately quicksave, and then have everyone else stay out of the way while my puncher with 7 AGI punches the 3 DEF target for what, because of how the RNG works, is guaranteed to always have the exact same random component.
With 90 uses left, I get 191. With 2 left I get 279. That's very good because they differ by 88, which was also ⊿Uses, but since I'm here already we may as well do the math out:

5 (PRIMARY) + 10 (100-Uses) + 7 + x - 3 = 191
22 + x = 194
x = 172

5 (PRIMARY) + 98 (100-Uses) + 7 + x - 3 = 279
110 + x = 282
x = 172

Ding-ding-ding. The normal MA math is right. Reloading again and replace its uses with 1 to trigger the finisher, I get 846.
(5 + 99 + 7 + 172 * 3) - 3 also is equal to 846. The conventional math is not just plausible but as exactly right as can be accomplished without a firm grasp on the RNG.

I also realize, at this point, that with a formula I can cleanly define, I can then maybe dump the RNG table completely given enough time; while I wouldn't know where to begin re: how an unsigned integer becomes a float and how that float comes back to an unsigned integer, I'm armed with the knowledge that when asked to roll 255 * (0..1) I get back 172.
Let's see what happens if instead of 255 I ask for 200 * (1..2). 245 hit with Excalibur. Not good.
How about a quick edit and replace in place of the ROM, call it Super Excalipunch Turbo, that just makes Excalibur PRIMARY 255. Still 245 damage, was Excalibur's power cached in the savestate?
Next is 205. After a save and load, first is 245 again.
Back to untweaked ROM, exact same behavior.

It is only the highest possible effort of closing bgb and reloading from scratch that I get it to change to 313.
So, for my own use in experimentation, it's important to note that weapons data is cached somewhere that hangs out through bgb savestate load or "load without reset" use. And the range of the float appears to transform the RNG value in its own way; alternately Excalibur does not roll to hit and therefore I'm skipping a roll and not getting the same one.

Let's see, though, if something with the same range and a known-to-exist hit roll will go off the same. Super Excalipunch Turbo HD Remix, guns are supposed to do PRIMARY + 0..SECONDARY plus some other poo poo just like martial arts, I was already playing with Excalibur, so I can just go 6 entries down and make the COLT 00 FF.

It does no damage. Well gently caress (though that maybe justifies my previous assumptions re: Excalibur in retrospect.) Let's give it 255 base.
325 damage, so hypothetical x = 70.

And finally, final punch to round it out, 786.
(5 + 99 + 7 + x) * 3 - 6 = 786
(5 + 99 + 7 + x) * 3 = 792
5+ 99 + 7 + x = 264
x = 153. Okay there are definitely rolls I'm not accounting for here and I'm going to stop barking up this tree for now--instead I'm going to figure out guns since I seem tantalizingly close.

The 0 damage with PRIMARY 0 and secondary 255 is intriguing; I had at first wanted to blame that for Excalibur issues but here it is again, in data that all the sources describe as "does PRIMARY-(PRIMARY+SECONDARY) damage".

I start a completely new game just to refresh my memory of what monster a solo character will see first on the island near the tower. It's a goblin out the gate, so it'll have 6 defense.
Thus, I'm going to make the COLT have 7 PRIMARY and 0 SECONDARY, the MUSKET have 7 PRIMARY and 255 SECONDARY, and the MAGNUM have 255 PRIMARY and 0 secondary. Theoretically they should do, respectively, always 1, 1-256, and always 249.

Well poo poo. COLT does 3, MUSKET does 3, MAGNUM does 325. Into an Albatross with only 3 def, 6, 6, 338. Lizard 2, 2, 330. Gob 3, 3, 273. Lizard 2, 2, 341. Lizard 2, 2, 348.

I'm not going to pursue this further tonight, but it is very interesting that for sufficiently low values of PRIMARY, Damage = PRIMARY + 2 - DEF regardless of SECONDARY. No randomization appears to be occurring at all except on the Magnum, and the Magnum is operating in a relatively narrow band (although a small sample set.)
SECONDARY is also very likely not a contributor to hit rate, as all shots hit even with it being pushed to both extremes.

Doom Goon
Sep 18, 2008


Holy mackerel, that stuff is great! Really want to pour over it here, such a fun game. I really wish I had some of this stuff before I started but of course I probably wouldn't have appreciated it. I really hope this game pops up again for the monthly (and the sequel) because I'd really like to go through it in a different way.

Oh, I haven't abandoned my run, I believe I'm near the end and have been busy otherwise so of course I started another project that's been taking up all of my free time instead of, you know, just finishing the dang thing.

But I also wanted to post because there's been some Four Job Fiesta news! First of all, you can vote for The Run already:
https://twitter.com/FF5ForFutures/status/1650288528675442690

He's also mentioned that the charity is for The Trevor Project again and while I prefer Doctors WIthout Borders I'm also kind of happy because I saw somebody rage about it again already lol. Finally, he also mentioned that (because of Twitter) there is a new registration system which is almost finalized, a side effect of that is that it probably won't publicly show people's teams although it'll still have the overall stats of course (Edit: and run histories, yay!).

Doom Goon fucked around with this message at 04:50 on Apr 24, 2023

Prism
Dec 22, 2007

yospos

Doom Goon posted:

But I also wanted to post because there's been some Four Job Fiesta news! First of all, you can vote for The Run already:
https://twitter.com/FF5ForFutures/status/1650288528675442690

He's also mentioned that the charity is for The Trevor Project again and while I prefer Doctors WIthout Borders I'm also kind of happy because I saw somebody rage about it again already lol. Finally, he also mentioned that (because of Twitter) there is a new registration system which is almost finalized, a side effect of that is that it probably won't publicly show people's teams although it'll still have the overall stats of course (Edit: and run histories, yay!).

Thank goodness, I hate using Twitter.

The only reason I don't really like the Trevor Project as the charity is because it only operates in the States and I always feel a little weird donating to it when I could be donating to either something similar closer to home or a global initiative. I wish there was an international version I could suggest.

I mean, I'm still gonna play the Fiesta and it's a good cause.

also gilgabot don't eat the mayo

StupidSexyMothman
Aug 9, 2010

https://www.patreon.com/posts/run-fiesta-all-82109128

quote:

http://fourjobfiesta.com/freerun.php

Long asked for, and now here it is! You can now create a run anytime, anywhere!

This does _not_ save to the servers, so make sure to write it down, take a screenshot, or carve it into a stone tablet. Everything is unlocked, so there's no surprises. Sorry.

Cattail Prophet
Apr 12, 2014

Ooh, looks like the run types have been revamped to be more modular, too! Classic is now decoupled from natural, for instance, and dupes/no dupes is a separate setting you can apply to any mode.

Only slight problem is that there's no way to recreate OG chaos afaict. "Any job from any crystal, but no mime or freelancer" doesn't appear to be an available mode. In its place is something that's essentially the inverse of what used to be random. Volcano Run: "Each Crystal can give its jobs or any future job." In other words, your first job can be anything, but you're guaranteed to get an earth job from the earth crystal.

Doom Goon
Sep 18, 2008


Whew, under the wire! Had to rush so I didn't get to experiment much with the final Monster forms, however that did lead to The Creator dying by Lillith's only attack that would touch him... a ~19 HP Tail swipe :laffo: With Glass and Flare and whatever my other Human had it really wasn't that bad, just rather random (didn't even get the Power Armor or anything like that). I also didn't get any stat over 99 unless I accidentally selected it, and also beat the game without running (though I did save scum quite a bit at the end, never did get Teleport or anything helpful). My Esper was pretty sad ability-wise, ran most of the game with Alarm, Armor at the end, and a couple rotating spells (hit on Kinesis aka paralyze and Heal I think but everything was right at the end. Unfortunately I lost Gas sometime and that was that for non-sword damage).



Definitely hope this one comes back around!

Doom Goon
Sep 18, 2008


https://twitter.com/FF5ForFutures/status/1652846824204689408

Even though it's discouraged I think I'll do the GBA Sword of Mana since I remember never beating that version. Doubtlessly for a good reason. I owned the GB game so I've beaten that one a few times iirc.

Oh, this uses the new login system btw! Unfortunately it seems to be tied in with Google, blech, which is a bit annoying. There's also more instructions if you want it on the Public page:
https://twitter.com/FF5ForFutures/status/1652847436841508865

Aerofallosov
Oct 3, 2007

Friend to Fishes. Just keep swimming.
Does anyone know if the Switch Version is allowed or okay?

Mega64
May 23, 2008

I took the octopath less travelered,

And it made one-eighth the difference.
If you mean FFA, it's the same as the original so should be fine.

Adventures of Mana is also the same game just in 3D so it should also be fine. All the mechanics and story beats line up exactly with FFA.

It's Sword of Mana that's a radically different remake.

Adbot
ADBOT LOVES YOU

Kyrosiris
May 24, 2006

You try to be happy when everyone is summoning you everywhere to "be their friend".



This thread was mauled by a bear, because it was not bearproof. I made a new one.

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply