Skeetendo

’Cause all games were better on the GBC

You are not logged in.

#1 2014-04-04 06:38:10

comet
Member
Registered: 2012-04-09
Post 419/679

[pokered] Adding tilesets

The following tilesets are available to start.

OVERWORLD    EQU 0  ; Kanto outside
REDS_HOUSE_1 EQU 1  ; Red's House 1F
MART         EQU 2  ; Marts, Pokemon League
FOREST       EQU 3  ; Viridian Forest, Safari Zone
REDS_HOUSE_2 EQU 4  ; Red's House 2F
DOJO         EQU 5  ; Oak's Lab, Fighting Dojo
POKECENTER   EQU 6  ; Pokemon Centers
GYM          EQU 7  ; Gyms
HOUSE        EQU 8  ; Houses
FOREST_GATE  EQU 9  ; Viridian Forest entrance/exit
MUSEUM       EQU 10 ; Pewter Museum
UNDERGROUND  EQU 11 ; Underground Path
GATE         EQU 12 ; Route gates
SHIP         EQU 13 ; SS Anne
SHIP_PORT    EQU 14 ; SS Anne Dock
CEMETERY     EQU 15 ; Pokemon Tower, Agatha
INTERIOR     EQU 16 ; Bill's House, Pokemon Fan Club, Silph Co 11F
CAVERN       EQU 17 ; Caves
LOBBY        EQU 18 ; Elevators, Celadon Dept Store, Dept Store roof, Game Corner
MANSION      EQU 19 ; Celadon Mansion
LAB          EQU 20 ; Cinnabar Lab, Fuchsia/Safari Houses
CLUB         EQU 21 ; Cable Club, Bike Shop
FACILITY     EQU 22 ; Pokemon Mansion, Power Plant, Rocket Hideout, Silph Co
PLATEAU      EQU 23 ; Indigo Plateau

Each tileset def is 12 bytes.

Tilesets: ; c7be (3:47be)
        tileset Overworld_Block,   Overworld_GFX,   Overworld_Coll,   $FF,$FF,$FF, $52, OUTDOOR
        tileset RedsHouse1_Block,  RedsHouse1_GFX,  RedsHouse1_Coll,  $FF,$FF,$FF, $FF, INDOOR
        tileset Mart_Block,        Mart_GFX,        Mart_Coll,        $18,$19,$1E, $FF, INDOOR
        tileset Forest_Block,      Forest_GFX,      Forest_Coll,      $FF,$FF,$FF, $20, CAVE
        tileset RedsHouse2_Block,  RedsHouse2_GFX,  RedsHouse2_Coll,  $FF,$FF,$FF, $FF, INDOOR
        tileset Dojo_Block,        Dojo_GFX,        Dojo_Coll,        $3A,$FF,$FF, $FF, OUTDOOR
        tileset Pokecenter_Block,  Pokecenter_GFX,  Pokecenter_Coll,  $18,$19,$1E, $FF, INDOOR
        tileset Gym_Block,         Gym_GFX,         Gym_Coll,         $3A,$FF,$FF, $FF, OUTDOOR
        tileset House_Block,       House_GFX,       House_Coll,       $FF,$FF,$FF, $FF, INDOOR
        tileset ForestGate_Block,  ForestGate_GFX,  ForestGate_Coll,  $17,$32,$FF, $FF, INDOOR
        tileset Museum_Block,      Museum_GFX,      Museum_Coll,      $17,$32,$FF, $FF, INDOOR
        tileset Underground_Block, Underground_GFX, Underground_Coll, $FF,$FF,$FF, $FF, INDOOR
        tileset Gate_Block,        Gate_GFX,        Gate_Coll,        $17,$32,$FF, $FF, INDOOR
        tileset Ship_Block,        Ship_GFX,        Ship_Coll,        $FF,$FF,$FF, $FF, CAVE
        tileset ShipPort_Block,    ShipPort_GFX,    ShipPort_Coll,    $FF,$FF,$FF, $FF, CAVE
        tileset Cemetery_Block,    Cemetery_GFX,    Cemetery_Coll,    $12,$FF,$FF, $FF, INDOOR
        tileset Interior_Block,    Interior_GFX,    Interior_Coll,    $FF,$FF,$FF, $FF, INDOOR
        tileset Cavern_Block,      Cavern_GFX,      Cavern_Coll,      $FF,$FF,$FF, $FF, CAVE
        tileset Lobby_Block,       Lobby_GFX,       Lobby_Coll,       $15,$36,$FF, $FF, INDOOR
        tileset Mansion_Block,     Mansion_GFX,     Mansion_Coll,     $FF,$FF,$FF, $FF, INDOOR
        tileset Lab_Block,         Lab_GFX,         Lab_Coll,         $FF,$FF,$FF, $FF, INDOOR
        tileset Club_Block,        Club_GFX,        Club_Coll,        $07,$17,$FF, $FF, INDOOR
        tileset Facility_Block,    Facility_GFX,    Facility_Coll,    $12,$FF,$FF, $FF, CAVE
        tileset Plateau_Block,     Plateau_GFX,     Plateau_Coll,     $FF,$FF,$FF, $45, CAVE

