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

Queue

At least in the old version of HxD I use it has a very limited ability to do a comparison. In its menu bar, Analysis > File-compare > Compare..., then F6 (and Shift+F6) to search for differences between the two chosen files. It doesn't highlight the differences, so unless there are very few, it's a very tedious way to check for differences. I'm pretty sure we've talked about this, but the program I use for this sort of file comparing isn't freeware, unfortunately. That said, when verifying space-constrained overwrites like this, I do just use HxD, go to the same address in the vanilla ROM and the patched ROM, then flip back and forth between tabs with ctrl+tab.

Regarding spacing in Reborn, I'd suggest setting the positioning with Proportional_Font Off, and then however it turns out when it's On is just how it'll be... unless it's just way uglier than I'm imagining.

hmsong

#2121
Okay, here's what I have (along with the codes):

vanilla:

%OFF% Event0CE ' $C91ADC
\event \if_flag== 12 00 \goto 0FB \flag== 0F 00 \call 408 \text_open \gold_show
TEXT _ ^H i ! _ ^T r a v e l _ s p e c i a l : \n
TEXT _ 5 0 _ ^G ^P _ p e r _ t r i p ! \n
\event \if_flag== 1E 7F \goto 0D1
TEXT (
\event \text_opt_start \text_opt_define= 02
TEXT ^W a t e r ^P a l a c e
\event \text_opt_define= 0E
TEXT ^G a i a ` s ^N a v e l _ )
\event \text_opt_end== \goto 0FF \goto 0FD \goto 0FE \end

%OFF% Event0D1 ' $C91BD1
\event \if_flag== 1E 77 \inc= 1E
\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 _
\event \multispace= 10
TEXT (
\event \text_opt_start \text_opt_define= 12
TEXT 1
\event \text_opt_define= 15
TEXT 2
\event \text_opt_define= 18
TEXT 3
TEXT _ )
\event \text_opt_end== \goto 0FF \goto 0FD \goto 0FE \goto 0CD \end


As you can see, vanilla didn't put space between the location names (WaterPalace instead of Water Palace).  I'm thinking about fixing that for this patch (I would have to use DTE), since only events 0CE and 0D1 seems to do that (0CF seems to put a space between Gaia's Navel name).  I hope it doesn't go over 28 character limit or something for 0CE.
Edit: Crap, it is.  I can still fix for event 0D1.  Do you think I should?

VWF:

%OFF% Event0CE ' $E122BC
\event \if_flag== 12 00 \goto 0FB \flag== 0F 00 \call 408 \text_open \gold_show
TEXT _ ^H i ! _ ^T r a v e l _ s p e c i a l : \n
TEXT _ 5 0 _ ^G ^P _ p e r _ t r i p ! \n
\event \if_flag== 1E 7F \goto 0D1
TEXT _ _ ( _
\event \text_opt_start \text_opt_define= 04
TEXT ^W a t e r _ ^P a l a c e _ _
\event \text_opt_define= 12
TEXT ^G a i a ` s _ ^N a v e l _ )
\event \text_opt_end== \goto 0FF \goto 0FD \goto 0FE \end

%OFF% Event0D1 ' $E123C0
\event \if_flag== 1E 77 \inc= 1E
\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 _ _ _
TEXT (
\event \text_opt_start \text_opt_define= 12
TEXT 1
\event \text_opt_define= 15
TEXT 2
\event \text_opt_define= 18
TEXT 3
TEXT _ )
\event \text_opt_end== \goto 0FF \goto 0FD \goto 0FE \goto 0CD \end \nop4

I couldn't get an image, because VWF doesn't seem to be working.  I'm not sure why.  Could you check that out?  I hope I didn't screw up something somewhere.  Oh, I changed directly on the script, instead of using the thing at the bottom (I used @OFF, of course).  I feel like VWF may be applying Relocal or something.

Relocal:

%OFF% Event0CE ' $E122D0
\event \if_flag== 12 00 \goto 0FB \flag== 0F 00 \call 408 \text_open \gold_show
TEXT _ ^H i ! _ ^T r a v e l _ s p e c i a l : \n
TEXT _ 5 0 _ ^L u c r e _ p e r _ t r i p ! \n
\event \if_flag== 1E 7F \goto 0D1
TEXT _ _ ( _
\event \text_opt_start \text_opt_define= 04
TEXT ^W a t e r _ ^T e m p l e _ _
\event \text_opt_define= 12
TEXT ^G a i a ` s _ ^N a v e l _ )
\event \text_opt_end== \goto 0FF \goto 0FD \goto 0FE \end

%OFF% Event0D1 ' $E123DD
\event \if_flag== 1E 77 \inc= 1E
\event \wait_input \text_clear
TEXT _ 1 : ^W a t e r _ ^T e m p l 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 _ _ _
TEXT (
\event \text_opt_start \text_opt_define= 12
TEXT 1
\event \text_opt_define= 15
TEXT 2
\event \text_opt_define= 18
TEXT 3
TEXT _ )
\event \text_opt_end== \goto 0FF \goto 0FD \goto 0FE \goto 0CD \end



Reborn 1:

%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 (
\event \text_opt_start \text_opt_define= 01
TEXT ^W a t e r _ ^P a l a c e
\event \text_opt_define= 0E
TEXT ^G a i a ` s _ ^N a v e l
TEXT )
\event \text_opt_end== \goto 0FF \goto 0FD \goto 0FE \end

%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 _ _
\event \multispace= 10
TEXT (
\event \text_opt_start \text_opt_define= 11
TEXT 1
\event \text_opt_define= 13
TEXT 2
\event \text_opt_define= 15
TEXT 3
TEXT )
\event \text_opt_end== \goto 0FF \goto 0FD \goto 0FE \goto 0CD \end



Reborn 2:

