News:

As a consequence of the forum being updated and repaired, the chatbox has been lost.
However, you can still come say hi on our Discord server!

Main Menu

Golden Sun: The Lost Age Editor V0.4 Released

Started by Atrius, 30, June, 2011, 08:09:48 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Daddy Poi's Oily Gorillas

#40
Yeah, Shop Editing is cool...

I forgot to comment on some earlier comments...

QuoteI do want to check something, though - is there a way to determine which items go in which shop type, or is that hard coded?  It'd be nice if I could test a psynergy shop out, but if I can't fuse the two equipment shops I'm kinda screwed there...

QuoteI haven't tested it, but I would think it's based on the item type setting for the item (Value in top-right corner of item editor)

QuoteIf it's just Weapons for weapons, and the seven or so armor types for armor, and we can't change that... that's gonna suck.  It'll really limit what we can do and test.

I did do some research on this yesterday. It is assembly coded. And yes, they are based on the item type values.


00 - Items           - Item Shop
01 - Weapons         - Weapon Shop
02 - Armor           - Armor Shop
03 - Chest Protector - Armor Shop
04 - Head Protector  - Armor Shop
05 - Leg Protector   - Armor Shop
06 - Fan             - Item Shop
07 - Lucky Charm     - GS1: Item Shop ; GS2: Weapon Shop
08 - Ring            - Item Shop
09 - Open            - Armor Shop
0A - Underwear       - Item Shop
0B - ?               - Item Shop

All item types that weren't assigned a shop type is shop type 0 (Item Shop)

Now, Shop Types affect two things that I know of, so far.

-All the dialogue the NPC says.
-What Kind of artifacts are stored in the Shop.

Locations in Assembly to note:
Golden Sun 1:
080B0070 - Function (List artifacts that pass requirements?)
-080B0092 - No comparison with 3 and 4, so there seems to be no General Shops.
08078480 - This function is the Item Type check. It assigns Shop Types to certain Item Types. (More research needed.)
Golden Sun 2:
081080A8 - Function (List artifacts that pass requirements?)
-081080D0 - This area compares the shop type with 3 and 4 and skips the Item Type check.
080AEC68 - This function is the Item Type check. It assigns Shop Types to certain Item Types.


r0 = shop
r1 = item type
r5 = current shop

I was also working on a piece of assembly code for fun that might work for a Shop Type Editor.

This one, much like the innate psynergy, will likely have a custom-made database as well.
I decided to make them flags. The custom database will contain a 16-bit list of shop type data.
The flags will say which item types belong in the shop.

(Untested Code)

