Golden Sun Hacking Community

Golden Sun Resources => The Classic GS Editor => Topic started by: Drake baku on 20, April, 2017, 04:35:51 AM

Title: Change a djinn to fight it
Post by: Drake baku on 20, April, 2017, 04:35:51 AM
I have a question
Is there a way with the editor to change it so that i can make Bane (golden sun 1) into a djinn you have ti fight?
I want to make use of the unused venus djinn battle data

If not by editor, is there an other way? (if by hex, please give me a atep by step cause laat time i tried to hex rdit, i ended up not getting the game to play when i had to pick a name, and that was witj a graphic change that had nothing to do with that scene so....)
Title: Re: Change a djinn to fight it
Post by: Rolina on 20, April, 2017, 06:23:10 AM
Good question.  I've always liked the idea of having to fight the djinn that do damage, while the djinn that have support effects are the ones that join on their own.  Worth looking in to.
Title: Re: Change a djinn to fight it
Post by: Drake baku on 20, April, 2017, 12:43:41 PM
So nothibg is known yet XD

Oh well, until we know something ill just use a djinn sprite with altered pallet and play around with team builds in crossbone
Either overwrite it on the 8th floor toad guard, or add it to the cerberus 9th floor gate XD

Title: Re: Change a djinn to fight it
Post by: Rolina on 21, April, 2017, 07:22:56 AM
?  Nah, that just means I'm not the one to ask.  In fact, with the technical stuff I'm just as clueless as you.  Best to ask Squirtle or Fox on this, they seem to be the ones who understand these things the most.
Title: Re: Change a djinn to fight it
Post by: Salanewt on 21, April, 2017, 02:17:34 PM
It's handled in room/map scripting, but I'm afraid I haven't looked that far into it yet:

- Djinn sprites are handled in the object scripting portion of the code (even on the overworld), which we know about.
- What we (I?) need to confirm is how certain djinn are chosen and exactly what code or functions are used to initiate battle.

In this instance it could either use universal code or be custom-made for the map it's in.


Looking at the documentation, we have this:

080CA1A4 = 080EEF54 is encounter+group list. ; For djinn

080EEF54 = Djinn battles?
0001 = Battle Encounters Index
0001 = Group (Which of the eight monster groups? (0-7))


And this:

080D2B4C = Djinni battle? ?(obj,djinni?)

And this?:

080D7788 = Djinni obtain related.
080D793C = Djinni obtain related. (Has call to 080D7788.)

It also looks like Fox started researching map/room scripting at some point because this is in the document for Suhalla Range (maps 6,7,8):

02008038 = Event (Map 7) Mercury Djinni Battle


Fox might know more about this than I do.
Title: Re: Change a djinn to fight it
Post by: Daddy Poi's Oily Gorillas on 21, April, 2017, 08:53:58 PM
Sala.... I think he's on Golden Sun 1, so those addresses don't exactly help. (Except for where GS1 and GS2 do things similarly.) ... :)


Bane is in Crossbone Isle = http://goldensun.wikia.com/wiki/Bane
I think he wants Bane to initiate a battle instead of just getting him right away... right? Soo... I'm thinking map code editing at the minimum....
...and maybe a slight edit to a battle encounters stuff/not sure until I look at the table(s), though. You never know if there's more unused stuff in there.



Map 7 - Mecury Djinni Battle - Left-overs from GS1 that is in GS2, most likely.

Object 0xD , Djinni? 0x1A (Maybe 0x14+ is Mercury...? Erm.... 7th Mercury Djinni? - Probably Mercury Djinni Dew - Suhalla Gate would be the right place for that... :) )



*Tampers with my signature.*



---
Looks like I documented this stuff for GS1:

0809C610 = Battle Encounters
0000 = Encounter rate/frequency.
0000 = Recommended level for average PC. (Higher than this (up to +5) may makes battles happen sooner.)
0000 *8 = Monster Group indexes
00 *8 = Which battles are more common than the others.

0809D170 = Assigns Battle Encounters to Maps
000F = Room
FFFF = Door
8814 = Story flag Index
0001 = Battle Encounters Index

0809D7A8 = Assigns World Map Battle Encounters
0001 = Area Type
0004 = Terrain type
FFFF = Story flag Index
0007 = Battle Encounters Index

0809D8B0 = Djinn battles?
0064 = Battle Encounters Index
0000 = Group (Which of the eight monster groups? (0-7))


--
I'm going to take a hunch that this section in GS1 will be pretty straight forward to document.
GS1: 0808A000 - 080A1000 (0x17000 bytes , includes free space.) - (Note:  Larger than GS1's Party Mechanics, but smaller than GS2's Party Mechanics , but most work is spent on studying code, so that should be compared instead....)
GS2: 080C8000 - 080F8000 (0x30000 bytes , includes free space.)
^ Probably a lot of copy/pasting from GS2 into the GS1 document. Best part is we'd know what is GS2-exclusive.
Title: Re: Change a djinn to fight it
Post by: Salanewt on 22, April, 2017, 10:34:53 AM
Oh, whoops!

Well, nice work with the research anyway and good luck to Drake.
Title: Re: Change a djinn to fight it
Post by: Drake baku on 23, April, 2017, 08:13:50 AM
O.o

I think I understand that you guys know how to do it, but that is pretty much all I can understand from this
Hex editing is really complicated
Title: Re: Change a djinn to fight it
Post by: Daddy Poi's Oily Gorillas on 23, April, 2017, 09:02:56 AM
It sure is (when you first start.) But man, can it be addictive sometimes, right? - Positive reinforcement when you get something right. :)

---
So.... Instructions were not given because none were prepared... I suppose some can be prepared in do time... Especially after some testing.
(I was secretly hoping maybe Salanewt had something to add to save me some time, but that's okay.)


Currently, I'm thinking of: (Should be doable from Atrius's Editor.... Map Viewer>Hex editor part. -- That being map 120.)
020089E0:2106
020089E2 = This can be ignored or gotten rid of. But you can ignore this.
0200A5F4:0808A259

As a disclaimer, though, please note that this was not tested, and there may be a possibility of other things needing to be edited. (Edit: Getting the battle has been tested, but not of winning/obtaining it, but I don't see why not.)

-I still need to check if the function here is only used once. (Calls to 0200A5F0) - Since this might possibly break other djinn you receive that don't give you a battle. (Unlikely since map code is quite specific to a map or series of maps.)
-I need to check the djinni battle function just to make sure it works as expected for this.
Etc.....



0809D8B0 = Djinn battles table (Venus is Encounter #(dec) 100, ... and up to 103.... It is 20 entries for each element, but they go from 0-7 .... er...)
Well... Let's just look at the respective data in battle encounters....
0809C610 = Battle Encounters
>0809D100 = Venus Djinn battles
0168 0168 0168 0169 0169 0169 016A = Venus Djinn Battles
016D 016D 016D 016E 016F 016F 0170
0173 0173 0174 0174 0174 0175 0175
0178 0178 0179 0179 0179 017A 017B <<< Jupiter Djinn battles, but is also the LAST entry in Battle Encounters.

016A is 362, but may be 361 in Atrius's editor because he forgets the first "nothing" entry.....

^ So yes, the tables look fine... I thinking it is all up to the code... Whether it works or not depends on if anything needs messing with.