News:

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

hmsong

I know you've been busy (I saw the recent 1.11 Reborn release on RHDN), and I'm sure you're busy working on incorporating Reborn and Relocalized...

But I gotta ask you once again.  Could you create a patch which changes the behavior of Mana Beast, specifically preventing it from rising from the bottom?  I took a look at its codes on bank 02, but I couldn't even begin to figure out where it is being controlled.  I'm guessing there's a RNG after the flying tackle (after the fire breath) where Mana Beast either descends or rises.  So either disable the RNG or replace the rising command with the descend command.

Mana Beast (the final boss, who is supposed to be a most badass boss of all the bosses) being such a sitting duck during the slow rise really frustrates me.

SnesFaust

Quote from: hmsong on June 09, 2021, 07:44:49 PM

Mana Beast (the final boss, who is supposed to be a most badass boss of all the bosses) being such a sitting duck during the slow rise really frustrates me.

On my last Play-through (210502), I found the fight to be miserable(not in a difficult way). I could only hit the boss with charges because the empowered mana sword regular hits would be 0. Most of the time, beasty would cast on me so i couldn't do much damage (if any at all). It was a 30-40 minute fight... not fun. I was pretty low level but don't remember exact numbers.

If the mana beast can only be hit with a charged sword 1+ (and always targeting me it seems) then id recommend an HP adjustment to around 7 or 8 k. It's that difficult to get the hits in.

If I'm missing something and you can drop 999's with regular hits while he's rising, then I think an hp increase respective of 4 or so dps windows would be sufficient.

Newcomers who don't know to cast the correct protective spells will have a great fight on their hands while seasoned veterans should be able to clear it with little trouble.

hmm could up physical damage making Lumina/gnome essential? So if you don't get party members protected, you're done. However, with everyone getting knocked out so much, the fight could enter RNG which isn't fun at all.

what do you think?


kaine23

So i gave this a quick shot and I like it! Love to do a full review and showcase of this sometime if it goes liv eon RHDN. How come the menu screens dont show up if I play this on retroarch, but on snes9x?

Queue

Version 2021-06-10:
https://www.sendspace.com/file/wl8p6m

Changes:
- updated Reborn to v1.11
- fixed "desciple" spelling mistake in vanilla event (Text\Event_Fixes)
- implemented Bug_Fixes\Snake_Boss_Block_Fix, removes erroneous floating block regions created by the snakes' first and second body segments
- implemented Bug_Fixes\Sprite_Can_Tap_Out, fixes a programming mistake that could cause enemy #2 from preventing a player controlling the sprite from being able to "tap out" (press Start to stop playing)
- changed memory check that determines if a ring menu is in use; lots of code relied on this, so hopefully nothing broke
- modified axe downward swing animation (Combat\Strong_And_Weak_Attacks) second frame to have a normal collision rectangle; it was comically oversized before
- fixed bug in Combat\No_Damage_While_Recovering that made it harder for enemies to hit a player with ranged attacks (it effectively made enemy projectiles zero width)
- added slight boss starting position tweak to Tonpole_Trio_-_Vengeance to get the left tonpole unstuck from the wall




Still continuing my work on analyzing and overhauling the game's collision code. If you snoop around in the ZPS file, you'll see some empty, hidden sections related to a new Collision_System_Extensions feature. Once things are just a little further along and better tested, I'll be including an emulator Lua script (for Mesen-S; it may work or be possible to make work with other emulators) that displays collision rectangles in the readmes\_extras folder.

I want to stress that this game's collision code really isn't that bad; just because people have repeated that it is bad over and over for decades doesn't make it true, but that doesn't mean there's not room for improvement.




I'll respond to posts a little later when I have the time.

kaine23

I really don't understand how armor equip in this works. so now if more than 1 party member can use the same armor i can only buy one? im stuck now with the girl having no armor cause it won't let me buy armors that the sprite and boy can use.

Thanatos-Zero

Quote from: kaine23 on June 10, 2021, 07:36:40 PM
I really don't understand how armor equip in this works. so now if more than 1 party member can use the same armor i can only buy one? im stuck now with the girl having no armor cause it won't let me buy armors that the sprite and boy can use.

This was a optional component of the patch.
If you wish to play without it, patch a new file by disabling the component and give it the same name as the old file, so you can continue using the same save states and save files.
If you use save states, you may need to save normally ingame first and reset for the changes to become active.

Queue

hmsong, look at this screenshot:


You can see 4 rectangles:
1) blue around boy
2) blue around Spikey Tiger
3) yellow at Spikey Tiger's feet
4) white around shuriken, obscured by the enemy

