News:

The forum has been updated to SMF (2.1.3)!
Please be patient as we work to polish up the place and update features as we can.

Main Menu

[RELEASE] Golden Sun: The Balance Age

Started by Caledor, 24, January, 2015, 12:29:46 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Salanewt

Quote from: Caledor on 03, February, 2016, 12:43:32 PM
BTW, I'm totally fine with the set of animations I've chosen (yes I tried the new one that comes with your patch)... the only thing that bugs me is that only Watery Grave acts like a proper multi target psy. So... what i hypothetically need is for Dreamtide and Raging Flood to act like Watery Grave (= the animation hits EVERY targeted enemy and not only the leftmost one).

I still remember most of the conversation regarding waves and stuff (both in the topic and the chatbox), but I figure I should mention that Dreamtide and Watery Grave share a lot of the same base code. Raging Flood is pretty unrelated to them though, so the goal is to add a third tier to Dreamtide/Watery Grave and amend the targeting issue. The targeting solution may simply be a branch in the end, not sure yet.

A downside is that the animation is 3D, which I have less experience with compared to other animations. It may take some time to figure it out for that reason alone.

I also haven't forgotten Mars revive, but for now it and the wave fix will have to wait a bit. I have some schoolwork to do first!
Oh yeah baby, £ me harder.

Fusion is just a cheap tactic to make weak Adepts stronger.

Yoshi's Lighthouse is a hacking website in progress. Why not check it out if you like Yoshi or the Mario & Luigi games?

Caledor

#741
Got it. Too bad I'm really useless at animations... I know absolutely nothing about them. Do you happen to have some sort of documentation that could help me learn at least the basics about them?

EDIT: Ok... despite being a total greenhorn, by studying your 4 element revive patch i figured out that the palette for Revive is determined at 080cf344, by storing a value into r0. 93 is the venus palette, 91 is mercury and 8D (the one i want) is mars. let's see how far i can go with this.

Salanewt

#742
Yup! If it helps, assigned palettes go by IDs in the data browser (as seen in the editor). A lot of graphics do too, but keep in mind that the editor can't display certain things that may be commonly used by animations.

While we're on the subject of palettes though, I currently know of four ways that they are set:
- Graphic-based, where the palette is loaded with the graphic(s);
- Element, where the palette is based on element rather than the graphic (an either/or condition with the previous method);
- ID, with IDs seen in the data browser (this is manually set using a different function);
- Manually set (similar to ID, but without using IDs);

The "manually set" option is only utilized by four(?) animations if I recall correctly, including Bind and the other two/three rainbow ones (Bind/seal strike, Shining Star, and Lull in GS2). It's normally set up in a loop so the colour changes every time that portion of the code is executed, but the looping part is optional. It's a pretty sweet way to get palettes that are absent from the data files, with the the downside of it being harder to control highlights/shading like you can with actual data palettes/IDs.


Edit: I have limited documentation, unfortunately. One file I am working with documents certain variables and other notable instructions in certain animations. I think I have another more precise one somewhere... can't remember right now.
Oh yeah baby, £ me harder.

Fusion is just a cheap tactic to make weak Adepts stronger.

Yoshi's Lighthouse is a hacking website in progress. Why not check it out if you like Yoshi or the Mario & Luigi games?

Caledor

#743
I'm testing right now to see if a trick i devised works. if Dew doesn't screw up, I did it.

EDIT: I. FREAKING. DID. IT.

Salanewt

Oh yeah baby, £ me harder.

Fusion is just a cheap tactic to make weak Adepts stronger.

Yoshi's Lighthouse is a hacking website in progress. Why not check it out if you like Yoshi or the Mario & Luigi games?

Caledor

#745
Changed this

to this

The original is pretty straightforward. if r7=0 then palette = venus else palette = mercury
In mine, it loads the ability argument into r0 with the first 2 istructions, then it gets doubled it and subtracted from #0x93. This way, if the argument was 0, you get 93 (venus). If the argument was 1 you get 91 (mercury), with 2 you get 8F (jupiter) and with 3 you get 8D (mars). Things should start going bad from 4 onwards but i don't really care since i'm the one setting the argument :P

It works with everything, from items to djinn... i can even make jupiter reviving djinn with this.

Salanewt

Oh hey, nice work! I don't know why I never thought of it, but you came up with a pretty solid solution for this. :D

Do you still need my help for anything, or are you good to go now?
Oh yeah baby, £ me harder.

Fusion is just a cheap tactic to make weak Adepts stronger.

Yoshi's Lighthouse is a hacking website in progress. Why not check it out if you like Yoshi or the Mario & Luigi games?

Caledor

I'm good now, thanks. I'll probably incorporate your wave thing when it's done but the 50% revive and the mars revive were the most important by a large margin.