mov r0, #0x0 //Item type
ldr r2, [08F00000] //Random address for the database
lsl r3, r5, #0x1
add r2, r3
ldrh r2, [r2, #0x0]
cmp r0, r1
bne (d)
a: lsr r3, r2, r0
and r3, #0x1
cmp r3, #0x1
beq (b)
d: add r0, #0x1
cmp r0, #0xB //Number of item types
ble (a)
b (c)
b: mov r0, r5
c: pop {pc}


That piece of assembly code was a bit more difficult then the innate psynergies, but it was fun. I will test it in the future to make sure all of it is correct.
The goal here was to have items fit in multiple shop types instead of one.


PS - Do not forget that if a Shop Type editor happened, you would need dialogue editing as well. Shop Types 01 and 04 use the same text. Later, I might see if I can change one to not match the other.

Oh yeah, and if my assembly code works, then we have made some progress on being able to have up to like 256 shop types? More then anyone would ever need. Also, You might be able to edit the assembly code I have made in such a way that it is item specific instead of item type specific.  r6 holds the current item being checked, I think.
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...

Sometimes I like to compare apples to oranges. (Figuratively) ... They are both fruits, but which one would you eat more? (If taken literally, I'd probably choose apples.)
Maybe it is over-analyzing, but it doesn't mean the information is useless.


The only GS Discord servers with significance are:
Golden Sun Hacking Community
GS Speedrunning
/r/Golden Sun
GS United Nations
Temple of Kraden

Can you believe how small the Golden Sun Community is?

2+2=5 Don't believe me? Those are rounded decimal numbers. Take that, flat earth theorists! :)

Atrius (He/Him)

I could have sworn there was another way to change the shop dialogue.  As I recall there were some towns where the shop keepers kinda speak with a dialect, but use the same shop type values.
[sprite=220,4,0]I'm shaking my head in general disapproval of everything[/sprite]

Daddy Poi's Oily Gorillas

#42
You mean like Xian in Golden Sun 1? It seems all three shop keepers use a different set of dialogues... Interestingly.

Golden Sun 1:

-Password/etc. text
-Shop text (Like "Your coins:" etc.
Ln 3227 - Come in! Welcome! Take a look at our fine weapons.
Ln 3270 - Ask me anything about armor.
Ln 3313 - Welcome! we have just the gear you need.

Ln 3356 - (Inn Text) - Welcome to our inn. It's ## coin(s) for a room. Would you like to stay?
Ln 3361 - (Sanctum Text) - Welcome, weary wanderers. What aid do you seek?
Ln 3404 - You need weapons, warrior. Check our weapons.
Ln 3447 - Talk to me, warrior. I have good armor.
Ln 3490 - I have much travel gear. Look at it all.

Ln 3533 - (Inn Text) - Welcome to my inn! We charge ## coin(s). Will you stay?
-character names text

Hmm.. It doesn't look like Golden Sun 1 has General Shops text...


Golden Sun 2:

Ln 4684 - Come in! Welcome! Take a look at our fine weapons.
Ln 4727 - Ask me anything about armor.
Ln 4770 - Welcome! we have just the gear you need.
Ln 4813 - (Inn Text) Welcome to our inn. It's ## coin(s) for a room. Would you like to stay?
Ln 4818 - (Sanctum Text) Welcome, weary wanderers. What aid do you seek?
Ln 4861 - (Yallam Forge) Right when I saw those materials, I had to work!
Ln 4887 - (General Shop) Welcome, welcome! If you[3]need it, we've got it![3]See anything you need?[30]
Ln 4930 - Character names.

I find most places use the first set of dialogues.
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...

Sometimes I like to compare apples to oranges. (Figuratively) ... They are both fruits, but which one would you eat more? (If taken literally, I'd probably choose apples.)
Maybe it is over-analyzing, but it doesn't mean the information is useless.


The only GS Discord servers with significance are:
Golden Sun Hacking Community
GS Speedrunning
/r/Golden Sun
GS United Nations
Temple of Kraden

Can you believe how small the Golden Sun Community is?

2+2=5 Don't believe me? Those are rounded decimal numbers. Take that, flat earth theorists! :)

Rolina

Blarg, so we're going to need an ASM editor to change them?  That really sucks.  It almost forces you to have an equip system in the same vein as golden sun itself...

I was talking to Charon earlier about a Suikoden hack, for instance.  It'd need a Item, Armor, and Rune shop - meaning we'd have to swap some lesser used types into Left hand, Right hand, and hopefully Weapon runes...  But without a way to do that, all we can do is just plan...

Daddy Poi's Oily Gorillas

#44
Yeah, but with Atrius's awesome abilities, I'm sure he may be able to rewrite that area of assembly to fit our editing needs. (Like what I was trying to do, and like what happened with the Innate Psynergies.)

I have also edited that post (above) to contain the assembly locations in GS1 as well.

Most recently, I have been looking into how the conversations work for GS2.  Anyway, the way it is done explains why Shop Types 4+ use the first bank of Shop related text. (Weapons Shop Text)

Assembly to note:
0810851E - This area checks the shop type and adds to the line number to get the set of text related to the shop.

More comparing the shop type value with 2, 3, and 0. In which case, it would add to the Line number for the text bank. It adds nothing if it is 1 or any other number.

For those who will actually look at the assembly code, I will put the hexadecimals down to make it easier:

Ln 4684 (0x124C) - Come in! Welcome! Take a look at our fine weapons.
Ln 4727 (0x1277)- Ask me anything about armor.
Ln 4770 (0x12A2)- Welcome! we have just the gear you need.

Ln 4887 (0x1317) - (General Shop) Welcome, welcome! If you need it, we've got it! See anything you need?

And if you have to ask... Yes, it looks like this could be rewritten as well? Though, I am not sure if you have room for more shop type text banks in the text bank. (I kind of doubt it, though.)
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...

Sometimes I like to compare apples to oranges. (Figuratively) ... They are both fruits, but which one would you eat more? (If taken literally, I'd probably choose apples.)
Maybe it is over-analyzing, but it doesn't mean the information is useless.


The only GS Discord servers with significance are:
Golden Sun Hacking Community
GS Speedrunning
/r/Golden Sun
GS United Nations
Temple of Kraden

Can you believe how small the Golden Sun Community is?

2+2=5 Don't believe me? Those are rounded decimal numbers. Take that, flat earth theorists! :)

Charon

Do you think you could copy-paste the Item shop's code and tell the game to use one of the blank arguments to redirect to the copy, and have different phrases?

Atrius (He/Him)

Considering Xian in GS 1 there should already be a way to change the phrases without doing anything ridiculous.
[sprite=220,4,0]I'm shaking my head in general disapproval of everything[/sprite]

Daddy Poi's Oily Gorillas

#47
Golden Sun 1's Shop Type Check for the dialogues is right around here: (I found it very quickly by searching the line number in a hex editor.)

080B04FC

And the part that uses the second group (like Xian) is just below this.. at 080B051C - It loads a byte, but it is used like a Boolean/flag.

Edit: I do not believe Golden Sun 2 has this..? But I will have to check where this byte actually is soon.
Edit2: On first glance, it looks like the byte is in the Shop data. - Edit3: Located in RAM.

I have backtracked the assembly code..

02008434 = Xian's Item Shop Function Call

10 = Weapon Shop
11 = Armor Shop
12 = Item Shop

080B02BA = This is checking the shop numbers. If they are 10, 11, or 12. Then you use the alternate bank.
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...

Sometimes I like to compare apples to oranges. (Figuratively) ... They are both fruits, but which one would you eat more? (If taken literally, I'd probably choose apples.)
Maybe it is over-analyzing, but it doesn't mean the information is useless.


The only GS Discord servers with significance are:
Golden Sun Hacking Community
GS Speedrunning
/r/Golden Sun
GS United Nations
Temple of Kraden

Can you believe how small the Golden Sun Community is?

2+2=5 Don't believe me? Those are rounded decimal numbers. Take that, flat earth theorists! :)

Rolina

Hey, I didn't realize this thing had hex viewer support for Dark Dawn...  Still, can't make heads or tails of it, but still, interesting to see that you're working on adding DD in here...

Daddy Poi's Oily Gorillas

#49
Try any NDS, they all show the filesystem and hex editor.

Anyway, the list of assembly coded here.
GS1:
Shop Type Upgrading
-Artifacts
-Dialogue ( (a) Shop Type and  (b) Shop number based versions.)
GS2:
Shop Type Upgrading
-Artifacts
-Dialogue ( (a) Shop Type ... but (b) might not be coded in here.)
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...

Sometimes I like to compare apples to oranges. (Figuratively) ... They are both fruits, but which one would you eat more? (If taken literally, I'd probably choose apples.)
Maybe it is over-analyzing, but it doesn't mean the information is useless.


The only GS Discord servers with significance are:
Golden Sun Hacking Community
GS Speedrunning
/r/Golden Sun
GS United Nations
Temple of Kraden

Can you believe how small the Golden Sun Community is?

2+2=5 Don't believe me? Those are rounded decimal numbers. Take that, flat earth theorists! :)

Rolina

While we're on lists of ASM stuff, don't forget Damage Formulas and likely added effects as well.

Rolina

Just a thought:  It may be a good idea to link to the latest version of the editor in the official editor thread, rather than the initial 0.4 release.

Atrius (He/Him)

The main 0.4 version link is updated with each new fix release.  The separate links are just for convenience so that people don't have to clear their browser cache to download the new version.
[sprite=220,4,0]I'm shaking my head in general disapproval of everything[/sprite]

Rolina

Sooo... it's been half a year.  Anyone who still wants to claim I'm pushing him too hard, bug off.

What updates for 0.5 do we have so far?  I mean, hell, it's been nearly 8 months.  It's about damn time for an update.

zman9000

sure sure role. I'd like that to. I'd also like a non buggy complete update, so I can wait.
I know he's busy, and heck. if i was working on it i wouldn't have anything even done yet due to my free time being so little with college and everything i have going on.
Yes there's one person working on this, but we can't do anything about it.

So .... if you shut up and stop whining about everything that doesn't go as fast as you want, he could be using the time working on it that he uses replying to your nagging posts...

I don't care if it takes a year to come out, i just want it done and done right!
Check my youtube channel out for lots of cool gaming related videos at http://www.youtube.com/user/xXzman9000Xx

Daddy Poi's Oily Gorillas

#55
QuoteYes there's one person working on this, but we can't do anything about it.
Ofcourse, if we had more people actually hacking the game itself, we could probably help record a handful of stuff that Atrius can use in the process of making the editor. We already have things like shop_display, and what not displayed in the NPC code.

I once started a list of Golden Sun's functions once, but I never completed it.

[spoiler=Golden Sun 2]I have decided it was time to create a function list for Golden Sun 2. The way this works is that I give the name of the function first (A made up one that will pretty much summarize what the function does.), and then put in parenthesis its arguments. If nothing is in the parenthesis, then there are simply no arguments. Returns are noted by the "as datatype" and/or written out. I think most functions either return nothing, or one thing. I do it this way because there are a lot of functions in this game, and it would be nice to keep things compact. Many topics already talk about many of the functions listed, so I may also put in a link to them for your convience.

Anyway, the end-goal for this topic is to help coders call functions which they need without forcing them to make it themselves- That would simply be a waste of space, now wouldn't it?


* = Needs more researching.

08014878 = rand() as Int16 //Returns a 16-bit random number.

08014DAC = ?(add_to_pointer) //What do pointers at 03000000 and 03000004 refer to?

08016CA4 = locate_char_data(character_id) as Int32 //Returns pointer to character's data (Party Member or Enemy)
08016CE4 = read_flag(flag_number) as Boolean
08016CFC = write_flag(flag_number)
08016D18 = clear_flag(flag_number)
08016D34 = toggle_flag(flag_number) as Boolean //Returns 1 if toggled on, else 0 if toggled off.
08016D5C = read_byte(flag_number) as Byte
08016D6C = write_byte(flag_number, value)
08016D7C = increment_byte(flag_number) as Byte //Returns incremented byte. (Increments by 1.)
08016D98 = decrement_byte(flag_number) as Byte //Returns decremented byte. (Decrements by 1.)
08016DB4 = read_4bit(flag_number) as Int32 //Returns 4-bit value.
08016DD0 = write_4bit(flag_number)
08016DF8 = BIOS call swi $0B - (For copying data.)
08016DFC = swi $19 (0)
08016E04 = swi $19 (1)
08016E0C =

*080B0B78 = Add Djinni
*080AE834 = Add Djinni / Raise flag in Storybook flags. (02000046)
(Party_Member (0-7), Djinni_type (0-3), Djinni (0-19)) http://forum.goldensunhacking.net/index.php?topic=1421.0


080AEE98 = get_item(party_member, item) as Int32 //Returns Item Slot # (0-14, -1 if not in stock.)
080AEEC8 = get_item(item) as Int32 //Returns Party Member (0-7, -1 if not in stock.)

080AF148 = remove_item(party_member, item_slot) //Returns -1 for empty slot, 1 for decremented quantity, 2 for removed altogether.
080AF1C8 = remove_itema(party_member, item_slot) //Returns -1 for empty slot, 1 for decremented quantity, 2 for removed altogether. Artifact check. (Makes the item available as an artifact if it is one.)


080AF298 = remove_item(item) //Returns 0 //Searches all party members for item and removes/decrements it.
080AF2C0 = remove_itema(item) //Returns 0 //Searches all party members for item and removes/decrements it. Artifact check. (Makes the item available as an artifact if it is one.)

080AF348 = add_artifact(artifact_slot, add_quantity) //Returns quantity of artifacts of this item. (0-99)

080AF378 = add_artifact(item, add_quantity) //Returns quantity of artifacts of this item. (0-99)

080AF4B8 = psy_check(party_member, ability) as Boolean //Returns True if s/he has the ability.

080AF6F4 = add_ability(party_member, ability) //Returns an ability_slot

080AFDBC = party_members() as Int32 (0-8) //Returns how many party members are currently in your team.
080AFDD8 = add_party_member(party_member) as Int32 //Returns new number of members in team.
080AFE1C = remove_party_member(party_member) as Int32 //Returns new number of members in team.
080AFE78 = copy_party_members(address) as Int32 //Returns number of members in team. Note: address is where to copy them to. (16-bit spaced.)
080AFEB0 = *unknown(number_to_add) as Int32 //Returns added number. (0 - 999999) More research needed on 02000250.
080AFED4 = *unknown(number_to_add) as Int32 //Returns added number. (0 - 999999) More research needed on 02000378.
080AFF00 = *unknown(number_to_add) as Int32 //Returns added number. (0 - 28) More research needed on 0200037C.
080AFF28 =


080D2414 = psy_check(party_member_and_ability) // 00003C00 = party member, 000003FF = ability; Returns -3 (PC does not have ability), -2 (PC not in party), -1 (PC8+), 0 (PC has ability)
080D2454 = shortcut_update_clear() //If you don't have characters with these psys, then the shortcut(s) are cleared.[/spoiler]
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...

Sometimes I like to compare apples to oranges. (Figuratively) ... They are both fruits, but which one would you eat more? (If taken literally, I'd probably choose apples.)
Maybe it is over-analyzing, but it doesn't mean the information is useless.


The only GS Discord servers with significance are:
Golden Sun Hacking Community
GS Speedrunning
/r/Golden Sun
GS United Nations
Temple of Kraden

Can you believe how small the Golden Sun Community is?

2+2=5 Don't believe me? Those are rounded decimal numbers. Take that, flat earth theorists! :)

Rolina

#56
I've brought this up to Atrius several times, and every time he's shot down the idea of a team working on it, zman.  You may be newer here, so you won't really remember, we once had to wait over a year for an update.  I'll be blunt - this is bullshit.  Minecraft, back when it was only being done by one person, still had a much faster rate of updates.  But it's been 8 months now, and nothing.

There comes a time when 'having a job' and 'working for the military' just doesn't cut it anymore - so I'm not whining.  I'm just sick of waiting.  I've waited for nearly three freaking years, and we can still barely do @#$% with this thing.  I think it's time we started getting more regular updates, like he promised us he'd give us LAST time he pulled this.

So stop bitching about me calling him out on the lack of updates.  He told us he'd never do this again after the bullshit that was the wait for 0.3, and yet here we are again.  I've got a damn good right to do this - I've made plenty of efforts to speed things along otherwise, from suggesting a team, to dropping hints, to the occasional direct question, and now after 8 more months of jack @#$% and ignored PMs, I'm getting sick of being in the planning stage still, and am making a public fuss.  I want to actually be able to do something respectable with the editor, zman.

You may be happy making silly stat changes and immature language options for the default game, but some of us actually want to make something new.  You haven't been here waiting from the start like some of us have, and haven't have to deal with the bullshit wait times.

It's time something started happening with this editor.  And I want Atrius himself to come and defend this, not some punk @#$ kid who hasn't been here from the start of the site.

Atrius needs to either make a team, or start actually putting out.  I've been patient long enough - we're now 2 console generations behind, have had a sequel come out, have been waiting so long we developed the site in a totally different direction, introducing clans and stuff despite Atrius wishes against such a thing because there's NOTHING TO @#$%&*! DO HERE.  The point of the site is the editor, and without anything being done, all we can do is twiddle our thumbs and give off a bunch of "You know, it'd be cool if we can do this"es.  Well yeah, it'd be cool if we could do it.  We discussed that back when this was an invisionfree forum!

So don't you dare tell me to shut up, zman.  I've waited for over three @#$%&*! years, I've not made a big deal, only dropping one or two "can we have a status update"s from time to time, with I think one big deal made when 0.3 hit the @#$%&*! 1 year dev point.  I'm sick of this bullshit, and I want something to be done.  We have at least two other people here who can work with the code, so it's time for Atrius to either man up and put out or it's time to get a team together.

Misery

Atrius isn't stopping anyone from making their own editor, nor could he if he wanted. AFAIK he hasn't even turned down anyone actually capable of helping with the editor offering to do so. The lack of updates obviously means there is nothing of interest to report, and the content of your posts ultimately boils down to "we want an editor update", which is just spam. And you're making it sound like he has some kind of obligation to work on it.

It would be such a shame to abandon this project after getting this far, which is why I'm convinced he'd be working on it if he didn't have more important things to do. While it's true that he hasn't posted the promised status reports, you're the ones who should be apologizing this time.

zman9000

actually role, i know about it all. the long update, and also why you can't really have more then one person work on it and still be effective.
he could make a team but they would have to be IRL if it were to help speed up the project.

I get why your mad. but adding a comment stating what you have said a billion times isn't going to make it go faster... heck, if you kept doing that to me I'd make it take longer... luckily Atrius is a nice guy when it comes to harassment... apparently... lol

Also I think your to stressed out role... need to take a chill pill... take a cat nap... or something.

so I beleve this sums up your posts

OMFGWTFBBQRAGEMOFO hurry up damn it JAJAJAJAJAJAJAJAJAJAJA
The translation might be off but I think I'm close ;)

And if your wondering why I'm picking a fight, its because
Quotemy life sucks, I'm in a bad mood, and unlike every other day on here, I DON'T FEEL LIKE PUTTING UP WITH HER SH*T TODAY! (I think I caught some of that BBQRAGE
Check my youtube channel out for lots of cool gaming related videos at http://www.youtube.com/user/xXzman9000Xx

Kioll

Actually, Zman, you're wrong about the real life dev team thing.  It's actually just as effective, if not more so,  to NOT be in real life.  This is why:  In order for multiple people to work on the same project, especially at the same time, it requires multiple computers and file sharing.  While having someone right beside you is nice for talking about ideas, ultimately it's just as easy to do so in an instant messenger.  File sharing is easily enough done, and, done right, you can keep people from taking their own copies of the file and dragging away your work, thus preventing the "he stole my @#$%!" problem.  So, in this case, it would be more effective to form a team online as it's easier to find someone who could prove useful online than it is in real life.
I am the almighty emissary of fire...  the Mars Adept Kioll.  Oh, and did I mention that I'll see you long before you see me?