Golden Sun Hacking Community
October 18, 2018, 12:02:25 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 1068 times)
0 Members and 1 Guest are viewing this topic.

I need saves to test encounters in GS Reloaded!

Excellent Member
****

Coins: 13
Offline Offline

Gender: Male
Posts: 772

« 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!

Excellent Member
****

Coins: 13
Offline Offline

Gender: Male
Posts: 772

« 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: 29
Offline Offline

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

« 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!

Excellent Member
****

Coins: 13
Offline Offline

Gender: Male
Posts: 772

« 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: 29
Offline Offline

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

« 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!

Excellent Member
****

Coins: 13
Offline Offline

Gender: Male
Posts: 772

« 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.

EDIT: Also at 0200E808 = 00000002 004F005E 02008101, the 4F becomes 3A
« Last Edit: September 04, 2018, 12:07:14 AM by Caledor » Logged
View Profile
Fox
Fox McCloud, the Hacking Doctor
Mercury Clan

Prodigy
*

Coins: 29
Offline Offline

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

« 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
October 13, 2018, 03:23:06 AM
Salanewt: Updated it to provide more info that I forgot to mention.
October 13, 2018, 03:16:48 AM
Salanewt: I'm still trying to iron out IQ 2 but I'm pretty sure it's entirely random targeting.
October 13, 2018, 03:16:29 AM
Salanewt: Oh yeah, I posted some more info about enemy IQ.
October 12, 2018, 09:51:27 PM
FoxThe HTML5 project is too small to count
October 12, 2018, 06:19:48 AM
Luna_blade: there is jjppof's html5 project...
October 12, 2018, 06:19:17 AM
Luna_blade: Though Momo rings a bell it seems I came here after you left
October 11, 2018, 12:49:41 AM
Fox: (If that makes sense.)
October 11, 2018, 12:48:33 AM
Fox: Yeah, I guess so.  More just saying that's a good place to get answers to GS related questions at the moment.
October 11, 2018, 12:42:28 AM
Crystal Sonata: I did before, but I guess I could try it again
October 11, 2018, 12:41:32 AM
Fox: Not much at the moment. This forum seems pretty quiet. Perhaps you'd be interested in joining the Discord for GSHC that seems to have more activity?
October 10, 2018, 11:16:53 PM
Crystal Sonata: Any projects going on? I need a distraction from the daily grind and I'm interested in hacking GS again.
October 10, 2018, 10:02:53 PM
Fox: Thanks, and good to see you too!
October 10, 2018, 10:02:10 PM
Fox: A few people I'm sure... Most likely the regulars of the past. Such as Atrius, Charon, Role, Salanewt....
October 10, 2018, 03:11:17 AM
Crystal Sonata: I find myself wondering who still remembers me here. Obvs you do (Good to see ya Tea)
October 10, 2018, 12:46:11 AM
Fox: On second thought, it might be because you haven't posted much as Crystal Sonata.
October 10, 2018, 12:41:12 AM
Fox: And your intro isn't that bad. - I imagine most people would say the same about theirs?
October 10, 2018, 12:39:39 AM
Fox: :O - You've been gone so long, I think I forgot you were Momo.  Interesting.
October 09, 2018, 10:23:39 PM
Crystal Sonata: I just revisited my dark past on here and ouch. Someone delete that introduction thread please, the cringe.
October 09, 2018, 08:26:11 AM
Crystal Sonata: Aaaaand, she re-appears yet again. My life keeps dragging me away from the internet sadly.
October 01, 2018, 01:27:50 PM
Luna_blade: haha oof.

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.121 seconds with 23 queries.