11 March 2016 - Forum Rules

Main Menu

Secret of Mana, Turbo - Beta 210915

Started by Queue, January 31, 2019, 06:45:12 PM

Previous topic - Next topic


Mr. X    With a hex-edit, it's possible to give more pieces of equipment status immunities, and/or element resist.  Another possibility is to hex-edit Fire Gigas' AI-script to only target a single character, when using a spell.

All three types of equipment can have element resist added to them, it's a very quick change to make if you know what data to edit.  I haven't yet figured out where exactly to write new code/script for game changes into the ZPS file.  The process of reading and writing code into the ROM uses a hierarchy of classes to determine the order in which the ZPS patcher executes its function.  I... think that's what Queue meant?

UPDATE:  NO.  That's absolutely not what he meant.  Starting to get it now...  :banghead:

The scripting syntax and the 65816 assembly instructions I'm getting the hang of.  It's the format in the ZPS file that I really... don't understand yet.  ::)

EDIT:  Seems to be just four of us using this thread.  Except for the occasional visit from other interested parties... :laugh:
MASTER LINK:  Secret of Mana Information (Vanilla)

"Yes, the Author is indeed a horse!"  <zool>



It seems Revive is not renamed Turn Undead (at least in Relocalized version).  I'm not sure if that's intended or not.  Also, was there any particular reason for making the bosses immune to the Turn Undead damage?  It's not like it does any high damage (61 PWR), so I don't see why you would make the bosses immune to it.  If the bosses are demon/undead, then I think this spell should be able to do damage.


Mr X, hm, I didn't mean to make the Fire Gigas even harder (I already think he's a pain in the butt in Turbo since he can be so magic spammy). I suppose the most straightforward option would be to make an NPC variant of Lava Wave that's just damage like vanilla, so regardless of how Lava Wave's changed, it doesn't affect NPCs.

One of my bucket list goals is to add elemental type to most chest armors; it just risks screwing up balance too much if the only armor available makes your characters weak to the dominant element in an area early / mid game, so I haven't tackled it yet. For example, if you only had water (weak to fire) armor for the fire gigas fight it'd be even worse.

This ties into one of my New Game Plus goals of ignoring defense and attack power from items on a NG+ run: all weapons will have the same base damage, all armor the same defense, so on NG+ you choose your weapon based on effect, your armor based on resists, rings for immunities and hats for stat bonuses (more or less), but otherwise can use any weapon or equipment in the game. This is because on a NG+ run you'd already have max equipment and all other items in the game would be otherwise useless.

But almost all of THAT ties into having an in-game display of item effects (so the player can make a decision without, uh, well, having to guess what equipment does), which has proven incredibly annoying to implement.

I really want to get the wrong chest messages figured out. Any other information you can figure out relating to that could prove useful (if certain enemies drop chests where it's right and others it's wrong, or if in some locations it's right / wrong, etc.). I've so far not had any chest give an unexpected message so there might be something fundamentally different between my test conditions and yours.

zoolgremlin, it's not that the code itself causes bugs, it's just being able to revive an enemy / boss that I expect could be a problem. What happens if you cast revive on a boss just as you kill it, so the revive hits after it started dying and clears the dead status? Or a normal enemy tied to an event? How does it interact with an enemy that is going to spawn a chest (I think a chest directly replaces the monster that drops it)?

The 2 MB line was a joke. -_- Turbo itself relies on the ROM being bumped to 4 MB.

New Game Plus sucking is just that I haven't put any time into boosted enemy stats (it's currently a simple boost to damage so you aren't just immune and health so things take more than one hit), or making player item options viable (because just wandering around in the endgame gear is boring; I want to wear the kung fu suit, tiger suit and... I dunno for the sprite).

The visual oddity in the NG+ dialogue choice is a flaw in the VWF text display code. It works well enough for all the dialogue choices available in the normal script, but it doesn't get positioning correct in the text I want to use. I'm not satisfied with it but it works well enough for now.

hmsong, I like your proposed spell recharge times, and am pretty sure I understand nearly all of your decisions (spells with travel times vs. not, beneficial with immediate effect vs. buffs, etc.), with only a couple cases I want insight on:
- You have Lunar Magic at long: I do have plans to change it, are you just assuming it will become something worth using? Because the vanilla spell seems too crummy to need a long recharge.
- You have Freeze at medium even though it's a direct damage spell (with the note of if it's weakened). I assume this is partly so that Undine isn't stuck with 3 long recasts. I think the Undine spell set just faces some fundamental issues: Energy Absorb is very good, Acid Storm includes a debuff that needs to be encouraged to be worth using (stuff generally dies too quickly to bother with debuffing defense OR magic defense), and Freeze is boring but obviously a viable choice if just spamming a damage spell. I think I need to review Freeze's power and mana cost, and Acid Storm's power and mana cost, and see if it'd be possible to encourage plentiful Acid Storm use without it making Freeze not worth using. Weakening Acid Storm's damage and treating it more like a stat debuff, and making it inexpensive to cast, may be what I'm considering.

