11 March 2016 - Forum Rules

Main Menu

Secret of Mana, Turbo - Beta 231108

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

Previous topic - Next topic


Quote from: Skyy on June 20, 2020, 04:24:30 AM
Say I didn't check the readmes of each individual patch yet but is it intended that you can only have one of each equipment-item in your inventory at any given time?

Uncheck "Unique Equipment" to disable that change.


Quote from: kethinov on June 23, 2020, 09:40:14 PM
Uncheck "Unique Equipment" to disable that change.

Ah I see, thanks!


Version 2020-07-06:

- Moved Level_9_Weapon_Perk from Balance to Items category
- Fixed Balance\Axe_Beak_-_Sonic_Sleep; his special attacks will now do increased damage and cause unconsciousness
- Improved reliability of Turbo_Logo; it was timing sensitive
- Optimized Tropics and Kakkara dynamic world map data for Miscellaneous\Enhanced_World_Map
- New content added to Miscellaneous\Enhanced_World_Map: check the volcano cloud cover at the relevant point in the game (bonus visual effect if before a certain cutscene)


Woo!  Update.  Thanks.

Volcano?  There was volcano in SoM?

Oh, you mean the Pure Land.  Wow, that was neat.  It even changed the globe/flat map pictures.

Btw, I felt that the timing of Turbo logo is a bit weird, relative to the music (it comes out in the middle of fast beats, instead of end of certain  pause).  I'm not sure if that was always the case or I'm just feeling it now though.  Maybe it's because I'm using the vanilla music instead of MSU.

Okay, I think there's some sort of bug -- after the Pure Land opens up, but before the Mana Tree gets destroyed, in back-of-Flammie view, when you change direction from side to side, the TREE moves (teleports).  To see, go near the Pure Land, but don't land.  Then have Flammie turn in circles, and see the Mana Tree move.  This doesn't happen in the top view though.


Version 2020-07-09:

- Minor improvements to Technical\Enable_FastROM
- Further enhancements to Miscellaneous\Enhanced_World_Map:
-- Ocean now has mild wave visual
-- Icebergs have staggered animation loops
-- Frozen forest trees have 2 alternating animations (checkerboard distribution)
-- Gold isle shiny houses have 2 alternating animations
-- Forest center tiles now have 4 variants (random distribution)
-- Fixed some incorrect forest tiles on the world map

The above should make for a far more visually appealing world without straying from the vanilla style. I still have more I want to do for at least the desert and maybe the fields around Northtown. Hm, and maybe the Haunted Forest.

hmsong, the Turbo logo didn't change in timing to any human-noticeable degree (it can appear 1 frame later than before). It's never been timed to the music: it appears an arbitrary length of time after the text scroll finishes, basically. It's intended to be sudden and abrupt, since the whole point is it's tacked on (and after everything else in the vanilla opening finishes so as to not be a blemish like typical title screen edits). The recent fixes for it were due to the randomness of the birds sometimes using up too much NMI time (I think, I didn't spend a lot of time on it) and causing the Turbo logo to fail drawing in its entirety. I never saw it fail on real hardware (though in theory it should've been possible), but it could fail in "accurate" emulators so I eventually got around to fixing it.

The Mana Tree is working as intended; it's rotating in place to try and fake perspective (so it always looks like it's sticking above the other trees, not only when facing, say, north) and looks like a circle from the top-down view. Due to the limited tile choices, the 4 cardinal directions were the only valid layouts, so it snaps into a new position as you cross each ordinal direction. Not a great sign that it apparently wasn't obvious; I feared that may be the case, but oh well, the Mana Tree still deserves special treatment even if it's a bit janky.


Ahh.  I didn't know it was intended.  In that case, cool.  I shall see what kind of effects the new map things have for the update.  Thanks.  I want to contribute more, but I'm out of ideas, for now (other than Dispel Inn, which seems a bit beyond my ability).

Another bug though.  I don't know if this is vanilla bug or Turbo bug (I'm betting it's vanilla bug).  It seems that Dispel Magic lv0~3 doesn't dispel Stat Up/Down (literally no effect).  I tried with Lv3 Dispel Magic on Lv3 Defender, and it's definitely not working (I even timed it after multiple Dispel Magic -- same duration even after multiple Dispel Magic).  It dispels the saber though.  I'm not sure about barriers.

Mr X

Maybe because the spell that was used was at a higher level than your dispel? Always thought dispel worked like that - need to be at least on the same level as the spell used for it to work


Quote from: Mr X on July 10, 2020, 02:36:13 AM
Maybe because the spell that was used was at a higher level than your dispel? Always thought dispel worked like that - need to be at least on the same level as the spell used for it to work

