Golden Sun Hacking Community

Golden Sun Games => Golden Sun => Topic started by: Plexa on August 22, 2017, 06:30:12 AM

Title: Saturos Attacks
Post by: Plexa on August 22, 2017, 06:30:12 AM
Hey, just wondering how the game determines where Saturos starts in his pattern?

I tried comparing it to the stuff we did for Star Magician ( and it didn't seem to be following this formula.

Title: Re: Saturos Attacks
Post by: Fox on August 22, 2017, 04:54:22 PM
For that, Guardian Ball used the first attack pattern. Saturos doesn't.

Mercury Lighthouse Saturos = One of the sequential patterns. (Starts on a random one, then increments.)
Venus Lighthouse Saturos = second attack pattern

Looks like Saturos is the second pattern.

0 = 0x00000000 = 0, , , 0
1 = 0x00003039 = 1, , , 0
2 = 0xD3DC167E = 0, , , 6
3 = 0xA70427DF = 1, , , 7
4 = 0xD6651C2C = 0, , , 4
5 = 0x0DAA96F5 = 4, , , 6
6 = 0xC21F1C8A = 0, , , 4
7 = 0x3EAD62FB = 3, , , 2
8 = 0xCD1DCF18 = 6, , , 7
9 = 0xAF5AAD71 = 5, , , 5
10 = 0x20DA7756 = 3, , , 7
11 = 0xAFE533D7 = 1, , , 3
12 = 0x69ACC4C4 = 6, , , 4
13 = 0x961BAFAD = 5, , , 7
14 = 0x261EB2E2 = 5, , , 2
15 = 0x525F3673 = 1, , , 6
16 = 0x65136930 = 3, , , 1
17 = 0x7E7099A9 = 4, , , 1
18 = 0xE6791B2E = 0, , , 3

Tried to put in the numbers for each Attack Pattern. (1, 2, 3, Sequential) ... But I still need to fill in 2 and 3. ; Sequential is basically random&7... if you ignore the bytes on the ends.)
The other sequential pattern starts on the first ability, so it is left out.

Title: Re: Saturos Attacks
Post by: Plexa on August 23, 2017, 03:33:42 AM
Sorry I should have been more precise, I mean Saturos at the top of Mercury Lighthouse i.e. when his attacks are sequential.

The intent of this would be to input an arbitrary BRN seed and know where in the pattern Saturos is going to start (so that Eruption can be avoided)

Title: Re: Saturos Attacks
Post by: Fox on August 23, 2017, 01:11:27 PM
^The Mercury one would have beenn my first guess due to no mention of Menardi. But thanks for being precise!

So... assuming you could control the seed with reasonable time... I'm guessing getting it on the 8th/last one would be best case circumstance? (Or does it simply not matter once you know when Eruption will happen?)
You kind-of have to see two of his moves happen to figure out where he is in his pattern. (e.g. Avoid 5 and 6)

Saturos: (For reference so no one has to refer to the Editor.)

Title: Re: Saturos Attacks
Post by: Plexa on August 23, 2017, 03:38:45 PM
Yeah we already aim for that part of the cycle in all the S&Q categories, this was for the no S&Q category, meaning they have no control over where the BRN is at saturos. I've attached the project that inspired the question to this post. Someone doing no S&Q can simply input the commands issued into the sheet and the sheet will calculate the BRN advances for them. Thus allowing them to predict saturos's attack (and most importantly, avoid eruption)

I worked out from your earlier post that I just needed to bit.and with 0xFFF then bit.rshift by 8 places to isolate the number determining Saturos's attack.

Title: Re: Saturos Attacks
Post by: Fox on August 23, 2017, 04:50:29 PM
Okay, cool... I had a feeling it might be something like that... from your previous post...  I guess now we know for sure! :)

0xFFF? or 0x7FF? ; I think it's better to do the rshift first and .and with 7, if you want it to look prettier, though. (As for me, I'd do it that way simple because the game does, kinda. The rng function called already does the shifting, so it is just an and instruction.)

Mercury Lighthouse is pretty early in the game... ~1-2 hours? So it would be cool if it could be manipulated consistently until that point, but I have doubts. (It helps to have two different random number generators, huh?)
Thought:  It would be interesting to know the minimum number of generated seeds possible through the entire game, though. (Kinda like a speed-run, but instead of managing time, manage the seeds. :P ; Going to guess GRN would have way more than BRN.)

-Some battles during the Vale prologue. (+Saturos+Menardi battle)
-Some battles in Sol Sanctum until Jenna has a certain amount of exp.
-Battles on the World Map.
-Bandits battle in Vault.
-More World Map battles.

P.S. Not sure if that .xlsm would be better in Google Spreadsheets or not....?

Title: Re: Saturos Attacks
Post by: Plexa on August 24, 2017, 12:50:20 AM
Google sheet may have been better, but I had to write some VBA functions for RNG advance and whatnot. It's not feasible to track BRNs to manipulate fights, but since Saturos is so dangerous and Eruption is just instant gg counting BRNs to that point is feasible with a useful application.

Title: Re: Saturos Attacks
Post by: Fox on August 24, 2017, 02:27:33 AM
Alright cool.

Going to need to see if I can view the scripts in any free software... er.... Edit:  OpenOffice appears to view them. - Seems to start most lines with "Rem", though... which looks weird.
Rem Attribute VBA_ModuleType=VBAModule
Sub Module2
Rem Public Function RNA(x As Double) As Double
Rem     g = x
Rem     m = 20077
Rem     n = 16838
Rem     g1 = g * m
Rem     g2 = g * n
Rem     g2 = Application.WorksheetFunction.Bitand(g2, Application.WorksheetFunction.Hex2Dec("FFFF"))
Rem     g = g1 + g2 * Application.WorksheetFunction.Hex2Dec("10000")
Rem     g = Application.WorksheetFunction.Bitand(g, Application.WorksheetFunction.Hex2Dec("FFFFFFFF"))
Rem     c = Application.WorksheetFunction.Hex2Dec("3039")
Rem     g = g + c
Rem     g = Application.WorksheetFunction.Bitand(g, Application.WorksheetFunction.Hex2Dec("FFFFFFFF"))
Rem RNA = g
Rem End Function
End Sub

I think Google Spreadsheets also had some script editor, but I never really bothered using it yet... so....

So Mercury Lighthouse Saturos is the only enemy that actually matters for BRNs?

Interesting you are using "doubles"... I think "integers" are the way to go, but anyway... There may be a possibility that this code can be shortened and made readable at the same time?

Not sure how different Spreadsheet VB is from VB.NET ... But I will want to try &H for hex and &(or and?) for and.... ; 0x3039 is actually just 12345.... ; Also, I assume "Application.WorksheetFunction" can be set to a variable, and used from there. variable.Hex2Dec(whatever.....)

Edit again:  Pwn'd... ~20 minutes before I noticed next post. :D

Title: Re: Saturos Attacks
Post by: Plexa on August 24, 2017, 03:06:48 AM
Manticore and Kraken would probably be the other two. Kraken is more difficult because his attack will depend on what the elven shirt user does, and beyond the first attack there's not much you can do to manip beyond that (or atleast I can't think of a way). Manticore is also a pattern boss like saturos but not nearly as scary since you won't get OTKO by the manticore on any of his turns.