Useful unused data and routines - pret/pokecrystal GitHub Wiki
This page is for pointing out unused data or routines that were left over in the pokecrystal ROM.
(The Cutting Room Floor (TCRF) has documented a lot more unused content, but some of it is incomplete leftovers: for example, the maps in maps/unused/, or text for unimplemented events like data/text/unused_sweet_honey.asm.)
Contents
- The GS Ball and Celebi event
- NPC sprites
- Pink overworld sprite color
- Map environment for outdoor dungeons
- Tile collision behavior (including water currents)
- Held item effects to prevent status conditions
- Held item effects to raise stats mid-battle
- Experience growth rates
- Emotes
- NPCs that trade for a male Pokémon
- Move effect to defrost opponent and raise Attack
unused_johto
tileset for beta towns and cities
The GS Ball and Celebi event
The Japanese release of Pokémon Crystal had an entire event where you are given a GS Ball, show it to Kurt, and use it to encounter Celebi in Ilex Forest. This was entirely adapted and translated for the English version, but was never enabled until the 3DS Virtual Console release.
The initial script where you get the GS Ball is in maps/GoldenrodPokecenter1F.asm. It calls BattleTowerAction
with the parameter BATTLETOWERACTION_CHECKMOBILEEVENT
and checks for the result MOBILE_EVENT_OBJECT_GS_BALL
. You could just change this to a typical checkevent
command, or do what the Virtual Console release did and enable the original check:
EnableGSBallScene:
ld a, BANK(sMobileEventIndex)
call OpenSRAM
ld a, MOBILE_EVENT_OBJECT_GS_BALL
ld [sMobileEventIndex], a
jp CloseSRAM
Just put that in a map event script and instead of a typical setevent
command, do callasm EnableGSBallScene
.
NPC sprites
From constants/sprite_constants.asm:
SPRITE_CAL
: The player's original spriteset from the SpaceWorld 1997 demos of Gold and Silver.SPRITE_UNUSED_GUY
: A generic old balding man with a moustache. Does not have walking frame graphics.SPRITE_OLD_LINK_RECEPTIONIST
: The Cable Club receptionist from RBY.SPRITE_PAPER
: The letter from RBY.
Use them in maps/*.asm.
Pink overworld sprite color
From constants/sprite_data_constants.asm:
PAL_NPC_PINK
: A counterpart to the otherPAL_NPC_*
constants. Pink looks very similar to red.
The actual color can be changed in gfx/overworld/npc_sprites.pal.
Map environment for outdoor dungeons
From constants/map_data_constants.asm:
ENVIRONMENT_5
: An environment that seems neither outdoors nor indoors. You can't use Fly, Teleport, Dig, Escape Rope, or the Bicycle; and its colors change with the time of day, but unlikeTOWN
andROUTE
maps, they don't use the special outdoor water colors. Gamefreak's source code calls itpimg_SHIP
, suggesting it was intended for the deck of the S.S. Anne or Aqua.
Use it in data/maps/maps.asm.
Tile collision behavior (including water currents)
From constants/collision_constants.asm:
COLL_CURRENT_*
: Force the player to SurfRIGHT
,LEFT
,UP
, orDOWN
. Similar to the current tiles in RSE west of Pacifidlog Town.COLL_WALK_*
andCOLL_BRAKE
: Force the player to walkRIGHT
,LEFT
,UP
, orDOWN
, or to stop forced walking. Similar to the spinner tiles in RBY's Rocket Hideout, but without the spinning.COLL_HOP_UP
,COLL_HOP_UP_RIGHT
, andCOLL_HOP_UP_LEFT
: Counterparts to the otherCOLL_HOP_*
constants. Useful for upward-facing ledges.COLL_DOWN_WALL
and otherCOLL_*_WALL
: Counterparts toCOLL_RIGHT_WALL
,COLL_LEFT_WALL
, andCOLL_UP_WALL
. Blocks only specific edges from being walked across.COLL_DOWN_WALL
is useful for placing above cave entrances in case the player can walk on top of cliffs with caves.COLL_*_BUOY
: LikeCOLL_*_WALL
but for water.
Use them in data/tilesets/*_collision.asm.
Held item effects to prevent status conditions
From constants/item_data_constants.asm:
HELD_PREVENT_*
: For held items that prevent status conditions:POISON
,BURN
,FREEZE
,SLEEP
,PARALYZE
, orCONFUSE
.
Use it in data/items/attributes.asm.
Held item effects to raise stats mid-battle
From data/battle/held_consumables.asm:
HELD_*_UP
: When held, will automatically raise the stat and consume the item:ATTACK
,DEFENSE
,SPEED
,SP_ATTACK
,SP_DEFENSE
,ACCURACY
, orEVASION
Use it in data/items/attributes.asm.
Experience growth rates
From constants/pokemon_data_constants.asm:
GROWTH_SLIGHTLY_FAST
: Needs 849,970 experience to reach level 100.GROWTH_SLIGHTLY_SLOW
: Needs 949,930 experience to reach level 100.
Use them in data/pokemon/base_stats/*.asm.
Emotes
From constants/script_constants.asm:
EMOTE_*
: Along with the usedSHOCK
,HEART
,SHADOW
,ROD
,BOULDER_DUST
, andGRASS_RUSTLE
, there are emotes from Yellow Version that are unused in GSC:QUESTION
,HAPPY
,SAD
(a skull, not a frown),BOLT
,SLEEP
, andFISH
.
Use them in map scripts, etc.
NPCs that trade for a male Pokémon
From constants/npc_trade_constants.asm:
TRADE_GENDER_MALE
: A counterpart toTRADE_GENDER_FEMALE
.
Use it in data/events/npc_trades.asm.
Move effect to defrost opponent and raise Attack
From constants/move_effect_constants.asm:
EFFECT_DEFROST_OPPONENT
: Thaws a frozen opponent and raises the user's Attack one stage.
Use it in data/moves/moves.asm.
unused_johto
tileset for beta towns and cities
The unused BetaGoldenrodCity.blk map matches quite well with the johto_modern
tileset, except for the train tracks being swapped with the gate roofs, and some early Radio Tower blocks being replaced with the Crystal-only Pokémon Communication Center. (pokegold-spaceworld still has its radio antenna graphics in gfx/tilesets/tileset_02.png.)
However, the rest of the beta towns and cities in maps/unused don't really match with either johto
or johto_modern
. What they do match with is unused_johto
—except that tileset has no graphics or palette map, only metatiles and collisions.
Create gfx/tilesets/unused_johto.png:
And create gfx/tilesets/unused_johto_palette_map.asm:
tilepal 0, GRAY, BROWN, BROWN, RED, GREEN, GREEN, GRAY, RED
tilepal 0, RED, RED, ROOF, ROOF, ROOF, GREEN, GREEN, GREEN
tilepal 0, ROOF, ROOF, ROOF, ROOF, WATER, ROOF, BROWN, BROWN
tilepal 0, RED, RED, BROWN, BROWN, BROWN, GREEN, GREEN, GREEN
tilepal 0, BROWN, BROWN, BROWN, RED, RED, BROWN, YELLOW, BROWN
tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN
tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, GRAY, YELLOW
tilepal 0, YELLOW, BROWN, BROWN, BROWN, BROWN, BROWN, GREEN, GREEN
tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
tilepal 0, ROOF, WATER, GRAY, BROWN, BROWN, BROWN, GRAY, GRAY
tilepal 0, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN, BROWN
tilepal 0, WATER, GRAY, GRAY, GRAY, BROWN, BROWN, GRAY, GRAY
Now you can open the beta maps in Polished Map, pick the unused_johto
tileset, and they'll look nearly correct, except for the gate roofs using some old pagoda roof graphics.
Some interesting points about the unused_johto
tileset:
- The complete pagoda roof graphics take the place of the final whirlpool and gate roof graphics.
- A few tile graphics which are not in
johto
, like the train track and staircase, are still injohto_modern
at the same locations as here. - The Cut tree used to be located where the middle roof graphics are now. (This was also the case in pokegold-spaceworld's gfx/tilesets/tileset_01.png.)
- There are no warp carpet graphics; bricks are used for those instead.
- The gate roof blocks are the very last ones in the metatileset, so they were probably a late addition.
- Block $0D is missing or was never used; it has all $FF tiles.
- The blocks' collisions use
TALL_GRASS_10
instead ofTALL_GRASS
($18), andWATER_21
instead ofWATER
($29). - Headbutt trees just use the
WALL
collision; there was noHEADBUTT_TREE
feature. - The
TOWN_MAP
($95) collision is used for the Pokémon Center and Poké Mart signs.