Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion include/field_map_change.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
#define POKEPLATINUM_FIELD_MAP_CHANGE_H

#include "field/field_system_decl.h"
#include "overlay006/field_warp.h"

#include "field_task.h"
#include "location.h"
Expand All @@ -19,7 +20,7 @@ void FieldTask_ChangeMapToLocation(FieldTask *task, int mapId, int warpId, int x
void FieldTask_StartMapChangeFull(FieldTask *task, int mapId, int warpId, int x, int z, int dir);
void FieldTask_StartMapChangeFly(FieldSystem *fieldSystem, int mapId, int warpId, int x, int z, int dir);
void FieldTask_ChangeMapChangeFly(FieldTask *task, int mapId, int warpId, int x, int z, int dir);
void FieldTask_ChangeMapChangeByDig(FieldTask *task, const Location *location, u32 param2);
void FieldTask_ChangeMapChangeByFieldWarp(FieldTask *task, const Location *location, enum FieldWarpType param2);
void FieldSystem_StartMapChangeWarpTask(FieldSystem *fieldSystem, int param1, int param2);
void *sub_02053FAC(FieldSystem *fieldSystem);
void FieldTask_SetUndergroundMapChange(FieldSystem *fieldSystem);
Expand Down
39 changes: 39 additions & 0 deletions include/overlay006/field_warp.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
#ifndef POKEPLATINUM_FIELD_WARP_H
#define POKEPLATINUM_FIELD_WARP_H

#include "struct_decls/struct_02061AB4_decl.h"
#include "struct_defs/pokemon.h"

#include "field/field_system_decl.h"

#include "field_task.h"
#include "sys_task_manager.h"

enum FieldWarpType {
FIELD_WARP_TYPE_ESCAPE_ROPE = 0,
FIELD_WARP_TYPE_DIG,
FIELD_WARP_TYPE_TELEPORT,
};

typedef struct FieldWarp {
int state;
int animationDelay;
enum FieldWarpType warpType;
SysTask *animationTask;
SysTask *cutInTask;
SysTask *unk_14;
MapObject *player;
FieldSystem *fieldSystem;
Pokemon *mon;
} FieldWarp;

FieldWarp *FieldWarp_InitEscapeRope(FieldSystem *fieldSystem, enum HeapID heapID);
BOOL FieldWarp_EscapeRopeFadeOut(FieldTask *task);
FieldWarp *FieldWarp_InitFadeIn(FieldSystem *fieldSystem, enum HeapID heapID, enum FieldWarpType warpType);
BOOL FieldWarp_FadeIn(FieldTask *task);
FieldWarp *FieldWarp_InitDig(FieldSystem *, Pokemon *, enum HeapID heapID);
BOOL FieldWarp_DigFadeOut(FieldTask *task);
FieldWarp *FieldWarp_InitTeleport(FieldSystem *fieldSystem, Pokemon *mon, enum HeapID heapID);
BOOL FieldWarp_TeleportFadeOut(FieldTask *task);

#endif // POKEPLATINUM_FIELD_WARP_H
18 changes: 0 additions & 18 deletions include/overlay006/ov6_02247100.h

This file was deleted.

2 changes: 1 addition & 1 deletion platinum.us/main.lsf
Original file line number Diff line number Diff line change
Expand Up @@ -580,7 +580,7 @@ Overlay overlay6
Object main.nef.p/src_overlay006_healing_machine_animation_pokecenter.c.o
Object main.nef.p/src_overlay006_elevator_animation.c.o
Object main.nef.p/src_overlay006_pc_animation.c.o
Object main.nef.p/src_overlay006_ov6_02247100.c.o
Object main.nef.p/src_overlay006_field_warp.c.o
Object main.nef.p/src_overlay006_trophy_garden_daily_encounters.c.o
Object main.nef.p/src_overlay006_feebas_fishing.c.o
Object main.nef.p/src_overlay006_dual_slot_encounters.c.o
Expand Down
66 changes: 33 additions & 33 deletions src/field_map_change.c
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@
#include "overlay005/ov5_021E135C.h"
#include "overlay005/save_info_window.h"
#include "overlay005/struct_ov5_021D432C_decl.h"
#include "overlay006/field_warp.h"
#include "overlay006/hm_cut_in.h"
#include "overlay006/ov6_02247100.h"
#include "overlay023/secret_bases.h"
#include "overlay023/underground_comm_manager.h"
#include "overlay023/underground_top_screen.h"
Expand Down Expand Up @@ -97,12 +97,12 @@ typedef struct MapChangeFromErrorData {
Location location;
} MapChangeFromErrorData;

typedef struct MapChangeDigData {
typedef struct MapChangeFieldWarpData {
int state;
int unk_04;
enum FieldWarpType fieldWarpType;
SysTask *task;
Location location;
} MapChangeDigData;
} MapChangeFieldWarpData;

typedef struct MapChangeWarpData {
int state;
Expand Down Expand Up @@ -147,12 +147,12 @@ static void FieldTransition_StartMapAndFadeInFly(FieldTask *task);
static BOOL FieldTransition_StartMapAndFadeInFlySub(FieldTask *task);
static void FieldTask_FadeInFly(FieldTask *task);
static BOOL FieldTask_WaitFadeInFly(FieldTask *task);
static BOOL FieldTask_MapChangeByDig(FieldTask *task);
static void FieldTask_StartFinishFieldMapDig(FieldTask *task);
static BOOL FieldTransition_FinishMapDig(FieldTask *task);
static void FieldTransition_StartMapAndFadeInDig(FieldTask *task);
static BOOL FieldTask_FadeInDig(FieldTask *task);
static void sub_02053E5C(FieldTask *task);
static BOOL FieldTask_MapChangeByFieldWarp(FieldTask *task);
static void FieldTask_StartFinishFieldMapFieldWarp(FieldTask *task);
static BOOL FieldTransition_FinishMapFieldWarp(FieldTask *task);
static void FieldTransition_StartMapAndFadeInFieldWarp(FieldTask *task);
static BOOL FieldTransition_StartMapAndFadeInFieldWarpSub(FieldTask *task);
static void FieldTask_FadeInFieldWarp(FieldTask *task);
static BOOL sub_0205444C(FieldTask *task, int param1);

static const MapLoadMode sMapLoadMode[] = {
Expand Down Expand Up @@ -893,28 +893,28 @@ static BOOL FieldTask_WaitFadeInFly(FieldTask *task)
return FALSE;
}

void FieldTask_ChangeMapChangeByDig(FieldTask *task, const Location *location, u32 param2)
void FieldTask_ChangeMapChangeByFieldWarp(FieldTask *task, const Location *location, enum FieldWarpType fieldWarpType)
{
MapChangeDigData *mapChangeData = Heap_AllocAtEnd(HEAP_ID_FIELD2, sizeof(MapChangeDigData));
MapChangeFieldWarpData *mapChangeData = Heap_AllocAtEnd(HEAP_ID_FIELD2, sizeof(MapChangeFieldWarpData));

mapChangeData->state = 0;
mapChangeData->unk_04 = param2;
mapChangeData->fieldWarpType = fieldWarpType;
mapChangeData->task = NULL;
mapChangeData->location = *location;

FieldTask_InitJump(task, FieldTask_MapChangeByDig, mapChangeData);
FieldTask_InitJump(task, FieldTask_MapChangeByFieldWarp, mapChangeData);
}

static BOOL FieldTask_MapChangeByDig(FieldTask *task)
static BOOL FieldTask_MapChangeByFieldWarp(FieldTask *task)
{
FieldSystem *fieldSystem = FieldTask_GetFieldSystem(task);
MapChangeDigData *mapChangeData = FieldTask_GetEnv(task);
MapChangeFieldWarpData *mapChangeData = FieldTask_GetEnv(task);
Location *location = &mapChangeData->location;

switch (mapChangeData->state) {
case 0:
Sound_TryFadeInBGM(fieldSystem, location->mapId);
FieldTask_StartFinishFieldMapDig(task);
FieldTask_StartFinishFieldMapFieldWarp(task);
mapChangeData->state++;
break;
case 1:
Expand All @@ -929,15 +929,15 @@ static BOOL FieldTask_MapChangeByDig(FieldTask *task)

Sound_PlayMapBGM(fieldSystem, location->mapId);

if (mapChangeData->unk_04 == 2) {
if (mapChangeData->fieldWarpType == FIELD_WARP_TYPE_TELEPORT) {
FieldSystem_SetTeleportFlags(fieldSystem);
} else if ((mapChangeData->unk_04 == 0) || (mapChangeData->unk_04 == 1)) {
} else if ((mapChangeData->fieldWarpType == FIELD_WARP_TYPE_ESCAPE_ROPE) || (mapChangeData->fieldWarpType == FIELD_WARP_TYPE_DIG)) {
FieldSystem_SetEscapeFlags(fieldSystem);
} else {
GF_ASSERT(FALSE);
}

FieldTransition_StartMapAndFadeInDig(task);
FieldTransition_StartMapAndFadeInFieldWarp(task);
mapChangeData->state++;
break;
case 3:
Expand All @@ -948,12 +948,12 @@ static BOOL FieldTask_MapChangeByDig(FieldTask *task)
return FALSE;
}

static void FieldTask_StartFinishFieldMapDig(FieldTask *task)
static void FieldTask_StartFinishFieldMapFieldWarp(FieldTask *task)
{
FieldTask_InitCall(task, FieldTransition_FinishMapDig, NULL);
FieldTask_InitCall(task, FieldTransition_FinishMapFieldWarp, NULL);
}

static BOOL FieldTransition_FinishMapDig(FieldTask *task)
static BOOL FieldTransition_FinishMapFieldWarp(FieldTask *task)
{
int *state = FieldTask_GetState(task);

Expand All @@ -969,17 +969,17 @@ static BOOL FieldTransition_FinishMapDig(FieldTask *task)
return FALSE;
}

static void FieldTransition_StartMapAndFadeInDig(FieldTask *task)
static void FieldTransition_StartMapAndFadeInFieldWarp(FieldTask *task)
{
MapChangeDigData *mapChangeData = FieldTask_GetEnv(task);
FieldTask_InitCall(task, FieldTask_FadeInDig, mapChangeData);
MapChangeFieldWarpData *mapChangeData = FieldTask_GetEnv(task);
FieldTask_InitCall(task, FieldTransition_StartMapAndFadeInFieldWarpSub, mapChangeData);
}

static BOOL FieldTask_FadeInDig(FieldTask *task)
static BOOL FieldTransition_StartMapAndFadeInFieldWarpSub(FieldTask *task)
{
int *state = FieldTask_GetState(task);
FieldSystem *fieldSystem = FieldTask_GetFieldSystem(task);
MapChangeDigData *mapChangeData = FieldTask_GetEnv(task);
MapChangeFieldWarpData *mapChangeData = FieldTask_GetEnv(task);

switch (*state) {
case 0:
Expand All @@ -988,7 +988,7 @@ static BOOL FieldTask_FadeInDig(FieldTask *task)
break;
case 1:
FieldSystem_RequestLocationName(fieldSystem);
sub_02053E5C(task);
FieldTask_FadeInFieldWarp(task);
(*state)++;
break;
case 2:
Expand All @@ -998,18 +998,18 @@ static BOOL FieldTask_FadeInDig(FieldTask *task)
return FALSE;
}

static void sub_02053E5C(FieldTask *task)
static void FieldTask_FadeInFieldWarp(FieldTask *task)
{
FieldSystem *fieldSystem = FieldTask_GetFieldSystem(task);
MapChangeDigData *mapChangeData = FieldTask_GetEnv(task);
MapChangeFieldWarpData *mapChangeData = FieldTask_GetEnv(task);

if (!FieldSystem_HasParentProcess(fieldSystem)) {
GF_ASSERT(FALSE);
return;
}

void *v2 = ov6_022472C8(fieldSystem, HEAP_ID_FIELD1, mapChangeData->unk_04);
FieldTask_InitCall(task, ov6_022472E8, v2);
FieldWarp *fieldwarp = FieldWarp_InitFadeIn(fieldSystem, HEAP_ID_FIELD1, mapChangeData->fieldWarpType);
FieldTask_InitCall(task, FieldWarp_FadeIn, fieldwarp);
}

static BOOL FieldTask_MapChangeWarp(FieldTask *task)
Expand Down
12 changes: 6 additions & 6 deletions src/field_move_tasks.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
#include "field/field_system.h"
#include "overlay005/ov5_021DFB54.h"
#include "overlay005/ov5_021F101C.h"
#include "overlay006/ov6_02247100.h"
#include "overlay006/field_warp.h"

#include "field_overworld_state.h"
#include "field_task.h"
Expand Down Expand Up @@ -691,12 +691,12 @@ static BOOL FieldMoves_TeleportTask(FieldTask *param0)
{
FieldSystem *fieldSystem = FieldTask_GetFieldSystem(param0);
UnkStruct_020711C8 *v1 = FieldTask_GetEnv(param0);
void *v2 = ov6_02247530(fieldSystem, v1->unk_00, HEAP_ID_FIELD1);
FieldWarp *fieldWarp = FieldWarp_InitTeleport(fieldSystem, v1->unk_00, HEAP_ID_FIELD1);

Heap_Free(v1);
FieldTask_InitJump(param0, ov6_02247554, v2);
FieldTask_InitJump(param0, FieldWarp_TeleportFadeOut, fieldWarp);

return 0;
return FALSE;
}

static enum FieldMoveError FieldMoves_CheckDig(const FieldMoveContext *fieldMoveContext)
Expand Down Expand Up @@ -734,13 +734,13 @@ static BOOL FieldMoves_DigTask(FieldTask *param0)
{
FieldSystem *fieldSystem = FieldTask_GetFieldSystem(param0);
UnkStruct_020711C8 *v1 = FieldTask_GetEnv(param0);
void *v2 = ov6_02247488(fieldSystem, v1->unk_00, HEAP_ID_FIELD2);
FieldWarp *fieldWarp = FieldWarp_InitDig(fieldSystem, v1->unk_00, HEAP_ID_FIELD2);

void *journalEntryLocationEvent = JournalEntry_CreateEventUsedMove(LOCATION_EVENT_USED_DIG - LOCATION_EVENT_USED_CUT, fieldSystem->location->mapId, HEAP_ID_FIELD1);
JournalEntry_SaveData(fieldSystem->journalEntry, journalEntryLocationEvent, JOURNAL_LOCATION);

Heap_Free(v1);
FieldTask_InitJump(param0, ov6_022474AC, v2);
FieldTask_InitJump(param0, FieldWarp_DigFadeOut, fieldWarp);

return FALSE;
}
Expand Down
12 changes: 6 additions & 6 deletions src/item_use_functions.c
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
#include "overlay005/ov5_021F007C.h"
#include "overlay005/save_info_window.h"
#include "overlay005/struct_ov5_021F0468_decl.h"
#include "overlay006/ov6_02247100.h"
#include "overlay006/field_warp.h"
#include "savedata/save_table.h"

#include "bag.h"
Expand Down Expand Up @@ -132,7 +132,7 @@ static BOOL MountOrUnmountBicycle(FieldTask *task);
static BOOL PrintRegisteredKeyItemUseMessage(FieldTask *task);
static void RegisteredItem_CreateGoToAppTask(ItemFieldUseContext *usageContext, void *param1);
static BOOL RegisteredItem_GoToApp(FieldTask *task);
static BOOL sub_020690F0(FieldTask *task);
static BOOL WarpWithEscapeRope(FieldTask *task);
static BOOL sub_020685AC(FieldTask *task);
static void PrintRegisteredKeyItemError(ItemFieldUseContext *usageContext, u32 param1);

Expand Down Expand Up @@ -938,7 +938,7 @@ static void UseEscapeRopeFromMenu(ItemMenuUseContext *usageContext, const ItemUs

FieldSystem_StartFieldMap(fieldSystem);

menu->callback = sub_020690F0;
menu->callback = WarpWithEscapeRope;
menu->taskData = NULL;
menu->state = START_MENU_STATE_10;

Expand All @@ -958,12 +958,12 @@ static enum ItemUseCheckResult CanUseEscapeRope(const ItemUseContext *usageConte
return ITEM_USE_CANNOT_USE_GENERIC;
}

static BOOL sub_020690F0(FieldTask *task)
static BOOL WarpWithEscapeRope(FieldTask *task)
{
FieldSystem *fieldSystem = FieldTask_GetFieldSystem(task);
void *v1 = ov6_02247100(fieldSystem, HEAP_ID_FIELD2);
FieldWarp *fieldWarp = FieldWarp_InitEscapeRope(fieldSystem, HEAP_ID_FIELD2);

FieldTask_InitJump(task, ov6_02247120, v1);
FieldTask_InitJump(task, FieldWarp_EscapeRopeFadeOut, fieldWarp);
return FALSE;
}

Expand Down
2 changes: 1 addition & 1 deletion src/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -468,7 +468,7 @@ pokeplatinum_c = files(
'overlay006/healing_machine_animation/pokecenter.c',
'overlay006/elevator_animation.c',
'overlay006/pc_animation.c',
'overlay006/ov6_02247100.c',
'overlay006/field_warp.c',
'overlay006/trophy_garden_daily_encounters.c',
'overlay006/feebas_fishing.c',
'overlay006/dual_slot_encounters.c',
Expand Down
Loading