The structure:

tileset: MACRO
        db BANK(\2)   ; BANK(Block/GFX)
        dw \1, \2, \3 ; Block, GFX, Coll
        db \4, \5, \6 ; counter tiles
        db \7         ; grass tile
        db \8         ; permission (indoor, cave, outdoor)
        ENDM
  • Tset*_Block: gfx/blocksets/*.bst
    4x4 Tile arrangements for blocks.

  • Tset*_GFX: gfx/tilesets/*.2bpp
    Tile graphics.

  • Tset*_Coll: gfx/tilesets/*.tilecoll
    A list of tiles that can be walked on. ff-terminated.

  • Counter tiles:
    Up to 3 tiles that you can talk to an NPC across (see: counters in marts).

  • Grass tile:
    The tile acting as grass.

  • Permission:
    0: Indoor. No tile animations. Can't use bike.
    1: Cave, only animate water.
    2: Outdoor, animate water and flowers.

Some tilesets appear to be repeats. Most are differentiated by exclusion from lists of tileset ids, like

BikeRidingTilesets:: ; 09e2 (0:09e2)
        db OVERWORLD, FOREST, UNDERGROUND, SHIP_PORT, CAVERN, $FF
DungeonTilesets: ; c7b2 (3:47b2)
        db FOREST, MUSEUM, SHIP, CAVERN, LOBBY, MANSION, GATE, LAB, FACILITY, CEMETERY, GYM, $FF
EscapeRopeTilesets: ; dffd (3:5ffd)
        db FOREST, CEMETERY, CAVERN, FACILITY, INTERIOR
        db $ff ; terminator
WaterTilesets: ; e8e0 (3:68e0)
        db OVERWORLD, FOREST, DOJO, GYM, SHIP, SHIP_PORT, CAVERN, FACILITY, PLATEAU
        db $ff ; terminator

That said, a couple pairs are more or less identical (RedsHouse1/RedsHouse2, Mart/Pokecenter, Museum/Gate). The only difference between the RedsHouse tilesets is bookshelf text. This isn't seen since Red's House 2F doesn't have any bookshelves. The Pokecenter tileset doesn't have doors.

It may be tempting to merge similar tilesets, but adding new ones is easier.


Adding new tilesets

Tileset collision data is assumed to be in bank 0. You'll probably find yourself pushing the edge of bank 0 very quickly even without new tilesets. Fortunately, there are only four places that read collision data (from the pointer at $d530). Changing these to read from a predetermined bank is straightforward. As a bonus, this frees up more space in bank 0.

Besides that, the only step is coming up with some assets and adding a tileset def.

VOLCANO EQU 24
Tilesets:
        ...
        tileset Volcano_Block,     Volcano_GFX,     Volcano_Coll,     $FF,$FF,$FF, $45, CAVE
; bank 0
Volcano_Coll:  INCBIN "gfx/tilesets/volcano.tilecoll"
Volcano_GFX:   INCBIN "gfx/tilesets/volcano.2bpp"
Volcano_Block: INCBIN "gfx/blocksets/volcano.bst"

It's easiest to start with existing tileset data and change it to your liking.

IlDOHu2.png 47xaXmB.png

Pallet Town is just an example. Take care to use the same tileset for connected maps.

Last edited by comet (2014-04-04 06:40:02)

Offline

#2 2014-04-04 13:51:09

YORAMRW
Member
From: The Netherlands
Registered: 2013-03-29
Post 1,059/1,199
Website

Re: [pokered] Adding tilesets

comet wrote:

47xaXmB.png

Cool tileset.


Hacks Gameboy 8-bit music in Pokémon Gen I & II, composes 8-bit music in FamiTracker

Offline

Board footer

Powered by FluxBB