Golden Sun Hacking Community
April 20, 2018, 12:24:59 PM *
Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
News:
 
  Home   Forum   DC Wiki Help Search Calendar Downloads Login Register  
Pages: [1]   Go Down
  Print  
Author Topic: [SOLVED] Rearraging Djinn encounters  (Read 655 times)
0 Members and 1 Guest are viewing this topic.

I need saves to test encounters in GS Reloaded!

Great Member
***

Coins: 13
Offline Offline

Gender: Male
Posts: 739

« on: January 06, 2018, 08:02:10 PM »

Since I'm back working on the mod for a few tweaks, i think this is a good time to pick up again an old idea of mine: swap Chill (randomly encountered in the Southern Gondowan) and Mud (Gabomba Catacombs) to fix the elemental imbalance in the first half of the game, cause you get your fifth mercury djinn while you have still only 2 venus ones, leading to some awkward setups.

Point is, i'm afraid I have to ask once again for your help guys, there are many things I don't know and i got struck pretty badly the last time i tried.

I think there are 3 things i must do in order to swap them:

- Swap the encounters. This might be the easy part cause it's something i already did, both for overworld encounters and dungeon ones.

- Swap the models: after battle for both and the dungeon model for the gabomba djinn. This is the first thing i tried to do and where i got stuck. I managed to replace the models with atrius' editor but the game froze immediately upon interacting with it or after the battle (for the overworld one).

- Swap the flags. There are flags for each djinn, which are assigned the moment you get one. I obviously need to swap the call for those 2 djinn but i have absolutely no clue about this one.

Don't know if i missed anything, I hope i'll add something more later tonight or tomorrow if i discover something interesting.
« Last Edit: January 08, 2018, 06:47:04 PM by Caledor » Logged
View Profile

I need saves to test encounters in GS Reloaded!

Great Member
***

Coins: 13
Offline Offline

Gender: Male
Posts: 739

« Reply #1 on: January 07, 2018, 10:10:59 PM »

Testing for the gabomba djinn (map 127)
I can swap models and encounter with the editor pretty easily. The animation before battle plays flawlessly but after the battle the djinn remains stuck in midair, no animation plays, it doesn't get added to my djinn poll, and i can keep battling it by pressing A when facing it as usual.

From the editor i noticed that there are "events" binded to the djinn model so i think one or more of those handle the post battle animation and set the correct flag for the obtained djinn. There are 2 issues with them: I have no clue about what they actually do and they are stored in the ewram (02xxxxxxh), so even if i undestand what to do i can't make it permanent on the rom.

Does anybody have any familiarity with those "events"?
Logged
View Profile
Fox
Fox McCloud, the Hacking Doctor
Mercury Clan

Prodigy
*

Coins: 28
Offline Offline

I am: certainly not a Gallant!
Clan Position: Head Gallant
Posts: 2411

« Reply #2 on: January 08, 2018, 12:48:50 AM »

Hm... I got something similar with what I did. (No animation after battle.) I fixed it by correcting the flag in the npc entry.


So like...

EXAMPLE:

0200803C:0A = If changed to a number like 0x14 (First mercury djinni), then you'd also need to change 020093AA. In this example, that'd be to 0x44. (0x30 + 0x14)
... Of course, the djinni you want to change it to isn't the same one as my example...

0200803C = Djinni to battle

020093A8 = Sprite id
020093AA = Flag id

(Quick testing.  Should I do more?)


@02xxxxxx = If you mean this map code file. If you edit with Atrius's editor, it'll compress back into the ROM. (Or you could manually do it, if you make an asm hack where some files can skip the compression.)
« Last Edit: January 08, 2018, 01:11:47 AM by Fox » Logged

Golden Sun Docs: Broken Seal - The Lost Age - Dark Dawn | Mario Sports Docs: Mario Golf & Mario Tennis | Misc. Docs
Refer to Yoshi's Lighthouse for any M&L hacking needs...

