Address review comments

This commit is contained in:
Gudf 2025-10-12 00:24:22 +02:00
parent c53e8303a8
commit c0b7e25906
23 changed files with 288 additions and 307 deletions

View File

@ -96,6 +96,7 @@ metang_generators = {
'string_padding_mode': { 'type': 'enum', 'tag': 'PaddingMode' },
'text_banks': { 'type': 'enum', 'tag': 'TextBank' },
'time_of_day': { 'type': 'enum', 'tag': 'TimeOfDay' },
'town_map_description_flag_types': { 'type': 'enum', 'tag': 'TownMapDescriptionFlagType' },
'trainers': { 'type': 'enum', 'tag': 'TrainerID' },
'trainer_classes': { 'type': 'enum', 'tag': 'TrainerClass' },
'trainer_message_types': { 'type': 'enum', 'tag': 'TrainerMessageType' },

View File

@ -0,0 +1,3 @@
TOWN_MAP_DESC_FLAG_NONE
TOWN_MAP_DESC_FLAG_FIRST_ARRIVAL
TOWN_MAP_DESC_FLAG_GENERAL

View File

@ -1,6 +0,0 @@
#ifndef POKEPLATINUM_APPLICATIONS_TOWN_MAP_APP_DATA_DECL_H
#define POKEPLATINUM_APPLICATIONS_TOWN_MAP_APP_DATA_DECL_H
typedef struct TownMapAppData TownMapAppData;
#endif // POKEPLATINUM_APPLICATIONS_TOWN_MAP_APP_DATA_DECL_H

View File

@ -1,18 +0,0 @@
#ifndef POKEPLATINUM_APPLICATIONS_TOWN_MAP_APPLICATION_H
#define POKEPLATINUM_APPLICATIONS_TOWN_MAP_APPLICATION_H
#include "overlay_manager.h"
enum TownMapMode {
TOWN_MAP_MODE_ITEM = 0,
TOWN_MAP_MODE_FLY,
TOWN_MAP_MODE_WALL_MAP,
NUM_TOWN_MAP_MODES,
};
BOOL TownMap_Init(ApplicationManager *appMan, int *unused);
BOOL TownMap_Main(ApplicationManager *appMan, int *unused);
BOOL TownMap_Exit(ApplicationManager *appMan, int *unused);
#endif // POKEPLATINUM_APPLICATIONS_TOWN_MAP_APPLICATION_H

View File

@ -1,48 +0,0 @@
#ifndef POKEPLATINUM_APPLICATIONS_TOWN_MAP_CONTEXT_H
#define POKEPLATINUM_APPLICATIONS_TOWN_MAP_CONTEXT_H
#include "generated/map_headers.h"
#include "applications/town_map/application.h"
#include "field/field_system_decl.h"
#include "overworld_map_history.h"
#define NUM_FLY_LOCATIONS 20
#define TOWN_MAP_HISTORY_LENGTH (OVERWORLD_MAP_HISTORY_LENGTH - 1) // Skip the last entry
typedef struct TownMapLocationHistoryEntry {
int x;
int z;
u16 faceDirection;
u16 isSet;
} TownMapLocationHistoryEntry;
typedef struct TownMapLocationDescCheckResults {
u8 areaDescHasCheck : 2;
u8 areaDescCheckResult : 2;
u8 landmarkDescHasCheck : 2;
u8 landmarkCheckResult : 2;
} TownMapLocationDescCheckResults;
typedef struct TownMapContext {
int playerX;
int playerZ;
u8 padding_08[4];
int trainerGender;
BOOL flyLocationSelected;
int flyLocationX;
int flyLocationZ;
enum MapHeader flyLocationMapHeader;
TownMapLocationHistoryEntry locationHistory[TOWN_MAP_HISTORY_LENGTH];
TownMapLocationDescCheckResults descCheckResults[200];
u8 unlockedFlyLocations[NUM_FLY_LOCATIONS + 1];
u8 townMapMode;
u8 numDescChecks;
u8 padding_13B;
u16 unlockedHiddenLocations;
} TownMapContext;
void TownMapContext_Init(FieldSystem *fieldSystem, TownMapContext *townMapCtx, enum TownMapMode townMapMode);
#endif // POKEPLATINUM_APPLICATIONS_TOWN_MAP_CONTEXT_H

View File

@ -0,0 +1,180 @@
#ifndef POKEPLATINUM_APPLICATIONS_TOWN_MAP_DEFS_H
#define POKEPLATINUM_APPLICATIONS_TOWN_MAP_DEFS_H
#include "applications/town_map/main.h"
#include "bg_window.h"
#include "map_matrix.h"
#include "message.h"
#include "sprite.h"
#include "sprite_system.h"
#include "strbuf.h"
#include "sys_task_manager.h"
#define TOWN_MAP_GRID_SPACING 7
#define TOWN_MAP_GRID_X_OFFSET (+25)
#define TOWN_MAP_GRID_Y_OFFSET (-34)
#define TOWN_MAP_GRID_X(x) (TOWN_MAP_GRID_SPACING * (x) + TOWN_MAP_GRID_X_OFFSET)
#define TOWN_MAP_GRID_Y(y) (TOWN_MAP_GRID_SPACING * (y) + TOWN_MAP_GRID_Y_OFFSET)
enum TownMapWindow {
TOWN_MAP_WINDOW_LOCATION_NAME,
TOWN_MAP_WINDOW_SIGNPOST_NAME_1,
TOWN_MAP_WINDOW_SIGNPOST_NAME_2,
TOWN_MAP_WINDOW_LOCATION_DESCRIPTION,
TOWN_MAP_WINDOW_BOTTOM_SCREEN_HEADER,
NUM_TOWN_MAP_WINDOWS,
};
typedef struct TownMapBlock {
u16 x;
u16 z;
u16 signpostType;
u16 signpostNARCMemberIdx;
u16 areaDescString;
u16 landmarkDescString;
u16 areaDescX;
u16 areaDescY;
u16 landmarkDescX;
u16 landmarkDescY;
u16 hiddenLocationFlags;
u16 index;
} TownMapBlock;
typedef struct TownMapBlockList {
int count;
TownMapBlock *entries;
} TownMapBlockList;
typedef struct TownMapFlyLocationDescriptor {
int mapHeader;
int unusedUnlockFirstArrivalFlag;
u8 blockShape;
u8 palette;
u16 specialFlyLocationID;
u32 spriteX;
u32 spriteY;
} TownMapFlyLocationDescriptor;
typedef struct TownMapAppFlyLocation {
TownMapFlyLocationDescriptor descriptor;
BOOL isUnlocked;
Sprite *sprite;
} TownMapAppFlyLocation;
typedef struct TownMapAppFlyLocationsManager {
u16 count;
u8 blinkTimer;
u8 blinkState;
TownMapAppFlyLocation *hovered;
TownMapAppFlyLocation *flyLocationsList;
} TownMapAppFlyLocationsManager;
typedef struct TownMapLocationHistoryEntryWithSprite {
int x;
int y;
u16 faceDirection;
u8 index;
u8 isSet;
Sprite *sprite;
} TownMapLocationHistoryEntryWithSprite;
typedef struct TownMapLocationHistory {
int entryCount;
SysTask *sysTask;
u16 frameCount;
u8 currentShownIdx;
u8 previousShownIdx;
TownMapLocationHistoryEntryWithSprite entries[TOWN_MAP_HISTORY_LENGTH];
} TownMapLocationHistory;
typedef struct TownMapScreenScroll {
int x;
int y;
int unused_08;
int unused_0C;
} TownMapScreenScroll;
typedef struct TownMapGraphicsManager {
int graphicsLoadStage;
int taskState;
int taskFrameCount;
int unused_0C;
u8 showingZoomedInMap;
u8 queuedMovement;
u8 zommedInMapMvtDone;
u8 zoomedMapMvtStage;
u8 zoomedInMapTransitionStage;
u8 unk_15_0 : 4;
u8 signpostType : 4;
u16 zoomedInMapMvtFrame;
int cursorX;
int cursorZ;
int hoveredLocationMapHeader;
int prevLocationMapHeader;
Window windows[NUM_TOWN_MAP_WINDOWS];
Window *signpostWindow;
TownMapScreenScroll unused_7C;
TownMapScreenScroll zoomedInMapCoords;
TownMapAppFlyLocationsManager *flyLocations;
TownMapBlock *hoveredBlock;
TownMapLocationHistory locationHistory;
Sprite *zoomBtnShockwave;
Sprite *cursorSprite;
Sprite *playerSprite;
SysTask *sysTask;
} TownMapGraphicsManager;
typedef struct TownMapAppData TownMapAppData;
typedef BOOL (*TownMapAppFunc)(TownMapAppData *);
struct TownMapAppData {
u8 mode;
u8 padding_01;
u16 unlockedHiddenLocations;
enum HeapID heapID;
int mainAppState;
int appResInitState;
int unused_10;
int dummy_14;
int initialCursorX;
int initialCursorZ;
int playerX;
int playerZ;
BgConfig *bgConfig;
TownMapContext *context;
MainMapMatrixData *mainMapMatrixData;
TownMapGraphicsManager *graphicsMan;
TownMapAppFunc inputHandler;
TownMapAppFlyLocationsManager *unused_3C;
TownMapBlockList *mapBlockList;
TownMapLocationHistoryEntry unused_44[5];
MessageLoader *locationNames;
MessageLoader *townMapStrings;
Strbuf *hoveredMapName;
BOOL locationChanged;
enum MapHeader hoveredMapHeader;
TownMapBlock *hoveredMapBlock;
void *topScreenMapFile;
void *topScreenBGFile;
void *hiddenLocationsBGFile;
void *zoomedInBGFile;
void *zoomedInMapFile;
void *zoomButtonStatesFile;
void *zoomButtonScreenFile;
void *hiddenLocationsMapFile;
NNSG2dScreenData *fullScreenMap;
NNSG2dScreenData *fullScreenBG;
NNSG2dScreenData *hiddenLocationsFullScreenMapGraphics;
NNSG2dScreenData *zoomedInBG;
NNSG2dScreenData *zoomedInMap;
NNSG2dScreenData *zoomButtonStates;
NNSG2dScreenData *zoomButtonScreen;
NNSG2dScreenData *hiddenLocationsZoomedInMapGraphics;
SpriteSystem *spriteSystem;
SpriteManager *spriteMan;
ManagedSprite *unused_E0;
};
#endif // POKEPLATINUM_APPLICATIONS_TOWN_MAP_DEFS_H

View File

@ -3,34 +3,11 @@
#include "generated/map_headers.h"
#include "applications/town_map/application.h"
#include "applications/town_map/defs.h"
#include "applications/town_map/main.h"
#include "sprite_system.h"
typedef struct TownMapFlyLocationDescriptor {
int mapHeader;
int unusedUnlockFirstArrivalFlag;
u8 blockShape;
u8 palette;
u16 specialFlyLocationID;
u32 spriteX;
u32 spriteY;
} TownMapFlyLocationDescriptor;
typedef struct TownMapAppFlyLocation {
TownMapFlyLocationDescriptor descriptor;
BOOL isUnlocked;
Sprite *sprite;
} TownMapAppFlyLocation;
typedef struct TownMapAppFlyLocationsManager {
u16 count;
u8 blinkTimer;
u8 blinkState;
TownMapAppFlyLocation *hovered;
TownMapAppFlyLocation *flyLocationsList;
} TownMapAppFlyLocationsManager;
TownMapAppFlyLocationsManager *TownMap_LoadFlyLocations(SpriteSystem *spriteSystem, SpriteManager *spriteMan, u8 *unlocked, short count, enum HeapID heapID);
void TownMap_FreeFlyLocations(TownMapAppFlyLocationsManager *flyLocations);
TownMapAppFlyLocation *TownMap_GetFlyLocationAtPos(TownMapAppFlyLocationsManager *flyLocations, enum MapHeader mapHeader, int x, int z);

View File

@ -1,84 +1,7 @@
#ifndef POKEPLATINUM_APPLICATIONS_TOWN_MAP_GRAPHICS_H
#define POKEPLATINUM_APPLICATIONS_TOWN_MAP_GRAPHICS_H
#include "applications/town_map/app_data_decl.h"
#include "applications/town_map/context.h"
#include "applications/town_map/fly_locations.h"
#include "applications/town_map/map_blocks.h"
#include "bg_window.h"
#include "sprite.h"
#include "sys_task_manager.h"
#define TOWN_MAP_GRID_SPACING 7
#define TOWN_MAP_GRID_X_OFFSET (+25)
#define TOWN_MAP_GRID_Y_OFFSET (-34)
#define TOWN_MAP_GRID_X(x) (TOWN_MAP_GRID_SPACING * (x) + TOWN_MAP_GRID_X_OFFSET)
#define TOWN_MAP_GRID_Y(y) (TOWN_MAP_GRID_SPACING * (y) + TOWN_MAP_GRID_Y_OFFSET)
enum TownMapWindow {
TOWN_MAP_WINDOW_LOCATION_NAME,
TOWN_MAP_WINDOW_SIGNPOST_LOCATION_NAME_1,
TOWN_MAP_WINDOW_SIGNPOST_LOCATION_NAME_2,
TOWN_MAP_WINDOW_LOCATION_DESCRIPTION,
TOWN_MAP_WINDOW_BOTTOM_SCREEN_HEADER,
NUM_TOWN_MAP_WINDOWS,
};
typedef struct TownMapLocationHistoryEntryWithSprite {
int x;
int y;
u16 faceDirection;
u8 index;
u8 isSet;
Sprite *sprite;
} TownMapLocationHistoryEntryWithSprite;
typedef struct TownMapLocationHistory {
int entryCount;
SysTask *sysTask;
u16 frameCount;
u8 currentShownIdx;
u8 previousShownIdx;
TownMapLocationHistoryEntryWithSprite entries[TOWN_MAP_HISTORY_LENGTH];
} TownMapLocationHistory;
typedef struct TownMapScreenScroll {
int x;
int y;
int unused_08;
int unused_0C;
} TownMapScreenScroll;
typedef struct TownMapGraphicsManager {
int graphicsLoadStage;
int taskState;
int taskFrameCount;
int unused_0C;
u8 showingZoomedInMap;
u8 queuedMovement;
u8 zommedInMapMvtDone;
u8 zoomedMapMvtStage;
u8 zoomedInMapTransitionStage;
u8 unk_15_0 : 4;
u8 signpostType : 4;
u16 zoomedInMapMvtFrame;
int cursorX;
int cursorZ;
int hoveredLocationMapHeader;
int prevLocationMapHeader;
Window windows[NUM_TOWN_MAP_WINDOWS];
Window *signpostWindow;
TownMapScreenScroll unused_7C;
TownMapScreenScroll zoomedInMapCoords;
TownMapAppFlyLocationsManager *flyLocations;
TownMapBlock *hoveredBlock;
TownMapLocationHistory locationHistory;
Sprite *zoomBtnShockwave;
Sprite *cursorSprite;
Sprite *playerSprite;
SysTask *sysTask;
} TownMapGraphicsManager;
#include "applications/town_map/defs.h"
BOOL TownMap_CreateGraphicsMan(TownMapAppData *appData);
BOOL TownMap_LoadGraphics(TownMapAppData *appData);

View File

@ -1,71 +1,60 @@
#ifndef POKEPLATINUM_APPLICATIONS_TOWN_MAP_MAIN_H
#define POKEPLATINUM_APPLICATIONS_TOWN_MAP_MAIN_H
#include <nnsys.h>
#include "generated/map_headers.h"
#include "applications/town_map/app_data_decl.h"
#include "applications/town_map/context.h"
#include "applications/town_map/fly_locations.h"
#include "applications/town_map/graphics.h"
#include "applications/town_map/map_blocks.h"
#include "field/field_system_decl.h"
#include "bg_window.h"
#include "map_matrix.h"
#include "message.h"
#include "sprite.h"
#include "sprite_system.h"
#include "strbuf.h"
#include "overlay_manager.h"
#include "overworld_map_history.h"
typedef BOOL (*TownMapAppFunc)(TownMapAppData *);
#define NUM_FLY_LOCATIONS 20
#define TOWN_MAP_HISTORY_LENGTH (OVERWORLD_MAP_HISTORY_LENGTH - 1) // Skip the last entry
struct TownMapAppData {
u8 mode;
u8 padding_01;
u16 unlockedHiddenLocations;
enum HeapID heapID;
int mainAppState;
int appResInitState;
int unused_10;
int dummy_14;
int initialCursorX;
int initialCursorZ;
int playerX;
int playerZ;
BgConfig *bgConfig;
TownMapContext *context;
MainMapMatrixData *mainMapMatrixData;
TownMapGraphicsManager *graphicsMan;
TownMapAppFunc inputHandler;
TownMapAppFlyLocationsManager *unused_3C;
TownMapBlockList *mapBlockList;
TownMapLocationHistoryEntry unused_44[5];
MessageLoader *locationNames;
MessageLoader *townMapStrings;
Strbuf *hoveredMapName;
BOOL locationChanged;
enum MapHeader hoveredMapHeader;
TownMapBlock *hoveredMapBlock;
void *topScreenMapFile;
void *topScreenBGFile;
void *hiddenLocationsBGFile;
void *zoomedInBGFile;
void *zoomedInMapFile;
void *zoomButtonStatesFile;
void *zoomButtonScreenFile;
void *hiddenLocationsMapFile;
NNSG2dScreenData *fullScreenMap;
NNSG2dScreenData *fullScreenBG;
NNSG2dScreenData *hiddenLocationsFullScreenMapGraphics;
NNSG2dScreenData *zoomedInBG;
NNSG2dScreenData *zoomedInMap;
NNSG2dScreenData *zoomButtonStates;
NNSG2dScreenData *zoomButtonScreen;
NNSG2dScreenData *hiddenLocationsZoomedInMapGraphics;
SpriteSystem *spriteSystem;
SpriteManager *spriteMan;
ManagedSprite *unused_E0;
enum TownMapMode {
TOWN_MAP_MODE_ITEM = 0,
TOWN_MAP_MODE_FLY,
TOWN_MAP_MODE_WALL_MAP,
NUM_TOWN_MAP_MODES,
};
typedef struct TownMapLocationHistoryEntry {
int x;
int z;
u16 faceDirection;
u16 isSet;
} TownMapLocationHistoryEntry;
typedef struct TownMapLocationDescCheckResults {
u8 areaDescHasCheck : 2;
u8 areaDescCheckResult : 2;
u8 landmarkDescHasCheck : 2;
u8 landmarkCheckResult : 2;
} TownMapLocationDescCheckResults;
typedef struct TownMapContext {
int playerX;
int playerZ;
u8 padding_08[4];
int trainerGender;
BOOL flyLocationSelected;
int flyLocationX;
int flyLocationZ;
enum MapHeader flyLocationMapHeader;
TownMapLocationHistoryEntry locationHistory[TOWN_MAP_HISTORY_LENGTH];
TownMapLocationDescCheckResults descCheckResults[200];
u8 unlockedFlyLocations[NUM_FLY_LOCATIONS + 1];
u8 townMapMode;
u8 numDescChecks;
u8 padding_13B;
u16 unlockedHiddenLocations;
} TownMapContext;
void TownMapContext_Init(FieldSystem *fieldSystem, TownMapContext *townMapCtx, enum TownMapMode townMapMode);
BOOL TownMap_Init(ApplicationManager *appMan, int *unused);
BOOL TownMap_Main(ApplicationManager *appMan, int *unused);
BOOL TownMap_Exit(ApplicationManager *appMan, int *unused);
#endif // POKEPLATINUM_APPLICATIONS_TOWN_MAP_MAIN_H

View File

@ -3,25 +3,7 @@
#include "constants/heap.h"
typedef struct TownMapBlock {
u16 x;
u16 z;
u16 signpostType;
u16 signpostNARCMemberIdx;
u16 areaDescString;
u16 landmarkDescString;
u16 areaDescX;
u16 areaDescY;
u16 landmarkDescX;
u16 landmarkDescY;
u16 hiddenLocationFlags;
u16 index;
} TownMapBlock;
typedef struct TownMapBlockList {
int count;
TownMapBlock *entries;
} TownMapBlockList;
#include "applications/town_map/defs.h"
TownMapBlockList *TownMap_ReadBlocks(const char *path, enum HeapID heapID);
void TownMap_FreeBlocks(TownMapBlockList *blockList);

View File

@ -1,7 +1,7 @@
#ifndef POKEPLATINUM_APPLICATIONS_TOWN_MAP_SPRITES_H
#define POKEPLATINUM_APPLICATIONS_TOWN_MAP_SPRITES_H
#include "applications/town_map/app_data_decl.h"
#include "applications/town_map/defs.h"
void TownMap_InitSpriteSystem(TownMapAppData *appData);
void TownMap_FreeSpriteSystem(TownMapAppData *appData);

View File

@ -1,11 +0,0 @@
#ifndef POKEPLATINUM_UNION_0206B878_H
#define POKEPLATINUM_UNION_0206B878_H
typedef struct TownMapBlockDescriptionCheckResults {
u8 areaDescHasCheck : 2;
u8 areaDescCheckResult : 2;
u8 landmarkDescHasCheck : 2;
u8 landmarkCheckResult : 2;
} TownMapLocationDescCheckResults;
#endif // POKEPLATINUM_UNION_0206B878_H

View File

@ -18,7 +18,7 @@
#include "applications/party_menu/defs.h"
#include "applications/pc_boxes/pokemon_storage_session.h"
#include "applications/pokemon_summary_screen/main.h"
#include "applications/town_map/context.h"
#include "applications/town_map/main.h"
#include "field/field_system_decl.h"
#include "overlay090/struct_ov90_021D0D80.h"

View File

@ -1,13 +1,12 @@
#include "applications/town_map/context.h"
#include <nitro.h>
#include <string.h>
#include "generated/first_arrival_to_zones.h"
#include "generated/town_map_description_flag_types.h"
#include "struct_decls/struct_0203A790_decl.h"
#include "applications/town_map/application.h"
#include "applications/town_map/main.h"
#include "field/field_system.h"
#include "field_overworld_state.h"
@ -32,19 +31,13 @@ typedef struct TownMapDescriptionFlags {
u8 landmarkDescriptionFlag;
} TownMapDescriptionFlags;
typedef struct TownMapDistWorldMatrixOffset {
typedef struct TownMapDistWorldMapOffset {
int mapHeader;
int x;
int y;
int z;
} TownMapDistWorldMapOffset;
enum TownMapDescriptionFlagType {
TOWN_MAP_DESC_FLAG_NONE = 0,
TOWN_MAP_DESC_FLAG_FIRST_ARRIVAL,
TOWN_MAP_DESC_FLAG_GENERAL,
};
static void PerformTownMapDescriptionsChecks(FieldSystem *fieldSystem, TownMapContext *ctx, const char *flagsFilePath);
static const TownMapDistWorldMapOffset sDistWorldMapOffsets[10] = {
@ -208,6 +201,6 @@ static void PerformTownMapDescriptionsChecks(FieldSystem *fieldSystem, TownMapCo
}
}
(void)FS_CloseFile(&flagsFile);
FS_CloseFile(&flagsFile);
Heap_Free(descFlags);
}

View File

@ -6,7 +6,7 @@
#include "generated/first_arrival_to_zones.h"
#include "generated/map_headers.h"
#include "applications/town_map/context.h"
#include "applications/town_map/defs.h"
#include "applications/town_map/main.h"
#include "heap.h"

View File

@ -8,8 +8,7 @@
#include "generated/map_headers.h"
#include "generated/signpost_types.h"
#include "applications/town_map/application.h"
#include "applications/town_map/context.h"
#include "applications/town_map/defs.h"
#include "applications/town_map/fly_locations.h"
#include "applications/town_map/main.h"
#include "applications/town_map/map_blocks.h"
@ -37,13 +36,33 @@
#define TOWN_MAP_DOWN (1 << 2)
#define TOWN_MAP_UP (1 << 3)
typedef struct {
#define BLOCK_DESCRIPTION_HEIGHT (TEXT_LINES_TILES(3))
#define LOCATION_NAME_WINDOW_WIDTH 29
#define LOCATION_NAME_WINDOW_HEIGHT 3
#define SIGNPOST_NAME_1_WINDOW_WIDTH 21
#define SIGNPOST_NAME_1_WINDOW_HEIGHT 4
#define SIGNPOST_NAME_2_WINDOW_WIDTH 28
#define SIGNPOST_NAME_2_WINDOW_HEIGHT 4
#define LOCATION_DESC_WINDOW_WIDTH 28
#define LOCATION_DESC_WINDOW_HEIGHT (2 * BLOCK_DESCRIPTION_HEIGHT + TEXT_LINES_TILES(1))
#define BOTTOM_SCREEN_HEADER_WINDOW_WIDTH 10
#define BOTTOM_SCREEN_HEADER_WINDOW_HEIGHT (TEXT_LINES_TILES(1))
#define BASE_TILE_LOCATION_NAME (1023 - LOCATION_NAME_WINDOW_WIDTH * LOCATION_NAME_WINDOW_HEIGHT)
#define BASE_TILE_SIGNPOST_NAME_1 (1023 - SIGNPOST_NAME_1_WINDOW_WIDTH * SIGNPOST_NAME_1_WINDOW_HEIGHT)
#define BASE_TILE_SIGNPOST_NAME_2 (BASE_TILE_SIGNPOST_NAME_1 - SIGNPOST_NAME_2_WINDOW_WIDTH * SIGNPOST_NAME_2_WINDOW_HEIGHT)
#define BASE_TILE_LOCATION_DESCRIPTION (BASE_TILE_SIGNPOST_NAME_2 - LOCATION_DESC_WINDOW_WIDTH * LOCATION_DESC_WINDOW_HEIGHT)
#define BASE_TILE_BOTTOM_SCREEN_HEADER (BASE_TILE_LOCATION_DESCRIPTION - BOTTOM_SCREEN_HEADER_WINDOW_WIDTH * BOTTOM_SCREEN_HEADER_WINDOW_HEIGHT)
#define BASE_TILE_SIGNPOST_GRAPHIC (BASE_TILE_BOTTOM_SCREEN_HEADER - 100)
typedef struct TownMapCoordsToHeader {
u16 x;
u16 z;
enum MapHeader header;
} TownMapCoordsToHeader;
typedef struct {
typedef struct TilemapRectCopyParams {
u8 srcX;
u8 srcY;
u8 destX;
@ -283,19 +302,19 @@ BOOL TownMap_UpdateDisplayedLocationInfo(TownMapAppData *appData)
PrintLocationDescription(appData, &(graphicsMan->windows[TOWN_MAP_WINDOW_LOCATION_DESCRIPTION]), mapBlock);
Strbuf_Clear(appData->hoveredMapName);
LoadMapName(appData, header, graphicsMan->cursorX, graphicsMan->cursorZ);
LoadSignpostContentGraphics(appData->bgConfig, BG_LAYER_SUB_0, (((((1023 - (21 * 4)) - (28 * 4)) - (28 * 14)) - (10 * 2)) - 100), (15 - 1), mapBlock->signpostType, mapBlock->signpostNARCMemberIdx, appData->heapID);
LoadSignpostContentGraphics(appData->bgConfig, BG_LAYER_SUB_0, BASE_TILE_SIGNPOST_GRAPHIC, PLTT_14, mapBlock->signpostType, mapBlock->signpostNARCMemberIdx, appData->heapID);
Window *signpostWindow;
if (mapBlock->signpostType == SIGNPOST_TYPE_MAP || mapBlock->signpostType == SIGNPOST_TYPE_ARROW) {
signpostWindow = &graphicsMan->windows[TOWN_MAP_WINDOW_SIGNPOST_LOCATION_NAME_1];
signpostWindow = &graphicsMan->windows[TOWN_MAP_WINDOW_SIGNPOST_NAME_1];
} else {
signpostWindow = &graphicsMan->windows[TOWN_MAP_WINDOW_SIGNPOST_LOCATION_NAME_2];
signpostWindow = &graphicsMan->windows[TOWN_MAP_WINDOW_SIGNPOST_NAME_2];
}
graphicsMan->signpostWindow = signpostWindow;
graphicsMan->signpostType = mapBlock->signpostType;
Window_DrawSignpost(signpostWindow, 1, (((((1023 - (21 * 4)) - (28 * 4)) - (28 * 14)) - (10 * 2)) - 100), (15 - 1), mapBlock->signpostType);
Window_DrawSignpost(signpostWindow, 1, BASE_TILE_SIGNPOST_GRAPHIC, PLTT_14, mapBlock->signpostType);
Window_FillTilemap(signpostWindow, 15);
Text_AddPrinterWithParams(signpostWindow, FONT_MESSAGE, appData->hoveredMapName, 0, 0, TEXT_SPEED_NO_TRANSFER, NULL);
Window_CopyToVRAM(signpostWindow);
@ -627,19 +646,19 @@ static void MakeAppWindows(TownMapAppData *appData)
{
TownMapGraphicsManager *graphicsMan = appData->graphicsMan;
Window_Add(appData->bgConfig, &graphicsMan->windows[TOWN_MAP_WINDOW_LOCATION_NAME], BG_LAYER_MAIN_1, 3, 21, 29, 3, PLTT_15, 1023 - 29 * 3);
Window_Add(appData->bgConfig, &graphicsMan->windows[TOWN_MAP_WINDOW_SIGNPOST_LOCATION_NAME_1], BG_LAYER_SUB_0, 9, 3, 21, 4, PLTT_14, (1023 - (21 * 4)));
Window_Add(appData->bgConfig, &graphicsMan->windows[TOWN_MAP_WINDOW_SIGNPOST_LOCATION_NAME_2], BG_LAYER_SUB_0, 2, 3, 28, 4, PLTT_14, ((1023 - (21 * 4)) - (28 * 4)));
Window_Add(appData->bgConfig, &graphicsMan->windows[TOWN_MAP_WINDOW_LOCATION_DESCRIPTION], BG_LAYER_SUB_0, 1, 8, 28, 14, PLTT_14, (((1023 - (21 * 4)) - (28 * 4)) - (28 * 14)));
Window_Add(appData->bgConfig, &graphicsMan->windows[TOWN_MAP_WINDOW_BOTTOM_SCREEN_HEADER], BG_LAYER_SUB_0, 11, 0, 10, 2, PLTT_15, ((((1023 - (21 * 4)) - (28 * 4)) - (28 * 14)) - (10 * 2)));
Window_Add(appData->bgConfig, &graphicsMan->windows[TOWN_MAP_WINDOW_LOCATION_NAME], BG_LAYER_MAIN_1, 3, 21, LOCATION_NAME_WINDOW_WIDTH, LOCATION_NAME_WINDOW_HEIGHT, PLTT_15, BASE_TILE_LOCATION_NAME);
Window_Add(appData->bgConfig, &graphicsMan->windows[TOWN_MAP_WINDOW_SIGNPOST_NAME_1], BG_LAYER_SUB_0, 9, 3, SIGNPOST_NAME_1_WINDOW_WIDTH, SIGNPOST_NAME_1_WINDOW_HEIGHT, PLTT_14, BASE_TILE_SIGNPOST_NAME_1);
Window_Add(appData->bgConfig, &graphicsMan->windows[TOWN_MAP_WINDOW_SIGNPOST_NAME_2], BG_LAYER_SUB_0, 2, 3, SIGNPOST_NAME_2_WINDOW_WIDTH, SIGNPOST_NAME_2_WINDOW_HEIGHT, PLTT_14, BASE_TILE_SIGNPOST_NAME_2);
Window_Add(appData->bgConfig, &graphicsMan->windows[TOWN_MAP_WINDOW_LOCATION_DESCRIPTION], BG_LAYER_SUB_0, 1, 8, LOCATION_DESC_WINDOW_WIDTH, LOCATION_DESC_WINDOW_HEIGHT, PLTT_14, BASE_TILE_LOCATION_DESCRIPTION);
Window_Add(appData->bgConfig, &graphicsMan->windows[TOWN_MAP_WINDOW_BOTTOM_SCREEN_HEADER], BG_LAYER_SUB_0, 11, 0, BOTTOM_SCREEN_HEADER_WINDOW_WIDTH, BOTTOM_SCREEN_HEADER_WINDOW_HEIGHT, PLTT_15, BASE_TILE_BOTTOM_SCREEN_HEADER);
Window_FillTilemap(&(graphicsMan->windows[TOWN_MAP_WINDOW_LOCATION_NAME]), 0);
Window_FillTilemap(&(graphicsMan->windows[TOWN_MAP_WINDOW_SIGNPOST_LOCATION_NAME_1]), 0);
Window_FillTilemap(&(graphicsMan->windows[TOWN_MAP_WINDOW_SIGNPOST_LOCATION_NAME_2]), 0);
Window_FillTilemap(&(graphicsMan->windows[TOWN_MAP_WINDOW_SIGNPOST_NAME_1]), 0);
Window_FillTilemap(&(graphicsMan->windows[TOWN_MAP_WINDOW_SIGNPOST_NAME_2]), 0);
Window_FillTilemap(&(graphicsMan->windows[TOWN_MAP_WINDOW_LOCATION_DESCRIPTION]), 0);
Window_FillTilemap(&(graphicsMan->windows[TOWN_MAP_WINDOW_BOTTOM_SCREEN_HEADER]), 0);
Window_CopyToVRAM(&graphicsMan->windows[TOWN_MAP_WINDOW_LOCATION_NAME]);
Window_ClearAndCopyToVRAM(&graphicsMan->windows[TOWN_MAP_WINDOW_SIGNPOST_LOCATION_NAME_1]);
Window_ClearAndCopyToVRAM(&graphicsMan->windows[TOWN_MAP_WINDOW_SIGNPOST_LOCATION_NAME_2]);
Window_ClearAndCopyToVRAM(&graphicsMan->windows[TOWN_MAP_WINDOW_SIGNPOST_NAME_1]);
Window_ClearAndCopyToVRAM(&graphicsMan->windows[TOWN_MAP_WINDOW_SIGNPOST_NAME_2]);
Window_ClearAndCopyToVRAM(&graphicsMan->windows[TOWN_MAP_WINDOW_LOCATION_DESCRIPTION]);
Window_ClearAndCopyToVRAM(&graphicsMan->windows[TOWN_MAP_WINDOW_BOTTOM_SCREEN_HEADER]);
}

View File

@ -7,8 +7,6 @@
#include "struct_defs/struct_02099F80.h"
#include "applications/town_map/application.h"
#include "applications/town_map/context.h"
#include "applications/town_map/graphics.h"
#include "applications/town_map/map_blocks.h"
#include "applications/town_map/sprites.h"
@ -40,7 +38,7 @@ enum TownMapAppState {
TOWN_MAP_APP_STATE_CLEANUP,
};
typedef struct {
typedef struct TownMapAppFunctionSet {
TownMapAppFunc initResources;
TownMapAppFunc displayGraphics;
TownMapAppFunc fadeScreensAppEnter;

View File

@ -1,5 +1,7 @@
#include "applications/town_map/map_blocks.h"
#include "applications/town_map/defs.h"
#include "heap.h"
TownMapBlockList *TownMap_ReadBlocks(const char *path, enum HeapID heapID)

View File

@ -3,7 +3,7 @@
#include <nitro.h>
#include <string.h>
#include "applications/town_map/context.h"
#include "applications/town_map/defs.h"
#include "applications/town_map/main.h"
#include "gx_layers.h"

View File

@ -13,8 +13,7 @@
#include "struct_defs/struct_020708E0.h"
#include "struct_defs/struct_020711C8.h"
#include "applications/town_map/application.h"
#include "applications/town_map/context.h"
#include "applications/town_map/main.h"
#include "field/field_system.h"
#include "overlay005/ov5_021DFB54.h"
#include "overlay005/ov5_021F101C.h"

View File

@ -50,8 +50,7 @@
#include "applications/party_menu/defs.h"
#include "applications/pc_boxes/pokemon_storage_session.h"
#include "applications/pokemon_summary_screen/main.h"
#include "applications/town_map/application.h"
#include "applications/town_map/context.h"
#include "applications/town_map/main.h"
#include "cutscenes/boat_cutscene.h"
#include "field/field_system.h"
#include "field/field_system_sub2_t.h"

View File

@ -21,7 +21,7 @@
#include "applications/party_menu/main.h"
#include "applications/pokedex/pokedex_main.h"
#include "applications/pokemon_summary_screen/main.h"
#include "applications/town_map/context.h"
#include "applications/town_map/main.h"
#include "field/field_system.h"
#include "overlay005/fieldmap.h"
#include "overlay005/ov5_021D2F14.h"

View File

@ -41,8 +41,7 @@
#include "applications/pc_hall_of_fame/manager.h"
#include "applications/pokedex/pokedex_main.h"
#include "applications/pokemon_summary_screen/main.h"
#include "applications/town_map/application.h"
#include "applications/town_map/context.h"
#include "applications/town_map/main.h"
#include "battle/ov16_0223B140.h"
#include "choose_starter/choose_starter_app.h"
#include "cutscenes/boat_cutscene.h"