summaryrefslogtreecommitdiff
path: root/Useful-unused-data-and-routines.md
blob: 60af7bc83ce3cbd78a3ce847600bae3a913ab187 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
This page is for pointing out unused data or routines that were left over in the pokecrystal ROM.

([The Cutting Room Floor (TCRF)](https://tcrf.net/Pok%C3%A9mon_Crystal) has documented a lot more unused content, but some of it is incomplete leftovers: for example, the maps in [maps/unused/](../tree/master/maps/unused/), or text for unimplemented events like [data/text/unused_sweet_honey.asm](../blob/master/data/text/unused_sweet_honey.asm).)


## Contents

- [The GS Ball and Celebi event](#the-gs-ball-and-celebi-event)
- [NPC sprites](#npc-sprites)
- [Pink overworld sprite color](#pink-overworld-sprite-color)
- [Map environment for outdoor dungeons](#map-environment-for-outdoor-dungeons)
- [Tile collision behavior (including water currents)](#tile-collision-behavior-including-water-currents)
- [Held item effects to prevent status conditions](#held-item-effects-to-prevent-status-conditions)
- [Experience growth rates](#experience-growth-rates)
- [NPCs that trade for a male Pokémon](#npcs-that-trade-for-a-male-pokémon)


## 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](https://www.youtube.com/watch?v=Pye8e4bYgug).

The initial script where you get the GS Ball is in [maps/GoldenrodPokecenter1F.asm](../blob/master/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:

```asm
EnableGSBallScene:
	ld a, BANK(sMobileEventIndex)
	call GetSRAMBank
	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](../blob/master/constants/sprite_constants.asm):

- `SPRITE_UNUSED_GUY`: An old balding man with a moustache. Does not have walking frame graphics. Maybe the Safari Zone Warden?
- `SPRITE_OLD_LINK_RECEPTIONIST`: The Cable Club receptionist from RBY.

Use them in [maps/\*.asm](../tree/master/maps/).


## Pink overworld sprite color

From [constants/sprite_data_constants.asm](../blob/master/constants/sprite_data_constants.asm):

- `PAL_NPC_PINK`: A counterpart to the other `PAL_NPC_*` constants. Pink looks very similar to red.

The actual color can be changed in [gfx/overworld/npc_sprites.pal](../blob/master/gfx/overworld/npc_sprites.pal).


## Map environment for outdoor dungeons

From [constants/map_data_constants.asm](../blob/master/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 unlike `TOWN` and `ROUTE` maps, they don't use the special outdoor water colors.

Use it in [data/maps/maps.asm](../blob/master/data/maps/maps.asm).


## Tile collision behavior (including water currents)

From [constants/collision_constants.asm](../blob/master/constants/collision_constants.asm):

- `COLL_CURRENT_*`: Force the player to Surf `RIGHT`, `LEFT`, `UP`, or `DOWN`. Similar to the current tiles in RSE west of Pacifidlog Town.
- `COLL_WALK_*` and `COLL_BRAKE`: Force the player to walk `RIGHT`, `LEFT`, `UP`, or `DOWN`, 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`, and `COLL_HOP_UP_LEFT`: Counterparts to the other `COLL_HOP_*` constants. Useful for upward-facing ledges.
- `COLL_DOWN_WALL` and other `COLL_*_WALL`: Counterparts to `COLL_RIGHT_WALL`, `COLL_LEFT_WALL`, and `COLL_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`: Like `COLL_*_WALL` but for water.

Use them in [data/tilesets/\*_collision.asm](../tree/master/data/tilesets/).


## Held item effects to prevent status conditions

From [constants/item_data_constants.asm](../blob/master/constants/item_data_constants.asm):

- `HELD_PREVENT_*`: For held items that prevent status conditions: `POISON`, `BURN`, `FREEZE`, `SLEEP`, `PARALYZE`, or `CONFUSE`.

Use it in [data/items/attributes.asm](../blob/master/data/items/attributes.asm).


## Experience growth rates

From [constants/pokemon_data_constants.asm](../blob/master/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](../tree/master/data/pokemon/base_stats/).


## NPCs that trade for a male Pokémon

From [constants/npc_trade_constants.asm](../blob/master/constants/npc_trade_constants.asm):

- `TRADE_GENDER_MALE`: A counterpart to `TRADE_GENDER_FEMALE`.

Use it in [data/events/npc_trades.asm](../blob/master/data/events/npc_trades.asm).