The blue rectangles are melee-vulnerable collision boxes. Yellow is ranged-vulnerable. Projectile attacks currently are white; I haven't picked a color for them yet. As you can see, the white and yellow rectangles aren't intersecting, so the ranged attack doesn't hit despite the projectile visibly flying straight through his body.

Here's a shot of the javelin coming up short:


Unlike Spikey Tiger, Great Viper and Vampire are completely immune to projectiles because they're on a different layer than the heroes.




kaine23, the menus use background mode 5, which some emulators don't emulate correctly. So my guess is whichever retroarch core you had selected was failing. Just a guess though.

Items\Unique_Equipment (On by default) limits you to 1 of any specific piece of equipment. The only time in the game where you could find yourself with no equipment for a slot for a given character is right at the beginning if you completely skip buying variety in the shops you encounter. Otherwise, throughout the game there will always be plenty of equipment to go around, but unlike vanilla, nothing will be useless (i.e. since in vanilla, when a shop sells two different chest armors, you just buy two or three copies of the stronger one, leaving the slightly lower defense item a pointless waste of space, which is boring and dumb).




Regarding the Mana Beast, feel free to keep brainstorming. I haven't gotten to reviewing him yet.

hmsong

That picture helps a lot regarding Spikey Tiger hit box.  Its projectile hit box is so weird.  No wonder I miss so much.

Yeah, I'll keep brainstorming for Mana Beast.  Not that I can change anything, but I can come up with ideas.  Priority is definitely the stopping of ascending action.  Btw, I assume Mana Beast's 4 buff spell slots (Lucid Barrier, Speed Up, Defender, Lunar Boost) can't be used, right?  Not that I want Mana Beast to use the buff spells (they're useless to Mana Beast, as they would waste precious time that Mana Beast can't afford to lose), but changing those spells to something else may make the fight a bit more interesting.  Not that I have any idea what those spells may be.

Memorex

Nice to see you're still able to make further improvements to this project!  :thumbsup:

lexluthermiester

Quote from: Queue on June 10, 2021, 05:08:54 PM
I want to stress that this game's collision code really isn't that bad; just because people have repeated that it is bad over and over for decades doesn't make it true
Fully Agree!

Quote from: Queue on June 10, 2021, 05:08:54 PM
but that doesn't mean there's not room for improvement.
Fair enough. It will be interesting to see what changes you make and what effect they will have!  :thumbsup:  :beer:

hmsong

#2110
I was actually hoping to somehow add the missing Gaia's Navel destination in the cannon travel guy after the Upper Land opens up, so I was experimenting to see how that would work.  And I actually got it to work, using the exactly same bytes as before:


