VGMaps
General Boards => Maps In Progress => Topic started by: Troy Lundin 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.
-
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.
-
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.
-
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.
-
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 (http://www.4shared.com/zip/lN92vnSe/GS2_-_Gabomba.html)
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!
-
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 (http://www.4shared.com/zip/mvgE2wZC/GS2anemossanctum.html)
Update:
I figured out how to stop the snowstorm. Each sprite contains three 'snowflakes'. There are about 80 separate sprites in the snowstorm. :D
-
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!
(https://i.imgur.com/vX9pgs.jpg) (http://imgur.com/vX9pg)
-
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.