Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Topics - Troy Lundin

Pages: [1]
Maps In Progress / Troy's Junk and Stuff
« on: June 07, 2012, 09:14:06 pm »
This will be a depository of my junk and stuff related to VGMaps. Since my OCD won't let anything ever be finished, I decided to sort my projects by submission (green) or lack thereof (red). This ordering is likely to change in the future. :D

System   Game                                         Capture        Compiled   Tagged   Notes
(GBA)    Final Fantasy: Dawn of Souls (FF2)       388 /  388 (100%)    100%       90%    Thanks to Trop for compiling. Missing shop data.
(GBA)    Sword of Mana                              ? / 2221 (  ?%)    100%      100%    Still missing many Morning, Evening and Night versions.

(GBA)    Baldur's Gate: Dark Alliance              27 /   27 ( 99%)     50%        0%    No object layer.
(GBA)    Final Fantasy: Dawn of Souls (FF1)       212 /  212 (100%)      5%        5%   
(GBA)    Final Fantasy IV Advance                 495 /  495 ( 99%)      0%        0%    Some scenes are missing the object layer.
(GBA)    Final Fantasy V Advance                    2 /    ? (  ?%)      0%        0%    Found a quite hack-y way of capturing this. Very tedious.
(GBA)    Final Fantasy VI Advance                 430 /  430 (100%)      0%        0%   
(GBA)    Golden Sun: The Lost Age                 324 /  324 (100%)      0%        0%   
(GBA)    Super Mario Advance 4                      ? /    ? (  ?%)      ?%        0%   

Maps In Progress / (GBA) Final Fantasy V Advance
« on: May 03, 2012, 10:48:36 pm »
I was going to do this game about a year ago but hit a road block immediately. Let me explain.

Most games are ridiculously easy to capture. I just find a couple memory locations (Map ID, Actor Position, Camera Position) and I can zip through the game in about a week. But, this game was unforgiving.

I found the address for the actor location pretty quick, so I started manipulating that to get around the scenes. But, I learned pretty quickly that this game was not like most. As soon as I moved to a tile that I wasn't supposed to be on, like the ones on the other side of walls, I would get ported out of the area and back to the world map. It was weird so I took a look in memory for a solution. I checked if I could just manipulate the camera directly, but that was a no go. I tried corrupting some of the surrounding memory it hopes of uncovering some secret bytes that let me move where ever I want. Nope.

So, I gave up on the game. It seemed as though it couldn't be captured. But, today I loaded it back up with the intention of finding a way to capture it. No matter what! After about eight or nine hours of trudging through memory byte-by-byte, I came upon a group of bytes that didn't seem to be of any use at first glance. This group of 8192 bytes starts at 9726h. After a few minutes of manipulating them, I noticed something quite interesting. Each byte was actually the ID of each tile for the current scene. This was amazing!