Patches will be released tomorrow. I'm going to bed now. :P

Salanewt

Okay, cool. My apologies for not getting those other things 100% right, but I was happy to help regardless.

Good night!
Oh yeah baby, £ me harder.

Fusion is just a cheap tactic to make weak Adepts stronger.

Yoshi's Lighthouse is a hacking website in progress. Why not check it out if you like Yoshi or the Mario & Luigi games?

Caledor

#749
No problem at all. After all I only figured it out by checking your first attempt, so thanks a lot!

BTW, since i'm already at it, might as well try fixing a few others, like Impact and Iron :P

VardenSalad

Hey Cal, noticed you pushed back the Ragnarok/Heat Wave/Diamond Dust upgrade to 8 djinn per (Ele level 13 instead of 11). Was that intentional? I mean, it'll probably do a lot for balance in TLA, but I just wanted to make sure it was on purpose.
Never forget why you started playing.

Caledor

Actually it's been like this from the very first release and you even already asked me about this IIRC :P

BTW... making a jupiter and venus impact in TLA is gonna be a pain. There's a single function that is called by Impact, Guard, Veil, Ward, Granite, Flash, Breeze and maaany more.

VardenSalad

Oh ._.

I guess it's been a while. The changes you've made have looked good btw. Taking a leap and putting something like the Fury in was well executed.
Never forget why you started playing.

Caledor

#753
Thanks, Varden ;)

@Squirtle: I think I've figured out how to deal with Impact in TLA. There's only a thing I don't know: the address where the ability is stored in the RAM. I need that to grab the element of the ability and change palette according to that. Do you happen to know it?

