Files
DramaticShapeVoxelMod/data/voxel_heights.lua
T
DramaticShape 7b727aa684 furnish the Poke Marts to the finished interiors' standard
The MART tileset shares the Center's atlas but not its pins, so marts
were raw detector output: 32px walls, the racks fused into one deep
monolith, the clerk booth a 48px slab. Pinned like the references --
16px wall band with the built-in cases, bookcase-collapsed racks,
half-cell counter with the poster on top, register standing on it.
2026-07-27 01:01:10 -04:00

1081 lines
54 KiB
Lua

-- Voxel world mode: the shape PROFILE -- hand-authored pins over the
-- automatic structure detector, the way a 3dSen game profile pins a
-- graphic to a geometry type.
--
-- Hand-authored by this mod, and read only from here: unlike the tables the
-- ROM extractor writes into the player's own cache, nothing below is
-- extracted, derived or copied from the ROM.
-- Nothing here reaches gameplay, collision or scripts; an entry can only
-- ever change how a tile LOOKS in voxel mode.
--
-- Most of the world needs no entry. The runtime detects structures on its
-- own (src/render/voxel/Structures.lua): it flood-fills each connected
-- drawn thing, voxelizes small props per pixel at their real drawn height
-- with transparency (a 2-row plant is a 16px-tall silhouette, not a box),
-- and raises everything else as a volume whose height is measured from the
-- drawing itself -- repeat-aware, so a 6-row house is 48px while a 40-row
-- border forest is rows of 16px trees, not a monolith.
--
-- Listing a tile here BYPASSES that detection: the tile takes the class's
-- height and art mode, always. Use it where the detector reads art wrong,
-- or from a mod to pin its own tiles. Resolution order per tile:
--
-- 1. a group listed under tilesets[<id>] below (this profile)
-- 2. the tile sits in a water cell -> "water"
-- 3. the tile sits in a WALKABLE cell -> "ground"
-- 4. tile-level fallback: the map's water set -> "water", its walkable
-- list -> "ground", anything left over -> "wall"
--
-- Rules 2-3 work at CELL granularity (16x16, the walk grid) because that
-- is the granularity collision actually has: the engine judges a cell by
-- its bottom-left tile alone, so the other three tiles of a cell carry no
-- collision meaning -- flowers and grass tufts sit in walkable cells and
-- must stay flat ground even though no walkable list names them.
--
-- Classes (heights in world pixels; a map cell is 16x16):
-- ground / water / void flat; water recesses so shorelines show a lip
-- ledge / roof / bed box with the art on its TOP face; partial side
-- faces crop the art (a 6px ledge face is the
-- bottom of the lip drawing; a bed is its
-- mattress drawn from above, lying low)
-- wall / tree / fence / sign / counter / table / desk
-- box whose SOUTH face folds the 2D artwork
-- upright, 8px band by band; authored boxes fold
-- every face and wear their top row's art on top.
-- A counter is half a cell -- one band, so its
-- drawn front panel stands and its top stays on top
-- stair_e / stair_w real steps rising toward the named side, the
-- full cell deep, treads and slices textured
-- from the drawn staircase
-- stair_down_e / _down_w a sunken stairwell: the cell opens into a
-- hole with steps descending toward the named
-- side -- stairs that lead DOWN a floor
-- relief a prop drawn from above (a console on the
-- floor): the drawing stays flat and the
-- pixels inside its black outline extrude a
-- few voxels, art on top
-- bookcase a free-standing shelf drawn tall: each rank
-- collapses onto a one-cell-deep box at its
-- full drawn height; back rows become hidden
-- floor, and an unpinnable trim row above
-- becomes the cap
-- billboard / prop a prop drawn face-on: a standing per-pixel
-- cutout, black-outline segmented; drawn above
-- a pinned box it stands ON that box (a
-- monitor on its desk). prop is a second pool
-- so two touching cutouts stay separate
--
-- A tileset entry may also carry `prop_ground` (not a class): a map of
-- prop tile id -> ground tile id naming the tile painted under that
-- pinned prop, overriding the flat-neighbour vote -- the cuttable bush
-- stands on the grass Cut leaves behind, whatever borders it.
--
-- Whole BUILDINGS are not tile pins -- one drawing packs a roof seen from
-- above, a facade seen face-on and sloped ends as diagonal silhouettes,
-- and no single class covers that. They live in the `buildings` list at
-- the bottom of this file, as a band table over the drawing's rows.
return {
version = 1,
-- class -> height in world pixels
heights = {
ground = 0,
water = -2,
void = 0,
ledge = 6,
fence = 10,
sign = 12,
wall = 16,
tree = 16,
roof = 28,
bed = 7,
stool = 8,
counter = 8,
table = 12,
desk = 24,
prop = 16,
cutout = 16,
relief = 3,
bookcase = 32,
stair_e = 16,
stair_w = 16,
stair_down_e = 16,
stair_down_w = 16,
},
-- Only tiles the detector must not touch need listing. Tile ids are
-- indices into the tileset's own 8x8 atlas.
tilesets = {
OVERWORLD = {
-- the hop-down edges named by data.field.ledges' ledgeTile: their
-- art is a ground lip seen from above, which the detector would
-- otherwise raise as a wall
ledge = { 13, 29, 39, 54, 55 },
-- trees are drawn ROUND -- the lone canopy (42/43/58/59) and the
-- border tree wall (64/65/80/81, blockset $0F). Boxes and per-pixel
-- cutouts both read wrong for them; the cylinder archetype carves
-- one voxel ball per 16x16 cell from the canopy's darkest-pixel
-- outline, round in depth, so tree rows become rows of real canopies
cylinder = { 42, 43, 58, 59, 64, 65, 80, 81 },
-- the town sign (blockset 8's SE cell): a standing per-pixel slab
-- 2 voxels thin, transparency respected -- never a solid box
signpost = { 70, 71, 86, 87 },
-- the fence posts drawn in VERTICAL runs (14 the post tops, 85
-- the bottoms -- across all 222 maps the two tiles pair only in
-- this one cell). The detector already turns the HORIZONTAL runs
-- (tile 57) into per-post standees, but a vertical run of repeated
-- cells trips its scenery guard and fell to the volume path as a
-- fence-textured tower. `post` extracts each cell alone, so these
-- render as the same thin posts, marching north
post = { 14, 85 },
-- the cliff-mound's dark east slope and its corners ($02 the NE
-- corner, $24 the slope column, $34 the slope-to-rim seat). Their
-- drawn runs span the whole mound drawing, so the detector raised
-- them to 32px towers -- the rock pillar beside Diglett's Cave --
-- and the doorway column, which adopts its REGION's height,
-- inherited the same 32 and put the cave entrance a block above
-- the mound around it. Pinned to one 16px course they match the
-- plateau body, and the doorway drops with them.
wall = { 2, 36, 52 },
-- the cuttable bush ($2D/$2E/$3D/$3E, the four tiles Cut deletes
-- -- across the whole tileset they appear only in the five
-- cut-tree blocks): a standing per-pixel cutout 5 voxels deep,
-- black-outline segmented with the pixels the outline encloses
-- kept, its drawn grass dither flooding away as background
prop = { 45, 46, 61, 62 },
-- the ground painted under those pinned props, by the prop tile's
-- own id: the bush stands on plain grass ($2C) -- the very tile
-- Cut leaves behind (field.cutTreeSwaps' after-blocks) -- rather
-- than whatever flat tile its neighbours vote
prop_ground = { [45] = 44, [46] = 44, [61] = 44, [62] = 44 },
},
-- The badge gyms and Bruno's room (one tileset): the bird statues
-- that flank every gym's aisles, and Lt. Surge's trash cans. A
-- statue is one cell of figure ($02/$38/$12/$13) drawn over one
-- cell of plinth ($22/$23/$32/$33); the trash can is one cell
-- ($0B/$0C/$1B/$1C, blocks 38/39 only). Across the whole blockset
-- none of these tiles appears anywhere else. The plinth stays a
-- SOLID 16px block; the figure stands ON it as a per-pixel cutout
-- 5 voxels deep (the thin `prop` pool), collapsing to the plinth's
-- single cell of footprint (Structures' wall-support rule); the
-- can is the same 5-voxel cutout at floor level. Both are
-- black-outline segmented -- backgrounds flood away, the pixels
-- the outline encloses stay. Everything stands on the gyms' main
-- floor tile ($11), which is also Bruno's floor.
-- (The round boulder drawn beside some statues, $07/$08/$17/$18,
-- is NOT pinned: it also tiles wall-to-wall as Pewter's rock rows,
-- which are scenery for the detector, not a lone prop.)
GYM = {
wall = { 34, 35, 50, 51 },
prop = { 2, 56, 18, 19, 11, 12, 27, 28 },
prop_ground = { [2] = 17, [56] = 17, [18] = 17, [19] = 17,
[11] = 17, [12] = 17, [27] = 17, [28] = 17 },
},
-- ledge pairs from data.field.tilePairs
CAVERN = {
ledge = { 5 },
},
FOREST = {
ledge = { 46 },
},
-- Oak's Lab (the tileset also serves the Fighting Dojo and Lance's
-- room, which use none of these tiles). The free-standing shelf
-- ranks: book rows and base pinned; the shared trim tiles above
-- (41/42, also the lab tables' corners) are adopted as caps by the
-- bookcase builder rather than pinned.
DOJO = {
bookcase = { 13, 14, 29, 30 },
-- the lab tables (the starter-ball display and the north tables):
-- 41/42 are also the shelf trim the bookcase builder adopts as
-- caps, which its cap rule allows for authored table rows.
-- Pinning stops the display frame's black corner brackets from
-- auto-extracting into standing prisms, and the ball/Pokedex
-- sprites ride the table's authored height.
table = { 41, 42, 57, 59, 78, 79 },
},
-- Red's room and the Copycat's room (one tileset). The detector reads
-- this furniture as wall-height volumes -- and merges the wall-touching
-- table and desk INTO the wall, towering both -- so every object here
-- is pinned to the shape it depicts.
REDS_HOUSE_2 = {
-- the wall band with its windows stays one 16px face
wall = { 0, 36, 37, 52, 53 },
-- the bed: a mattress drawn from above, half a block high
bed = { 45, 46, 47, 61, 62, 63 },
-- stools: a seat-high box, seat art on top, legs on the front
stool = { 2, 3, 18, 19 },
-- the long table under the windows, and the PC desk's body with
-- its hutch row -- the monitor standing on it is pinned below
table = { 38, 39, 41, 42, 43, 44, 50, 51,
58, 59, 60, 66, 67 },
-- standing per-pixel props, black-outline segmented. The PC
-- (64/65 monitor top, 32/33 monitor bottom + keyboard) is drawn
-- above the desk's body, so it stands ON the desk; the TV stands
-- on the floor
billboard = { 6, 7, 22, 23, 32, 33, 64, 65 },
-- the potted plant: mostly silhouette, so it takes the THIN
-- standee pool
prop = { 8, 9, 24, 25, 68, 69, 70, 71 },
-- the small potted plant on the table: a paper-thin profile
-- cutout standing on the tabletop, its leaf crown (in 40) included
cutout = { 40, 54, 55, 56, 57 },
-- the game console in front of the TV is drawn from above: it
-- lies flat and extrudes a few voxels inside its outline
relief = { 14, 15, 30, 31 },
-- the staircase leads DOWN to 1F: a sunken stairwell. The player
-- enters at the east lip and the flight descends westward, the way
-- the drawn railing slopes (high at the east, low at the west)
stair_down_w = { 10, 11, 26, 27 },
},
-- Red's and the Copycat's ground floor (one tileset, same atlas as
-- the floor above). Bookcases, dining table with its flower pot,
-- stools, the TV on the floor, and the staircase up.
REDS_HOUSE_1 = {
wall = { 0, 36, 37, 52, 53 },
stool = { 2, 3, 18, 19 },
-- the dining table (38-44/58-60); its top row also caps the
-- bookcases below
table = { 38, 39, 41, 42, 43, 44, 58, 59, 60 },
-- the bookcase bodies: tall shelf boxes; their drawn top-edge row
-- (38/41, pinned table above) becomes their top face
desk = { 34, 35, 48, 49, 50, 51 },
-- the TV on the floor
billboard = { 6, 7, 22, 23 },
-- the small potted plant on the table: a paper-thin profile
-- cutout standing on the tabletop, its leaf crown (in 40) included
cutout = { 40, 54, 55, 56, 57 },
-- the staircase leads UP to 2F: a rising flight climbing east
stair_e = { 12, 13, 28, 29 },
-- the front-door mat: its collision tile is $14, which the engine's
-- stale-cache fallback counts as water in every tileset, so the rug
-- would recess into a pond lip. It is a flat rug on the floor
ground = { 4, 20 },
},
-- The generic town house (Blue's, Daisy at her table, and eighteen
-- more homes; the schoolhouse and the trashed house reuse it too).
-- Same failure as Red's rooms: the detector reads the furniture as
-- wall-height volumes and towers the table, so every object is
-- pinned to the shape it depicts.
HOUSE = {
-- the wall band stays one 16px face: blank courses, the window,
-- the framed picture, and the schoolhouse blackboard (72-75/88-91)
wall = { 0, 36, 45, 46, 52, 61, 62, 72, 73, 75, 88, 89, 90, 91 },
-- stools: a seat-high box that also seats Daisy
stool = { 2, 3, 18, 19 },
-- the dining table (top edge 38/41 also caps the bookcases);
-- 80-83 are its ransacked corner in CERULEAN_TRASHED_HOUSE, which
-- stays at table height rather than de-merging into a wall stub
table = { 38, 39, 41, 47, 54, 57, 58, 59, 60, 80, 81, 82, 83 },
-- the bookcase bodies: book ranks (14/15 left pair, 48/49 right)
-- and the base course; the drawn top edge (38/41, pinned table
-- above) becomes their top face
desk = { 14, 15, 30, 31, 48, 49 },
-- the corner potted plants: mostly silhouette, the THIN standee
-- pool (crown 10/11, leaves 8/9/26/27, pot 24/25)
prop = { 8, 9, 10, 11, 24, 25, 26, 27 },
-- the open book on the schoolhouse table: a paper-thin cutout
-- standing on the pinned tabletop
cutout = { 70, 71, 86, 87 },
-- the front-door mat: same $14 water-fallback trap as Red's; flat
ground = { 4, 20 },
},
-- The Pokemon Center lobby. One tileset serves all eleven Centers
-- and the Celadon Hotel, and VIRIDIAN_POKECENTER places every tile
-- the other maps use, so this list -- read off Viridian -- covers
-- them all. (The Marts are a DIFFERENT tileset id, MART, that only
-- shares the atlas image; pins do not carry over.) Same failure as
-- the houses: the detector merges the wall-touching counters and
-- machines into the wall and towers them, and the lounge seat --
-- which has a PERSON drawn into the tile art -- becomes a monolith
-- wearing his face.
POKECENTER = {
-- the wall band stays one 16px face: striped panels (40), the high
-- windows (92-95; 94 doubles as the map's warp tile, and pins are
-- look-only), the pokeball poster (2/3/18/19), and the pillars
-- (16/41) with their bases (4/5/20/21; 20 is the $14 water-fallback
-- trap and would recess into a pond lip). The healing machines'
-- bodies (72/76/77 console face, 6/22 button panel, 73 light edge,
-- 7/13 shadowed edge) are ALSO wall: drawn 16px tall against the
-- band, so wall height is their drawn height and they read as
-- consoles jutting from it; the near-black screen tiles must be
-- pinned or the void rule flattens them, and 72 is the $48
-- water-fallback trap
wall = { 2, 3, 4, 5, 6, 7, 13, 16, 18, 19, 20, 21, 22, 40, 41,
72, 73, 76, 77, 92, 93, 94, 95 },
-- the counters, half a cell high: top band (8) with the nurse's
-- tray (10), front face (24/25, the game's counterTiles), left end
-- cap (56) and the Cable Club's light sections (90/91). 8px is
-- one clean band, so the drawn front panel stands up and the
-- counter top stays on top; at 12 they read as wall stubs
counter = { 8, 10, 24, 25, 56, 90, 91,
-- and the lounge couch with the man sitting on it.
-- Same half-cell box: its bottom row (42/43, the front
-- base) stands up as the couch's front, and the three
-- rows above it -- cushion (38/39) and the man
-- (36/37 head, 52/53 face) -- ride the top face in
-- drawn order, each exactly once. See the note below
-- on why he cannot be stood upright.
36, 37, 38, 39, 42, 43, 52, 53 },
-- standing per-pixel props, black-outline segmented: the healing
-- machines' screen tops (58/59/74/75, drawn above the pinned
-- bodies so they stand ON them) and the PC (66/70/82/86), which
-- stands on its pinned desk
billboard = { 58, 59, 66, 70, 74, 75, 82, 86 },
-- Why the man on the couch rides the top face instead of standing
-- up. He is drawn across two tile rows (skin pixels appear in
-- rows 8 and 9 and stop dead at the row 9/10 seam), and folding
-- two rows upright requires both to share a class, which makes the
-- box two tiles deep -- and a fully folded box repeats its north
-- row across its whole top face. So every upright arrangement
-- puts his head on screen two or three times: as a 16px seat-back
-- his head lands on the front AND twice on the top; as a 32px
-- bookcase he becomes a cabinet taller than the room's walls.
-- Dropping the seat to floor level to clear his face does not help
-- either, it only moves which copy you see. He also cannot be a
-- standee: the drawing has no floor margin, so all three non-black
-- shades touch the cluster rim and the mask drains 307 of its 420
-- interior pixels -- 46% of him even segmented alone, because his
-- skin is the same light shade as the couch behind him. Riding
-- the top face is the one arrangement that draws him exactly once.
-- the PC's desk body, which the PC stands on
table = { 9, 88 },
-- the potted plants: bush (32/33/48/49) over pot (34/35/50/51,
-- 50 is the $32 water-fallback trap). Standing per-pixel
-- billboards in the THIN pool, like every other interior plant --
-- and a pool apart from the sofa, which touches the corner pair
-- and must stay a separate object. The bush's light checker
-- highlights share the floor's shades, so the mask drains some of
-- them; the standee reads darker than the flat art, which is the
-- accepted trade for a real plant silhouette
prop = { 32, 33, 34, 35, 48, 49, 50, 51 },
},
-- The Poke Marts (one 4x4 layout serves every city; the tileset
-- shares the Center's atlas image but is its own id, so the pins
-- above do not carry over). Same failures as everywhere indoors:
-- the detector towered the whole north display band to 32px, merged
-- the clerk's booth into a 48px slab wearing the juice poster, and
-- boxed the two free-standing shelf racks into one 4-tile-deep
-- monolith.
MART = {
-- the wall band stays one 16px face: the trim and case tops
-- (40/90/91), the SALE cases (78/79) with their feet (23/29), and
-- the glass drink fridges (44-47) with their feet (62/63) -- all
-- drawn built INTO the back wall, exactly like the Center's
-- healing consoles
wall = { 23, 29, 40, 44, 45, 46, 47, 62, 63, 78, 79, 90, 91 },
-- the clerk's counter, half a cell high like every service
-- counter: the south front (24/25), the east-facing display run
-- (16/41/89 panels, 14/15/30/31 the juice-poster case whose art
-- rides the top like the nurse's tray), and the dark section
-- beside the register (56, near-black -- pinned or the void rule
-- flattens it)
counter = { 14, 15, 16, 24, 25, 30, 31, 41, 56, 89 },
-- the cash register stands ON the pinned counter through the
-- authored-box support rule, black-outline segmented
billboard = { 8 },
-- the free-standing shelf racks: TALL drawings, not deep ones --
-- each rank collapses onto a one-cell-deep shelf at its drawn
-- height (the Dojo/Red's-house treatment). 64/65/67 and 80/81/83
-- are the bottle rows the clerk's booth also wears as its top
-- display; 68/69/71 and 84/85/87 the goods rows below
bookcase = { 64, 65, 67, 68, 69, 71, 80, 81, 83, 84, 85, 87 },
},
},
-- Buildings whose whole sprite is voxelized band by band (lib/Buildings.lua,
-- the pipeline in assets/docs/buidling_to_voxel/). A building is matched by its
-- exact tile grid -- the drawings are catalogued in assets/docs/buildings/ -- so
-- every map that places the same art gets the same model: one entry
-- voxelizes Red's house, Blue's house, Bill's, the Copycat's and the two
-- Fuchsia houses alike.
--
-- Only the BAND TABLE is authored here, because only it needs a human to
-- read the drawing. Everything measurable is measured off the pixels:
-- the silhouette, the taper rate (which IS the roof's slope), the eave
-- height, and every window and doorway (a non-black region its own black
-- frame seals off). Fields:
--
-- tiles the tile-id grid that identifies the building, rows of the
-- 8px tile atlas, north row first
-- roofRows how many rows off the top are drawn as TOP-FACING roof;
-- the rest of the drawing is the facade, seen face-on
-- roofBack rows laid along the north rim, one row per voxel of depth
-- roofFront rows laid along the south rim (the fascia and eave course)
-- roofCycle the row run the middle depth cycles; its length must be
-- the roof texture's period or the courses will not line up
-- slab roof thickness in voxels
-- frontEave how far the roof overhangs the facade
-- ledge a band that juts two voxels past the walls (an awning),
-- or nil
-- seal sides the drawing runs off rather than closing with its
-- own outline, as a string of n/s/e/w; the silhouette
-- flood does not seed there. Only needed by a drawing
-- trimmed flush to its art -- one whose base course is a
-- row of brick rather than the black threshold every other
-- building stands on. Omit it unless the fill says
-- otherwise: sealing a side the drawing does NOT run off
-- swallows the terrain beside it.
--
-- Nothing here describes the roof's SHAPE, because nothing needs to: the
-- topmost drawn row of each column is the elevation profile, so a drawn
-- taper becomes a slope and a roof drawn from straight above comes out
-- level. That is why the flat-roofed civic block and its sixteen
-- relatives -- every Center and Mart, the gyms and gates, the department
-- store and Silph Co -- share one band table below, differing only in
-- their tile grids. The sloped ones fall into three groups just as
-- cleanly, by the depth of the roof band: 16 rows (Red's house), 32
-- (Oak's lab) or 64 (the museum). Before authoring a new one, check
-- whether its roof band is already pixel for pixel one of those.
--
-- assets/docs/buildings/B26 is deliberately absent. Its drawing has no
-- black base course -- it ends on a row of light brick -- so the
-- silhouette flood, which comes in from the border through light pixels,
-- climbs up through the wall and hollows it out. Every other building
-- is sealed by a black threshold row. Reading it would mean changing
-- the flood itself, which every model here depends on, for one scenery
-- placement.
buildings = {
OVERWORLD = {
-- assets/docs/buildings/B07: the two-storey gabled house. Coursed cap over
-- a gable wall, an awning with its double black underline, then the
-- ground floor with the door. 7 placements, Red's and Blue's among
-- them. Course rhythm: a dark line every 4 rows.
{
id = "gabled_house",
tiles = {
{ 5, 6, 7, 7, 7, 7, 8, 9 },
{ 21, 22, 23, 23, 23, 23, 24, 25 },
{ 37, 38, 10, 34, 10, 10, 40, 41 },
{ 92, 23, 23, 23, 23, 23, 23, 93 },
{ 15, 34, 11, 12, 10, 10, 34, 31 },
{ 78, 26, 27, 28, 26, 26, 26, 79 },
},
roofRows = 16, roofBack = 7, roofFront = 9, roofCycle = { 5, 8 },
slab = 4, frontEave = 4, ledge = { 24, 31 },
},
-- assets/docs/buildings/B31: Oak's lab. The same architecture with a roof
-- band twice as deep -- the extra rows are DEPTH, not height, so the
-- lab is a bigger footprint under the same storey. Its cross-hatch
-- roof texture repeats every 8 rows, and it has no awning: the band
-- that would be one is the roof's own eave course.
{
id = "oaks_lab",
tiles = {
{ 5, 6, 83, 83, 83, 83, 83, 83, 83, 83, 8, 9 },
{ 21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25 },
{ 21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25 },
{ 21, 22, 23, 23, 23, 23, 23, 23, 23, 23, 24, 25 },
{ 37, 38, 10, 10, 10, 75, 75, 10, 10, 10, 40, 41 },
{ 15, 34, 34, 34, 75, 75, 75, 75, 75, 75, 75, 31 },
{ 15, 10, 10, 10, 11, 12, 10, 10, 10, 10, 10, 31 },
{ 78, 26, 26, 26, 27, 28, 26, 26, 26, 26, 26, 79 },
},
roofRows = 32, roofBack = 7, roofFront = 8, roofCycle = { 5, 12 },
slab = 4, frontEave = 4, ledge = nil,
},
-- assets/docs/buildings/B03: the flat-roofed commercial block --
-- Celadon's diner, hotel, chief's house and prize room, the Bike
-- Shop, the Fan Club, Mr. Psychic's, the Underground Path entrances.
-- 15 placements, the most of any voxelized drawing. The lattice
-- field is drawn from straight above, so the measured taper is flat
-- and the whole band is depth under one level roof; the eave course
-- is the roof's own south rim, lab-style, no awning. Lattice period
-- 8, the lab's rhythm again.
{
id = "flat_commercial",
tiles = {
{ 76, 83, 83, 83, 83, 83, 83, 77 },
{ 90, 18, 18, 18, 18, 18, 18, 90 },
{ 90, 18, 18, 18, 18, 18, 18, 90 },
{ 92, 23, 23, 23, 23, 23, 23, 93 },
{ 15, 10, 10, 10, 10, 10, 10, 31 },
{ 15, 75, 75, 75, 75, 75, 75, 31 },
{ 15, 75, 11, 12, 75, 75, 75, 31 },
{ 78, 26, 27, 28, 26, 26, 26, 79 },
},
roofRows = 32, roofBack = 7, roofFront = 8, roofCycle = { 5, 12 },
slab = 4, frontEave = 4, ledge = nil,
},
-- assets/docs/buildings/B05: every Pokemon Center in the game
-- (Celadon, Cerulean, Cinnabar, Fuchsia, Lavender, Pewter,
-- Saffron, Vermilion, Viridian, Mt Moon, Rock Tunnel). B03's
-- block with the POKe sign hung beside the door; the sign is
-- too wide to be a pane, so it stays flush.
{
id = "pokecenter",
tiles = {
{ 76, 83, 83, 83, 83, 83, 83, 77 },
{ 90, 18, 18, 18, 18, 18, 18, 90 },
{ 90, 18, 18, 18, 18, 18, 18, 90 },
{ 92, 23, 23, 23, 23, 23, 23, 93 },
{ 15, 10, 10, 10, 10, 10, 10, 31 },
{ 15, 75, 75, 75, 75, 75, 75, 31 },
{ 15, 75, 11, 12, 66, 67, 75, 31 },
{ 78, 26, 27, 28, 74, 74, 26, 79 },
},
roofRows = 32, roofBack = 7, roofFront = 8, roofCycle = { 5, 12 },
slab = 4, frontEave = 4, ledge = nil,
},
-- assets/docs/buildings/B06: every Poke Mart (Cerulean,
-- Cinnabar, Fuchsia, Lavender, Pewter, Saffron, Vermilion,
-- Viridian). The Center's twin, MART on the sign.
{
id = "pokemart",
tiles = {
{ 76, 83, 83, 83, 83, 83, 83, 77 },
{ 90, 18, 18, 18, 18, 18, 18, 90 },
{ 90, 18, 18, 18, 18, 18, 18, 90 },
{ 92, 23, 23, 23, 23, 23, 23, 93 },
{ 15, 10, 10, 10, 10, 10, 10, 31 },
{ 15, 75, 75, 75, 75, 75, 75, 31 },
{ 15, 75, 11, 12, 68, 69, 75, 31 },
{ 78, 26, 27, 28, 74, 74, 26, 79 },
},
roofRows = 32, roofBack = 7, roofFront = 8, roofCycle = { 5, 12 },
slab = 4, frontEave = 4, ledge = nil,
},
-- assets/docs/buildings/B02: the plain 4x4 block: one window
-- course over blank brick and no door. 15 placements, scenery
-- in every city bar the Celadon Mart roof stair.
{
id = "flat_block_4x4",
tiles = {
{ 76, 83, 83, 83, 83, 83, 83, 77 },
{ 90, 18, 18, 18, 18, 18, 18, 90 },
{ 90, 18, 18, 18, 18, 18, 18, 90 },
{ 92, 23, 23, 23, 23, 23, 23, 93 },
{ 15, 10, 10, 10, 10, 10, 10, 31 },
{ 15, 75, 75, 75, 75, 75, 75, 31 },
{ 15, 75, 75, 75, 75, 75, 75, 31 },
{ 78, 26, 26, 26, 26, 26, 26, 79 },
},
roofRows = 32, roofBack = 7, roofFront = 8, roofCycle = { 5, 12 },
slab = 4, frontEave = 4, ledge = nil,
},
-- assets/docs/buildings/B08: the same block two cells deeper,
-- 6 placements, all scenery.
{
id = "flat_block_4x6",
tiles = {
{ 76, 83, 83, 83, 83, 83, 83, 77 },
{ 90, 18, 18, 18, 18, 18, 18, 90 },
{ 90, 18, 18, 18, 18, 18, 18, 90 },
{ 92, 23, 23, 23, 23, 23, 23, 93 },
{ 15, 10, 10, 10, 10, 10, 10, 31 },
{ 15, 75, 75, 75, 75, 75, 75, 31 },
{ 15, 10, 10, 10, 10, 10, 10, 31 },
{ 15, 75, 75, 75, 75, 75, 75, 31 },
{ 15, 10, 10, 10, 10, 10, 10, 31 },
{ 15, 75, 75, 75, 75, 75, 75, 31 },
{ 15, 75, 75, 75, 75, 75, 75, 31 },
{ 78, 26, 26, 26, 26, 26, 26, 79 },
},
roofRows = 32, roofBack = 7, roofFront = 8, roofCycle = { 5, 12 },
slab = 4, frontEave = 4, ledge = nil,
},
-- assets/docs/buildings/B13: the 6x4 scenery block, 4
-- placements.
{
id = "flat_block_6x4",
tiles = {
{ 76, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 77 },
{ 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 },
{ 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 },
{ 92, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 93 },
{ 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 },
{ 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 },
{ 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 },
{ 78, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 79 },
},
roofRows = 32, roofBack = 7, roofFront = 8, roofCycle = { 5, 12 },
slab = 4, frontEave = 4, ledge = nil,
},
-- assets/docs/buildings/B14: the 6x6 scenery block, 3
-- placements.
{
id = "flat_block_6x6",
tiles = {
{ 76, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 77 },
{ 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 },
{ 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 },
{ 92, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 93 },
{ 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 },
{ 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 },
{ 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 },
{ 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 },
{ 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 },
{ 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 },
{ 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 },
{ 78, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 79 },
},
roofRows = 32, roofBack = 7, roofFront = 8, roofCycle = { 5, 12 },
slab = 4, frontEave = 4, ledge = nil,
},
-- assets/docs/buildings/B27: the 8x4 scenery block, one
-- placement on Route 11.
{
id = "flat_block_8x4",
tiles = {
{ 76, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 77 },
{ 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 },
{ 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 },
{ 92, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 93 },
{ 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 },
{ 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 },
{ 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 },
{ 78, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 79 },
},
roofRows = 32, roofBack = 7, roofFront = 8, roofCycle = { 5, 12 },
slab = 4, frontEave = 4, ledge = nil,
},
-- assets/docs/buildings/B09: the wide storefront: Celadon's
-- Game Corner, the Pokemon Mansion, Cinnabar Lab, the Safari
-- Zone gate and Fuchsia's meeting room.
{
id = "game_corner",
tiles = {
{ 76, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 77 },
{ 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 },
{ 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 },
{ 92, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 93 },
{ 15, 10, 10, 10, 10, 75, 75, 10, 10, 10, 10, 31 },
{ 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 },
{ 15, 75, 75, 75, 11, 12, 10, 10, 75, 75, 75, 31 },
{ 78, 26, 26, 26, 27, 28, 26, 26, 26, 26, 26, 79 },
},
roofRows = 32, roofBack = 7, roofFront = 8, roofCycle = { 5, 12 },
slab = 4, frontEave = 4, ledge = nil,
},
-- assets/docs/buildings/B15: Celadon Mansion and the Route 6
-- and Route 12 gates.
{
id = "celadon_mansion",
tiles = {
{ 76, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 77 },
{ 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 },
{ 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 },
{ 92, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 93 },
{ 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 },
{ 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 },
{ 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 },
{ 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 },
{ 15, 10, 10, 10, 10, 75, 75, 10, 10, 10, 10, 31 },
{ 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 },
{ 15, 75, 75, 75, 11, 12, 10, 10, 75, 75, 75, 31 },
{ 78, 26, 26, 26, 27, 28, 26, 26, 26, 26, 26, 79 },
},
roofRows = 32, roofBack = 7, roofFront = 8, roofCycle = { 5, 12 },
slab = 4, frontEave = 4, ledge = nil,
},
-- assets/docs/buildings/B18: the Route 2 gate, and the museum's
-- east entrance beside it in Pewter. The museum HALL itself is
-- B24 below, a different drawing with a sloped roof.
{
id = "route_2_gate",
tiles = {
{ 76, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 77 },
{ 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 },
{ 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 },
{ 92, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 93 },
{ 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 },
{ 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 },
{ 15, 75, 11, 12, 75, 75, 75, 75, 75, 75, 75, 31 },
{ 78, 26, 27, 28, 26, 26, 26, 26, 26, 26, 26, 79 },
},
roofRows = 32, roofBack = 7, roofFront = 8, roofCycle = { 5, 12 },
slab = 4, frontEave = 4, ledge = nil,
},
-- assets/docs/buildings/B29: Fuchsia Gym, the block with GYM
-- on the sign.
{
id = "fuchsia_gym",
tiles = {
{ 76, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 77 },
{ 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 },
{ 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 },
{ 92, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 93 },
{ 15, 10, 10, 10, 34, 47, 63, 34, 10, 10, 10, 31 },
{ 15, 75, 75, 75, 34, 34, 34, 34, 75, 75, 75, 31 },
{ 15, 75, 11, 12, 10, 10, 10, 10, 75, 75, 75, 31 },
{ 78, 26, 27, 28, 26, 26, 26, 26, 26, 26, 26, 79 },
},
roofRows = 32, roofBack = 7, roofFront = 8, roofCycle = { 5, 12 },
slab = 4, frontEave = 4, ledge = nil,
},
-- assets/docs/buildings/B28: the Route 5 underground-path
-- gate.
{
id = "route_5_gate",
tiles = {
{ 76, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 77 },
{ 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 },
{ 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 },
{ 92, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 93 },
{ 15, 10, 10, 10, 10, 10, 10, 10, 10, 75, 75, 10, 10, 10, 10, 31 },
{ 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 },
{ 15, 75, 75, 75, 75, 75, 75, 75, 11, 12, 10, 10, 75, 75, 75, 31 },
{ 78, 26, 26, 26, 26, 26, 26, 26, 27, 28, 26, 26, 26, 26, 26, 79 },
},
roofRows = 32, roofBack = 7, roofFront = 8, roofCycle = { 5, 12 },
slab = 4, frontEave = 4, ledge = nil,
},
-- assets/docs/buildings/B21: the Route 22 league gate, the
-- widest of the family at 12 cells.
{
id = "route_22_gate",
tiles = {
{ 76, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 77 },
{ 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 },
{ 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 },
{ 92, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 93 },
{ 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 },
{ 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 },
{ 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 },
{ 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 },
{ 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 75, 75, 10, 10, 10, 10, 10, 10, 10, 10, 31 },
{ 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 },
{ 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 11, 12, 10, 10, 75, 75, 75, 75, 75, 75, 75, 31 },
{ 78, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 28, 26, 26, 26, 26, 26, 26, 26, 26, 26, 79 },
},
roofRows = 32, roofBack = 7, roofFront = 8, roofCycle = { 5, 12 },
slab = 4, frontEave = 4, ledge = nil,
},
-- assets/docs/buildings/B25: the Power Plant.
{
id = "power_plant",
tiles = {
{ 76, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 77 },
{ 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 },
{ 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 },
{ 92, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 93 },
{ 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 },
{ 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 },
{ 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 },
{ 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 },
{ 15, 10, 10, 10, 10, 10, 10, 10, 10, 75, 75, 10, 10, 10, 10, 31 },
{ 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 },
{ 15, 75, 75, 75, 75, 75, 75, 75, 11, 12, 10, 10, 75, 75, 75, 31 },
{ 78, 26, 26, 26, 26, 26, 26, 26, 27, 28, 26, 26, 26, 26, 26, 79 },
},
roofRows = 32, roofBack = 7, roofFront = 8, roofCycle = { 5, 12 },
slab = 4, frontEave = 4, ledge = nil,
},
-- assets/docs/buildings/B22: Celadon's department store: six
-- window courses over the MART sign.
{
id = "celadon_mart",
tiles = {
{ 76, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 77 },
{ 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 },
{ 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 },
{ 92, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 93 },
{ 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 },
{ 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 },
{ 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 },
{ 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 },
{ 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 },
{ 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 },
{ 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 },
{ 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 },
{ 15, 10, 10, 10, 10, 75, 75, 10, 10, 75, 75, 10, 10, 10, 10, 31 },
{ 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 },
{ 15, 75, 75, 75, 11, 12, 10, 10, 11, 12, 10, 10, 68, 69, 75, 31 },
{ 78, 26, 26, 26, 27, 28, 26, 26, 27, 28, 26, 26, 74, 74, 26, 79 },
},
roofRows = 32, roofBack = 7, roofFront = 8, roofCycle = { 5, 12 },
slab = 4, frontEave = 4, ledge = nil,
},
-- assets/docs/buildings/B20: Silph Co. Twelve cells of plot
-- and ten courses of windows under the same roof band, so it
-- stands as the tallest thing in Kanto.
{
id = "silph_co",
tiles = {
{ 76, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 77 },
{ 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 },
{ 90, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 90 },
{ 92, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 93 },
{ 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 },
{ 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 },
{ 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 },
{ 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 },
{ 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 },
{ 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 },
{ 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 },
{ 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 },
{ 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 },
{ 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 },
{ 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 },
{ 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 },
{ 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 },
{ 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 },
{ 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 },
{ 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 },
{ 15, 10, 10, 10, 10, 75, 75, 10, 10, 10, 10, 10, 10, 10, 10, 31 },
{ 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 },
{ 15, 75, 75, 75, 11, 12, 10, 10, 75, 75, 75, 75, 75, 75, 75, 31 },
{ 78, 26, 26, 26, 27, 28, 26, 26, 26, 26, 26, 26, 26, 26, 26, 79 },
},
roofRows = 32, roofBack = 7, roofFront = 8, roofCycle = { 5, 12 },
slab = 4, frontEave = 4, ledge = nil,
},
-- assets/docs/buildings/B24: the Pewter museum's hall, and the only
-- building in the family with a SLOPED roof: the same 2:1 taper the
-- lab and Red's house are drawn with, over a roof band twice the
-- lab's depth. The drawing repeats its whole lattice-and-course
-- motif -- rows 8..31 again at 32..55 -- which is what fixes the
-- cycle at 24 rather than the bare lattice's 8: the drawing proves
-- the period. The last band (rows 56..63) is the roof's fascia,
-- wider than the wall it covers, so it stays in the roof band and
-- lands on the south rim.
{
id = "museum",
tiles = {
{ 5, 6, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 8, 9 },
{ 21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25 },
{ 21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25 },
{ 21, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 25 },
{ 21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25 },
{ 21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25 },
{ 21, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 25 },
{ 37, 38, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 40, 41 },
{ 15, 10, 10, 10, 10, 10, 10, 10, 10, 75, 75, 10, 10, 10, 10, 31 },
{ 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 },
{ 15, 75, 75, 75, 75, 75, 75, 75, 11, 12, 10, 10, 75, 75, 75, 31 },
{ 78, 26, 26, 26, 26, 26, 26, 26, 27, 28, 26, 26, 26, 26, 26, 79 },
},
roofRows = 64, roofBack = 8, roofFront = 8, roofCycle = { 8, 31 },
slab = 4, frontEave = 4, ledge = nil,
},
-- assets/docs/buildings/B10: the gym. Cinnabar, Pewter,
-- Vermilion and Viridian wear this drawing, and so does the
-- Fighting Dojo next door to Saffron's. Oak's lab's roof band
-- exactly, tile for tile, over a facade with GYM on the sign.
{
id = "gym",
tiles = {
{ 5, 6, 83, 83, 83, 83, 83, 83, 83, 83, 8, 9 },
{ 21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25 },
{ 21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25 },
{ 21, 22, 23, 23, 23, 23, 23, 23, 23, 23, 24, 25 },
{ 37, 38, 10, 10, 34, 47, 63, 34, 10, 10, 40, 41 },
{ 15, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 31 },
{ 15, 10, 10, 10, 10, 10, 10, 10, 11, 12, 10, 31 },
{ 78, 26, 26, 26, 26, 26, 26, 26, 27, 28, 26, 79 },
},
roofRows = 32, roofBack = 7, roofFront = 8, roofCycle = { 5, 12 },
slab = 4, frontEave = 4, ledge = nil,
},
-- assets/docs/buildings/B16: the big-city gym: Celadon,
-- Cerulean and Saffron. Two cells wider than the standard
-- gym, and it carries the GYM sign twice.
{
id = "gym_large",
tiles = {
{ 5, 6, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 8, 9 },
{ 21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25 },
{ 21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25 },
{ 21, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 25 },
{ 37, 38, 10, 10, 34, 47, 63, 34, 34, 47, 63, 34, 10, 10, 40, 41 },
{ 15, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 31 },
{ 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 12, 10, 31 },
{ 78, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 28, 26, 79 },
},
roofRows = 32, roofBack = 7, roofFront = 8, roofCycle = { 5, 12 },
slab = 4, frontEave = 4, ledge = nil,
},
-- assets/docs/buildings/B01: the commonest drawing in the
-- game at 19 placements, and every one of them scenery: a
-- gabled block with two window courses and no door. Red's
-- house's roof band, tile for tile, but no awning under it.
{
id = "gabled_block_4x3",
tiles = {
{ 5, 6, 7, 7, 7, 7, 8, 9 },
{ 21, 22, 23, 23, 23, 23, 24, 25 },
{ 37, 38, 10, 10, 10, 10, 40, 41 },
{ 15, 34, 34, 34, 75, 75, 75, 31 },
{ 15, 10, 10, 10, 10, 10, 10, 31 },
{ 78, 26, 26, 26, 26, 26, 26, 79 },
},
roofRows = 16, roofBack = 7, roofFront = 9, roofCycle = { 5, 8 },
slab = 4, frontEave = 4, ledge = nil,
},
-- assets/docs/buildings/B04: the little 4x2 cottage, 12
-- placements and nearly all of them somebody's home: Mr
-- Fuji's, the Cubone house, Bill's grandpa's, the Name
-- Rater's, the Viridian school house, the Route 8 underground
-- path.
{
id = "gabled_cottage",
tiles = {
{ 5, 6, 7, 7, 7, 7, 8, 9 },
{ 21, 22, 23, 23, 23, 23, 24, 25 },
{ 37, 38, 11, 12, 10, 10, 40, 41 },
{ 78, 26, 27, 28, 26, 26, 26, 79 },
},
roofRows = 16, roofBack = 7, roofFront = 9, roofCycle = { 5, 8 },
slab = 4, frontEave = 4, ledge = nil,
},
-- assets/docs/buildings/B17: the wide 6x2 house: Cerulean's
-- badge, trade and trashed houses.
{
id = "gabled_house_wide",
tiles = {
{ 5, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 9 },
{ 21, 22, 23, 23, 23, 23, 23, 23, 23, 23, 24, 25 },
{ 37, 38, 11, 12, 35, 10, 10, 35, 10, 10, 40, 41 },
{ 78, 26, 27, 28, 26, 26, 26, 26, 26, 26, 26, 79 },
},
roofRows = 16, roofBack = 7, roofFront = 9, roofCycle = { 5, 8 },
slab = 4, frontEave = 4, ledge = nil,
},
-- assets/docs/buildings/B11: the 6x2 scenery block, 5
-- placements, no door.
{
id = "gabled_block_6x2",
tiles = {
{ 5, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 9 },
{ 21, 22, 23, 23, 23, 23, 23, 23, 23, 23, 24, 25 },
{ 37, 38, 10, 34, 35, 10, 10, 35, 10, 10, 40, 41 },
{ 78, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 79 },
},
roofRows = 16, roofBack = 7, roofFront = 9, roofCycle = { 5, 8 },
slab = 4, frontEave = 4, ledge = nil,
},
-- assets/docs/buildings/B34: the 4x2 scenery block, one
-- placement in Fuchsia.
{
id = "gabled_block_4x2",
tiles = {
{ 5, 6, 7, 7, 7, 7, 8, 9 },
{ 21, 22, 23, 23, 23, 23, 24, 25 },
{ 37, 38, 10, 34, 10, 10, 40, 41 },
{ 78, 26, 26, 26, 26, 26, 26, 79 },
},
roofRows = 16, roofBack = 7, roofFront = 9, roofCycle = { 5, 8 },
slab = 4, frontEave = 4, ledge = nil,
},
-- assets/docs/buildings/B33: the Route 5 day care.
{
id = "daycare",
tiles = {
{ 5, 6, 83, 83, 83, 83, 8, 9 },
{ 21, 56, 18, 18, 18, 18, 56, 25 },
{ 21, 56, 18, 18, 18, 18, 56, 25 },
{ 21, 22, 23, 23, 23, 23, 24, 25 },
{ 37, 38, 10, 10, 10, 10, 40, 41 },
{ 15, 34, 34, 34, 34, 34, 34, 31 },
{ 15, 10, 10, 10, 11, 12, 10, 31 },
{ 78, 26, 26, 26, 27, 28, 26, 79 },
},
roofRows = 32, roofBack = 7, roofFront = 8, roofCycle = { 5, 12 },
slab = 4, frontEave = 4, ledge = nil,
},
-- assets/docs/buildings/B26: the Route 10 scenery block,
-- structurally the museum's twin -- Oak's lab's roof band,
-- and its rows 8..31 repeat at 32..55 exactly as the museum's
-- do. It needs `seal` because its drawing has no black base
-- course: it ends on a row of light brick, and unsealed the
-- flood climbs in from the south border through the mortar
-- and hollows the wall out (72% of the sprite survives
-- instead of 95%, in 65 pieces instead of 1).
{
id = "gabled_block_6x6",
tiles = {
{ 5, 6, 83, 83, 83, 83, 83, 83, 83, 83, 8, 9 },
{ 21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25 },
{ 21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25 },
{ 21, 22, 23, 23, 23, 23, 23, 23, 23, 23, 24, 25 },
{ 21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25 },
{ 21, 56, 18, 18, 18, 18, 18, 18, 18, 18, 56, 25 },
{ 21, 22, 23, 23, 23, 23, 23, 23, 23, 23, 24, 25 },
{ 37, 38, 34, 34, 34, 34, 34, 34, 34, 34, 40, 41 },
{ 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 },
{ 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 },
{ 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 31 },
{ 15, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 31 },
},
roofRows = 64, roofBack = 8, roofFront = 8, roofCycle = { 8, 31 },
slab = 4, frontEave = 4, ledge = nil, seal = "s",
},
},
FOREST = {
-- assets/docs/buildings/B12: the Safari Zone rest houses --
-- Center, East, North, West and the Secret House. A
-- corrugated roof over a plank facade; its stripe repeats
-- every 5 rows, not the OVERWORLD lattice's 8.
{
id = "safari_rest_house",
tiles = {
{ 8, 9, 9, 9, 9, 9, 9, 12 },
{ 24, 25, 25, 25, 25, 25, 25, 28 },
{ 40, 41, 42, 43, 1, 1, 41, 44 },
{ 56, 41, 58, 59, 41, 41, 41, 60 },
},
roofRows = 17, roofBack = 5, roofFront = 3, roofCycle = { 5, 9 },
slab = 4, frontEave = 4, ledge = nil,
},
},
PLATEAU = {
-- assets/docs/buildings/B23: the Victory Road entrance on
-- Route 23: a long rock face with two barred doors cut into
-- it. Not a house -- what the roof band reads is the pale top
-- of the cliff seen from above, and the facade is the
-- striated rock below it.
{
id = "victory_road_gate",
tiles = {
{ 37, 38, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 37, 38 },
{ 40, 41, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 40, 41 },
{ 21, 22, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 46, 47, 3, 3, 3, 3, 3, 3, 3, 3, 46, 47, 15, 15, 15, 15, 15, 15, 21, 22 },
{ 5, 6, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 46, 47, 3, 3, 3, 3, 3, 3, 3, 3, 46, 47, 15, 15, 15, 15, 15, 15, 5, 6 },
{ 5, 6, 15, 15, 15, 15, 15, 15, 11, 12, 15, 15, 15, 15, 15, 15, 46, 47, 3, 3, 3, 3, 3, 3, 3, 3, 46, 47, 11, 12, 15, 15, 15, 15, 5, 6 },
{ 21, 22, 14, 14, 14, 14, 14, 14, 27, 28, 14, 14, 14, 14, 14, 14, 46, 47, 3, 3, 3, 3, 3, 3, 3, 3, 46, 47, 27, 28, 14, 14, 14, 14, 21, 22 },
},
roofRows = 16, roofBack = 7, roofFront = 8, roofCycle = { 9, 12 },
slab = 4, frontEave = 4, ledge = nil,
},
},
},
}