I quickly through together a program that could read the bytes and output the correct tiles in that order to create the entire scene. This worked, but only partway. It seems the first 4096 bytes of this block is used for BG2 while the second 4096 bytes are used for BG3. The were no bytes for BG1 or BG0. Very disappointing. :(

Then I had an idea. What if I just changed the ID of all the tiles to that of a walkable tile? It may work since the tiles don't get updated until the screen is refreshed via the status menu or scrolling. It worked somewhat, but as soon as I started scrolling the tiles refreshed and changed into the wrong ones. Ok, that's fine. What if I just change a couple tiles? Maybe just the tiles around me? That way they won't refresh until they scroll off-screen but that won't matter since I sill have already captured that portion of the scene. It worked! Yay!

So, about eleven hours total today got me the ability to capture this treacherous game. There were other minor things I found, such as a way to move my sprite off the screen so I can capture other important sprites. But, all in all it has been a long and rewarding adventure. I learned some new things about the game and about myself. :D

Memory Locations

9726   Tile Start
E2AE   Map ID
E2B2   PosX
E2B3   PosY
E397   Set to zero to move sprite off-screen.
E398   Same as previous.

Maps In Progress / (GBA) Super Mario Advance 4
« on: March 06, 2012, 12:14:01 am »
Todo: World 1 - World 2 - World 3 - World 4 - World 5 - World 6 - World 7 - World 8

Super Mario Advance

Mapping Tips/Guides / Scene Manipulation and Rendering Tools
« on: March 04, 2012, 11:38:22 pm »
Changed to SMRT, a compilation of my Scene Manipulation and Rendering Tools. Currently, it contains GBA Blending Emulator and VBA Scene Compiler. Please post any bugs found here. Thanks. :D

SMRT (Revision 0)
SMRT (Revision 1)

Tagger (Beta 0) [23AUG12]
Tagger (Beta 1) [26AUG12]
Tagger (Beta 2) [27AUG12]
Tagger (Beta 5) [29OCT12]
Tagger (Beta 6) [02NOV12]

Mapper (Revision 0) [18SEP12]


Code: [Select]
[Changelog : GBA Blending Emulator]

Revision 10   30 JUN 2012   [Feature]  Loading a layer no longer automatically resizes the canvas. It was pretty annoying. :D
                            [Fix]      More positional blending bugs squashed! WHY IS IT SO HARD?!
                              ! BUG !  There is a bug with this revision that occurs when the up/down buttons of the
                                       positional controls of the BG layers are held down. You can still change these
                                       values by single-clicking the buttons or entering a value manually.

Revision  9   16 MAR 2012   [Feature]  Tooltips added to all controls.
                            [Feature]  Layers now blend ~17 times faster thanks to Bitblt. (Blends 10,000,000 pixels in ~4.2 seconds)
                            [Feature]  Now accepts images of any resolution. Still outputs at 96dpi.
                            [Fix]      Negative positioning no longer gives incorrect results.

Revision  8   08 MAR 2012   [Feature]  Now supports indexed pixel formats. (PNGOut compresses to indexed pixel formats.)
                            [Feature]  Now uses PARGB format for all image manipulation to increase processing speed ten-fold. Save format is also PARGB.
                            [Feature]  Loading a layer will now resize the canvas if it's too small.
                            [Feature]  Shift-left-clicking a layer resizes the canvas to the size of the layer.
                            [Feature]  Right-clicking a layer now removes it.
                            [Fix]      Zoom no longer glitches the canvas.
                            [Fix]      The Replace Tiles button now correctly disables if no replacement tiles are present.
                            [Internal] The Alpha and Coords windows no longer show up in the taskbar.

Revision  7   08 MAR 2012   [Feature]  Added tile replacement capabilities.
                            [Feature]  Added mouse / tile co-ordinates to the canvas.
                            [Feature]  The canvas may now be scrolled by dragging it with the mouse.
                            [Feature]  The canvas may now be zoomed.
                            [Feature]  The canvas BG color may now also be chosen by Shift-clicking on the canvas.
                            [Fix]      Fixed multiple tiling issues.

Revision  6   06 MAR 2012   [Feature]  Added the ability to choose a negative position for each layer.
                            [Feature]  Tiling is more advanced. It now loops around the canvas.
                            [Fix]      Auto Blend will now obtain a new pointer when VBA is refreshed.
Revision  5   05 MAR 2012   [Feature]  Changed the canvas to update on the fly as options are changed.
                                      Blending now only occurs when the Blend button is pressed.
                            [Fix]      No longer get sharing violations with open images.
                            [Fix]      Manually setting blend options works correctly.
Revision  4   04 MAR 2012   [Feature]  Changed UI controls.
                            [Feature]  The Alpha window now resizes the image if it is too large.
                            [Fix]      Fixed a bug causing the alpha channel to not reset.

Revision  3   04 MAR 2012   [Feature]  Added support for all modes of blending.
                            [Feature]  Added support for automatic gathering of blending information.
                            [Feature]  Added support for layer position modifiers.
                            [Fix]      Fixed bugs with layer tiling.

Revision  2   03 MAR 2012   [Feature]  Added support for up to four layers.
                            [Feature]  Added support for layer transparency.
                            [Feature]  Added support for layer tiling.

Revision  1   02 MAR 2012   Internal build.

Revision  0   01 MAR 2012   Initial public release.

[Changelog : Scene Compiler]

Revision  2   16 MAR 2012   Initial public release.

Previous revisions are non-public builds.

Mapping Tips/Guides / Degree of transparency.
« on: March 01, 2012, 08:24:07 pm »
Is there a way to tell how much transparency a game uses for any of it's layers with VBA?

Maps In Progress / (GBA) Final Fantasy: Dawn of Souls
« on: February 20, 2012, 01:56:09 am »

Progress: 600 of 600 (100.0%)
     FF1: 212 of 212 (100.0%)
     FF2: 388 of 388 (100.0%)

All FF2 scenes are captured. I just need to add final touches to them. Currently working on FF1. Should be done within a day or two.

Update (22 FEB): Finished capturing the scenes. Going to start polishing them tomorrow. Should take no longer than two days barring any unforeseen complications.

Update (02 MAY): Here are the scenes, complete with sprites. If someone is willing to compile them into coherent maps, let me know. :D
                 [Scenes] Final Fantasy - Dawn of Souls

Maps In Progress / (GBA) Baldur's Gate: Dark Alliance
« on: February 13, 2012, 02:27:11 am »
I wanted to try an isometric-type game. Not sure why I thought it would be any different than a normal game.


 - Screen and character positions are separate.
 - When the scene index is changed manually, the new scene is loaded instantly.

Spent about an hour or so on this. There is no object layer and a couple scenes are missing layer four. I may update them later but I don't really feel like it right now.

(GBA) Baldur's Gate - Dark Alliance

Maps In Progress / 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.


 - 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

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

Maps In Progress / Final Fantasy VI Advance (GBA)
« on: October 25, 2011, 07:50:47 pm »
Update (14 FEB 2012): 291 scenes captured.
Update (15 FEB 2012): 430 scenes captured. Starting cleanup.

Gonna start on this game. If it's already been started, let me know.

Found out the following information:

This game uses the most disorganized memory allocation I have ever seen. Character and screen positions are held in multiple locations. Some are 16-bit while others are 8-bit. the Map IDs are held in a similar fashion.

FFVI uses separate screen and character locations. It also does what Sword of Mana does. When I put the character location to (0, 0), the screen location stops at (16, 16). Though, in this game's case, I am able to nudge the screen to the very edge to grab the missing pixels. An interesting feature about the missing pixels is that they are absolutely useless. Basically, anything past where your screen can normally go seems to be repeated tiles. This applies to outdoor maps only.

Indoor maps are a bit different. They consist of multiple rooms. They have (so far) a maximum size of (2048, 1024). After these dimesions are passed, the map starts to repeat even though the character position doesn't reset. For example, if I were to go past 2048 on the x-axis, it wouldn't reset to 0 but the map would start repeating. Both the x- and y-axis go up to 65,535.

I'll attach an example of an Outdoor and Indoor map. You'll notice the Outdoor map (Narshe) is stuffed with garbage on it's edges. The indoor map (Jidoor) contains some random pots.

Also, if anyone knows the offsets for animations, I'd love it. :D

Map Gab / Sword of Mana (GBA)
« on: October 18, 2011, 10:28:52 pm »
I didn't see this game in the atlas yet. If it has already been done or reserved, let me know.

I have found the following offsets, which, in my opinion, are the only ones needed to make maps:

Character position
Screen position
Map ID

I have already done about 50 maps in the past hour or so. This game has a ton of maps.

The daytime feature isn't really a dynamic feature as you would think. Each map has a morning, afternoon, evening and night version.
This means there are four versions of each map. I'll give an example.

Map ID   Area
03D4     Topple Outskirts (Morning)
03D5     Topple Outskirts (Afternoon)
03D6     Topple Outskirts (Evening)
03D7     Topple Outskirts (Night)

Yes, you read that correctly. Topple Outskirts (Night) is map number 983.

The amount of maps isn't really an issue as it takes less than two minutes to complete a big map.
The above mentioned maps were completed in less than 30 seconds each.

Attached are the maps I mentioned above.

Map Requests / Request: Someone to compile my maps.
« on: October 14, 2011, 01:29:54 am »
I am new to this community but not to video game cartography.

I created a program that allows me to create maps literally in seconds.
I store the images based on the ID the game gives them. This is good enough for my purposes.

I want to contribute to this community, but I cannot submit my maps as they are. Since each map is saved individually and a town could consist of multiple maps.
What I want is someone to take my maps and organize them into a usable submission.

Let me give you an example of what I mean. Let's take Final Fantasy IV Advance.

In this game, each town consists of several buildings (shops, inns, random homes). Each building is considered a different map as they are assigned different IDs.
You, as the compiler, would take all the maps that make up the town and organize them into a single image. This may or may not include labeling.

If you are interested in helping me, or if you would like further explanation, please post in this thread.
Thank you. :D

Pages: [1]