That's why I said, "I tried with Lv3 Dispel Magic on Lv3 Defender, and it's definitely not working (I even timed it after multiple Dispel Magic -- same duration even after multiple Dispel Magic)."  And even if it didn't work immediately, it would have reduced the time.


 :woot!: :woot!: :woot!:
This was my favorite game as a kid and I'm so happy to play it with new life breathed into it!!

Quick Question. I noticed in Gaia's Navel (haven't gotten too far in yet) I can only purchase/equip one of each type of armor. So for instance I can only buy one spikey suit, and can't get 2 for the sprite and Randi. Is this intentional? I'm game if so just wanted to check if bug or feature. I tried looking around if armor restrictions are mentioned but I didn't see anything. Actually looking through the thread this might fall under unique inventory feature.

One little thing I noticed the sprite when he throws the boomerang returns to his hand before the throw animation is done but I can't remember if that happened in the vanilla game or not.

Mr X

Quote from: hmsong on July 10, 2020, 07:51:53 AM
That's why I said, "I tried with Lv3 Dispel Magic on Lv3 Defender, and it's definitely not working (I even timed it after multiple Dispel Magic -- same duration even after multiple Dispel Magic)."  And even if it didn't work immediately, it would have reduced the time.

Oh shit I missread it, my bad.


tca8888, yes, the armor thing is intentional and due to Items\Unique_Equipment. I know at a glance it seems harsh, but the game doesn't have that many pieces of equipment to begin with, yet in vanilla there are quite a few that almost every player skips because you can just buy two (or three) of the slightly better equipment and give it to the whole party. It also removes some inventory overload due to enemies that have equipment as a drop. There is a spot late in the game that this meaningfully increases the difficulty, but for most of the game it just means you face more interesting equipment choices and variety than in vanilla. Also, this is easily the change that confuses the most people, where it's not obvious it's intentional, so you're not alone in wondering why you can't buy more.

The boomerang thing is vanilla behavior. If I ever get to adding the boomerang to Graphics\Polished_Weapons, it not visibly returning to a character's hand until it actually has would be an enhancement it gets, but we'll see if I ever get to that.

hmsong and Mr X, here's the exact mechanics for Dispel Magic (it's same in vanilla and Turbo):
1) calculate spell power (the same as if it was a damaging spell)
2) reset target's weapon charge
3) if spell level 8, maximum dispel
4) if spell level 4-7 and single target, maximum dispel
5) if spell level 0-3 or multi-target, partial dispel
6) if maximum dispel:
6a) remove the timed buffs: attack, accuracy, evade, defense
6b) remove saber buff
6c) remove wall
7) if partial dispel:
7a) calculate (spell power / 4) - (target mag def / 2)
7b) subtract calculated value from the timed buffs
7c) calculate (spell level + 1) * 4
7d) subtract calculated value from remaining saber uses
7e) calculate (spell level + 2)
7f) subtract calculated value from remaining wall uses
7g) show dispel failed message if wall wasn't removed

Step 7a can result in 0, in which case no time is removed from the timed buffs in 7b. Steps 7c and 7e will never be 0, so they always at least partially work.

Comprehensive Dispel adds Moon Energy and Lucid Barrier removal to steps 6 and 7.

I think that's all accurate. So, no bug, just, partial Dispel Magic is much weaker against the timed buffs. Arguably a weird design, but working as it was programmed.


Oh.  I guess my level wasn't high enough or something.  I just figured that the first Lv0~3 spell animation had error.  Thanks for the info.

I know you're busy with more map redesigns and that new translation, but when you have the time, could you create a sub-patch (under Strong_And_Weak_Attacks) which switches the Arrow Rain to DPad + Attack? (default is just Attack button)  Or teach me how to do it, if it's something not too advanced?  I also want to change the distance of the Arrow Rain.  I tried several things (changed 16 to higher number), but that just ended up freezing the game.


I'll have to evaluate how cleanly I can work in configurability for that, it may be too messy. Not really sure which "16" you're talking about changing. If it was ":16" at the end of a line of code, that's not a value, that's an address size override; for the sake of code parsing, it changes something like $7ECF00 to just $CF00. Regardless, here's the info so you can experiment:

Search for:
/#0030 rainOfArrows.range <- this should be all you need to change to adjust range
@OFF tbl_attacks[] <- try swapping the 82 and 01 on the bow line


Hi. Been following this project for a while, and I'm super excited about it.

However, after fast approaching nearly 100 pages in, it's getting almost impossible to understand what the status is at the moment. There is a lot of technical talk, and it's hard to decipher for someone not in the know.

Is the goal here to combine all the countless mini hacks made by Kethinov, hmsong and Queue to make an ultimate version of Secret of Mana? How many different optional variations of the final release will there be?

So I guess what I'm saying is; it would be nice with some sort of a status update on where things are at, what's being worked on and what's left to do? And not least, what the final goal is, in relation to all that's being discussed for the last 70-80 pages.

