Author Topic: Golden Sun II: The Lost Age  (Read 26548 times)

0 Members and 1 Guest are viewing this topic.

Offline Troy Lundin

  • Full Member
  • ***
  • Posts: 145
Golden Sun II: The Lost Age
« on: February 05, 2012, 03:05:28 pm »
Progress: 143 / 324 scenes captured.

The prospect of mapping this game has intrigued me for quite a while and I am
always looking for a way to challenge my mapping program as well as myself.

As I started mapping this game, I noticed a few things that made it quite
different than other RPGs I have mapped for the GBA.

Notes:

 - Character position and screen position are stored independently.

 - There is another address that stores an additional Y-axis location value.
   This address is used when you go up stairs, for example. The game doesn't
   modify your actually Y-axis position. Instead, it modifies this additional
   value and adds the two together. Fun stuff.

 - Animations in most games are easy to find. All animations are controlled by
   a timer. When the timer reaches zero, the next sprite in the animation
   sequence is displayed and the timer resets. If you pause the emulator then
   step it frame by frame, you can use the cheat search function to search for
   a gradually decreasing value. If you freeze these values, the timer can never
   reach zero and the animation will never switch to the next sprite in the
   sequence.

 - Background animations are stored separately from NPC animations. BG anims are
   stored in a neat little group in the WRAM. NPC animations are stored in two
   different locations. One is in the WRAM and the other is in the IRAM. Fun.

 - Freezing NPC timers, including the ones that indicate when they should move
   to their next position, makes it easy keep the NPCs in their originally
   loaded positions. This adds another aspect of perfection to the maps.

 - Some of the maps have layers that move at a different speed than the screen.
   These can be layers 2, 3 or 4. The position of these layers are easily found
   and the layers can be captured separately. Sometimes, the layers are in the
   foreground and move on their own. In this case, simply freezing their
   starting position fixes this.

 - There is another type of animation. This can be seen in one of the first
   areas. It looks like steam coming out of the wall. This steam will push you
   if you are in front of it. At first, I tried all the previous methods of
   freezing in. It didn't count as a BG anim and it didn't count as an NPC.
   It turns out it counts as multiple NPCs. Each 'cloud' of the steam counted
   as a separate NPC. If I tried to freeze the NPCs, the game would just make
   new ones and throw them out. This was quite a problem and this type of
   animation started showing up in later parts of the game. After exhausting
   almost all my options I finally tried the method noted below. This didn't
   freeze the NPCs but it stopped them from spawning. So, I could just freeze
   the timer where I knew they were going to be, stop the spawn timer then just
   reload the area. Simple. :D

 - There are certain animations that aren't connected to the layers, BGs or
   NPCs. These animations provided me with quite the headache. Thinking outside
   the box allowed me to figure out that all these types of animation are
   controlled by a single timer that counts up! Figures.

All in all, these maps are ridiculously easy to capture and the fact that I can
include exact NPC starting positions and exact BG / NPC starting animations is
really exciting.

I am capturing all the scenes first without NPCs. I will go back later and
include all the NPCs.
« Last Edit: February 06, 2012, 03:14:39 am by Troy Lundin »

Offline TerraEsperZ

  • Hero Member
  • *****
  • Posts: 2328
Re: Golden Sun II: The Lost Age
« Reply #1 on: February 05, 2012, 04:35:19 pm »
I've never played the game but I'm glad you decided to share these details with us. I'm still an amateur when it comes to finding stuff in memory, so it's really helpful to see various ways in which games keep track of certain stuff. Some games can be maddening because you might assume the game keeps track of something by cycling a value in one way while it turns out that games uses it differently.
Current project:
Mega Man: Powered Up (PSP)

Offline Troy Lundin

  • Full Member
  • ***
  • Posts: 145
Re: Golden Sun II: The Lost Age
« Reply #2 on: February 06, 2012, 03:18:06 am »
Up to 143 scenes finished. I modified my mapping program to make the process go a bit faster. I also figured out a more efficient way to freeze NPCs.

I did find something strange while working on Mars Lighthouse. If I freeze the timer for the lava animation, it shows numbers. As if the very first sprite in the sequence is a number. It's quite odd and I don't know what the numbers mean yet. I have attached an image of it.

Offline Peardian

  • Hero Member
  • *****
  • Posts: 627
  • Busy busy
Re: Golden Sun II: The Lost Age
« Reply #3 on: February 07, 2012, 12:10:02 am »
My guess is that the developers put those there to make it easier for them to distinguish between the different variations of the lava tiles that would otherwise look identical from viewing the first frame.
MM (10%) - SMA3 (33%) - DNS (0%)