%OFF% Event0CE ' $E126B7 Row: 319
\event \if_flag== 12 00 \goto 0FB \flag== 0F 00 \call 408 \text_open \gold_show
TEXT ^G u f u f u , _ c o m e _ o n ! \n
TEXT 5 0 _ ^G ^P _ p e r _ t r i p ! \n
\event \if_flag== 1E 7F \goto 0D1
TEXT (

%OFF% Event0D1 ' $E127EB Row: 338
\event \if_flag== 1E 77 \inc= 1E
\event \wait_input \text_clear
TEXT ^P i c k _ y o u r _ d e s t i n a t i o n ! \n
\event \wait_input \text_clear
TEXT 1 : ^W a t e r _ ^P a l a c e \n
TEXT 2 : ^G a i a ` s _ ^N a v e l \n
TEXT 3 : ^U p p e r _ ^L a n d \n
\event \wait_input \text_clear
TEXT (
\event \text_opt_start \text_opt_define= 01
TEXT 1
\event \text_opt_define= 03
TEXT 2
\event \text_opt_define= 05
TEXT 3
TEXT )
\event \text_opt_end== \goto 0FF \goto 0FD \goto 0FE \goto 0CD \end


I figured that you could incorporate that into Reborn.  The problem is... I based this style on Kakkara cannon travel guy from v1.10.  I see that in v1.11, you changed the option style for Kakkara cannon travel guy (you don't use the "1 2 3" option anymore).  And I don't see any obvious way to change to the v1.11 style, due to 28 character limit.  What do you think?

Also, in Event Fixes, you put:

%OFF% Event556
\event \nop3 \text_open


What does \nop3 mean?

Edit: I guess \nop3 is some kind of "skip 3 bytes".  Not entirely sure how that works.

kaine23

Quote from: Queue on June 11, 2021, 12:59:36 AM
Items\Unique_Equipment (On by default) limits you to 1 of any specific piece of equipment. The only time in the game where you could find yourself with no equipment for a slot for a given character is right at the beginning if you completely skip buying variety in the shops you encounter. Otherwise, throughout the game there will always be plenty of equipment to go around, but unlike vanilla, nothing will be useless (i.e. since in vanilla, when a shop sells two different chest armors, you just buy two or three copies of the stronger one, leaving the slightly lower defense item a pointless waste of space, which is boring and dumb).




Regarding the Mana Beast, feel free to keep brainstorming. I haven't gotten to reviewing him yet.
Oh I didnt realize it was an optional component!

Queue

hmsong, it's never been "missing" in the sense that it's not like the Japanese version let you choose between Water Palace, Gaia's Navel and Upper Land. At the point in the game where Gaia's Navel is replaced with Upper Land, there is basically no longer a reason to go back to Gaia's Navel, and removing that choice keeps the player on track to proceed to the Upper Land.

I was pleased to see that we could fit the three destination choices into the Kakkara cannon travel dialogue, because the numbered list was garbage (you're shown a list, then the list goes away and you're just staring at 3 numbers). It was only that way because the vanilla English somehow failed to try fitting it in there (in Japanese, it wasn't a numbered list). It wasn't even tough to fit.

Anyway, I don't see wedging in that extra cannon travel destination as being worth the trouble. The player should be heading to the Upper Land at that point, and if they want to go back to Gaia's Navel, they can walk, or wait until they have Flammie and then fly there. If there was an easy way to fit the choice where it looked nice (3 descriptive choices on one line), I'd have it as an optional patch, but degrading it to a numbered list would be a negative. A significant amount of negative feedback I've gotten over the past months was about the crummy dialogue choices in Reborn, which is why V1.11 overhauled and cleaned them up, so I'm loathe to reintroduce something that garnered complaints.

That said, I am impressed at how you fit the numbered choice in place of that existing dialogue. That is some nice reorganizing and use of space; I really hate to see that cleverness go to waste. It should be possible to fit a numbered choice onto the same textbox as the list. If you could work the details out on that, I'd be game to hook it up as some sort of optional cannon travel destination feature (and I'd aim to make it work with all scripts, not just Reborn).

Like, where the text box looked something like:

1:Water Palace
2:Gaia's Navel
3:Upper Land         (1 2 3)


So you'd have the list visible while selecting a number at the bottom right.

Alternatively, maybe it could be split to two rows, where only the bottom row highlights, but that should let it fit:

(Water   Gaia's  Upper)
(Palace  Navel   Land )


Regarding \nop3, yes, it basically means skip three bytes.
nop = no operation (do nothing, but take up space)
3 = three bytes long

If you search the ZPS for \nop1, you'll find:
/01 \nop1
/2D90 \nop2
/42000F \nop3
/38802D90 \nop4
/4200F02D90 \nop5
/4B0000002D90 \nop6

Which are pre-defined event commands to pad that amount of space. \nop1 delays the event by a frame, so the ideal is to always use the longer versions unless you absolutely need to only waste a single byte of event space.

The event "fix" for Reborn 556 is to remove the boy's name from the Northtown Ruins NPCs. Reborn kept the boy's name because it really is what they had in the Japanese script, so it was retained for literal accuracy, but I don't think it was intentional, so provide a choice for changing it.




kaine23, everything's optional. If you uncheck every checkbox in the patcher, and then apply to a vanilla ROM, you'll get an unchanged vanilla ROM as output.

hmsong

#2113
I'm inclined go with the 1st choice.  That looks better than the 2nd one.  Is there a way to put multiple spaces without using "____"?  Each space takes a byte, and I may need a way to save spaces.  I'm sure there's that "\text_opt_define= ??" thing, but I don't know if that'll work on non-choice text, and I don't know how many byte that is.

Also, for the other scripts, I should probably keep the number after the text clear, right? (my initial version)  Their Kakkara cannon guy does the same thing, so it'd be weird if I didn't do that.  I'm not sure how much space the other versions have, so I may have to adjust.  I didn't take a look yet.

Another thing.  I noticed that when you land on the cannon travel guy area (via Flammie) on Southtown or Ice Country, the music does not change.  But if you land in any other areas with the cannon (such as the two Upper Land areas), the music changes.  So I'm pretty sure the music was supposed to change to the local area music for both Southtown and Ice Country.  Could you make a patch to correct that?  Thanks.

Queue

#2114
\multispace= ##, \multispace@= ## and \text_opt_define= ## all can be used in place of a bunch of spaces. All three are two byte commands, a byte for the command plus a byte for the length argument:
e.g. \multispace= 05
The alternate form of \multispace=, \multispace@=, is only used in the fullscreen menus in vanilla, and there are some technical differences to how it works, but it should be functional in normal events.

However, they're normally only used for leading spaces on a new line; I don't remember how well they work in the middle of a line, and there may be differences in behavior between vanilla, VWF / Relocalized and Reborn with Proportional Font. You'll need to experiment.




If I understand your question about "number after the text clear" then no, the whole point is to fit everything in one text box, regardless of script (vanilla, VWF, Reborn, etc.). The vanilla (and older Reborn version) having a numbered list, then hiding the list and showing a vague (1 2 3) prompt by itself is terrible interface design. I'm probably going to whip up a vanilla event patch just for that Kakkara prompt as a result of our discussions.




Yeah, music change upon landing mistakes are just vanilla sloppiness. I forget if it's a Reborn fix, or something else, where I dealt with that for the Tropics village. Anywhere where you notice that happening, feel free to let me know. It may be harder to fix for some locations than others (it depends on if the specific map already has an auto event, and if so, what that event already does), but it's always possible to fix.




If it's not obvious, stuff related to overhauling collision code has been taking me a long time, so cut me a little slack if I don't get to any of this quickly. As pandemic restrictions have been unwinding where I live, I've found myself with less and less free time as stuff that's been pending over the last year+ suddenly needs to get done.




Edit: Here's how I'll probably "fix" the vanilla Kakkara cannon travel event:
%OFF% Event0E3
\event \wait_input \text_clear
TEXT _ 1 : ^M at a n g o \n
TEXT _ 2 : ^I c e _ ^C o u n t r y \n
TEXT _ 3 : ^T h e _ ^E m p i r e
'\event \wait_input \n
\event \multispace= 11
TEXT _ (
\event \text_opt_start \text_opt_define= 13
TEXT _ 1 _
\event \text_opt_define= 15
TEXT _ 2 _
\event \text_opt_define= 17
TEXT _ 3 _ )
\event \text_opt_end== \goto 0FF \goto 0E7 \goto 0E8 \goto 0E9 \end

Note the compacted "M at a n g o" letters "at" to fit a \wait_input that vanilla lacks, and then scrapping the \wait_input \n, and using a multipace and altered text_opt_define's to position the 1/2/3 choice in the bottom right corner of the textbox. It would be possible to simply show all three choices on one line, but this variation retains vanilla's numbered list but improves usability, for a more "authentic" but less stupid experience.

The all-on-one-line approach would simply be:
%OFF% Event0E3
TEXT (
\event \text_opt_start \text_opt_define= 01
TEXT ^M a t a n g o
\event \text_opt_define= 09
TEXT ^I c e _ ^C o u n t r y
\event \text_opt_define= 15
TEXT ^E m p i r e
TEXT )
\event \text_opt_end== \goto 0FF \goto 0E7 \goto 0E8 \goto 0E9 \end

hmsong

Quote from: Queue on June 17, 2021, 03:52:41 PM

Edit: Here's how I'll probably "fix" the vanilla Kakkara cannon travel event:
%OFF% Event0E3
\event \wait_input \text_clear
TEXT _ 1 : ^M at a n g o \n
TEXT _ 2 : ^I c e _ ^C o u n t r y \n
TEXT _ 3 : ^T h e _ ^E m p i r e
'\event \wait_input \n
\event \multispace= 11
TEXT _ (
\event \text_opt_start \text_opt_define= 13
TEXT _ 1 _
\event \text_opt_define= 15
TEXT _ 2 _
\event \text_opt_define= 17
TEXT _ 3 _ )
\event \text_opt_end== \goto 0FF \goto 0E7 \goto 0E8 \goto 0E9 \end

Note the compacted "M at a n g o" letters "at" to fit a \wait_input that vanilla lacks, and then scrapping the \wait_input \n, and using a multipace and altered text_opt_define's to position the 1/2/3 choice in the bottom right corner of the textbox. It would be possible to simply show all three choices on one line, but this variation retains vanilla's numbered list but improves usability, for a more "authentic" but less stupid experience.

Wait wait, can vanilla even use the compacted letters? (such as "at" instead of "a t")  I thought vanilla and VWF couldn't, which was why I'm currently struggling with vanilla (I got VWF and Reborn done, and working on vanilla... gonna get to Relocal later).  Also, how does multispace work?  I'm guessing the multispace counts from space 0, and not the "last text letter", right?

You're right about that idiotic vanilla choice for that cannon travel guy 3 choices.  I'll work on that too.

Queue

#2116
All, uh, text systems (vanilla, VWF / Relocalized, Reborn) can use the DLE letters; they're a feature of vanilla (that just went unused). Timbo used them for Relocalized menu text (and such), but it wasn't that Relocalized added the feature.

Their biggest limitation with regard to things like spell descriptions is how DLE letter pairs are mostly lowercase while a lot of vanilla menu text (and such) is all uppercase.

Yes, multispace works like you think, counting from space 0.




My current plans for vanilla Kakkara cannon travel is:
%OFF% Event0E3
'\event \text_clear
\event \call 5FE
TEXT _ 1 : ^M at
'TEXT              a n g o \n
'TEXT _ 2 : ^I c e _ ^C o u n t r y \n
'TEXT _ 3 : ^T h e _ ^E m p i r e
COPY C91F09 21
'\event \wait_input \n
TEXT _ _# 11
TEXT _ (
\event \text_opt_start \text_opt_define= 13 ' 02
TEXT _ 1 _
\event \text_opt_define= 15 ' 07
TEXT _ 2 _
\event \text_opt_define= 17 ' 0B
'TEXT _ 3 _ )
'\event \text_opt_end== \goto 0FF \goto 0E7 \goto 0E8 \goto 0E9 \end

I might insert a Event0E3.Event_Fixes instead of using the COPY, but this is vanilla only, so might be low enough maintenance to not matter. There are a couple wasted spaces there in the middle near the multispace (encoded using _# instead of \multispace=), but multispace behavior is somewhat fragile and doesn't like interacting with \nop and other non-letter event commands.

Erm, and other wasted spaces are just vanilla, left there so this changes as few bytes as possible.

It looks like this:


Changed bytes highlighted:

hmsong

Okay then.  I guess that'll save me a lot of trouble with vanilla edit for the Potos cannon guy thing.  Btw, I would like to make things "consistent" with their own scripts (whether they'd be vanilla, Relocal, VWF, or Reborn), and I realized that the "spaces between choices" differ, depending on the script.  For example, in vanilla and VWF, the spaces between the choices are usually 2 spaces (although sometimes, they differ).  But in Reborn, the spaces betwen the choices are 1.  There's also the space between "(" and the first choice (same for ")").  I'm trying to make it so that they match their own script, for consistency.  It's a pain to change them individually, but I don't mind the work (it's not that much), now that I know that DLE can be used for all scripts.  So

( 1  2  3)


instead of

(1 2 3)


I hope you can do that for vanilla when you fix that Kakkara cannon guy.  I'll do the minimize space for Reborn for Poto cannon guy, since Reborn makes the spacing in such way.

Also, I see that you put the (1 2 3) on the very corner bottom right.  I made it little bit closer to the center (although still the bottom right).  If possible, I would like it to match with what you're doing.  What do you think we should do?  Should we make it roughly center, or should we make it at the corner?

Queue

Whoops, where I was typing DLE, I meant DTE. I know we know what we were talking about, and both acronyms actually make sense (Dual Letter Encoding vs. Dual Tile Encoding), but just wanted to get that clarification out there since DTE is the common jargon.

If you look in the screenshot above I had it as:
( 1 2 3 ) [i.e. single spaces between each character including the parentheses]
But you're right, vanilla is more often 2 space gaps (well, and just kind've messy and inconsistent in general), so I'll switch it to:
( 1  2  3 )

I had it shifted right, to get it away from the third label:


With the wider spacing, there are now only 3 spaces between "Empire" and the left parenthesis. With that change, it'd actually take me fewer bytes to not use \multispace=... Could you post a screenshot of what yours looks like?

hmsong

I'll post a bunch of pictures, for all scripts.  It's just that for Reborn (which was the first one I did), being all the way in the corner bottom right seemed like there's too many spaces between "Upper Land" and "(1 2 3)".

I'm at work right now, so I'll edit this post tonight (or do a new post), along with pictures and everything.  I finished the draft for all scripts, and I just need to check if I got the byte size right for all scripts... by creating the unedited rom, then the edited rom, then use Lunar to create the difference patch, then use ipspeek to see if I screwed up somewhere (I don't know any other way to compare two roms).  And if the created ips file is in KB, then that means I screwed up somewhere.

Is there a way to use HxD to compare two roms?  I feel like there would be a way, but I don't see any obvious way.