Document pokedex area markers
This commit is contained in:
+170
-131
@@ -4,160 +4,191 @@
|
||||
#include "task.h"
|
||||
#include "wild_pokemon_area.h"
|
||||
#include "pokedex_area_markers.h"
|
||||
#include "pokedex.h"
|
||||
|
||||
/*
|
||||
Controls the red ellipse markers that appear on the pokedex maps to show where a species is found.
|
||||
All of the markers together are a single sprite, with each individual marker being represented by
|
||||
a subsprite of the necessary size and shape.
|
||||
|
||||
The data about each area marker is in sAreaMarkers, each specified by a DEX_AREA constant.
|
||||
A MAPSEC is associated with a DEX_AREA constant by a series of arrays in wild_pokemon_area.c
|
||||
*/
|
||||
|
||||
struct PAM_TaskData
|
||||
{
|
||||
struct SubspriteTable subsprites;
|
||||
void *buffer;
|
||||
u8 unused;
|
||||
u8 spriteId;
|
||||
u16 tilesTag;
|
||||
u16 paletteTag; // Never read
|
||||
};
|
||||
|
||||
enum {
|
||||
MARKER_CIRCULAR,
|
||||
MARKER_SMALL_H,
|
||||
MARKER_SMALL_V,
|
||||
MARKER_MED_H,
|
||||
MARKER_MED_V,
|
||||
MARKER_LARGE_H,
|
||||
MARKER_LARGE_V,
|
||||
};
|
||||
|
||||
static const u16 sMarkerPal[] = INCBIN_U16("graphics/pokedex/area_markers/marker.gbapal");
|
||||
static const u32 sMarkerTiles[] = INCBIN_U32("graphics/pokedex/area_markers/marker.4bpp.lz");
|
||||
|
||||
static const struct Subsprite sSubsprite0 = {
|
||||
.size = ST_OAM_SIZE_0,
|
||||
.shape = ST_OAM_SQUARE,
|
||||
static const struct Subsprite sSubsprite_Circular = {
|
||||
.size = SPRITE_SIZE(8x8),
|
||||
.shape = SPRITE_SHAPE(8x8),
|
||||
.priority = 1,
|
||||
.tileOffset = 0
|
||||
};
|
||||
|
||||
static const struct Subsprite sSubsprite1 = {
|
||||
.size = ST_OAM_SIZE_0,
|
||||
.shape = ST_OAM_H_RECTANGLE,
|
||||
static const struct Subsprite sSubsprite_SmallHorizontal = {
|
||||
.size = SPRITE_SIZE(16x8),
|
||||
.shape = SPRITE_SHAPE(16x8),
|
||||
.priority = 1,
|
||||
.tileOffset = 1
|
||||
};
|
||||
|
||||
static const struct Subsprite sSubsprite2 = {
|
||||
.size = ST_OAM_SIZE_0,
|
||||
.shape = ST_OAM_V_RECTANGLE,
|
||||
static const struct Subsprite sSubsprite_SmallVertical = {
|
||||
.size = SPRITE_SIZE(8x16),
|
||||
.shape = SPRITE_SHAPE(8x16),
|
||||
.priority = 1,
|
||||
.tileOffset = 3
|
||||
};
|
||||
|
||||
static const struct Subsprite sSubsprite3 = {
|
||||
.size = ST_OAM_SIZE_2,
|
||||
.shape = ST_OAM_H_RECTANGLE,
|
||||
static const struct Subsprite sSubsprite_MediumHorizontal = {
|
||||
.size = SPRITE_SIZE(32x16),
|
||||
.shape = SPRITE_SHAPE(32x16),
|
||||
.priority = 1,
|
||||
.tileOffset = 5
|
||||
};
|
||||
|
||||
static const struct Subsprite sSubsprite4 = {
|
||||
.size = ST_OAM_SIZE_2,
|
||||
.shape = ST_OAM_V_RECTANGLE,
|
||||
static const struct Subsprite sSubsprite_MediumVertical = {
|
||||
.size = SPRITE_SIZE(16x32),
|
||||
.shape = SPRITE_SHAPE(16x32),
|
||||
.priority = 1,
|
||||
.tileOffset = 13
|
||||
};
|
||||
|
||||
static const struct Subsprite sSubsprite5 = {
|
||||
.size = ST_OAM_SIZE_2,
|
||||
.shape = ST_OAM_H_RECTANGLE,
|
||||
static const struct Subsprite sSubsprite_LargeHorizontal = {
|
||||
.size = SPRITE_SIZE(32x16),
|
||||
.shape = SPRITE_SHAPE(32x16),
|
||||
.priority = 1,
|
||||
.tileOffset = 21
|
||||
};
|
||||
|
||||
static const struct Subsprite sSubsprite6 = {
|
||||
.size = ST_OAM_SIZE_2,
|
||||
.shape = ST_OAM_V_RECTANGLE,
|
||||
static const struct Subsprite sSubsprite_LargeVertical = {
|
||||
.size = SPRITE_SIZE(16x32),
|
||||
.shape = SPRITE_SHAPE(16x32),
|
||||
.priority = 1,
|
||||
.tileOffset = 29
|
||||
};
|
||||
|
||||
|
||||
static const struct Subsprite *const sSubsprites[] = {
|
||||
&sSubsprite0,
|
||||
&sSubsprite1,
|
||||
&sSubsprite2,
|
||||
&sSubsprite3,
|
||||
&sSubsprite4,
|
||||
&sSubsprite5,
|
||||
&sSubsprite6
|
||||
[MARKER_CIRCULAR] = &sSubsprite_Circular,
|
||||
[MARKER_SMALL_H] = &sSubsprite_SmallHorizontal,
|
||||
[MARKER_SMALL_V] = &sSubsprite_SmallVertical,
|
||||
[MARKER_MED_H] = &sSubsprite_MediumHorizontal,
|
||||
[MARKER_MED_V] = &sSubsprite_MediumVertical,
|
||||
[MARKER_LARGE_H] = &sSubsprite_LargeHorizontal,
|
||||
[MARKER_LARGE_V] = &sSubsprite_LargeVertical
|
||||
};
|
||||
|
||||
static const s8 sSubspriteLookupTable[][4] = {
|
||||
{ 0, 0x00, 0x00 },
|
||||
{ 0, 0x36, 0x2c },
|
||||
{ 0, 0x36, 0x1c },
|
||||
{ 0, 0x36, 0x0c },
|
||||
{ 0, 0x5c, 0x0c },
|
||||
{ 0, 0x6e, 0x18 },
|
||||
{ 0, 0x5c, 0x24 },
|
||||
{ 0, 0x4c, 0x18 },
|
||||
{ 0, 0x4e, 0x34 },
|
||||
{ 0, 0x36, 0x3e },
|
||||
{ 0, 0x2a, 0x02 },
|
||||
{ 0, 0x5c, 0x18 },
|
||||
{ 2, 0x36, 0x20 },
|
||||
{ 2, 0x36, 0x10 },
|
||||
{ 1, 0x3d, 0x0c },
|
||||
{ 1, 0x4d, 0x0c },
|
||||
{ 0, 0x5c, 0x12 },
|
||||
{ 0, 0x5c, 0x1e },
|
||||
{ 0, 0x54, 0x18 },
|
||||
{ 1, 0x62, 0x18 },
|
||||
{ 1, 0x62, 0x0c },
|
||||
{ 2, 0x6e, 0x0c },
|
||||
{ 1, 0x62, 0x24 },
|
||||
{ 4, 0x6a, 0x19 },
|
||||
{ 1, 0x64, 0x2e },
|
||||
{ 2, 0x5e, 0x2d },
|
||||
{ 1, 0x55, 0x34 },
|
||||
{ 0, 0x44, 0x18 },
|
||||
{ 4, 0x3e, 0x1a },
|
||||
{ 1, 0x40, 0x34 },
|
||||
{ 0, 0x4e, 0x3c },
|
||||
{ 3, 0x37, 0x3a },
|
||||
{ 2, 0x36, 0x32 },
|
||||
{ 1, 0x28, 0x1c },
|
||||
{ 4, 0x26, 0x04 },
|
||||
{ 0, 0x5c, 0x04 },
|
||||
{ 3, 0x5a, 0xfe },
|
||||
{ 0, 0x33, 0x14 },
|
||||
{ 1, 0x3d, 0x12 },
|
||||
{ 0, 0x48, 0x08 },
|
||||
{ 0, 0x57, 0x08 },
|
||||
{ 0, 0x70, 0x0e },
|
||||
{ 0, 0x71, 0x14 },
|
||||
{ 0, 0x71, 0x19 },
|
||||
{ 1, 0x4e, 0x2c },
|
||||
{ 0, 0x41, 0x3c },
|
||||
{ 0, 0x34, 0x3e },
|
||||
{ 0, 0x2d, 0x07 },
|
||||
{ 0, 0x0a, 0x0a },
|
||||
{ 0, 0x0c, 0x23 },
|
||||
{ 0, 0x0e, 0x34 },
|
||||
{ 0, 0x0c, 0x54 },
|
||||
{ 0, 0x2d, 0x51 },
|
||||
{ 0, 0x4c, 0x54 },
|
||||
{ 0, 0x68, 0x52 },
|
||||
{ 2, 0x0e, 0x02 },
|
||||
{ 0, 0x0a, 0x0f },
|
||||
{ 0, 0x0c, 0x1d },
|
||||
{ 1, 0x02, 0x34 },
|
||||
{ 1, 0x0c, 0x38 },
|
||||
{ 1, 0x2c, 0x4a },
|
||||
{ 1, 0x24, 0x4e },
|
||||
{ 2, 0x30, 0x50 },
|
||||
{ 2, 0x34, 0x56 },
|
||||
{ 0, 0x48, 0x4a },
|
||||
{ 1, 0x48, 0x4e },
|
||||
{ 2, 0x51, 0x50 },
|
||||
{ 0, 0x4c, 0x5c },
|
||||
{ 0, 0x68, 0x4b },
|
||||
{ 0, 0x68, 0x56 },
|
||||
{ 2, 0x6c, 0x53 },
|
||||
{ 3, 0x60, 0x5a },
|
||||
{ 0, 0x0e, 0x01 },
|
||||
{ 0, 0x05, 0x34 },
|
||||
{ 0, 0x0d, 0x50 },
|
||||
{ 0, 0x36, 0x4a },
|
||||
{ 0, 0x45, 0x49 },
|
||||
{ 0, 0x4c, 0x4d },
|
||||
{ 0, 0x49, 0x5f },
|
||||
{ 3, 0x60, 0x5a }
|
||||
static const s8 sAreaMarkers[][4] = {
|
||||
// Marker, x, y
|
||||
[DEX_AREA_NONE] = {},
|
||||
[DEX_AREA_PALLET_TOWN] = { MARKER_CIRCULAR, 54, 44 },
|
||||
[DEX_AREA_VIRIDIAN_CITY] = { MARKER_CIRCULAR, 54, 28 },
|
||||
[DEX_AREA_PEWTER_CITY] = { MARKER_CIRCULAR, 54, 12 },
|
||||
[DEX_AREA_CERULEAN_CITY] = { MARKER_CIRCULAR, 92, 12 },
|
||||
[DEX_AREA_LAVENDER_TOWN] = { MARKER_CIRCULAR, 110, 24 },
|
||||
[DEX_AREA_VERMILION_CITY] = { MARKER_CIRCULAR, 92, 36 },
|
||||
[DEX_AREA_CELADON_CITY] = { MARKER_CIRCULAR, 76, 24 },
|
||||
[DEX_AREA_FUCHSIA_CITY] = { MARKER_CIRCULAR, 78, 52 },
|
||||
[DEX_AREA_CINNABAR_ISLAND] = { MARKER_CIRCULAR, 54, 62 },
|
||||
[DEX_AREA_INDIGO_PLATEAU] = { MARKER_CIRCULAR, 42, 2 },
|
||||
[DEX_AREA_SAFFRON_CITY] = { MARKER_CIRCULAR, 92, 24 },
|
||||
[DEX_AREA_ROUTE_1] = { MARKER_SMALL_V, 54, 32 },
|
||||
[DEX_AREA_ROUTE_2] = { MARKER_SMALL_V, 54, 16 },
|
||||
[DEX_AREA_ROUTE_3] = { MARKER_SMALL_H, 61, 12 },
|
||||
[DEX_AREA_ROUTE_4] = { MARKER_SMALL_H, 77, 12 },
|
||||
[DEX_AREA_ROUTE_5] = { MARKER_CIRCULAR, 92, 18 },
|
||||
[DEX_AREA_ROUTE_6] = { MARKER_CIRCULAR, 92, 30 },
|
||||
[DEX_AREA_ROUTE_7] = { MARKER_CIRCULAR, 84, 24 },
|
||||
[DEX_AREA_ROUTE_8] = { MARKER_SMALL_H, 98, 24 },
|
||||
[DEX_AREA_ROUTE_9] = { MARKER_SMALL_H, 98, 12 },
|
||||
[DEX_AREA_ROUTE_10] = { MARKER_SMALL_V, 110, 12 },
|
||||
[DEX_AREA_ROUTE_11] = { MARKER_SMALL_H, 98, 36 },
|
||||
[DEX_AREA_ROUTE_12] = { MARKER_MED_V, 106, 25 },
|
||||
[DEX_AREA_ROUTE_13] = { MARKER_SMALL_H, 100, 46 },
|
||||
[DEX_AREA_ROUTE_14] = { MARKER_SMALL_V, 94, 45 },
|
||||
[DEX_AREA_ROUTE_15] = { MARKER_SMALL_H, 85, 52 },
|
||||
[DEX_AREA_ROUTE_16] = { MARKER_CIRCULAR, 68, 24 },
|
||||
[DEX_AREA_ROUTE_17] = { MARKER_MED_V, 62, 26 },
|
||||
[DEX_AREA_ROUTE_18] = { MARKER_SMALL_H, 64, 52 },
|
||||
[DEX_AREA_ROUTE_19] = { MARKER_CIRCULAR, 78, 60 },
|
||||
[DEX_AREA_ROUTE_20] = { MARKER_MED_H, 55, 58 },
|
||||
[DEX_AREA_ROUTE_21] = { MARKER_SMALL_V, 54, 50 },
|
||||
[DEX_AREA_ROUTE_22] = { MARKER_SMALL_H, 40, 28 },
|
||||
[DEX_AREA_ROUTE_23] = { MARKER_MED_V, 38, 4 },
|
||||
[DEX_AREA_ROUTE_24] = { MARKER_CIRCULAR, 92, 4 },
|
||||
[DEX_AREA_ROUTE_25] = { MARKER_MED_H, 90, 254 },
|
||||
[DEX_AREA_VIRIDIAN_FOREST] = { MARKER_CIRCULAR, 51, 20 },
|
||||
[DEX_AREA_DIGLETTS_CAVE] = { MARKER_SMALL_H, 61, 18 },
|
||||
[DEX_AREA_MT_MOON] = { MARKER_CIRCULAR, 72, 8 },
|
||||
[DEX_AREA_CERULEAN_CAVE] = { MARKER_CIRCULAR, 87, 8 },
|
||||
[DEX_AREA_ROCK_TUNNEL] = { MARKER_CIRCULAR, 112, 14 },
|
||||
[DEX_AREA_POWER_PLANT] = { MARKER_CIRCULAR, 113, 20 },
|
||||
[DEX_AREA_POKEMON_TOWER] = { MARKER_CIRCULAR, 113, 25 },
|
||||
[DEX_AREA_SAFARI_ZONE] = { MARKER_SMALL_H, 78, 44 },
|
||||
[DEX_AREA_SEAFOAM_ISLANDS] = { MARKER_CIRCULAR, 65, 60 },
|
||||
[DEX_AREA_POKEMON_MANSION] = { MARKER_CIRCULAR, 52, 62 },
|
||||
[DEX_AREA_VICTORY_ROAD] = { MARKER_CIRCULAR, 45, 7 },
|
||||
[DEX_AREA_ONE_ISLAND] = { MARKER_CIRCULAR, 10, 10 },
|
||||
[DEX_AREA_TWO_ISLAND] = { MARKER_CIRCULAR, 12, 35 },
|
||||
[DEX_AREA_THREE_ISLAND] = { MARKER_CIRCULAR, 14, 52 },
|
||||
[DEX_AREA_FOUR_ISLAND] = { MARKER_CIRCULAR, 12, 84 },
|
||||
[DEX_AREA_FIVE_ISLAND] = { MARKER_CIRCULAR, 45, 81 },
|
||||
[DEX_AREA_SIX_ISLAND] = { MARKER_CIRCULAR, 76, 84 },
|
||||
[DEX_AREA_SEVEN_ISLAND] = { MARKER_CIRCULAR, 104, 82 },
|
||||
[DEX_AREA_KINDLE_ROAD] = { MARKER_SMALL_V, 14, 2 },
|
||||
[DEX_AREA_TREASURE_BEACH] = { MARKER_CIRCULAR, 10, 15 },
|
||||
[DEX_AREA_CAPE_BRINK] = { MARKER_CIRCULAR, 12, 29 },
|
||||
[DEX_AREA_BOND_BRIDGE] = { MARKER_SMALL_H, 2, 52 },
|
||||
[DEX_AREA_THREE_ISLE_PATH] = { MARKER_SMALL_H, 12, 56 },
|
||||
[DEX_AREA_RESORT_GORGEOUS] = { MARKER_SMALL_H, 44, 74 },
|
||||
[DEX_AREA_WATER_LABYRINTH] = { MARKER_SMALL_H, 36, 78 },
|
||||
[DEX_AREA_FIVE_ISLE_MEADOW] = { MARKER_SMALL_V, 48, 80 },
|
||||
[DEX_AREA_MEMORIAL_PILLAR] = { MARKER_SMALL_V, 52, 86 },
|
||||
[DEX_AREA_OUTCAST_ISLAND] = { MARKER_CIRCULAR, 72, 74 },
|
||||
[DEX_AREA_GREEN_PATH] = { MARKER_SMALL_H, 72, 78 },
|
||||
[DEX_AREA_WATER_PATH] = { MARKER_SMALL_V, 81, 80 },
|
||||
[DEX_AREA_RUIN_VALLEY] = { MARKER_CIRCULAR, 76, 92 },
|
||||
[DEX_AREA_TRAINER_TOWER] = { MARKER_CIRCULAR, 104, 75 },
|
||||
[DEX_AREA_CANYON_ENTRANCE] = { MARKER_CIRCULAR, 104, 86 },
|
||||
[DEX_AREA_SEVAULT_CANYON] = { MARKER_SMALL_V, 108, 83 },
|
||||
[DEX_AREA_TANOBY_RUINS] = { MARKER_MED_H, 96, 90 },
|
||||
[DEX_AREA_MT_EMBER] = { MARKER_CIRCULAR, 14, 1 },
|
||||
[DEX_AREA_BERRY_FOREST] = { MARKER_CIRCULAR, 5, 52 },
|
||||
[DEX_AREA_ICEFALL_CAVE] = { MARKER_CIRCULAR, 13, 80 },
|
||||
[DEX_AREA_LOST_CAVE] = { MARKER_CIRCULAR, 54, 74 },
|
||||
[DEX_AREA_ALTERING_CAVE] = { MARKER_CIRCULAR, 69, 73 },
|
||||
[DEX_AREA_PATTERN_BUSH] = { MARKER_CIRCULAR, 76, 77 },
|
||||
[DEX_AREA_DOTTED_HOLE] = { MARKER_CIRCULAR, 73, 95 },
|
||||
[DEX_AREA_TANOBY_CHAMBER] = { MARKER_MED_H, 96, 90 },
|
||||
};
|
||||
|
||||
static void Task_ShowAreaMarkers(u8 taskId)
|
||||
{
|
||||
struct PAM_TaskData * data = (void *)gTasks[taskId].data;
|
||||
gSprites[data->spr_id].invisible = FALSE;
|
||||
gSprites[data->spriteId].invisible = FALSE;
|
||||
}
|
||||
|
||||
u8 Ctor_PokedexAreaMarkers(u16 species, u16 tilesTag, u8 palIdx, u8 y)
|
||||
u8 CreatePokedexAreaMarkers(u16 species, u16 tilesTag, u8 palIdx, u8 y)
|
||||
{
|
||||
struct SpriteTemplate spriteTemplate;
|
||||
struct CompressedSpriteSheet spriteSheet;
|
||||
@@ -165,34 +196,42 @@ u8 Ctor_PokedexAreaMarkers(u16 species, u16 tilesTag, u8 palIdx, u8 y)
|
||||
struct PAM_TaskData * data;
|
||||
struct Subsprite * subsprites;
|
||||
|
||||
// Load gfx
|
||||
spriteSheet.data = sMarkerTiles;
|
||||
spriteSheet.size = 0x4A0;
|
||||
spriteSheet.tag = tilesTag;
|
||||
LoadCompressedSpriteSheet(&spriteSheet);
|
||||
LoadPalette(sMarkerPal, 0x100 + 16 * palIdx, 0x20);
|
||||
|
||||
// Get marker subsprites
|
||||
taskId = CreateTask(Task_ShowAreaMarkers, 0);
|
||||
data = (void *)gTasks[taskId].data;
|
||||
data->unk_0C = 0;
|
||||
data->unused = 0;
|
||||
data->tilesTag = tilesTag;
|
||||
data->unk_10 = 0xFFFF;
|
||||
data->paletteTag = TAG_NONE;
|
||||
subsprites = Alloc(120 * sizeof(struct Subsprite));
|
||||
data->buffer = subsprites;
|
||||
data->subsprites.subsprites = subsprites;
|
||||
data->subsprites.subspriteCount = BuildPokedexAreaSubspriteBuffer(species, subsprites);
|
||||
data->subsprites.subspriteCount = GetSpeciesPokedexAreaMarkers(species, subsprites);
|
||||
|
||||
SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJWIN_ON);
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_BD);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(12, 8));
|
||||
SetGpuReg(REG_OFFSET_BLDY, 0);
|
||||
SetGpuReg(REG_OFFSET_WININ, 0x1F1F);
|
||||
SetGpuReg(REG_OFFSET_WINOUT, 0x2F3D);
|
||||
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ);
|
||||
SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG0 | WINOUT_WIN01_BG2 | WINOUT_WIN01_BG3 | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_CLR);
|
||||
|
||||
// Set marker subsprites on full sprite
|
||||
spriteTemplate = gDummySpriteTemplate;
|
||||
spriteTemplate.tileTag = tilesTag;
|
||||
data->spr_id = CreateSprite(&spriteTemplate, 104, y + 32, 0);
|
||||
SetSubspriteTables(&gSprites[data->spr_id], &data->subsprites);
|
||||
gSprites[data->spr_id].oam.objMode = ST_OAM_OBJ_WINDOW;
|
||||
gSprites[data->spr_id].oam.paletteNum = palIdx;
|
||||
gSprites[data->spr_id].subspriteTableNum = 0;
|
||||
gSprites[data->spr_id].invisible = TRUE;
|
||||
data->spriteId = CreateSprite(&spriteTemplate, 104, y + 32, 0);
|
||||
SetSubspriteTables(&gSprites[data->spriteId], &data->subsprites);
|
||||
gSprites[data->spriteId].oam.objMode = ST_OAM_OBJ_WINDOW;
|
||||
gSprites[data->spriteId].oam.paletteNum = palIdx;
|
||||
gSprites[data->spriteId].subspriteTableNum = 0;
|
||||
gSprites[data->spriteId].invisible = TRUE;
|
||||
|
||||
// Show markers
|
||||
HideBg(1);
|
||||
SetBgAttribute(1, BG_ATTR_CHARBASEINDEX, 0);
|
||||
FillBgTilemapBufferRect_Palette0(1, 0x00F, 0, 0, 30, 20);
|
||||
@@ -201,17 +240,17 @@ u8 Ctor_PokedexAreaMarkers(u16 species, u16 tilesTag, u8 palIdx, u8 y)
|
||||
return taskId;
|
||||
}
|
||||
|
||||
void Dtor_PokedexAreaMarkers(u8 taskId)
|
||||
void DestroyPokedexAreaMarkers(u8 taskId)
|
||||
{
|
||||
struct PAM_TaskData * data = (void *)gTasks[taskId].data;
|
||||
FreeSpriteTilesByTag(data->tilesTag);
|
||||
DestroySprite(&gSprites[data->spr_id]);
|
||||
DestroySprite(&gSprites[data->spriteId]);
|
||||
Free(data->buffer);
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, 0);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
|
||||
SetGpuReg(REG_OFFSET_BLDY, 0);
|
||||
SetGpuReg(REG_OFFSET_WININ, 0x1F1F);
|
||||
SetGpuReg(REG_OFFSET_WINOUT, 0x1F1F);
|
||||
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ);
|
||||
SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ);
|
||||
ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJWIN_ON);
|
||||
HideBg(1);
|
||||
SetBgAttribute(1, BG_ATTR_CHARBASEINDEX, 2);
|
||||
@@ -221,14 +260,14 @@ void Dtor_PokedexAreaMarkers(u8 taskId)
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
|
||||
void SetAreaSubsprite(s32 i, s32 whichArea, struct Subsprite * subsprites)
|
||||
void GetAreaMarkerSubsprite(s32 i, s32 dexArea, struct Subsprite * subsprites)
|
||||
{
|
||||
subsprites[i] = *sSubsprites[sSubspriteLookupTable[whichArea][0]];
|
||||
subsprites[i].x = sSubspriteLookupTable[whichArea][1];
|
||||
subsprites[i].y = sSubspriteLookupTable[whichArea][2];
|
||||
subsprites[i] = *sSubsprites[sAreaMarkers[dexArea][0]];
|
||||
subsprites[i].x = sAreaMarkers[dexArea][1];
|
||||
subsprites[i].y = sAreaMarkers[dexArea][2];
|
||||
}
|
||||
|
||||
u8 PokedexAreaMarkers_Any(u8 taskId)
|
||||
u8 GetNumPokedexAreaMarkers(u8 taskId)
|
||||
{
|
||||
struct PAM_TaskData * data = (void *)gTasks[taskId].data;
|
||||
return data->subsprites.subspriteCount;
|
||||
|
||||
Reference in New Issue
Block a user