%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 _
\event \multispace= 10
TEXT (
\event \text_opt_start \text_opt_define= 12
TEXT 1
\event \text_opt_define= 14
TEXT 2
\event \text_opt_define= 16
TEXT 3
TEXT _ )
\event \text_opt_end== \goto 0FF \goto 0FD \goto 0FE \goto 0CD \end



Reborn 3:

%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 _ _
\event \multispace= 10
TEXT (
\event \text_opt_start \text_opt_define= 11
TEXT 1
\event \text_opt_define= 14
TEXT 2
\event \text_opt_define= 17
TEXT 3
TEXT )
\event \text_opt_end== \goto 0FF \goto 0FD \goto 0FE \goto 0CD \end



Among the posted Reborn images, which do you think is the best looking?  #1 is the format that follows the other choices in Reborn.  I can also move #1 more to the right or something.

Queue

#2122
While you're in there modifying the event, definitely add spaces to vanilla. They didn't do that as a style choice, but because they thought they didn't have room to have the spaces.

For Reborn, I personally think style 2 looks nicest, but Reborn consistently uses a no-excess-spaces style, so 1 is what you should use if you're trying to match Reborn's style.

The \wait_input before "Pick your destination!" for Reborn is annoying; scrap it, that will fit on the third line.

I haven't found whatever issue you're seeing with VWF Edition... if I uncheck Relocalized and Reborn, VWF seems to be working as expected. Oh duh, if you're trying to edit the main event scripts directly and not using %OFF% to override, you're not going to see stuff change for VWF_Edition because it has special accommodations due to its weird encoding. The "real" version of VWF events is elsewhere in the ZPS file and looks like:
@OFF $E122BC ' Event0CE
\event \if_flag== 1E 7F \goto 0D1 \if_flag== 11 00 \goto 0FB \flag== 0F 00 \call 408 \text_open \gold_show
RAW AA88A0AAA7CFA2BCC5858584C6CF90D28C929486 \n
RAW AA85B6B883C28792A2A4A9A99A829FBE \n
RAW AA9DAEB6
\event \text_opt_start \text_opt_define= 04
RAW B2ABB1A586D2C28D96D1ACBFD280
\event \text_opt_define= 12
RAW 949780C981AB91AEBE8AD286B586
\event \text_opt_end== \goto 0FF \goto 0FD \goto 0FE \end

@OFF $E123C0 ' Event0D1
\event \if_flag== 1E 77 \inc= 1E \flag== 0F 00 \call 408 \text_open \gold_show
RAW AA85B6B883C28792A2A4A9A99A829FBEC9B7C1CCBDC69884898D \n
RAW AA9DAEB6
\event \text_opt_start \text_opt_define= 04
RAW B2ABB1A586D2C28D96D1ACBFD280
\event \text_opt_define= 12
RAW C59AC6C589A5A7B0BA968386
\event \text_opt_end== \goto 0FF \goto 0FD \goto 0CD \end





Edit: Haven't worked out kinks or checked for space limitations, but here's what I'm currently working with:
&(patches)\ExtraCannonTravelRoutes
REQ [Quality_of_Life]
REQ Extra_Cannon_Travel_Routes

' Title: Extra Cannon Travel Routes
' Author: hmsong
' Version: 0.0

FILE <Vanilla>
FILE <VWF>
FILE <Reloc>
FILE <Augment>
&(patches)\ExtraCannonTravelRoutes\Vanilla
REQ %Vanilla%
ASM <.asm>
&(patches)\ExtraCannonTravelRoutes\Vanilla\.asm

%OFF% Event0CE
\event \if_flag== 11 00 \goto 0FB
\event \flag== 0F 00 \call 408 \text_open \gold_show
TEXT _ ^H i ! _ ^T r a v e l _ s p e c i a l : \n
TEXT _ 5 0 _ ^G ^P _ p e r _ t r i p ! \n
\event \if_flag== 1E 7F \goto 0D1
TEXT (
\event \text_opt_start \text_opt_define= 01
TEXT ^W a t er _ ^P a l a c e
\event \text_opt_define= 0F
TEXT ^G a i a ` s _ ^N a v e l )
\event \text_opt_end== \goto 0FF \goto 0FD \goto 0FE \end

%OFF% Event0D1
\event \if_flag== 1E 77 \inc= 1E
TEXT _ ^W h e r e _ t o ? \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
\event \multispace= 10
TEXT (
\event \text_opt_start \text_opt_define= 12
TEXT 1
\event \text_opt_define= 15
TEXT 2
\event \text_opt_define= 18
TEXT 3
TEXT _ )
\event \text_opt_end== \goto 0FF \goto 0FD \goto 0FE \goto 0CD \end

&(patches)\ExtraCannonTravelRoutes\VWF
REQ %VWF%
ASM <.asm>
&(patches)\ExtraCannonTravelRoutes\VWF\.asm

%OFF% Event0CE
\event \if_flag== 11 00 \goto 0FB
\event \flag== 0F 00 \call 408 \text_open \gold_show
'TEXT _ ^H i ! _ ^T r a v e l _ s p e c i a l : \n
'RAW AA88A0AAA7 CFA2BCC5858584C6CF90D28C929486 \n
'TEXT _ 5 0 _ ^G ^P _ p e r _ t r i p ! \n
'RAW AA85B6B883 C28792A2A4A9A99A829FBE \n
COPY E122CE 26
\event \if_flag== 1E 7F \goto 0D1
'TEXT _ _ ( _
'\event \text_opt_start \text_opt_define= 04
'TEXT ^W a t e r _ ^P a l a c e _ _
'\event \text_opt_define= 12
'TEXT ^G a i a ` s _ ^N a v e l _ )
'\event \text_opt_end== \goto 0FF \goto 0FD \goto 0FE \end