Come check out the Nintendo 64 Mapping Workshop!

Offline Troy Lundin

  • Full Member
  • ***
  • Posts: 145
Re: Golden Sun II: The Lost Age
« Reply #4 on: February 08, 2012, 06:36:24 pm »
I went back and started adding the sprite layer to the maps I currently have. I ran into some minor complications, most of which I was able to solve on my own. But, now I need help from someone who is knowledgeable about the game.

In the Dehkan Plateau there are pillars that block your path. If I turn on my NPC freeze codes these pillars are brown, akin to wood. But, with the codes off they are gray, akin to stone. I added a screenshot of my updated scene capturing program (shameless plug). The large, upper image shows the stone-like coloring while the smaller, lower image shows the wood-like coloring.

My question is what is the actual color of these objects?

Update: Finished about 50 more maps. These are completed raw scenes. This means they contains all layers but do not contain any notation. I, personally, will not add notation to the scenes. They are completed as far as I am concerned. If someone else wants to slap 'em together and mark 'em up, be my guest.

GS2 - Kibombo and Gabomba.zip

Here is a sample set of Kibombo and Gabomba. These ones were neat because they contained a gaggle of moving objects, especially inside Gabomba. Enjoy!
« Last Edit: February 09, 2012, 02:54:47 am by Troy Lundin »

Offline Troy Lundin

  • Full Member
  • ***
  • Posts: 145
Re: Golden Sun II: The Lost Age
« Reply #5 on: February 10, 2012, 02:03:10 pm »
Ok, all the scenes are captured except a couple. There were a few scenes with a snowstorm on the sprite layer and I have no idea how to get rid of it. This happens in some outside scenes in Mars Lighthouse.

I found out how to synchronize the layers that move at a different speed such as the background clouds in scenes at the top of lighthouses. Also, foregrounds such as sunbeams or clouds in some towns. This allowed me to capture these at the same time as the scene.

Also, found out how to remove the characters shadow! I noticed while doing Magma Rock that if I am climbing, there is no shadow. This made it super easy to find the address that made the shadow disappear when I am climbing. With that figured out, It increased scene capture time exponentially.

I am going to organize the scenes and them provide an download link later today.

Here is a link to a small video I made. It show me capturing the entirety of Anemos Sanctum in ~3 minutes. Enjoy!

GS2anemossanctum.zip

Update:
I figured out how to stop the snowstorm. Each sprite contains three 'snowflakes'. There are about 80 separate sprites in the snowstorm. :D
« Last Edit: February 11, 2012, 04:33:09 pm by Troy Lundin »

Offline Troy Lundin

  • Full Member
  • ***
  • Posts: 145
Re: Golden Sun II: The Lost Age
« Reply #6 on: February 11, 2012, 04:30:57 pm »
There are some areas that limit the movement of the camera. Usually, this can be overcome by using the debug menu to head to a room that doesn't exist, such as room zero. Some maps, however, don't adhere to this and confine your camera. Yesterday, while trying to sleep, I though, "There must be a location in memory that holds the minimum and maximum co-ordinates that the screen can pass. This is how the game knows when to stop scrolling."

So, this morning I set out to find that location. It took about ten seconds. :D

It's grouped together with the other screen co-ordinate addresses so it was quite easy to find. While testing this out, I noticed that the maximum value for the x- or y- co-ordinate was 7FFFh or 32767. This also happens to be the maximum value of a 16-bit signed integer. No coincidence there. While scrolling past previous camera bounds I noticed that the scene repeats after 2048 pixels. This makes the maximum possible scene size 2048x2048.

Now, most of this area seems like junk. Some of it looks like the main area with layers missing. I have been contemplating whether or not I should capture the entire 2048x2048 area for completeness's sake. Anyway, it was a very exciting find and I have created a full-sized scene to show. It is of the town of Champa. As you can see it contains some junk and a portion of a different scene. Enjoy!


Offline Troy Lundin

  • Full Member
  • ***
  • Posts: 145
Re: Golden Sun II: The Lost Age
« Reply #7 on: May 29, 2012, 09:57:10 pm »
Hmm, haven't been in this thread in a while.

A couple posts ago I spoke of a snowstorm on the sprite layer that I couldn't freeze. It is indeed made up of many, many copies of a single sprite that move very quickly. I have attached a image of the sprite. Also, I have finished all of the scenes, besides the snowstorms (do they even matter?) and some backgrounds that I couldn't freeze.