Skeetendo

’Cause all games were better on the GBC

You are not logged in.

  • Index
  • → Help/Question
  • → [pokecrystal] Using tile IDs $60 to $6f makes sprites disappear

#1 2017-01-31 01:08:52

Rangi
Member
Registered: 2016-05-09
Post 501/553

[pokecrystal] Using tile IDs $60 to $6f makes sprites disappear

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.

1PwuMAS.png

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.

LoadTileset:: ; 2821
    ld hl, TilesetAddress
    ld a, [hli]
    ld h, [hl]
    ld l, a
    ld a, [TilesetBank]
    ld e, a

    ld a, [rSVBK]
    push af
    ld a, $6
    ld [rSVBK], a

    ld a, e
    ld de, wDecompressScratch
    call FarDecompress

    ld hl, wDecompressScratch
    ld de, VTiles2
    ld bc, $60 tiles
    call CopyBytes

    ld a, [rVBK]
    push af
    ld a, $1
    ld [rVBK], a

    ld hl, w6_d600
    ld de, VTiles2
    ld bc, $60 tiles
    call CopyBytes

    pop af
    ld [rVBK], a

    pop af
    ld [rSVBK], a

    ...

wram.asm:

SECTION "WRAM 6", WRAMX, BANK [6]

wDecompressScratch:: ds $400
wBackupAttrMap:: ds $200
w6_d600:: ds $200
w6_d800::

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:

2z7oKaX.png

The corrupted tiles are not the problem. The screenshots above have corrupted tiles because I narrowed down the sprite issue to the changed metatiles.bin files, and only made that change. Which means the tile IDs no longer correspond properly to the graphics or the palette map. For instance, the Town Map in the top right used to use tile IDs $8a $8b $9a $9b (you can see in the VRAM that those tile IDs are the Town Map). But I edited the metatiles as described above, so the tile IDs being used are $6a $6b $8a $8b. Of course the bottom half of the map now loads the top half graphics, but the top half is blank. I don't understand why it isn't using the "©1995−2001 Nintendo Crea" tiles that are clearly still left over in VRAM from the title screen. Nor why the sprites disappear. It seems like an overflow error, but which data is overflowing where? All I changed is the tile IDs; I'm not loading more or less tile data, I haven't changed the addresses it's being loaded to.

Edit: window.asm:OpenText calls main.asm:ReanchorBGMap_NoOAMUpdate. This seems to be part of the problem.

Edit: Using IDs $e0 to $ff has the same problem.

Last edited by Rangi (2017-02-03 19:26:27)


ROM hack: Pokémon Polished Crystal — version 2.2.0 released!

Offline

#2 2017-02-02 23:22:43

Rangi
Member
Registered: 2016-05-09
Post 513/553

Re: [pokecrystal] Using tile IDs $60 to $6f makes sprites disappear

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.


ROM hack: Pokémon Polished Crystal — version 2.2.0 released!

Offline

  • Index
  • → Help/Question
  • → [pokecrystal] Using tile IDs $60 to $6f makes sprites disappear

Board footer

Powered by FluxBB