Anyway, best of luck to everyone involved.



Ohh.  It worked.  But I noticed something strange while testing (unmodified version).  For regular bow shot (not the Rain of Arrow), when you shoot in up direction, the arrow goes a lot further than any other direction.  I'm not sure why that's the case.  Could you check it out?

Actually, that seems to be the case for all projectiles.  Or maybe it's that aiming down has shorter distance.  I can't quite tell.  And, whip's secondary attack (dpad + attack) seems to have shorter distance when aiming up (left, right, and down have the same distance).

Also, would you be able to make the boomerang's secondary attack (the quick throw, which is d-pad + attack) be aimed diagonally?  According to tbl_attacks[].asm, I think the NGI intended to create a diagonal attack for some weapons.  It would be awkward for all other weapons (mostly would require new graphic or something crazy), except Boomerang.

Btw, if you have saber magic casted on you when you save, and then you reset, the saber resets (although not the stat up/down, and I'm not sure about the barriers).  I did not know this.  Maybe this is something you can use as a reference for Dispel Inn?


I'm guessing what you want is the log list of what each version changed (text file).  I guess that's not a bad idea, but it's really up to Queue.

As for your other question, this Turbo project continues to be modified over and over, because there's always something to be improved upon.  I'm not even sure if there can truly be the "final" version, since it's been playable (with no errors or anything) for a while now -- meaning, it's been the "final" version for a while.  It's just that Queue continues to add/improve numerous things to make it better.

Queue finished his project a while ago, but people like me continue to request/beg him to add/change numerous things, and he's nice enough to listen and indulge us.  And he even teaches people (like me) to create our own patch, and if he thinks it's worthy, he puts it in his package.  Pretty much all of my hacks were thanks to Queue teaching me.

Mr X

Just an appreciation post of how far Turbo has come and just how awesome it became with each update, definitely a lot more fun to play compared to the original game.


ifightdragons, the goals were:
1) to make a ROM hack that removed the game's stamina system
2) to make all available-at-the-time SoM ROM hacks compatible with each other

1 is long finished, though I occasionally make slight adjustments to it.
2 became a moving target and many more SoM hacks were released during the development of this project; hopefully I'll catch up someday.

There is and will be only one release variation, but this project uses a custom patcher that allows selecting which features you want enabled: literally all of them can be disabled, in which case, when you patch a vanilla ROM, you get the vanilla ROM back as output. If I do finally reach an intentional final release, it will include an IPS file with all settings at their defaults.

The current status is it's perpetual beta: you could grab a version at any point and enjoy it, but if you came back in 3 months, there'd be a few more features. This doesn't mean it has bugs (it does occasionally, but they get discovered and fixed): I don't subscribe to that definition of beta, it simply means not final.

I keep a private to-do list, but many things on it will never be made, and some things I've been meaning to do aren't on the list. I work on this at my whim and fancy, usually while drinking a morning cup of coffee (I do this instead of a crossword or sudoku, etc.), and there currently isn't a solid final goal. I try not to post much about what's being worked on because I'd prefer to be able to scrap something if it sucks without it disappointing anyone who was anticipating it; if I do post about something before it's released it's because I'm anticipating it (or it works and I'm just squashing bugs; quite a few features get held back from public release long after they're functional because of some obvious flaws I haven't dealt with).

Also, the more time spent writing here (or anywhere), the less time I actually spend ROM hacking: for example, this post will cost probably half of the time I spend today messing with SoM.

hmsong, as far as I know, visual differences in weapon range are mostly an optical illusion, and that they hit the same distance from an actor regardless of direction. For melee weapons, the animation doesn't necessarily perfectly match the collision area for the attack, and for ranged weapons, projectile height adds to the visual Y coordinate of the projectile, which makes them appear higher on the screen. There may be exceptions to this and testing or adjusting any of this is pretty annoying.

I added the diagonal columns to tbl_attacks[] (original NGI had only two columns per weapon) and I added them specifically for the sword (and then used them to improve an easy-to-miss-catch on a certain boomerang throw). The game's projectile system has no provisions for diagonally moving projectiles as far as I recall, so making projectiles move diagonally would probably require a lot of new code. I had briefly entertained the idea of having the bow shoot diagonally, but when I looked at the projectile code, it looked like it would require significant additional programming AND I was sick of the bow, having recently (at the time) dealt with a long series of bugs related to the rain of arrows.

I know there are some state consistency issues with saving and loading in vanilla, but never got around to dealing with them. Regarding Dispel Inn, I've always had a pretty good idea of what it'll take, it's just a pain in the butt that I don't want to work on; every time I've poked at it a little I've not enjoyed it.

Mr X, :thumbsup:


Oh, so the weapons are just visual difference?  I confirmed that the aiming-up whip's distance is the same, despite the visual.  I dunno about the projectiles, but I'm guessing that's the same too (maybe).  If I created a sub-patch that switches the arrow default button for [strong_weak_attacks], would you be willing to add it to your package?

I guess diagonal boomerang is difficult to do.  Well, I figured that was the case, since it's a completely new mechanic.  Well, it was worth a thought.

QuoteRegarding Dispel Inn, I've always had a pretty good idea of what it'll take, it's just a pain in the butt that I don't want to work on; every time I've poked at it a little I've not enjoyed it.

I see.  That's a shame.  I'd have really liked it.  I can only hope that someday, you'll get to that.  In any case, thanks.

On to a different matter.  I'm thinking of creating the descriptions for [Energized_Weapons], so that you can add them.  I know it starts on $CAA705 for vanilla, but I have no idea how to change that for Relocalized.  Would you be willing to create something similar to "&(mods)\Magic\SpellDataDefinitions\text\name_addresses" that you did for the spells, except instead for the weapon description?  I'll probably have to use SSE.Text.Extended.Extra.x for the descriptions too, but still.

I'm thinking of changing the magic required for Moon Palace crystal ball (it requires Lucent Beam, or Thunderbolt if Early Luna is ON).  Specifically, to Shade's Dispel Magic -- in Vanilla, you don't need to beat Dark Palace to beat Moon Palace (even Karon's Ferry is unlocked when you beat Light Palace), and therefore don't need it to beat Tasnica.  I want to make it so that you'd need both Light and Dark to clear Moon Palace.  I figured it'll be a simple change to the crystal ball, but looking at Early Luna codes, I have no idea how Lucent Beam was changed to Thunderbolt.  Does this require changing the event or something?


