PDA

View Full Version : [Tutorial] G/S/C Map Connections With Johtomap


hinkage
September 24th, 2011, 05:00 AM
***Yes, there ARE formulas for map connections, but they're in German, and I can't figure them out myself, cause the translator is inaccurate (the equations he gives in no way could ever add up).
This tutorial is for people who want easy help.***

First off, you should know what map connections do: They connect one map to another.

In Gen III, this is rather simple. Especially with the new 2011 AdvanceMap, where you can just drag
your map into the proper position.

In Generations I and II, it is not that easy. But this tutorial isn't FOR Gen I. It's for Gen II.
And in Gen II, we have Johtomap.



Here's an explaination of what each command is for JohtoMap map connections:

Map Bank: The desired map's map bank.
Map Number: The number of the desired map in the aformentioned map bank.\
Map Width: The width of the connecting map. For up/down connections, use the exact width of the connecting map.
Map Height: The height of the connecting map. For left/right connections, use the exact height of the connecting map.
-NOTE: As you may have guessed, what you set for the Map Width does not matter for left/right connections, and what you set for the Map Height does not matter for up/down connections.

***Now here's where it gets tricky***
X Position: The x coordinates of the player relative to the textures.
Y Position: The Y coordinates of the player relative to the textures.
OMDL: Stands for "Other Map Data Location". This puts the map DATA you are connecting to on the coordinates 0,0.
CMPDL: Stands for "Current Map Data Location". This puts the other map's TEXTURES on the coordinates 0,0. This is relative to your current map data location, as the name suggests.


The X and Y Positions really shouldn't be messed with, until you get the OMDL/CMPDL in the right place,
so I'll do those first.

For the OMDL, start at C700. Start the CMPDL at C700 as well. These are just good starting points.

Now, let me explain how the OMDL/CMPDL work:

Increasing the OMDL by 0001 moves the connecting map ONE TILE RIGHT.
Decreasing the OMDL by 0001 moves the connecting map ONE TILE LEFT.

Pretty easy, right? But there's a bit more.

Increasing the OMDL by 0016 moves the connecting map ONE LINE DOWN.
Decreasing the OMDL by 0016 moves the connecting map ONE LINE UP.

Now this doesn't just randomly happen. It's because when the connecting map is pushed all the way to the right (0015) it is forced to a new line.
Now, "all the way to the right" is relative to your current map's WIDTH if you're connecting up/down. So, for example:

If your map has a width of 16, "all the way to the right" would refer to at the very last tile of your current map.
If your current map has a width of 9, "all the way to the right" would refer to the connecting map being placed 7 tiles FARTHER RIGHT than where your map
actually ends. (Which is so far, you won't be able to see it in-game.)

So, each map is on a scale of a max of 16 when connecting. But if your current map is less than 16, obviously you'll have to keep that in mind if, when
testing, the map seems to move farther away, when in reality it's getting closer to it's destination.

I'm sorry I can't think of a good analogy, but here's a quick rundown of how it goes:

The connecting map starts on the upper left side of the screen. It always wants to be here. It loves that upper left corner. And it will overlap any other
map that gets in its way. To move it, you have to push the connecting map out of its comfort zone. To do this, increase the OMDL amount, in 16ths, until,
by testing, you see the connecting map is in a desirable position. (Remember: every 16 tiles the map resets, so that is why you increase the OMDL is 16ths
when you want to move the map down a line.)

But once the map IS in the right position, it's textures (CMPDL) are still stubborn. They don't want to follow the same formula as the OMDL. They want their own.
For this, I usually just look at a similar Gamefreak map, then add or subtract from their number, to fit my map.
In addition to this, for the X and Y Positions, see if Gamefreak used any. Honestly, I'm not 100% on these -- some large maps use real high X Positions like 246, whil smaller maps use an X Position of 0.

So, for now, just use this "formula" I made:
If, normally, the X Position Gamefreak used is, say, 240, and their map width is 10, and yours is 16, then make your X Position 246.
If, normall, the Y Position Gamefreak used is 17, and their map height is 9, and yours is 11, then make your Y Position 19.

I hope this helped; I'm definitley going to be experimenting with the X/Y Positions more later on.

(Edit for clarification -- these ideas might be far from accurate. Honestly, I'm doing this entirely from scratch. If you know what really goes on, feel free to correct me. These rules also don't apply to left/right connections. (They DO, but the numbers aren't exact, and it gets a lot trickier.) More info will be posted when I have time, and if this thread is actually a use to anyone.)

miksy91
September 30th, 2011, 09:48 AM
Just like hinkage said, editing map connections is quite difficult so don't expect to get them right with the first try.

"The starting points" point to the map data in RAM which is stored in C700-CAFF (of which the maximum size of a map can also be 32x32 tiles).

P.S
I think you should link to RBY Map Headers so that people would get a basic idea of what the values are for (for example "Height" which doesn't refer to the height of the map).

hinkage
October 4th, 2011, 04:26 PM
And also looking back that info I gave seems REALLY spotty. One day, I might get the urge again to find out more, but it's tough without any tuts, and horizontal connections are a nightmare. Dx

Either way, someone might be able to run with this. I HOPE >_>

Nintendork15
October 7th, 2011, 03:08 PM
Hmmm ... Seems Legit! xD
I'll use this when I have time, I've always wanted to try something ;D.
Keep it up!

Lin
October 10th, 2011, 02:28 PM
It's great to see someone actually took the time to figure this stuff out. Perhaps someone can now take JohtoMap and have it figure out the values. The formulas I wrote out a long time ago weren't always right and the UltraMap ones were incorrect too.

miksy91
October 28th, 2011, 10:59 AM
It's great to see someone actually took the time to figure this stuff out. Perhaps someone can now take JohtoMap and have it figure out the values. The formulas I wrote out a long time ago weren't always right and the UltraMap ones were incorrect too.
I've figured them out and posted a "tutorial" in Skeetendo Inc.
It's not much of a tutorial though because I mess up with editing map connections myself too but happen to get them working anyways.

Btw, for example "Height" stands for the width/height of the connection in the connected map and "Width" for width of the connected map (0 --> x).

X & Y Alignments determine where the "connection begins" in the connected map.