News:

11 March 2016 - Forum Rules

Main Menu

Tile Setting

Started by Sup_vic, October 20, 2015, 08:02:42 PM

Previous topic - Next topic

Sup_vic

I've been hacking Aria of Sorrow (gba) for a time now, but sometimes I come across tiles that are like this:

The left one is the title screen of the game and the right one is the konami logo from the intro.
Let's take the konami symbol for example, its adress is 505340 and I extracted it just like I did with others but he seems to never get organized. I tried looking him up on vba's tile viewer and it's strange in there too. I wanted to know if you guys can come up with a way for it to show up normal in tile molester or if he was coded this way (which I find hard to believe)

FAST6191

It appears to be 2am so I am not going to be able to play with the games in question.

Two possible issues though, both could be at play at the same time here.

1) You have not aligned the address properly. When you have blank lines and others bleeding into the next one it is usually an indicator of that. I tend not to use tile molester (crystaltile2 and tiled2002 are my choice of tile editors for most things) but it should have an option to advance by a single pixel or more.

2) You have a tile mapped image. If you have a bunch of blank squares (or same coloured/style) squares in your image then the GBA provides facilities to duplicate them virtually. I see it quite often in logos and menus and it is a type of compression really but one that is very specific to a given image. If you can work around it then do, otherwise you are going to have to find the tile

Sup_vic

I hate to bother you but:

1 - by align the adress you mean using +, -, arrow keys and all to adjust it on tile molester or do you mean finding a different adress like 654450 for example?

2 - a tile mapped image? I'm familiar with aligning it in tile molester until it's adjusted but this one does not seem to do that, so that means it's a different type of compression? it seems the tiles are all in a random order and are called together only in the game, is that what you meant?

sorry for the possible noob questions, I swear I try my best to understand things. (btw that tutorial you gave me for vba sdl is amazing and helped me a lot)

henke37

A tile map is a grid where each cell states which tile to display in that cell. On the gba/ds the tilemap cells also has flags for mirroring tiles as well as setting the palette index for the tile.

Sup_vic

Oh, I see. But does it mean I can't see figure one as I see figure two?



I'm guessing they compressed the big images like this, cause the logo, the konami logo and their faces are all like this... Is this because I got the wrong adress or they will always be like this? I think there must be a workaround cause I've seen translations from other games that editted big logos compressed just as these.

henke37

The "workaround" is to deal with all three pieces of data, the palette, the tileset and the tilemap. And the "compression" is because the hardware supports the format.

Also be on guard for graphics that uses hardware objects, those require OAM entries instead of a tilemap. Those are usually easy to detect since the tilemap will make small rectangular shapes that the graphic frame is built up with. They are often reused between animation frames.

Sup_vic

Oh, so correct me if I'm wrong, I'll need to use and editor that has an arranger and grab tile by tile to adjust it, is that it?

henke37

That or an editor that can be chained to an automatic tilemap generator like grit. Because frankly, you don't need manual tile placement here.

Sup_vic

I found a tutorial that involves getting the tilemap adress that is called in the swi BUT it didn't work because AoS is lz compressed. How would I get the tile map adress from a compressed game?

henke37

Treat the decompression routine as a memcpy. That's all it does for the purpose of tracing data. Data goes in, data comes out.

Sup_vic

#10
I feel really stupid, but if understand it correctly I get the adress from a breakpoint right after the image appears, right? it will be in one of the registers. But WHERE do I put that adress to see the tiles correctly?

I know it must be really stressful to deal with someone who is new to this, but know I'm actually trying to understand.
1 - Tilemap is obviously something that places all the tiles from the tileset. Is it easy to find the  tilemap adress EVEN in a lz compressed rom? if so, is it around the registers when you set a breakpoint or will I have to search for it in a hex editor using a register entry?
2 - Even if I get that adress, where do I use it? Is there a tile editor program that you can place a tileset and use this adress to make it right?

EDIT: I got a program that can read tilemaps, it's called NTME. But now I need to know how to get the right tilemap adress...

henke37

The tilemap is sometimes generated by the game on the fly from things like level definition data. But for big images like these? No, those use preset ones.

As for how to find it? Start at the end and work your way backwards. You know from the hardware specs where the final tilemap is stored in memory. Find the code that writes there and figure out how that code knows what to write. Repeat until you've hit fixed storage.

Sup_vic

#12
Well that might take a while but I'll try it. In pokemon the tilemap adress is always next to the graphics adress, but I look in here and it seems that there is nothing to the side of mina's portrait adress, so I'll probably have to find it by faith LOL


I got it! It's 505340 for the graphics and 50e7b4 for the tilemap BUT the program crashes when I try to load the tilemap, what program do you use to read tilemaps in tilesets?

henke37

I write my own tools. It's rather easy now that I already have a tilemap rendering engine. Just a small matter of giving it the data each time.

Sup_vic

So there is no tool that reads it? Well, guess it's a bad day to know nothing about creating software.

Sup_vic

I finally found Mina's tilemap from Castlevania Aria of Sorrow. But the game appears to use a strange system. It turns ou the game grabs a bunch of 8x8 tiles and makes one huge 32x32 and then proceeds to make a puzzle out of it. LOL


you can clearly see here that the game makes:
00 01 02
04 05 06
08 07 03

but if you look in here:


this is mina's actual spritesheet with 8x8 tiles and not big 32x32 chunks.

The hightlighted area below is probably all of her tilemap


if you look at the exact line where here code starts there is 5f5a68, what is this adress? Is it the tilemap call? I looked at it in gba graphics editor and it's compressed data.

So, out of all this information I just gave you, I have some questions.
1 - Is there a program that can read the tileset together with the tilemap so I can maybe edit all of the sprite like a normal tileset would be?
2 - If not, is there a way that I can still edit her but with another method?
3 - any idea why the 32x32 chunks?

Zynk

Don't you have an existing thread for this? It helps to keep a single thread going instead of making multiple of the same topic.

http://www.romhacking.net/forum/index.php/topic,20583.msg289249.html#msg289249