Yeah, I'll work out something so weapon descriptions are reasonable to change. Items\Weapon_Spell_Synergies will also benefit from that when I get around to working on it more. Ideally I'd hook up all text to symbolic names, but that'd take a ton of time that I'm currently using on the translation project. That said, SAP will also benefit from that so it may end up happening when that project needs the ability to change menu text.

Regarding the crystal orb, it is more complicated than I expected. It's controlled by event 2C4, which calls event 352, then checks event flag 9A's value, which are related to Sylphid (in vanilla, 354 and 9C, which are related to Lumina). Event flag 9A is set by event 352 based on what spell was cast, but I haven't analyzed exactly how event 352 works yet. Events 350-357 and event flags 98-9F are related to what element a crystal orb reacts to and work somewhat similarly to each other. Shade is event 355 and event flag 9D. I'll need more time to actually work out how they work, but that's at least something for you to go on.

Edit: Okay, so the events aren't quite as complex as they seem, they're just bulky due to limitations of the event system, not unlike how Dispel Inn's events would be bulky. The events directly attached to the Crystal Orbs are simple: call a helper event that's for a certain element, then check its related event flag to see if the correct spell was cast on it. Looking at Early Luna, I don't totally understand why Kethinov changed event 352; I think leaving it alone and changing event 2C4 to use
\event   \if_flag== 9A =>2 =<2 '\goto 2C5
would have the same effect, but I haven't tested so maybe I overlooked something. My best guess is not having fully deciphered event data and making due with something that worked.

Anyway, the events and event flags match up to elements and spells like:

Gnome350983=Speed Down,2=Gem Missile,1=Earth Slide
Undine351993=Energy Absorb,2=Acid Storm,1=Freeze
Sylphid3529A3=Silence,2=Thunderbolt,1=Air Blast
Salamando3539B3=Lava Wave,2=Exploder,1=Fireball
Lumina3549C1=Lucent Beam
Shade3559D3=Dispel Magic,2=Dark Force,1=Evil Gate
Luna3569E3=Lunar Magic,2=Magic Absorb,1=Change Form
Dryad3579F2=Burst,1=Sleep Flower
I think I got all of that figured out. I haven't had a chance to try anything in-game, but reading the event, that looks right. Each helper event also checks if Analyzer was cast on it and shows the "Soandso's magic will work!" message if so.

These events seem to rely on Crystal Orbs being the first loaded enemy, and I don't know if there are any provisions to guarantee that happens, so adding a Crystal Orb somewhere one would be potentially tricky, and probably means all existing ones are close enough to where you enter to guarantee they load immediately (and can snag the first enemy slot).


Hmm.  There must be something I'm doing wrong.  I did the following (not using Early Luna):

%OFF% Event2C4
\event \call 355
\event \if_flag== 9D =>1 =<1 '\goto 2C5

%OFF% Event355
\event \flag== 9D 03

The Orb does say that I need Shade magic, but I can't get it to work.  It works with Evil Gate, but I'm trying to get it to work with Dispel Magic (which I'm guessing will work with Black Hex).