Regarding the Black Rabite, copying him has crossed my mind, though if I do it'd just be an optional replacement. The weird snowman is literally what the unused enemy already was; I just gave him combat AI and adjusted some of his stats. Some complications of changing its appearance: its melee immunity is due to it being the snowman sprite (which has no melee collision), so the Black Rabite wouldn't be melee immune, and the AI would need to be heavily changed to account for Rabite animations.

Like with the Mud Saber coloring the weapon, I'm not yet committed to the "Mired" name for the status effect, so am holding off on making a visual effect until I've finalized the name. Also, applying a color effect is a lot of work, so only want to have to do it once for either. I'm considering "Quagmired" which isn't a real word, but sounds more fun, like "Frostied" or "Pygmized" are (which also aren't real words). The initial choice of "Mired" was because the definition fits the behavior almost perfectly, but it's definitely not especially common in everyday English, and is very literal.

Dragon Ring comes a little late in the game for Paralyze immunity (I know I've renamed it, but will likely keep referring to it as Paralyze until I'm happy with the new name), if it's the only immunity for it. I intend for it to be a lesser status effect (because it's just not that debilitating), so if it winds up on any NPC spells, attacks, etc., I'd be inclined for it to be earlier so want an early game item to have immunity for it.

The "Busy" and "Stun" status effects are used internally by the game for certain situations, so they're not actually available to be changed. "Busy" is used, for example, when opening a treasure chest. "Stun" is used when something takes ~25% or more of its health as damage in one hit.