Also... Iron is a total mistery instead. Apparently, it loads the correct palette (#156=venus) but for some reason it turns white halfway.

Salanewt

Lol, yeah. The buffs and heals are pretty massive functions full of branch groups and such. It may not be a bad idea to make a couple of them element-specific actually. Or even to check out debuffs first. While I don't really have notes on the buff function yet, I do have a lot of the branches for the healing one (GS2) should you want anything...

Actually, I'll dump what I have just in case you want to take a look at anything. I only have about seven animation functions in here so far (I think Star Mine and one or two others may be in a different document I have to hunt down) and a couple are very incomplete, but you never know if something may come in handy. Some points/addresses may also be a bit off, being based purely on observation or even hypothesis. Whatever.

[spoiler=GS2 - Stuff]Random Animation Research

08145DF8 - Bind
08145E7C - Graphic/animation width
08145EA4 - Palette cycle blur control? (0-4, with 3 being normal and the others changing how the blur/cycle works with weird results)
08145ED2 - Horizontal render limit
08145ED6 - Sound effect #1
08145F0A - Delay before target's animation changes
08145F0E - Sound effect #2 (target damage)
08145F14 - Palette cycle control #1 (red and cyan)
08145F16 - Palette cycle control #2 (green and purple)
*081496C8: r0 is essentially a counter that is used to do the cycle; it increments every time this portion is executed
...
08146250 - Palette cycling? (10D-112 affect the background, but changing it doesn't affect the animation itself?)
08146254 - Blur thickness #1 (larger numbers lessen the blur)
0814625C - Blur thickness #2 (Ditto)
08146268 -
...

0814EF44 - Healing
0814EF72 - x0D (Iris?) check; not equal
...
0814EF88 - Djinni check (x01 = djinni; not equal)
0814EF8E - x06 (Psy Crystal) check; equal
0814EF92 - x02 (Cure) check; equal
0814EF96 - x07 (Salt) check; not equal
...
0814EFAA - x06 (Psy Crystal) check; equal
0814EFAE - x00 (Ply) check; equal
0814EFB2 - x08 (Spring) check; equal
0814EFB6 - x09 (Breath) check; equal
0814EFBA - x0A (Ether) check; not equal
...
0814EFEE - x00 (Ply) check; equal
0814EFF2 - x08 (Spring) check; equal
0814EFF6 - x09 (Breath) check; not equal
...
*Palette check 1 (blue)*
0814F082 - x01 (Wish) check; less than/equal
0814F086 - x03 (Cure Poison) check; equal
0814F08A - x04 (Restore) check; equal
0814F08E - x05 (Tonic) check; equal
0814F092 - x08 (Spring) check; equal
0814F096 - x0C (Eddy) check; not equal
*Palette check 2 (purple)*
0814F0AE - [value -x09] (Breath & Ether) check; if higher than x01
*Palette check 3 (red)*
0814F0B6 - x06 (Psy Crystal) check; equal
0814F0BA - x0B (Aura) check; equal
0814F0BE - x0D (Iris?) check; not equal
*Palette 3 (gold)*
*Holographic djinn checks*
0814F0E2 - x06 (Psy Crystal) check; not equal
0814F0EA - x02 (Cure) check; equal
0814F0EE - x07 (Salt) check; not equal
0814F0FA - [value -x09] (Breath & Ether) check; if higher than x01
0814F106 - x06 (Psy Crystal) check; equal
0814F10A - x0B (Aura) check; equal
0814F10E - x0D (Iris?) check; not equal
0814F116 - x02 (Cure) check; equal
0814F11A - x07 (Salt) check; not equal
0814F126 - [value -x09] (Breath & Ether) check; if higher than x01
...
0814F156 - x00 (Ply) check; equal
0814F15A - x06 (Psy Crystal) check; equal
0814F15E - x08 (Spring) check; equal
0814F162 - x09 (Breath) check; equal
0814F166 - x0A (Ether) check; not equal
...
0814F1AE - x09 (Breath) check; not equal
0814F1B8 - x08 (Spring) check; not equal
0814F1C4 - x07 (Salt) check; not equal (not related to previous two checks; comes after previous set of checks)
0814F1CC - (Salt) particle spread
0814F1D4 - (Salt) particle origin height
0814F1E6 - (Salt) particle curve/direction control #1
0814F1F0 - (Salt) particle speed/velocity
0814F204 - (Salt) particle curve/direction control #2
0814F220 - x0C (Eddy) check; not equal



081665A4 - Ragnarok (*Missed: End particle size, caster animation, floor render height, motion blur...?*)
08166618 - Transparency
08166628 - X-coordinate?
081666D6 - Particle spiral speed
081666E2 - Particle spiral spread
08166706 - Particle spiral Z-coordinate
08166710 - Spiral rotation speed
08166734 - Spiral particle size
0816674A - Blast radius
0816678A - Sound effect #1
081667AA - Sound effect #2
081667B6 - Sound effect #3 (target damage)
081667BE - Delay before graphic vanishes (will eventually burrow entirely underground if set high enough)
081667C6 - Sword starting radian/angle? (affects starting position before it approaches target; burrowing motion unaffected)
08166824 - Sword X-coordinate on landing (burrowing coordinate(s) come later)
08166826 - Sword Z-coordinate (relative to ground)
0816682A - Sword Y-coordinate (flat, relative to overall display)
08166888 - Screen shake severity (universal)
0816699C - Sword graphic
081669A0 - Blast graphic
081669A4 - Particle graphic
081669B4 - Palette transition
08166A0C - Particle count
08166A7A - End particle amount
08166A92 - Screen shake horizontal severity
08166A94 - Screen shake vertical severity
08166AAC - FPS control (length of delays between each frame)
08166AB2 - Speed control (speed that each frame plays)
08166AB8 - Animation length
08166AE8 - *End of animation*
08166AEE - Particle burst angling



0816AEEC - Dreamtide/Watery Grave
0816AF18 - Tier check (Dreamtide; purpose currently unknown)
0816AF86 - Palette/element control
0816AF8C - Related to texture layering/placement?
0816AF9C - Dreamtide spiral graphic stuff
0816AFAE - Tier check (Watery Grave)
0816AFC4 - Loop/counter limit
0816AFD4 - Watery Grave foam transparency (master)
0816AFD6 - Watery Grave foam transparency (2?)
0816B000 - Wave control 1(severity/motion?)
0816B002 - Wave control 2(angling?)
0816B004 - Wave control 3(texture layering?)
0816B014 - Wave control 4(?)
0816B016 - Wave control 5(triangulation?)
0816B03E - Wave triangle control? [change argument to x12 to see angling triangle, normally invisible?]

0816B044 - Wave movement?
0816B04E - Wave length 1 (target side first, longer means closer/further behind caster)
0816B05E - Wave outer edge control(?)
0816B06C - Wave length 2
...
0816B0E8 - Duration of Dreamtide (default x30)
0816B0F0 - Duration of non-Dreamtide (default x51)
0816B126 - Texture distortion severity?
0816B134 - Camera rotation limit
0816B146 - Camera rotation speed

0816B166 - Tier check (Dreamtide)
0816B16C - Delay before Dreamtide makes contact
0816B170 - Dreamtide sound effect
0816B176 - Target control (fixes affected target to opponent side); branch to x0816B20A to have multi-target, but need to resolve palette swap issue
0816B17E - Dreamtide contact launch height
0816B194 - Target palette swap
...
0816B1B0 - Delay before initial contact
0816B1B4 - Watery Grave+ sound effect 1
0816B1BA - Target control? (1a)
0816B1BC - Target control? (1b - x00 to affect all enemies, x01 to affect left-most)
0816B1CC - Special argument? (x00 is the default, but x10 pushes enemies back slightly)
0816B1D8 - Target palette swap
0816B1E4 - Target control?
0816B1FA - Screen shake severity/duration
0816B200 - Delay before end
0816B204 - Watery Grave+ sound effect 2 (damage)
0816B218 - Watery Grave+ contact launch height
0816B224 - Target control?
...
0816B260 - Tier check (Dreamtide)
...
0816B284 - Water Texture (and Dreamtide/x02 palette)
0816B288 - Dreamtide spiral graphic?
0816B28C - Watery Grave foam (blast) graphic
0816B290 - Watery Grave palette
0816B2A4 - ???
...
0816B2C4 -
0816B2C8 - Watery Grave+ fadeout transparency?
...
0816B2DE - Transparency/layering flag?
0816B2E4 - Tier check (Dreamtide)
*0816B2E8 - Dreamtide
0816B2F6 - Dreamtide max height (3D)
0816B2FE - Final wave height (?)
*0816B30E - Watery Grave+
0816B31E - Watery Grave+ max height (3D)
0816B324 - Final wave height (?)
*Modeling/animation stuff*

0816B30E

0816B686 - ???

Observations:
x0, x2: Shared palette, spiral graphic, contact
x1, x2: Shared size/flow, target interaction
x1 (Watery Grave) has an additional palette/blending control?
All waves have a similar motion, but x0 has different angling and speed/duration?



0816D3D8 - Stone Justice
0816D414 - Palette/element control
0816D41C - Transparency (as in actual texture background transparency)?
0816D42C - Motion blur flag; x01 is off, other values are on
0816D438 - Horizontal scaling
0816D43C - ???
0816D440 - Graphic
0816D49C - Sound effect #1
0816D4A8 - Sound effect #2



08170DAC - Void Beam (*Missed: Circle creation... ?*)
08170EE4 - Starting transparency
08170F04 - Palette (x0128 for pink)
08170F82 - Sound effect #1
08170FAA - Camera rotation limit
08171008 - Finishing transparency
08171014 - Pre-draw camera rotation (speed/velocity?)
08171018 - Post-draw camera rotation (speed/velocity?)
08171024 - Sprite scaling (camera pan? doesn't scale background though)
08171080 - Glyph draw line/triangle count?
0817108E - Glyph Z-coordinate
081710B6 - Triangulation variable 1?
081710F2 - Triangulation variable 2?
08171106 - Vertical line angling
08171124 - Horizontal line angling
0817114C - Line width
0817114E - Line blur? (combines with previous value)
08171244 - Glyph distance from caster
...[/spoiler]

Caledor: As far as I know, it should more or less be like setting a flag in the actual function (0/1, where one of those uses a data palette and the other uses element). I can take a quick look if you give me the ROM address for the animation.
Oh yeah baby, £ me harder.

Fusion is just a cheap tactic to make weak Adepts stronger.

Yoshi's Lighthouse is a hacking website in progress. Why not check it out if you like Yoshi or the Mario & Luigi games?

Caledor


Salanewt

Cool, thanks. Just want to say right now that it looks like animation argument is stored in r11 and then loaded from it with every check. I shall get back to you in a bit on how to make certain animations element-specific.
Oh yeah baby, £ me harder.

Fusion is just a cheap tactic to make weak Adepts stronger.

Yoshi's Lighthouse is a hacking website in progress. Why not check it out if you like Yoshi or the Mario & Luigi games?

Caledor

r11? i thought it contained the value of r1 that is applied at the very beginning, which is #0 for the mars impact. BTW i think you misunderstood me. What i need is the address of the ability being cast inside the RAM. Basically the equivalent of #03007DC8 that i used for the mars revive fix. In that case I used that + #0x18 to grab the argument, now i want to grab the element from there.

Salanewt

Well yeah, but r1 is stored in r11 near the start of the function.

As for grabbing the element, are you certain you need to do it that way? I mean, I can take a quick look, but I can't recall many animations that need RAM access just for palette. I also understood, lol; just want to see if there's an easier way with the buffs before we try that route.
Oh yeah baby, £ me harder.

Fusion is just a cheap tactic to make weak Adepts stronger.

Yoshi's Lighthouse is a hacking website in progress. Why not check it out if you like Yoshi or the Mario & Luigi games?

Caledor

Quote from: Lord Squirtle on 07, February, 2016, 12:50:57 PM
Well yeah, but r1 is stored in r11 near the start of the function.
Yup, I know, but that isn't relevant to me, cause it's still gonna be #00... be it Forge, Impact or Demon Spear.
What I want to do is replace the instruction that determines the palette for impact (which is at #0814fc7a) with a jump somewhere (i've already found the space), and then manage from there... loading the element and setting the palette based on that. You think there's an easier way?