%OFF% Event0D1
\event \if_flag== 1E 77 \inc= 1E
TEXT _ ^W h e r e _ t o ? \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 '_ _ _
\event \multispace= 10
TEXT (
\event \text_opt_start \text_opt_define= 12
TEXT 1
\event \text_opt_define= 15
TEXT 2
\event \text_opt_define= 18
TEXT 3
TEXT _ )
\event \text_opt_end== \goto 0FF \goto 0FD \goto 0FE \goto 0CD \end

%OFF% Event0D1*
ADR.E* Event0D1
%OFF% Event0D1^
ADR.E* XOR.SLOW

&(patches)\ExtraCannonTravelRoutes\Reloc
REQ %Reloc%
ASM <.asm>
&(patches)\ExtraCannonTravelRoutes\Reloc\.asm

%OFF% Event0CE
\event \if_flag== 11 00 \goto 0FB
\event \flag== 0F 00 \call 408 \text_open \gold_show
TEXT _ ^H i ! _ ^T r a v e l _ s p e c i a l : \n
TEXT _ 5 0 _ ^L u c r e _ p e r _ t r i p ! \n
\event \if_flag== 1E 7F \goto 0D1
'TEXT _ _ ( _
'\event \text_opt_start \text_opt_define= 04
'TEXT ^W a t e r _ ^T e m p l e _ _
'\event \text_opt_define= 12
'TEXT ^G a i a ` s _ ^N a v e l _ )
'\event \text_opt_end== \goto 0FF \goto 0FD \goto 0FE \end

%OFF% Event0D1
\event \if_flag== 1E 77 \inc= 1E
TEXT _ ^W h e r e _ t o ? \n
\event \wait_input \text_clear
TEXT _ 1 : ^W a t e r _ ^T e m p l 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
\event \multispace= 10
TEXT (
\event \text_opt_start \text_opt_define= 12
TEXT 1
\event \text_opt_define= 15
TEXT 2
\event \text_opt_define= 18
TEXT 3
TEXT _ )
\event \text_opt_end== \goto 0FF \goto 0FD \goto 0FE \goto 0CD \end

&(patches)\ExtraCannonTravelRoutes\Augment
REQ %Augment%
ASM <.asm>
&(patches)\ExtraCannonTravelRoutes\Augment\.asm