Moogle status effect is specifically what you want (can move, can't attack), but every enemy is immune to it (almost definitely due to animation issues). Because of that, I can probably make enemies not immune and make it behave differently on an enemy than on a player (like not changing their sprite). Fear (and its related suggestions) as a name seems like a good fit, conceptually. Not sure how possible / practical a new Silence status effect would be; I'd think it would require lots of AI changes to make it interfere with only spell casting. What exactly does vanilla Confuse do to enemies?

Revivifier isn't renamed because it's fundamentally still the revive spell, it just can also be used on enemies, and as is a common behavior in RPGs, using a healing spell on undead hurts them. Whereas casting Turn Undead on a dead ally would be expected to hurt them further, no revive them. So it seemed like leaving the name as-is made more sense. Speaking of Relocalized, after these spell changes settle down a little I need to remember to go through and update the Relocalized spell descriptions (which include mana cost). As for bosses, I didn't make undead bosses immune, that's actually just part of the vanilla behavior of Revivifier making things complicated: the Wall bosses are evil/undead, but cast Revivifier on themselves; so just making boss behavior match non-boss enemy behavior would make that not work correctly. Making an NPC version of the spell, there's not enough space in the ROM where spell functions are for both vanilla Revivifier and the altered version. Now that I've gotten basic functionality working, I'll see what I can figure out so that it all works more usefully, and what I have in mind is:
- Wall bosses can cast on their eyes to revive them
- enemies can cast on themselves or other enemies to heal (in vanilla this would do nothing) but not revive; this would just be to add visual variety to enemy healing
- player can cast on dead heroes to revive them
- player can cast on undead/ghosts (enemies or bosses) to damage them (and I may make it ignore their magic defense)
- player can cast on normal enemies (and bosses) to heal them but NOT revive them (to avoid bugs)

I'm figuring out how to handle letting a spell cost health to cast (for Burst, etc.). What were you imagining for the health cost? A percentage of health? A fixed amount? Damage based on damage it does to the target? Does it only cost health or mana + health?



Oh yeah.  Here's my reasoning for those spell recharges (I changed many spells):

-Cure Water   2MP --> 3MP (Cure Water is too OP -- makes cure items useless)
-Flame Saber   2MP --> 4MP (Engulf status is pretty useful)
+Lunar Boost   Eva Down --> None (Why would there be Eva down?)
+Herbal Boost   Target = One/All Ally (There's no reason not to)
-Herbal Boost   2MP --> 3MP (This is too OP for a 2MP spell)
+Light Saber   5MP --> 4MP (Even with Balloon patch, this is not 5MP worthy)
+Lucent Beam   None --> +Acc/Eva Down (It blinds)
+Lucent Beam   61PWR --> 79PWR (PWR increase)
+Lucent Beam   8MP --> 5MP (8MP?  What the hell?)
-Lucid Barrier   4MP --> 6MP (This is too good, and it should match Wall)

-Freeze      61PWR --> 43PWR (It's a 2MP spell (and first spell), so its PWR should be weaker)
+Acid Rain   43PWR --> 61PWR (PWR increase)
-Acid Rain   3MP --> 4MP (PWR went up, so Cost should go up)
-Energy Absorb   2MP --> 3MP (It does 43PWR and absorbs HP, so it should cost more)
-Fireball   52PWR --> 43PWR (It's a 2MP spell, so its PWR should be weaker)
+Exploder   4MP --> 3MP (It's a 61PWR spell, so it should cost 3MP)
+Lava Wave   Nothing --> +Mire (Just add an effect)
+Thunderbolt   4MP --> 3MP (It's a 61PWR spell, so it should cost 3MP)
+Silence   2MP --> 1MP (Silence status from magic is not very useful)
+Lunar Magic   Random --> All Stat Down (More consistency)
+Sleep Flower   2MP --> 1MP (Sleep status from magic is not very useful)
-Burst      4MP --> 5MP (It's the most powerful spell (100PWR), so it should cost more)
+Dark Force   None --> +Poison (I may change its SE at some point)
+Dark Force   61PWR --> 79PWR (PWR increase)
-Dark Force   2MP --> 5MP (PWR went up plus extra effect, so Cost should go up)
+Dispel Magic   4MP --> 2MP (It only gets rid of buff/sabers/barriers)

As you can see, Freeze has become weaker.  And I changed Lunar Magic to something more... stable and useful.

If Black Rabite sprite is not an option, then how about the small Snowman sprite?  Regular Snowman is a bit boring.  I heard that sprite is available, according to a certain website.

Ahh, so that's what those two "unused" status effects do.  Now that I think about it, you mentioned it before.  And yes, you're right about Moogled SE.  It's too bad enemies are immune to it.  I'm looking forward to how you change that.  But yeah, Silence (disables casting) wouldn't be very useful on regular enemies.  They rarely cast anyways.  Maybe Fear only disables melee?  I wanted to give a cool status effect to Dark Force.  So far, I'm giving it Poison.  And Confuse changes the target to go in the opposite direction of control (which is... unique, since the enemies tend to run away).  I used to hate Nemesis Owl for that.

Perhaps Mire can be changed into Fear (with SE of limiting attacks rather than movement).  And keep the Stone Saber.  If you take away the Stone Saber, then nothing in the player spell pool can petrify anyone.  And adding petrify to an attack spell seems... dangerous, both to the enemies and players (I tried putting Petrify to Lava Wave, and Fire Gigas 1HKOed my entire party).  And perhaps add Fear to Dark Force, since that spell can use some update (players almost never use that spell, since many tough enemies are Shade element).

Wow, I like how you're thinking about making Revive differently.  I especially like how it may ignore Defense.  Btw, how do you make an attack spell ignore Defense?  I now Cure Water does that, but I couldn't figure it out.  Also, when Revive hits a regular non-undead enemies, it tends to heal a fixed amount.  How did you do that?  I kinda want to play around with Fixed damage output.

Thank you for working on my request of making Burst hurt the user.  I wanted to make Burst do a fixed damage to the caster, since the spell animation will still be active after Popoi finishes casting it (if it was percentage, then you'd have no idea how much damage it would do to the victim, due to its M.Def stat).  But now that I think about it, a percentage of caster's Max HP sounds better (I'm thinking 10%).    At the cost of 0 MP.  That'll make Burst always available -- but again, it hurts the user (Popoi would fall back after using the spell).

Truly, thank you for considering my suggestions.


@Queue  If I'm not mistaken, Confuse status in Vanilla definitely stops monsters/characters from casting Spells, making it like the Silence status in the Final Fantasy series.  The bit I have not yet confirmed, is whether it also affects monster AI-movement.  If it did, would it be the same thing as reversing player controls?  Would they instead move South and attack facing West, when their AI specified North and East, in that order?  I will have a look at that later, and see whether that's the case or not.   :)

By the way, everyone, I forgot to mention something I did in the ZPS file.  I was able to locate the part of Timbo's Relocalized patch that changes the Ring Menu icon for Burst, from an orange flare effect to a bluish-green one, and copy it to another section of the ZPS.  Allowing it to work without having to use Relocalized.  I felt pretty good after doing that, but given that I was not the one who discovered the unused differently-colored icon, I'm not really that clever for doing this.

It's just another "tweak" to something that I like.  That icon looks cooool... :laugh:
MASTER LINK:  Secret of Mana Information (Vanilla)

"Yes, the Author is indeed a horse!"  <zool>


Quote@Queue  If I'm not mistaken, Confuse status in Vanilla definitely stops monsters from casting Spells, making it like the Silence status in the Final Fantasy series.

Wuw!  I did not know that.  I tested it myself (by casting silence on Walled enemies), and what do you know, you're right!  Holy crap.  I did not know that.  I know for certain that it makes the AI go in the opposite direction of their intended target.  Well, enemies typically come towards me, but they ran away.


That's awesome.  Can you also find the code that would make Revive target not green?  At least, after Herbal Boost patch is applied?  It's kinda weird for Revive in Luna to cast green spell.


Quote from: Queue on September 19, 2019, 06:40:16 PM
- Fixed Herbal Boost causing Wall bosses to cast Herbal Boost instead of Revivifier

Was this a bug in your port of Herbal Boost, or in my original code?


@hmsong  It is rather odd that Revivifier, when made into a Luna spell, still puts a green aura on the target as part of its animation.  I have not read much in documentation about how graphical effects are coded.  At the moment, the documentation I've got is what I read to find out a particular section of code, and if that section has been extensively Commented (explained next to the code sector), then I know what its for.  I'll have a look now and see if the spell animations are Commented like that.   :)

Not that the spell being green is a bug in the game or anything, but yeah.  It would be nice to change it if possible.  I just don't know how data is written and interpreted to display graphics on a screen.  If I knew everything about that, I would be able to alter the bit that draws red bars on the Status menu screen, and make the bars shorter.  Back soon when I can answer these questions...  8)
MASTER LINK:  Secret of Mana Information (Vanilla)

"Yes, the Author is indeed a horse!"  <zool>

Mr X

Queue hmmm you are right, I would refrain using elemental resistance equipment on the begnning portion up until probably you first arrive in Kakara. Kakara, Ice Contient starting on that.

While before  have simply some equipment offer status imunity, cobra barcelets offer anti poison resistence - great for jaberwocky especially now since poison is powered up (in turbo Jaber is a joke even at double hp I took him out in like 1 minute or something he barely reacts, which seems to be a problem with the enemies in general in the game).

Similar solution for fire gigas engulf status from lava wave. Give an existing ring engulfment resistance, problem solved imo. And useful for Spikey too, the two of then are the most difficult bosses at that point in the game.

Existing early game ring effects up until great viper:

Power wrist - boosts atk
Cobra bracelet - prevents poisoning
Wolf's band - boosts your agi

Possible ideas for the rings at that point of the game:

Wristband- reduces fire damage, good vs fire gigas, only real trouble you will have is vs dooms wall if they cast freeze. No big deal tho imo, it just means one party member needs more healing, you are stronger overall by that point.

Elbow pad - Prevents engulfment - great to equip that on the girl for the fire gigas fight so she heals you back up.

Both of the above can be bought before the spikey/gigas fight.

Quill cap - prevents confusion?
Steel Cap - prevents pigmying?

There are a lot of options to make equipment special. Prevent a certain stat down, cut some type of damage in half, elemental resistance, boost your power (physic or magic atk) a lot in exchange for def, high def and/or magic def but drains your hp ovee time, boost elemental bonus you get from saber magic upon equiping some piece, faster charging etc. Not everything may be implemented, not all of them may fit this game, but just throwing them out there for reference. I've seen similar ideas be done right tho and balanced out in snd has taken that to the next level.

(If you are a fan of sd3 but being a bugy mess of a game, a hack called Sin of Mana fixes everything that was intended to work and more about it).

As for the Revive colors, it's trivial tbh and just dont try to make much sense of it, just like the "Moon elemental" in general. Even wood doesnt make much sense with what it is capable to do, boosting your strength, reflect, "exploding inner energy" since when were trees capable of doing that? Burst having a higher power than explode, an element of flames, pure destruction? Darkness, freaking void and gravity being slightly inferior to... a tree? Especially considering the mana magic coming from a tree?

Just don't try to make much sense of these two elementals and leave them colored as they are. Lol


Quote from: kethinov on September 22, 2019, 01:21:48 AM
Was this a bug in your port of Herbal Boost, or in my original code?
Unless I'm blind this one was on your side of things; it was a one-byte change to alter which spell the Wall bosses cast, so they use the altered number for Revivifier:
' enemy AI fixups '[WallFamily_CastRevivifier]
@OFF $C27DB9
'LDA #21 ' old spell number
LDA #1D ' new spell number

So, 0x027DBA from 0x21 to 0x1D.

I changed 6 other bytes: a trivial "correctness" issue with the Elemental Summon animations (the first two bytes of each spell data block, so 0x1031E0 and 0x1032E0, since there's a tiny difference between the Luna and Dryad summon animations, you had copied the Dryad animation along with the other data onto what was now a Luna spell, and vice versa); and likewise the "element" value for both spells (which truly has no effect) so that the Luna Revififier was Luna element and Dryad Herbal Boost was Dryad element.

Other replies tomorrow, long day.


@hmsong  Well guys, I'm closer to understanding how the game engine draws spell animation graphics/palettes.  What I need to change, so the target of Revivifier gets a yellow aura instead of a green one, is not yet crystal-clear though.  That's the short of it.  Do you want to know the long version?    :-\
MASTER LINK:  Secret of Mana Information (Vanilla)

"Yes, the Author is indeed a horse!"  <zool>



Oh my.  You are good at figuring out stuff.  If possible, can you make a document (similar to all other documents) about the color changing?  And if possible, not just the victim color, but also the spell graphic/color switching?  I want to move around the spells (ex: switch Speed Up with Fire Bouquet).  I can change the power, cost, target, element, etc (mostly thanks to Queue for teaching me how), but I don't know how to move around the graphic, sound, color, name, etc.

I took a look at Herbal Boost patch and Shadow Saber to figure it out, but I'm so lost.

Speaking of which, have you figured out the 2nd and 3rd bytes of Monster Drop Table?  I'd love to know.


@hmsong  In the Magic Tables document, most of the data there is used to define palettes and frame data for all 42 spells, at least if I understand kethinov's Herbal Boost patch correctly.  Only the last 8 bytes of a 4-address 16-offset Block are used for changing things like Spell Power, Spell Accuracy, Element, MP Cost, and a few other things.

At the moment, the document only says:

-     animation/graphics for Elemental sprite
-     bytes 0x08-17 = animation/graphics for low-level spell
-     bytes 0x18-27 = animation/graphics for mid-level spell
-     bytes 0x28-37 = animation/graphics for high-level spell

Where it says all of that is at least part of what needs to be shifted around in blocks of data, in order to, eg. put the tangling-vines of Speed Down in another slot, so that casting a Salamando spell would show the tangling-vines animation, instead of the fast bursts of flame whirling around clockwise and anti-clockwise.  It is not the complete list of things to swap, but that data is included in what would need to change.

From what I know about software, it has always been the case that drawing stuff on a screen ("graphics", in other words), takes up more raw data and opcodes than anything else a program (like a video game) does.  Even added up together.  The implication is that more complex code is needed to link the use of that data up, in every way necessary, to draw what a video game looks like when you play it.

I think it would be nice for the Magic Tables document (or a separate one for Graphics) to eventually have all of that explained in it.  I would, eg. give Energy Absorb, including its animation, to Shade instead of Undine.  Because draining the lifeforce of another living creature sounds a lot more like... Evil magic, than Water magic.  Of course, none of Shade's spells would fit into the Water Element either.  So a straight swap between two spells wouldn't make any more sense, in that example.

All of what you want to do is possible.  Especially since Turbo expands the ROM-space to 4MB, instead of the piddling 2MB Vanilla had.  With the graphics, it'll just take... quiiiite a while to prove everything it would take to change those.

I can't give an estimate of how much time it would take.  But we'll all be able to do it... someday.   :)

And no, unfortunately not yet for the two unknown bytes in the Drop table.  Got stuck with somebody who talked endlessly to me last night, and NOTHING got done with the tables.  It was almost like listening to "The Song That Doesn't End"!  Jeeeezuuuus Chriiiist.  It's still on the cards to check that, though.   :banghead:

I've loved this game since I was a teenager, almost like it was my first crush!  It wasn't, but anyway... that's the reason I'm looking into this sort of thing.  I presume it's also why other members like Queue, kethinov and yourself do this sort of thing.  Great place to be, this forum.  Really great...  8)

When it comes to figuring stuff out, sometimes somebody else got there before me, and sometimes they were on the right track, but didn't have the full picture, or the completely accurate one, etc...  in the case of SoM, mostly it's the former.  More generally, sometimes I'm able to add to what is already known.  Not always, though... i-it depends.

@Mr. X  I agree when you say that Luna and Dryad are the two oddball Elements of the game, and the whole World of Mana series.  I reeeeally don't know what Square's logic was, if they even know what "logic" is, but the best way I've come up with to explain Luna and Dryad being opposing Elements, is this:

-     Cosmic forces (from up amongst the stars, distant and enchanting).  In the night sky, mysterious and sometimes miraculous things reside.  Things that... cannot be fully explained, or not yet.  The Moon was once, in real-life mythology, believed to cause insanity in people, during it's "full" phase.  EDIT:  Also, even now people are known to joke/sing/talk seriously about "wishing upon a star", in the hopes of good fortune.  Isn't that what Disney once raved on about in Pinocchio?  Pretty sure of it...


-     Terrestrial forces, residing on a planet that can sustain life as we know it.  With trees, fish, birds, that strange Pumpkin that blows up in y'face <BOOM!>, some yellow fluffy thing with a single tooth that bites, all sorts.  Within all life there is the power of Mana, whether that term means Magic Energy, or Life Energy, not sure.  The Mana Tree is possibly meant to represent the "Mother of All Life" on the Mana World, whatever it's called.  Sorta makes a change from Daenerys Targaryen being the "Mother of All Dragons", which only bring Death and Calamity to Westeros!  Yeesh... that's kinda dangerous, you know?

Not much of an explanation, but... that's what I've got.  If the Elements are useful, then we will use them when possible.  That at least is logical...  ;D

@Queue  Your idea about making each type of equipment specialize in granting an additional effect, besides Defence/MagDef, sounds like great stuff to me.   :thumbsup:

Okay!  Back to my "investigation" for a while...  :laugh:
MASTER LINK:  Secret of Mana Information (Vanilla)

"Yes, the Author is indeed a horse!"  <zool>

Mr X

zoolgremlin yeah it's probably something along those lines.

And yes, Secret of Mana was one of those classic games I grew up with playing as a kid. That's why I am following this thread regularly in the first place. This is all just for fun at the end of the day, that's important.


Forgot to mention that Light and Darkness actually symbolize Good vs Evil, angelic vs demonic forces, basically.  Nothing to do with literal light and shadow (and not black holes either, I don't think).  That may not be as well-known as you'd think, but interestingly the Remake gives Light Saber an altered name... Holy Saber.  It also has Shade explain that he was once the King of Mavolia, aka. the Underworld.  Which, even in the Vanilla game, is implied to contain devilish, wicked, or unnatural things.  Like the walking dead, necromancers (Dark Lich/Thanatos), little horned grinning things with toy pitchforks (that is, they look like toys), and so on.  EDIT:  Seiken Densetsu 3, aka. Trials of Mana, is better at making this point clear, in the game cutscenes themselves.  At least in that respect (story, as well as graphics/sound), it doesn't royally suck ass.   :laugh:

So now, what used to be implied in Secret of Mana, is now openly stated.  That's... something, I guess.    ::)

MASTER LINK:  Secret of Mana Information (Vanilla)

"Yes, the Author is indeed a horse!"  <zool>



First, thank you for your explanation about the graphics.  I'm not entirely sure how to edit it, but I get where the address location is.  I guess I'll play around with that for a bit.

Second, good news:  I figured out what each of those Monster Drop Table does.  Thanks to Kethinov linking me with the SoM Drop Editor.  They are as follows.

1st:   Probability of dropping a chest (normal: 00~40;   running: 80~C0)
2nd:   1st digit: Agility needed to avoid trap.
   2nd digit: Analysis level needed to defuse trap.
3rd:   Probability of the chest containing rare item (~11% is the highest it gets)
   (Money-Item: 00~38;   Item-Item: 40~78;    Money-Money: 80~B8;    Item-Money: C0~F8)
4th:   Common Item ID (or GP amount of 00~FF)
5th:   Rare Item ID (or GP amount of 00~FF)

ID Description
---- --------
00 x
01 Bandana
02 Hair Ribbon
03 Rabite Cap
04 Head Gear
05 Quill Cap
06 Steel Cap
07 Golden Tiara
08 Racoon Cap
09 Quilted Hood
0A Tiger Cap
0B Circlet
0C Ruby Armet
0D Unicorn Helm
0E Dragon Helm
0F Duck Helm
10 Needle Helm
11 Cockatrice Cap
12 Amulet Helm
13 Griffin Helm
14 Faerie Crown
15 x
16 Overalls
17 Kung Fu Suit
18 Midge Robe
19 Chain Vest
1A Spiky Suit
1B Kung Fu Suit
1C Fancy Overalls
1D Chest Guard
1E Golden Vest
1F Ruby Vest
20 Tiger Suit
21 Tiger Bikini
22 Magical Armor
23 Tortoise Mail
24 Flower Suit
25 Battle Suit
26 Vestguard
27 Vampire Cape
28 Power Suit
29 Faerie Cloak
2A x
2B Faerie Ring
2C Elbow Pad
2D Power Wrist
2E Cobra Bracelet
2F Wolfs Band
30 Silver Band
31 Golem Ring
32 Frosty Ring
33 Ivy Amulet
34 Gold Bracelet
35 Shield Ring
36 Lazuri Ring
37 Guardian Ring
38 Gauntlet
39 Ninja Gloves
3A Dragon Ring
3B Watcher Ring
3C Imps Ring
3D Amulet Ring
3E Wristband
3F x
40 Candy
41 Chocolate
42 Royal Jam
43 Faerie Walnut
44 Medical Herb
45 Cup Of Wishes
46 Magic Rope
47 Flammie Drum
48 Moogle Belt
49 Midget Mallet
4A Barrel
4B~7F x
80 Glove Orb
81 Sword Orb
82 Axe Orb
83 Spear Orb
84 Whip Orb
85 Bow Orb
86 Boomerang Orb
87 Javelin Orb

Feel free to include this info your Monster Drop Table document.  I'm pretty sure that most of 4C~7F are orbs (ex: 3rd Axe Orb, 4th Sword Orb, etc).  Haven't tested them yet.

September 22, 2019, 08:59:54 AM - (Auto Merged - Double Posts are not allowed before 7 days.)

For SoM Drop Editor, does anyone know what the red circled things do? (bottom-right corner)  I know it changes the 3rd byte, but I have no idea what it actually does.  Does it double the chances?  Halves the chances?  I don't get it.


hmsong  I'll reply first to the Drop Table bit, since that's shorter.  Soooo... <deep breath>

GENIUS!  I will add that to the table now, and give you credit for it at the top and next to the explanation further down.  Thanks!

About the graphics, the change we want to make to Revivifier is partially located somewhere else in Bank 0x10 (16 in decimal).  Here's a list of addresses that are of interest graphics-wise:

001008:40-4F   A1 0A 5E 09 8E 54 3D 54 3D CD 54 40 20 40 20 00  'Placeholder for Red Glowing effect on a spell's current target/s
001008:50-5F   F1 0A 80 09 8C 54 3D 54 3D CD 54 40 20 40 20 00  'Placeholder for Blue Glowing effect on a spell's current target/s
001008:60-6F   06 0B 90 09 8C 54 3D 54 3D CD 54 40 20 40 20 00  'Placeholder for Green Glowing effect on a spell's current target/s
001008:70-7F   1E 0B A0 09 8E 54 3D 54 3D CD 54 40 20 40 20 00  'Placeholder for Yellow Glowing effect on a spell's current target/s
001008:80-8F   64 1D 10 0A 8E 28 3C 28 3C CD 54 40 20 40 20 00  'Placeholder for Purple Glowing effect on a spell's current target/s
001008:E0-EF   00 02 00 02 8E CC 37 40 30 CD 54 40 20 40 20 50  'Placeholder for White Glowing effect on a spell's current target/s
001008:F0-FF   00 04 00 04 8E CC 37 40 30 CD 54 40 20 40 20 50  'Placeholder for Black Glowing effect on a spell's current target/s

Now you may well ask the question, "What the s*** does he mean by that!?"  (Not necessarily in those exact words, haha.   ;D)  Well... at some point in the process of a spell being cast, the game program needs to jump to one of these seven addresses.  It needs the data here to set the colours needed to make the spell target glow.  Which one they need depends on the spell, and not all spells in the same Element domain use the same palette for the glowy aura.  Eg. Air Blast uses the Yellow glow, Thunderbolt the Purple one, but they are both Sky spells.  Same Element, different colors, basically.

That's part of what we want to know.  The bit I don't know just yet, is where the bit of code is that directs any particular spell, to the Vanilla "Glowing" effect used for it.  When we do, we could try changing Revivifier's pointer value to Load the Yellow one.

I believe that's the only thing we're missing.  Digging through someone else's program is rather like... I dunno, Indiana Jones trying to find El Dorado or the Holy Grail.  Or a real archaelogy site where they literally dig for buried ancient artefacts.  Indy is about to strike it lucky, he just needs to kick one more Nazi in the nutsack!  So there you go...  :laugh:

By the way, the documentation that someone gave me regarding this game's disassembly... is missing the code layout and 'Comments, for a few Banks.  Er... specifically:

-   Banks 0x0016-17 (22 & 23 in decimal)
-   Banks 0x001D-1F (30, 31 & 32 in decimal)

I could speculate about the reasons for that, but right now it may not matter.  Maybe that was all the person who gave them to me had as well?  Who's to say?

Thanks again!  Way past  8)!


The Monster Drop Value Data Table is now updated with the new info.  So once again, the Link to the folder on Google Drive, containing my documents so far:

Secret of Mana Information (Vanilla)
MASTER LINK:  Secret of Mana Information (Vanilla)

"Yes, the Author is indeed a horse!"  <zool>

Mr X

Queue I tried to trigger those random messages that happened when opening the treasures from the eye spy and kid goblin but now they show the text just fine, my guess is that because back then the characters were underleveled/low agility whatever, it may have tried to trigger a trap but it couldn't? Just a wild guess no idea what could cause something like that.


@Queue  Sorry to take up your time, I'd just like to ask one question (I think...   :laugh:).  Is the ZPS custom script used for Turbo an object-oriented programming language?  I'm not entirely sure, but reading through the ZPS Turbo file, I wonder if maybe a patch/mod won't work, unless it's placed within the correct class of virtual files to execute.  As well as in the exact right place somewhere in the file, no higher, no lower than that.

Whenever I placed new code into the file, in all but one case (out of 4-5 so far), I got an error message from ZPS Patcher.  From that point, the file would not open up in the Patcher menu until I removed the added code, or loaded a backup.

Of course, as we know, Comments (in the format '(skip over this little tantrum of mine)...
I'm really trying not to bash the original devs of this game, for making it difficult to understand their arbitrary and wildly-meandering code, leaving in lots of worthless bull**** and whatever else, but it's not easy you know.  :P

...are always skipped over.  That, at least, doesn't break the file.   ::)
MASTER LINK:  Secret of Mana Information (Vanilla)

"Yes, the Author is indeed a horse!"  <zool>


hmsong, changing the sword orb snowman even into the tiny snowman would probably be as complicated as changing him into a rabite. So, same consideration: if I find time or interest I may play with it, but in the short term at least it's functional.

Sorta the same goes for status effects: I think my goal will be to make moogle status function on enemies, as it's effectively unused, and Mired is functioning and was a lot of work, so would rather not just toss that out.

I got something working for Burst for the next release for you to try out. Preliminary version has it doing 1/8 (~12.5%) of the sprite's health, since it's 100 times easier to divide by 8 than by 10.

Basically, every detrimental spell calls a helper function to check for enemy elemental weakness, while beneficial spells just set weakness to maximum. Previous version of Turn Undead I was redirecting to the basic SSE.Func.Detrimental.Damage function which checks elemental weakness, next release it will be jumping straight to SSE.Func.Helper.Apply.Damage which assumes weakness tests and power calculations already happened. To add unmitigated damage to other spells requires writing more spell functions.

Thank you for relaying the drop tables info. As for the bottom right checkboxes, those bits may literally do nothing and the checkboxes are there to be thorough (so that if someone modified the game to use those bits, that editor would be able to set or clear them).

Mr X, thanks, that was enough of a clue to get me on the right track, I found the issue. Optimization mistake in Diverse_Chest_Traps meant a table lookup could get a garbage value when trying to select a random trap. I fell victim to TYA and TAY not having perfectly symmetrical behavior. More accurately, 8-bit/16-bit A register not having symmetrical behavior to 8-bit/16-bit X/Y registers.

zoolgremlin, search the Turbo ZPS for
'@OFF $D02EE0
it has some notes on the spell data block format (a little cryptic, but more than nothing). The first 8 bytes are separate from the next 0x30 bytes, which are separate for the last 8 bytes (which are the spell's stats).

Short answer to the object-oriented programming question: no.

Long answer: object-oriented programming is primarily a concept. Some programming languages are designed with that concept as a focus of their syntax, so they provide language-level constructs to facilitate organizing code into objects (or even effectively require the code be organized that way). ZPS is an assembly language with extra features added to split the code / data up into virtual files (because in zhaDe's original toolchain, they are actual separate files which he ran through a packaging utility to merge them into one monolithic ZPS file) and to tie some parsing-time text replacements to options in the patcher UI. The language itself has no concept of objects, though you could write object-oriented code using it (this would likely be ill-advised as ZPS isn't really robust enough to let you set up a scheme, usually powerful enough macros in the case of assembly languages, that would excise object-oriented bloat, both size and speed).

I assume you're mistaking ZPS's virtual files for something more complex than they are, like classes and objects, etc. Imagine each line that begins with & and ends with .asm as the start of a file containing code / data, and each line that starts with & and ends with anything except .asm (because everything that's not included with the ASM <> directive is treated the same) as a folder with associated settings (the settings are global constants, dynamically allocated addresses, and what other folders or files are contained within that folder).

For a minimal example, find &DEF.adf, a little below that is FILE <(encode)>, on the line below that put FILE <custom_folder>, then scroll to the end of the ZPS file and put
ASM <custom_file.asm>
@OFF $C00000
This will overwrite the first 16 bytes of the ROM with 0xFF bytes, so don't expect good things from this. Obviously change the contents of custom_file.asm.

Anyway, that should work; if it doesn't overwrite the first 16 bytes of the ROM either I messed up on the example, or...