Summary: VRAM bank 0 tiles $60 to $6f are unused in my pokecrystal hack. I would like to use them as map tiles. When I edit the metatiles.bin files to do so, some sprites disappear when I talk to them.

pokecrystal's tilesets use the tile IDs $00 to $5f, and then $80 to $df, skipping $60 to $7f. Looking at the VRAM in BGB, it's clear that this is because those 32 tiles are used for textbox frames, location name popups, the phone call icon, and other graphics.

The LoadTileset routine in home/map.asm loads the first $60 tiles to VRAM bank 0, and the next $60 to VRAM bank 1, which is again visible in the BGB screenshot.

You can safely change that second "$60 tiles" to "$80 tiles" and use tile IDs $e0 to $ff. Just extend the tileset graphics and the corresponding tilesets/##_palette_map.asm files, and you'll see the new tiles in VRAM bank 1.

I've reorganized things such that bank 0 tiles $60 to $6f are unused, and would like to load tiles in them. My initial approach:

• Change the first "$60 tiles" to "$70 tiles" and the second "$60 tiles" to "$80 tiles".• Rename w6_d600 to w6_d700 and shift it ahead by $100 bytes.• Update all the metatiles, shifting tile IDs $80−$8f to $60−6f and $90−$df to $80−$cf.• Update all the palette maps. Instead of 12 "tilepal 0" lines, 16 filler $ff bytes, and the rest of the "tilepal 1" lines, use 14 "tilepal 0" lines (move the first two "tilepal 1"s) and 8 filler $ff bytes.

The problem: When I do this, talking to certain sprites makes them disappear (and reappear when the textbox is dismissed). For example:

Can anyone help with this? Crystal_ or comet, you're both knowledgable about the details of pokecrystal and the GameBoy. I'd like to be able to use these sixteen tiles. If necessary, I could have multiple tilesets, but they'd be mostly redundant apart from a few area-specific tiles.

This is finally fixed! Mateo told me he'd encountered a similar bug before, due to text boxes hiding sprites based on the tile IDs they're standing on (not their coordinates, as I expected). I'm not loading any text box graphics in IDs 60−6F any more, but engine/map_objects.asm:Function56cd needed to be informed of that by changing the final $60 to a $70. (IDs F0−FF still can't be stood on, but I may just put impassable tiles in that space instead of refactoring Function56cd.)