%OFF% Event0CE
\event \if_flag== 11 00 \goto 0FB
\event \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 (
'\event \text_opt_start \text_opt_define= 01
'TEXT ^W a t e r _ ^P a l a c e
'\event \text_opt_define= 0E
'TEXT ^G a i a ` s _ ^N a v e l
'TEXT )
'\event \text_opt_end== \goto 0FF \goto 0FD \goto 0FE \end

%OFF% Event0D1
\event \if_flag== 1E 77 \inc= 1E
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
\event \multispace= 15
TEXT (
\event \text_opt_start \text_opt_define= 16
TEXT 1
\event \text_opt_define= 18
TEXT 2
\event \text_opt_define= 1A
TEXT 3
TEXT )
\event \text_opt_end== \goto 0FF \goto 0FD \goto 0FE \goto 0CD \end


You don't need to pad things out to make sure you use up all of the space; it's okay if the end result is shorter than what it's replacing (particularly regarding event 0D1). VWF_Edition has special encoding requirements. It's best to reuse what's there for event 0CE, and then use Event0D1* and Event0D1^ to turn off the special encoding for event 0D1. Also note that selection highlighting is a little buggy in VWF/Relocalized, so you may have to play with spacing. Even normal VWF's highlighting of ( Water Palace  Gaia's Navel ) misses the "l" at the end of Gaia's Navel.

hmsong

#2123
I'm fairly certain that the 0D1 goes over the space limit (I see you added, "Where to?", which adds even more bytes).  I'll have to check out the detail.  I intentionally didn't add "Where to?", because the cannon man didn't say that for 0CE.  But yeah, adding that sounds good, if spaces allow it.  I can use DTE to make that happen, at least for Relocalized... but I doubt that's possible for vanilla and VWF, even with DTE -- just not enough space.  If that's the case, do you think I should add that only for Relocalized? (and Reborn, of course)

But thanks for the detail regarding that I can make the script shorter.  I edited directly onto the script to check how much space I was using.  If it's shorter, then I won't have to worry about it.

Also, I'll check out the highlight thing that you mentioned to play around with the spaces.  For Reborn, yeah, option #1 is probably the way to go, as it matches the rest of the script.  Having said that, I felt that making the (1 2 3) all the way to the right corner looked very strange, hence why started at space 12.  Do you think having the choice option all the way to the right is good?

Oh, and I figured I can fix the potos cannon guy error with \if_flag== 11 00 --> \if_flag== 12 00, but I suppose you want me to keep the original error? (as 12 00 isn't a perfect fix)

Queue

I went and checked the European version of SoM (which has a couple bugfixes, or at least attempted bugfixes, over the US version), and they fix it with \if_flag== 11 0B apparently. Without double-checking exactly when event flag 0x11 reaches 0x0C+, I expect it's once you've gone through some of the Water Palace dialogue with Luka. Don't accept it as the only way to fix it, because it's not like the European version is perfect, but just mentioning it for reference.

Since Reborn dialogue choices are always left-aligned, going all the way right-aligned feels / looks more natural to me than floating in the middle, but that's just my opinion.

Regardless, fixing the sequence break needs to be a separate patch from a cannon travel route changing patch. I'm experimenting with reorganizing the event slightly so it'll be easier to have the two patches behave together. My initial thought is:
%OFF% Event0CE
\event \flag== 0F 00 \call 408
\event \if_flag== 11 00 \goto 0FB
\event \text_open \gold_show
TEXT _ ^H i ! _ ^T r a v e l _ s p e c i a l : \n
TEXT _ 5 0 _ ^G ^P _ p e r _ t r i p ! \n
\event \if_flag== 1E 7F \goto 0D1

...for vanilla. This keeps \if_flag== 11 00 \goto 0FB in the same position, so that a different patch that alters it won't need special accommodations (other than needing to occur later in the patching order).

hmsong

Will do.  I edited the my comment above (just missed it), but "Where to" for vanilla and VWF won't be possible, even with DTE, I think.  But it's definitely possible for Relocalized.  Do you think I should add that specifically for Relocalized, or leave it out?

For Reborn spacing for (1 2 3), I'll go with what you want, as for this case, I want to reflect what the Reborn creators (you and ManaRedux) want.

I'll soon put up the "final" version of Extra_Cannon_Travel_Routes, along with the descriptions.  I have to go out right now, but I'll work on that as soon as I get back.

Queue

Personally, I think retaining as much of the 0D1 text as possible would be a plus. The text in 0CE and 0D1 is very similar, so just keeping the question / prompt from 0D1 was what I was going for.

There are a handful of location name event commands that might be usable to save some bytes:
/54F2 [E]|Potos_Village
/54F3 [E]|Neko`s
/54F4 [E]|Water_Palace
/54F5 [E]|Pandora
/54F6 [E]|Kippo_Village
/54F7 [E]|Dwarf_Village
/54F8 [E]|Haunted_Forest
/54F9 [E]|Witch`s_Castle
/54FA [E]|Witch`s_Castle.2
/54FB [E]|Moogle_Village
/54FC [E]|Sprite_Village
/54FD [E]|Wind_Palace
/54FE [E]|Matango
/54FF [E]|Todo_Village

Looking at the list, only [E]|Water_Palace is available, but that alone, if it works, may be enough.

Thinking ahead, there are three cut cannon travel routes:
' Event0EE     . cut Cannon Travel route (Matango -> Potos)
' Event0F1     . cut Cannon Travel route (Upper Land -> Pandora)
' Event0F3     . cut Cannon Travel route (Matango -> Todo)

If feasible, this patch could be a good place to re-enable them.

hmsong

#2127
Holy crap.  That'll save a lot of space.  Even if it's just Water Palace, that's still a lot.  Thanks!  I'll definitely work on it (gotta redo some stuff, but worth doing).  I'm surprised Upper Land doesn't exist, since Neko exists when you first land on Upperland (before rescuing the moogles).  Or maybe it saves as Moogle Village, even though it's just Upper Land.

Events 0EE and 0F1 seem worth doing.  I'll work on that too.  Sounds worth it (and the shortcut should make this a bit easier in managing bytes).  But Matango --> Todo should already be in use (in fact, it's usually better to go to Todo before Kakkara).  Are you sure it's not being used?  Or is there another Matango --> Todo?

I check out the unused events.  You were right -- 0F3 is another Mantango --> Todo, even though there's another event that does Matango --> Todo.  Well, there's really no point of having 2 of the exact same route.  But I shall try to apply Event 0EE and 0F1.

Queue

It's actually a bug that any of those location names are usable by that event command: it's actually the "enemy name" ([E]) command that can show them (there are 128 enemies, so values above 0x7F aren't enemy names). Note that Todo Village is 54FF; at 0xFF, it's the max value. There are still 17 more location names beyond that, but 0x100 through 0x110 are too big of numbers to fit in one byte. Don't be concerned about it being unintentional behavior though, it works reliably, and the same regardless of version of SoM, so would be silly not to make use of it.

The full list of location names (used by the load game menu) is:
!Location.Name.Potos_Village ' 17
!Location.Name.Neko`s
!Location.Name.Water_Palace
!Location.Name.Pandora
!Location.Name.Kippo_Village
!Location.Name.Dwarf_Village
!Location.Name.Haunted_Forest
!Location.Name.Witch`s_Castle
!Location.Name.Witch`s_Castle.2
!Location.Name.Moogle_Village
!Location.Name.Sprite_Village
!Location.Name.Wind_Palace
!Location.Name.Matango
!Location.Name.Todo_Village
!Location.Name.Sandship
!Location.Name.Kakkara
!Location.Name.Southtown
!Location.Name.Northtown
!Location.Name.Gold_City
!Location.Name.Moon_Palace
!Location.Name.Mandala
!Location.Name.Mountain_Road
!Location.Name.Sage`s_Cave
!Location.Name.Tasnica
!Location.Name.Tree_Palace
!Location.Name.Lost_Continent
!Location.Name.Pure_Land
!Location.Name.Mana_Fortress
!Location.Name.Empire_Castle
!Location.Name.Frosty_Forest
!Location.Name.Gaia`s_Navel

So yeah, Upper Land actually isn't in there.

There are also 3 events, 60A/60B/60C that you can \call to print "Water Palace", "Kingdom of Pandora" and "Potos Village", respectively. Buuut, they aren't available in VWF / Relocalized (only vanilla and Reborn).

Note that the text for the Matango to Potos route SAYS Pandora, but the text is wrong: the cannon launch sends you to Potos.

If you truly wanted to go nuts, you can make your own cannon travel routes; the table of launch and landing coordinates is at $C67C80. I have an undisclosed project that, if I ever get to it, would use 8 cannon travel entries. Another thought that had crossed by mind would use a handful as well (Trials of Mana style Highsteppers that would let you see where on the world map you are). Pretty sure there are far more unused cannon travel entries than that (I've never mapped out exactly which are and aren't used), but figured I'd mention that I may end up using a bunch of those unused slots someday.

hmsong

call 60A/B/C seem to use more bytes, so I'll stick with [E]|Water_Palace.  It's easier for me, I think.  Besides, I'll be adding different routes from [E].

For now, I'll work with what's available.  Although I admit that new cannon travel routes sound very nice (Todo to Potos/Pandora/Gaia/Water Palace is pretty close, and perhaps Empire -> <somewhere>), but that's for later.  You said there's 8 cannon guys?  I thought there were only 7 (Potos, Gaia, Upper, Matango, Kakkara, Todo, and Empire).  You would add the 8th? (if you ever got to it)

That jumping pad thing sounds nice too, but I almost never used it in SD3.  Cannon travel is good, because it has a practical purpose.  I never understood the jumping pad's purpose in SD3.

Queue

\call 60A uses 2 bytes (260A), same with [E]|Water_Palace (54F4).

I don't mean there are 8 cannon travel guys, I meant I'd use 8 unused cannon travel routes. There are 64 max, and vanilla uses 20 (2 for events 0EE and 0F1, so only really 18). Here's the list:
' Cannon00 .            7C7C 0404 Matango Mountains -> Pure Land Ocean
' Cannon01 .            6C7C 1404 Matango Mountains -> Pure Land Ocean
' Cannon02 .            7C6C 0414 Matango Mountains -> Pure Land Ocean
' Cannon03 .            6C6C 1414 Matango Mountains -> Pure Land Ocean
' Cannon04 .            5C7C 2404 Matango Mountains -> Pure Land Ocean
' Cannon05 .            4C7C 3404 Kakkara / Forest Border -> Pure Land Ocean
' Cannon06 .            5C6C 2414 Matango Mountains -> Pure Land Ocean
' Cannon07 .            4C6C 3414 Matango Mountains -> Pure Land Ocean
' Cannon08 .            3C7C 4404 Kakkara Desert -> Pure Land Ocean
' Cannon09 .            2C7C 5404 Kakkara Ocean -> Ocean
' Cannon0A .            3C6C 4414 Kakkara Desert -> Pure Land Ocean
' Cannon0B .            2C6C 5414 Kakkara Desert -> Ocean
' Cannon0C .            1C7C 6404 Kakkara Desert -> Ocean
' Cannon0D .            0C7C 7404 Kakkara Ocean -> Ice Country Ocean
' Cannon0E .            1C6C 6414 Kakkara Desert -> Ocean
' Cannon0F .            0C6C 7414 Kakkara Ocean -> Ice Country Ocean
' Cannon10 .            7C5C 0424 Gold Isle Ocean -> Pure Land Ocean
' Cannon11 .            6C5C 1424 Gold Isle Ocean -> Pure Land Ocean
' Cannon12 .            7C4C 0434 Gold Isle Ocean -> Ocean
' Cannon13 .            6C4C 1434 Gold Isle Ocean -> Pure Land Ocean
' Cannon14 .            5C5C 2424 Kakkara Ocean -> Pure Land Mountains
' Cannon15 .            4C5C 3424 Kakkara Ocean -> Pure Land Mountains
' Cannon16 .            5C4C 2434 Ocean -> Pure Land Ocean
' Cannon17 .            4C4C 3434 Kakkara Ocean -> Pure Land Ocean
' Cannon18 .            3C5C 4424 Sea of Wonders -> Pure Land Ocean
' Cannon19 .            2C5C 5424 Kakkara Cannon -> Ocean
' Cannon1A .            3C4C 4434 Kakkara Ocean -> Pure Land Ocean
' Cannon1B .            2C4C 5434 Kakkara Ocean -> Ocean
' Cannon1C .            1C5C 6424 Kakkara Ocean -> Ice Country Ocean
' Cannon1D .            0C5C 7424 Kakkara Ocean -> Ice Country Ocean
' Cannon1E .            1C4C 6434 Kakkara Ocean -> Ocean
' Cannon1F .            0C4C 7434 Kakkara Ocean -> Ice Country Ocean
' Cannon20 Event0FA/0FD 9BBF 84B7 Potos Cannon -> Water Palace
' Cannon21 Event0FE     9BBF 85CA Potos Cannon -> Gaia's Navel
' Cannon22 Event0F5     7FC2 95D8 Gaia's Navel Cannon -> Pandora
' Cannon23 Event0CD     9BBF 8898 Potos Cannon -> Upper Land
' Cannon24 Event0EC     7A8B 4070 Matango Cannon -> Kakkara Desert
' Cannon25 Event0ED/0F3 7A8B A70B Matango Cannon -> Todo Village
' Cannon26 Event0EF     9FAA 9BBF Upper Land Cannon -> Potos Cannon
' Cannon27 Event0EE     7A8B 9BBF Matango Cannon -> Potos Cannon
' Cannon28 .            7A8B 7A8B Matango Cannon -> Matango Cannon
' Cannon29 Event0F4     7FC2 84B7 Gaia's Navel Cannon -> Water Palace
' Cannon2A Event0F0     9FAA 85CA Upper Land Cannon -> Gaia's Navel
' Cannon2B Event0F1     9FAA 95D8 Upper Land Cannon -> Pandora
' Cannon2C Event0EA     B126 6887 Ice Country Cannon -> Matango Castle
' Cannon2D Event0EB     B126 285D Ice Country Cannon -> Kakkara Village
' Cannon2E Event0E7     2B5D 6887 Kakkara Village -> Ice Country Cannon
' Cannon2F Event0E8     2B5D A70B Kakkara Village -> Todo Village
' Cannon30 Event0E9     2B5D E465 Kakkara Village -> Southtown Cannon
' Cannon31 Event0E6     E465 285C Southtown Cannon -> Kakkara Village
' Cannon32 Event0F2     7A8B 285C Matango Cannon -> Kakkara Village
' Cannon33 .            B163 4070 Northtown Peninsula -> Kakkara Desert
' Cannon34 .            5C1C 2464 Ocean -> Kakkara Desert
' Cannon35 .            4C1C 3464 Pure Land Ocean -> Kakkara Desert Star Field
' Cannon36 .            5C0C 2474 Ocean -> Kakkara Desert
' Cannon37 .            4C0C 3474 Pure Land Ocean -> Kakkara Desert
' Cannon38 .            3C1C 4464 Pure Land Ocean -> Kakkara Desert Star Field
' Cannon39 .            2C1C 5464 Pure Land Mountains -> Kakkara Ocean
' Cannon3A .            3C0C 4474 Pure Land Ocean -> Kakkara Desert
' Cannon3B .            2C0C 5474 Pure Land Mountains -> Kakkara Desert
' Cannon3C .            1C1C 6464 Pure Land Mountains -> Ocean
' Cannon3D .            0C1C 7464 Pure Land Ocean -> Gold Isle Ocean
' Cannon3E Event4FD fly 3BF6 BA77 Pure Land Ocean -> Ending Cliffs
' Cannon3F Event400 fly 70F0 94AF Ocean -> Topaz Falls Bridge


I wouldn't be adding any cannon travel locations, just using the cannon travel system (probably with the party launching off of Highsteppers to cross short distances on the world map).

The point of the Trials of Mana Highsteppers is fun. It's a goofy way to let you try and get a handle on where in the world you are before you gain any capability for traveling on the world map.

hmsong

#2131
Hmm.  Multiple problems...

First, for vanilla, whenever I use things like [E]|Water_Palace, I get those letters in all caps (it's not supposed to get it like that).  I'm sure it'll be the same for VWF.  Could you tell me how I fix that?  Or are things like [E]|Water_Palace being used somewhere, and therefore I shouldn't fix that? (which will force me to use the event60A)

Which brings me to another problem -- when I edit VWF, I get messed up letters.  I put the following at the User-Defined (VWF only), and I got errors:


%OFF% Event0CE ' $E122BC
\event \flag== 0F 00 \call 408
\event \if_flag== 11 00 \goto 0FB
\event \text_open \gold_show
TEXT _ ^H i ! _ ^T r a v e l _ s p e c i a l : \n
TEXT _ 5 0 _ ^G ^P _ p e r _ t r i p ! \n
\event \if_flag== 1E 7F \goto 0D1
TEXT _ _ ( _
\event \text_opt_start \text_opt_define= 04
TEXT ^W a t e r _ ^P a l a c e _ _
\event \text_opt_define= 12
TEXT ^G a i a ` s _ ^N a v e l _ )
\event \text_opt_end== \goto 0FF \goto 0FD \goto 0FE \end

%OFF% Event0D1 ' $E123C0
\event \if_flag== 1E 77 \inc= 1E
TEXT _ ^W h e r e _ t o ? \n
\event \wait_input \text_clear
TEXT _ 1 : [E]|Water_Palace \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
\event \multispace= 10
TEXT (
\event \text_opt_start \text_opt_define= 12
TEXT 1
\event \text_opt_define= 15
TEXT 2
\event \text_opt_define= 18
TEXT 3
TEXT _ )
\event \text_opt_end== \goto 0FF \goto 0FD \goto 0FE \goto 0CD \end \nop4


Also, for VWF (no edit), if I try to call Flammie and it fails (such as in the cannon areas), the message that I cannot call Flammie is all weird.  Sigh...

Things are working pretty good for Relocal and Reborn though.

moawar

Hey,can someone help me ? I tried purchasing armor for my guys but i can only buy 1 of each piece of armor,could someone tell me what caused it ?

Queue

Crud, I forgot about capitalization. No, it's not something that's reasonable to change. The vanilla style is simply all CAPS for location names for the load game menu (which is the text [E]|Water_Palace uses). And VWF didn't change that, so its location name style is all CAPS too. Proper-caser changes it for both of them.

So vanilla should use \call 60A, Relocalized should use [E]|Water_Palace, Reborn can use either, VWF_Edition plus Proper-caser could use [E]|Water_Palace, and VWF_Edition without Proper-caser might not be able to use anything to shorten it so would need a compromised short version.

If you wanted to be maximally technically accurate / consistent, vanilla plus Proper-caser would use [E]|Water_Palace and vanilla without Proper-caser would use \call 60A, but I think this is overkill.

If you wanted to be maximally thorough, 60A could be reimplemented just for VWF without Proper-caser, just for event 0D1 to use it, so that it could use it to reduce space usage to try and match how this patch works for the other 3 event text options.

Spoiler
Aside: I'm never sure of the best way to refer to the 4 available main event script variations, i.e. vanilla, VWF_Edition, Relocalized and Reborn; in some contexts, script, like the script for a play, is clear, but in the context of a big omni-patch like Turbo, there are lots of "scripts" such as animation scripts, AI scripts, etc. and "translation" is inaccurate when only vanilla and Reborn are translations of the main event text (while Relocalized retranslates names and gameplay messages, VWF and Relocalized are embellishments of the vanilla main event text).
[close]

Regarding the messed up letters for VWF, I covered how to turn off VWF's special letter encoding for event 0D1 in a previous recent post about this (and mentioned that you'll probably want to use COPY for 0CE, for VWF). Look for the post where I mention Event0D1* and Event0D1^. It's the one where I posted a preliminary version of &(patches)\ExtraCannonTravelRoutes.

I just checked the Flammie Drum error message with VWF and it showed correctly, so I'll probably need more to go on to track down what's mangling that.

Compatibility fixups suck sometimes, don't they? And this is just managing text differences. It requires some pretty heavy duty work when it's things like Item_Limit_Increase that affect the save data format, or when two things want to change the same machine code. Search the ZPS file for "' compat" (note the apostrophe). There are over 200 labeled, and there are plenty more than that that are either unlabeled, or just intentional patching order making things work together. There's nothing magic going on to make patches compatible with each other, just hard work (hmsong, I'm saying this mostly for arbitrary readers; you're already well aware of this considering the compatibility fixups you've done before).

hmsong

Oh, right.  I meant to do that at the back of my mind, but for some reason, I forgot.  Whoops.  Sorry, and thanks.  I really should remember things better.

I also worked on events 0CF and 0D0, to include the unused events 0F1 and 0EE (to use the unused cannon routes).  So far, I'm not having any problem with Relocal and Reborn, but for vanilla, 0CF is a problem, because I have to use [E]|Pandora (which will be in all caps), just to save space.  That event doesn't have a lot of space, so even with DTE, I only have 1 extra byte, and that's not enough to offset [E]|Pandora to ^P a n d o r a.  Any idea?


@OFF Event0CF ' $C91B3A
\event \flag== 0F 00 \call 408 \text_open \gold_show
TEXT _ ^H ow d y ! \n
TEXT _ 5 0 _ ^G ^P _ p er _ t r i p ! \n
TEXT (
\event \text_opt_start \text_opt_define= 01
TEXT ^P o t o s
\event \text_opt_define= 07
TEXT ^G a i a ` s_ ^N a ve l
\event \text_opt_define= 14
TEXT [E]|Pandora
TEXT )
\event \text_opt_end== \goto 0FF \goto 0EF \goto 0F0 \goto 0F1 \end

@OFF Event0D0 ' $C91B7D
\event \flag== 0F 00 \call 408 \text_open \gold_show
TEXT _ ^S l a p _m e_ 5 0 _ ^G ^P _a n d \n
TEXT _^I ` ll _s en d _ y a _ f l y i n g ! \n
TEXT (
\event \text_opt_start \text_opt_define= 01
TEXT ^K a k k a r a
\event \text_opt_define= 09
TEXT ^I c e _ ^C o u n t r y
\event \text_opt_define= 15
TEXT ^P o t o s
TEXT )
\event \text_opt_end== \goto 0FF \goto 0EC \goto 0ED \goto 0EE \end

@OFF Event0EE ' $C9216B
\event \gold_sub== 3200 \gold_refresh \if_flag== 0F 1F \goto 0F8 \call 797 \call 410 \text_open
'TEXT _ ^A l l _ a b o a r d _ f o r _ ^P a n d o r a ! \n
TEXT _ ^A l l _ a b o a r d _ f o r _ ^P o t o s ! _ _ \n
\event \call 0FC \cannon= 27 \call 0F7 \goto 610 \end


So far, the only "solution" I can think of is to enable event 0CF change only if Proper Caser is enabled, assuming Relocalized and Reborn are disabled.  I haven't tried this with VWF, but I assume it'll have the same problem.  What do you think?

Queue

Hm... you could hook up an unused event to just the end part of event 60B, so that it just outputs "Pandora" instead of "Kingdom of Pandora". Event 40B would be a good candidate:
- numerically, it's similar (40B related to 60B)
- 40A is used by Frosty_the_Friendly_Alchemist, and it steps on the byte normally used by 40B, so 40B is ripe for repurposing

So:
%OFF% Event40B*
ADR.E* $CA86CE

Then you can use \call 40B and will get "Pandora" as output. This would just be for vanilla.

That does still leave VWF as a problem though. Hm... VWF without Proper-caser would maybe need to cut the greeting ("Howdy!") to have enough space (or some other compromise).

(Re-reading my post, those "Hm..."s were literally what I typed while brainstorming. It looks really goofy reading back over it, but leaving them as-is this time.)

hmsong

#2136
I use "Hmm..." all the time, even in the texts.  At least I think I do.  I'm sure I already did that in the past posts.  Probably.

In any case, I generally want vanilla and VWF to match each other, at least from player's POV (spacing not withstanding).  VWF's point is that it matches vanilla's script.  I'd like to honor that.  I guess I can get rid of Howdy (or change the line to something else) for both vanilla and VWF.  I'll work on it.


Sigh.  I guess I'm really not getting VWF.  Because I can't use COPY function (due to me changing the script itself, and using DTE), I typed out the script.  But I'm getting cut off mind sentence for all.  I'm sorry, but could you check what I did wrong for VWF?  I finished with vanilla, Relocal, and Reborn.  Just stuck on VWF.


%OFF% Event0CE ' $E122BC
\event \flag== 0F 00 \call 408
\event \if_flag== 11 00 \goto 0FB
\event \text_open \gold_show
'TEXT _ ^H i ! _ ^T r a v e l _ s p e c i a l : \n
'RAW AA88A0AAA7 CFA2BCC5858584C6CF90D28C929486 \n
'TEXT _ 5 0 _ ^G ^P _ p e r _ t r i p ! \n
'RAW AA85B6B883 C28792A2A4A9A99A829FBE \n
COPY E122CE 26
\event \if_flag== 1E 7F \goto 0D1
'TEXT _ _ ( _
'\event \text_opt_start \text_opt_define= 04
'TEXT ^W a t e r _ ^P a l a c e _ _
'\event \text_opt_define= 12
'TEXT ^G a i a ` s _ ^N a v e l _ )
'\event \text_opt_end== \goto 0FF \goto 0FD \goto 0FE \end

%OFF% Event0CF ' $E12321
\event \flag== 0F 00 \call 408 \text_open \gold_show
TEXT _ ^Y o ! \n
TEXT _ 5 0 _ ^G ^P _ p e r _ t r i p ! \n
TEXT _ (
\event \text_opt_start \text_opt_define= 03
TEXT ^P o t o s
\event \text_opt_define= 09
TEXT ^G a i a ` s_ ^N av e l
\event \text_opt_define= 16
TEXT ^P an d or a
TEXT _ )
\event \text_opt_end== \goto 0FF \goto 0EF \goto 0F0 \goto 0F1 \end

%OFF% Event0CF*
ADR.E* Event0CF
%OFF% Event0CF^
ADR.E* XOR.SLOW

%OFF% Event0D0 ' $E12368
\event \flag== 0F 00 \call 408 \text_open \gold_show
TEXT _ ^S l a p _ m e _ 5 0 _ ^G ^P _ a n d _ ^I ` l l _ s e n d _y a \n
TEXT _ f l y in g ! \n
TEXT _ (
\event \text_opt_start \text_opt_define= 03
TEXT ^K a k k ar a
\event \text_opt_define= 0B
TEXT ^I c e_ ^C ou n t r y
\event \text_opt_define= 17
TEXT ^P o t o s
TEXT _ )
\event \text_opt_end== \goto 0FF \goto 0EC \goto 0ED \goto 0EE \end

%OFF% Event0D0*
ADR.E* Event0D0
%OFF% Event0D0^
ADR.E* XOR.SLOW

%OFF% Event0D1 ' $E123C0
\event \if_flag== 1E 77 \inc= 1E
TEXT _ ^W h e r e _ t o ? \n
\event \wait_input \text_clear
TEXT _ 1 :
'TEXT [E]|Water_Palace
\event \call 60A
TEXT \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
\event \multispace= 10
TEXT (
\event \text_opt_start \text_opt_define= 12
TEXT 1
\event \text_opt_define= 15
TEXT 2
\event \text_opt_define= 18
TEXT 3
TEXT _ )
\event \text_opt_end== \goto 0FF \goto 0FD \goto 0FE \goto 0CD \end \nop4

%OFF% Event0D1*
ADR.E* Event0D1
%OFF% Event0D1^
ADR.E* XOR.SLOW

%OFF% Event0EE ' $E12993
\event \gold_sub== 3200 \gold_refresh \if_flag== 0F 1F \goto 0F8 \call 797 \call 410 \text_open
'TEXT _ ^A l l _ a b o a r d _ f o r _ ^P a n d o r a ! \n
TEXT _ ^A l l _ a b o a r d _ f o r _ ^P o t o s ! _ _ \n
\event \call 0FC \cannon= 27 \call 0F7 \goto 610 \end

%OFF% Event0EE*
ADR.E* Event0EE
%OFF% Event0EE^
ADR.E* XOR.SLOW

Queue

Can't check in-game at the moment, but probably the issue is your use of \call 60A. Can't use it for VWF (or Relocalized). In VWF, event 60A is just \end, so if you \call it, the event will abruptly end.

If any besides event 0D1 are having problems, I'll need to check in-game later when I can.

VWF also isn't strict about matching vanilla, it has all sorts of arbitrary embellishments and changes; none are for accuracy, they're just FuSoYa's whims and fancies to fatten out the text. Relocalized is the same, but with names retranslated, and its own arbitrary changes on top of VWF's changes. In other words, VWF's point isn't that it matches vanilla; it doesn't care, it just wanted to make the text rendering better, and then fill in the added (visual) space that the new text rendering caused so text boxes would look less empty. It's not the end of the world if compromises are necessary to accommodate a specific patch combination, as long as the main functionality (in this case, new cannon travel routes) is there.

Vanilla or VWF with Proper-caser can use [E]. Vanilla without Proper-caser can use \call 60A/B/C (and if you go with my suggestion, 40B). So VWF without Proper-caser should be the only one that should need heavily cut text to fit (or a more complex fix by re-adding 60A/B/C, which is also an option).

Once you have things worked out, I'm willing to do a review and cleanup pass, for example, setting up an Event0EE.ExtraCannonTravelRoutes label to just change the location name without needing the entire event's data (and doing the VWF encoded text rather than needing to decode it with Event0EE*/^).

Also to note, if you're really short on space, none of these particular events should need to end with \end, so that should be an extra available byte. Because they all \goto some other event before ending, their \end byte is never reached so doesn't matter.

Also, leaving a note to remind myself about Event0CE (the \if_flag== 11 00 \goto 0FB part) so I'll get that set up.

hmsong

#2138
Okay, 0D1 is fixed (well, I still have the issue with the spacing, but that's a different issue that I'll work on).

The other events are having issues.  Well, event 0CF and 0D0.  I'm guessing event 0EE is having the same problem, whatever they may be.  Yeah, I need help for those events.  Thanks for the tip about not having to have to end with \end.  I took a look at 60A... and it's only 1 byte (\end).  Sigh.  Well, I suppose I can make a new event with those spaces, but for now, I'll try to think of a different solution (worst case, I'll either just disable if VWF+Proper Case is not ON, or I'll just put a warning in the description).  Thanks to DTE, I didn't even need to resort to that.  0D1 is working beautifully.  I just needed 9 bytes, and I already had 4 (\nop4 -- this is why I keep them around, so that I'll know how many bytes of free space I'll have if I edit again), then 2 (from \call 60A), so I just needed 3, and I used DTE to compress.

You're right about VWF/Reloc not having to match vanilla.  I'm sure I can change things, as soon as I can figure out what went wrong with those two events.  Well, I'm done with the other scripts.

Something else now.  In the tree palace, after beating the Snap Dragon and you enter the seed chamber, the music stops and Randi comments that there's something strange.  If you exit south (instead of going north), the music does not restart.  And if you go back to the combat area on SE, it's all quiet, which feels strange.  I know it's something minor, but I figured I should bring that up.  I'm not sure how that'll work, since the [tree seed chamber -> Snap Dragon] exit will constantly be reused, and changing the music in that exit may screw things up.
Nevermind.  The combat area was supposed to be off limits after the Snap Dragon fight (and only visitable by Revisit Sunken Continent).

Queue

When you have a chance, post your newest iteration of the VWF version so I can test against that. I should have a chance tomorrow to work out any issues it's having.

For reference, when I need to keep track of spare bytes in a space-constrained patch, I do it like:
' padding
RAW 00 00 00

for events, or:
' padding
NOP
NOP
NOP

for machine code.

I'm not saying that's how you have to do it, just pointing out that I do that too. If you search the ZPS file for "padding" you'll find dozens of cases where I left myself breadcrumbs.