Remember kids! Before you go on that interview, remember to wash your hands in teawater! *Coughs on hand* (Excuse me, I just coughed up a little teawater, so they're still clean!) You wouldn't want that hiring manager to be unimpressed.

May the force be with you!
Shoo! Why does it smell in here?
Maybe that's the wrong kind of force. *smirk*
View Profile

I need saves to test encounters in GS Reloaded!

Great Member
***

Coins: 13
Offline Offline

Gender: Male
Posts: 739

« Reply #3 on: January 08, 2018, 12:49:16 PM »

Thanks a lot, it worked!

Apparently Chill is flag 0x1F. Strangely enough, setting 0x17 leads to the same enemy encounter but flag 0x17 doesn't make the djinn appear. Also, i didn't know i could edit the decompressed event from within the editor, sweet! I never noticed the code hex window cause this is the first time i need to do something map related.

Do you happen have any tips for the swapping chill with mud? I have no clue on where to start looking for flags on the world map.

EDIT: Obviously i wanted to say that i set the encounter to 0x1F and the flag to 0x4F. The strange point is that encounter 0x1F and 0x17 are the same djinn but flag 0x47 doesn't make the djinn appear. Sorry for the misunderstanding.
« Last Edit: January 08, 2018, 05:17:26 PM by Caledor » Logged
View Profile
Fox
Fox McCloud, the Hacking Doctor
Mercury Clan

Prodigy
*

Coins: 28
Offline Offline

I am: certainly not a Gallant!
Clan Position: Head Gallant
Posts: 2411

« Reply #4 on: January 08, 2018, 05:05:50 PM »

Kind of an FYI/trivial thing.... But...... Flag 0x1F and flag 0x17 = = Not really where the Djinn flags are. (Djinn flags start from 0x30+...) But I'm guessing it is a slight mis-understanding of what I meant. :P That's alright though. "Flags" refers to the 1-bit table at 02000040/Same flags seen in Flag Menu. ; When a flag is on, it means the Djinni was retrieved, so it disappears from the map. - If it doesn't reference the bit table, (Being, not in the (0x30+ Djinn flags), I'd just call it Djinni id or something similar.

--
Now that the trivial part is out of the way....

I expect it is done the same way.

02030004 = Pointer to NPC table. (0200E338)
02030010 = Pointer to Events table (0200E7C0)

I scroll through those tables to find what may match.

In the NPC table, we can identify them by their sprite number and flag number. Very easy.

0200E398 = Sprite number. (Set this to 0xF3.)
0200E39A = Flag number (Set this to 0x3A.)

The Events table isn't that difficult either, and it most certainly wasn't difficult in the dungeon.
In the dungeon, it was just two exit events and a Djinni event. (That's all.)
While the dungeon is based on an interaction with an NPC, the world map is not, and is based on tile events. So I guess we can take one extra step. (EDIT:  Although, you could skip this step and go by flag id. But for sake of most events that don't always use flags... this is the way.)
See  020101A4, for the address that points to where we are in the tilemap. (Go to it.) In my example, I have 02020D5C, there, I see 0x035E12E6... Now, what we're interested in is the event number there.... (I bolded it. It is 0x5E) So, we go back to the Event table, and we look for one that matches it.

Found it!
0200E808 = 00000002 004F005E 02008101

I have bolded the event number here, that I connected it to. Now, this is when we look at that last 32-bit. It is a pointer to code that gets executed. Go to it in a disassembler. (Thumb)

There is a bit of code here, I scan for 0x1F for some reason, and see one at 0x02008144, maybe it is the right one? (If not, I can look further.)
« Last Edit: January 08, 2018, 05:21:41 PM by Fox » Logged

Golden Sun Docs: Broken Seal - The Lost Age - Dark Dawn | Mario Sports Docs: Mario Golf & Mario Tennis | Misc. Docs
Refer to Yoshi's Lighthouse for any M&L hacking needs...

Remember kids! Before you go on that interview, remember to wash your hands in teawater! *Coughs on hand* (Excuse me, I just coughed up a little teawater, so they're still clean!) You wouldn't want that hiring manager to be unimpressed.

May the force be with you!
Shoo! Why does it smell in here?
Maybe that's the wrong kind of force. *smirk*
View Profile

I need saves to test encounters in GS Reloaded!

Great Member
***

Coins: 13
Offline Offline

Gender: Male
Posts: 739

« Reply #5 on: January 08, 2018, 06:54:13 PM »

Many, many thanks, Fox!

Chill becomes Mud with those changes:
0200E398 = 0xF3
0200E39A = 0x3A
02008144 = 0x0A

There's still a few things I don't understand about those events but for now this will do. I'll come back here whenever i need to make similar tweaks in the future.
Logged
View Profile
Fox
Fox McCloud, the Hacking Doctor
Mercury Clan

Prodigy
*

Coins: 28
Offline Offline

I am: certainly not a Gallant!
Clan Position: Head Gallant
Posts: 2411

« Reply #6 on: January 09, 2018, 02:08:22 PM »

You are welcome.

And yes, that's it!

Not to worry, there are some things I have yet to understand as well. (But it probably wouldn't be that difficult to figure out.)

In both cases (the dungeon and the world map), the same function gets called. (Interesting.)

The arguments are:
r0 = NPC id
r1 = Djinni id

So:
The dungeon is:
r0 = 00000008
r1 = 0000000A

And what I saw that was interesting, was:

The world map had it as:
r0 = 0000080C
r1 = 0000001F

This suggests that the "8" may mean something. (Another thing I haven't learned about/documented! Exciting!) Probably the difference between whether the Djinni was already displayed on the map or not, but I'll need to investigate.

EDIT: The "8" flag means to skip the animation/go straight to battle!



EDIT: Okay. Figured one big thing out!
-The number you put in the event, when a map code function is called....  (BEFORE BATTLE) ... A function puts a number at like 02000494.
-Later, (AFTER BATTLE) This number is taken, and all the NPC init entries are scanned to find a matching flag.
--Value at 02000494 must be from 012C-017B (As an 11-bit... 0800 flag is okay.) Basically matching ability id.
--ONLY FLAGS OF 0x30-0x07F WILL WORK! :) As long as the flag is match with the number put in for the event.
So pretty much, this is how the right entry is found, so you could make it any entry you wanted, as long as the flag id is found, you're good to go.
From there, based on the entry used, it'll look up the respective data in the 02030014 NPC list....
« Last Edit: January 10, 2018, 07:31:36 PM by Fox » Logged

Golden Sun Docs: Broken Seal - The Lost Age - Dark Dawn | Mario Sports Docs: Mario Golf & Mario Tennis | Misc. Docs
Refer to Yoshi's Lighthouse for any M&L hacking needs...

Remember kids! Before you go on that interview, remember to wash your hands in teawater! *Coughs on hand* (Excuse me, I just coughed up a little teawater, so they're still clean!) You wouldn't want that hiring manager to be unimpressed.

May the force be with you!
Shoo! Why does it smell in here?
Maybe that's the wrong kind of force. *smirk*
View Profile
Pages: [1]   Go Up
  Print  
 
Jump to:  

Cbox
Yesterday at 11:29:46 PM
Atrius: @Fox, I tried, but for some reason Mario Golf won't boot, and Mario Tennis crashes when you patch out the text compression, and I'm not sure why...  The normal text loading functions in them are basically the same as the ones in the Golden Sun games.
April 16, 2018, 07:44:36 AM
Drake baku: So it took about halve a hour of letting my lap stay off for it to suddenly work again
April 16, 2018, 07:31:28 AM
Drake baku: All of a sudden fox his editor gets errors. When trying to start it, thing worked fine yesterday...
April 14, 2018, 01:04:37 PM
Fox: @Mario Golf/text editing = Nope... And it may be awhile yet. I think I looked into it before... (at least for GS1)... but usually is the case when I come across a particular problem, that it can delay a solution for an extremely long time.
April 12, 2018, 04:27:14 PM
KyleRunner: Gee... never used discord...
April 12, 2018, 06:03:23 AM
Drake baku: I take it back, found it
April 12, 2018, 06:02:01 AM
Drake baku: But there is no discord link to be found
April 12, 2018, 06:01:44 AM
Drake baku: Everyone is on discord
April 11, 2018, 09:44:06 PM
KyleRunner: Fox, what about that tool for editing text in Mario Golf? Didi you finish it? If not, can you make a version of gstoolkit compatible with it?
April 11, 2018, 07:41:25 AM
Drake baku: Mauw
March 30, 2018, 07:26:11 PM
Salanewt: Hi!
March 29, 2018, 07:37:45 PM
ThanatosTheDark: YYEEEOOOOOO
March 12, 2018, 02:21:06 AM
Fox: say*
March 12, 2018, 02:20:53 AM
Fox: I saw we need an event this April Fools/Easter... because two holidays are in one, why would we not want to miss having something special? (Unfortunately, there's no one here to make an event be successful.)
March 12, 2018, 02:18:17 AM
Fox: And since that's the case...  I have thought of another fun experiment idea. - What if we had an auction on who should run this site, and waited for 10 people to bid and also for a bare minimum of 24 hours. Who would bid the highest, and how much would that bid be? - The idea is more for lulz (Maybe for April Fools?), and a theory to get an idea of how much the site might be worth as well.
March 11, 2018, 03:02:31 AM
Fox: Creepy, isn't it?
March 10, 2018, 02:19:04 AM
Fox: It's frog legs now.. It's something that's dead, but somehow still manages to wiggle.
March 09, 2018, 04:12:17 AM
JamietheFlameUser: I think this place is still dead.
March 02, 2018, 09:43:18 AM
Pkmn-Master: Lol I haven't been here in like 6 years. How is everyone?
February 26, 2018, 06:15:34 AM
Salanewt: Heads up: I finally finished the Wisp animation hack, and it has been posted in the downloads section.

Affiliates
Temple of Kraden Golden Sunrise
Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!
Page created in 0.073 seconds with 23 queries.