From 9274e189277ab6ec4d4efb90cb9e18145a8fec38 Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Thu, 19 Jan 2017 23:58:23 -0600 Subject: decompile rom6 (#202) * decompile rom6 * newline --- src/rom6.c | 206 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 206 insertions(+) create mode 100644 src/rom6.c (limited to 'src/rom6.c') diff --git a/src/rom6.c b/src/rom6.c new file mode 100644 index 000000000..581bd46b4 --- /dev/null +++ b/src/rom6.c @@ -0,0 +1,206 @@ +#include "global.h" +#include "asm.h" +#include "field_effect.h" +#include "field_player_avatar.h" +#include "rom4.h" +#include "script.h" +#include "songs.h" +#include "sound.h" +#include "sprite.h" +#include "task.h" + +extern u16 gScriptLastTalked; +extern u32 gUnknown_0202FF84[]; +extern struct MapPosition gUnknown_0203923C; +extern void (*gUnknown_0300485C)(void); +extern u8 gUnknown_03005CE0; +extern void (*gUnknown_03005CE4)(void); +extern u8 UseRockSmashScript[]; + +extern bool8 ShouldDoBrailleDigEffect(void); +extern void DoBrailleDigEffect(void); +extern void sub_8053014(void); +extern void sub_8059BF4(void); +extern void sub_808AB90(void); +extern void task08_080A1C44(u8); +extern u8 sub_80CA1C8(void); + +static void task08_080C9820(u8); +static void sub_810B3DC(u8); +static void sub_810B428(u8); +static void sub_810B4CC(u8); +static void sub_810B53C(void); +static void sub_810B58C(void); +static void sub_810B5D8(void); +static void sub_810B634(void); + +bool8 npc_before_player_of_type(u8 a) +{ + u8 mapObjId; + + GetXYCoordsOneStepInFrontOfPlayer(&gUnknown_0203923C.x, &gUnknown_0203923C.y); + gUnknown_0203923C.height = PlayerGetZCoord(); + mapObjId = GetFieldObjectIdByXYZ(gUnknown_0203923C.x, gUnknown_0203923C.y, gUnknown_0203923C.height); + if (gMapObjects[mapObjId].graphicsId != a) + { + return FALSE; + } + else + { + gScriptLastTalked = gMapObjects[mapObjId].localId; + return TRUE; + } +} + +u8 oei_task_add(void) +{ + GetXYCoordsOneStepInFrontOfPlayer(&gUnknown_0203923C.x, &gUnknown_0203923C.y); + return CreateTask(task08_080C9820, 8); +} + +static void task08_080C9820(u8 taskId) +{ + u8 mapObjId; + + ScriptContext2_Enable(); + gPlayerAvatar.unk6 = 1; + mapObjId = gPlayerAvatar.mapObjectId; + if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(&gMapObjects[mapObjId]) + || FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[mapObjId])) + { + if (gMapHeader.mapType == 5) + { + FieldEffectStart(0x3B); + gTasks[taskId].func = sub_810B428; + } + else + { + sub_8059BF4(); + FieldObjectSetSpecialAnim(&gMapObjects[mapObjId], 0x39); + gTasks[taskId].func = sub_810B3DC; + } + } +} + +static void sub_810B3DC(u8 taskId) +{ + if (FieldObjectCheckIfSpecialAnimFinishedOrInactive(&gMapObjects[gPlayerAvatar.mapObjectId]) == TRUE) + { + FieldEffectStart(0x3B); + gTasks[taskId].func = sub_810B428; + } +} + +static void sub_810B428(u8 taskId) +{ + if (!FieldEffectActiveListContains(6)) + { + gUnknown_0202FF84[1] = player_get_direction_lower_nybble(); + if (gUnknown_0202FF84[1] == 1) + gUnknown_0202FF84[2] = 0; + if (gUnknown_0202FF84[1] == 2) + gUnknown_0202FF84[2] = 1; + if (gUnknown_0202FF84[1] == 3) + gUnknown_0202FF84[2] = 2; + if (gUnknown_0202FF84[1] == 4) + gUnknown_0202FF84[2] = 3; + sub_805B980(&gMapObjects[gPlayerAvatar.mapObjectId], GetPlayerAvatarGraphicsIdByCurrentState()); + StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], gUnknown_0202FF84[2]); + FieldEffectActiveListRemove(6); + gTasks[taskId].func = sub_810B4CC; + } +} + +static void sub_810B4CC(u8 taskId) +{ + void (*func)(void) = (void (*)(void))(((u16)gTasks[taskId].data[8] << 16) | (u16)gTasks[taskId].data[9]); + + func(); + gPlayerAvatar.unk6 = 0; + DestroyTask(taskId); +} + +bool8 SetUpFieldMove_RockSmash(void) +{ + if (npc_before_player_of_type(0x56) == TRUE) + { + gUnknown_0300485C = sub_808AB90; + gUnknown_03005CE4 = sub_810B53C; + return TRUE; + } + else + { + return FALSE; + } +} + +static void sub_810B53C(void) +{ + gUnknown_0202FF84[0] = gUnknown_03005CE0; + ScriptContext1_SetupScript(UseRockSmashScript); +} + +int FldEff_RockSmash(void) +{ + u8 taskId = oei_task_add(); + + gTasks[taskId].data[8] = (u32)sub_810B58C >> 16; + gTasks[taskId].data[9] = (u32)sub_810B58C; + IncrementGameStat(0x13); + return 0; +} + +static void sub_810B58C(void) +{ + PlaySE(SE_W088); + FieldEffectActiveListRemove(0x25); + EnableBothScriptContexts(); +} + +int SetUpFieldMove_Dig(void) +{ + if (sub_80CA1C8() == TRUE) + { + gUnknown_0300485C = sub_808AB90; + gUnknown_03005CE4 = sub_810B5D8; + return TRUE; + } + else + { + return FALSE; + } +} + +static void sub_810B5D8(void) +{ + sub_8053014(); + FieldEffectStart(0x26); + gUnknown_0202FF84[0] = gUnknown_03005CE0; +} + +int FldEff_UseDig(void) +{ + u8 taskId = oei_task_add(); + + gTasks[taskId].data[8] = (u32)sub_810B634 >> 16; + gTasks[taskId].data[9] = (u32)sub_810B634; + if (!ShouldDoBrailleDigEffect()) + SetPlayerAvatarTransitionFlags(1); + return 0; +} + +static void sub_810B634(void) +{ + u8 taskId; + + FieldEffectActiveListRemove(0x26); + if (ShouldDoBrailleDigEffect()) + { + DoBrailleDigEffect(); + } + else + { + taskId = CreateTask(task08_080A1C44, 8); + gTasks[taskId].data[0] = 0; + } +} -- cgit v1.2.3 From 6035511c139549a0291b6b3d43b9b080f792b2b6 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sat, 18 Mar 2017 04:00:15 +0100 Subject: reorganize and add new headers for many files --- src/rom6.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'src/rom6.c') diff --git a/src/rom6.c b/src/rom6.c index 581bd46b4..9ac412ad5 100644 --- a/src/rom6.c +++ b/src/rom6.c @@ -8,6 +8,8 @@ #include "sound.h" #include "sprite.h" #include "task.h" +#include "rom6.h" +#include "braille_puzzles.h" extern u16 gScriptLastTalked; extern u32 gUnknown_0202FF84[]; @@ -17,10 +19,6 @@ extern u8 gUnknown_03005CE0; extern void (*gUnknown_03005CE4)(void); extern u8 UseRockSmashScript[]; -extern bool8 ShouldDoBrailleDigEffect(void); -extern void DoBrailleDigEffect(void); -extern void sub_8053014(void); -extern void sub_8059BF4(void); extern void sub_808AB90(void); extern void task08_080A1C44(u8); extern u8 sub_80CA1C8(void); -- cgit v1.2.3 From 3d5864529e93265ea1711b638a4ab7b3d563086d Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Wed, 22 Mar 2017 06:04:41 +0100 Subject: label changes for clarity --- src/rom6.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/rom6.c') diff --git a/src/rom6.c b/src/rom6.c index 9ac412ad5..037516489 100644 --- a/src/rom6.c +++ b/src/rom6.c @@ -15,7 +15,7 @@ extern u16 gScriptLastTalked; extern u32 gUnknown_0202FF84[]; extern struct MapPosition gUnknown_0203923C; extern void (*gUnknown_0300485C)(void); -extern u8 gUnknown_03005CE0; +extern u8 gLastFieldPokeMenuOpened; extern void (*gUnknown_03005CE4)(void); extern u8 UseRockSmashScript[]; @@ -134,7 +134,7 @@ bool8 SetUpFieldMove_RockSmash(void) static void sub_810B53C(void) { - gUnknown_0202FF84[0] = gUnknown_03005CE0; + gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened; ScriptContext1_SetupScript(UseRockSmashScript); } @@ -173,7 +173,7 @@ static void sub_810B5D8(void) { sub_8053014(); FieldEffectStart(0x26); - gUnknown_0202FF84[0] = gUnknown_03005CE0; + gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened; } int FldEff_UseDig(void) -- cgit v1.2.3 From ddc846fa6a0d9a13cfba6f52488a66f6f4562a2d Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Thu, 27 Apr 2017 15:43:31 +0200 Subject: Sort includes --- src/rom6.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/rom6.c') diff --git a/src/rom6.c b/src/rom6.c index 037516489..0cc510914 100644 --- a/src/rom6.c +++ b/src/rom6.c @@ -1,5 +1,7 @@ #include "global.h" +#include "rom6.h" #include "asm.h" +#include "braille_puzzles.h" #include "field_effect.h" #include "field_player_avatar.h" #include "rom4.h" @@ -8,8 +10,6 @@ #include "sound.h" #include "sprite.h" #include "task.h" -#include "rom6.h" -#include "braille_puzzles.h" extern u16 gScriptLastTalked; extern u32 gUnknown_0202FF84[]; -- cgit v1.2.3 From c8e8e7dcfc60ab2769c0c1ada5a580ec1c1c4d5d Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Fri, 5 May 2017 16:16:54 +0200 Subject: Remove trailing whitespace --- src/rom6.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src/rom6.c') diff --git a/src/rom6.c b/src/rom6.c index 0cc510914..a2b52c9aa 100644 --- a/src/rom6.c +++ b/src/rom6.c @@ -35,7 +35,7 @@ static void sub_810B634(void); bool8 npc_before_player_of_type(u8 a) { u8 mapObjId; - + GetXYCoordsOneStepInFrontOfPlayer(&gUnknown_0203923C.x, &gUnknown_0203923C.y); gUnknown_0203923C.height = PlayerGetZCoord(); mapObjId = GetFieldObjectIdByXYZ(gUnknown_0203923C.x, gUnknown_0203923C.y, gUnknown_0203923C.height); @@ -59,7 +59,7 @@ u8 oei_task_add(void) static void task08_080C9820(u8 taskId) { u8 mapObjId; - + ScriptContext2_Enable(); gPlayerAvatar.unk6 = 1; mapObjId = gPlayerAvatar.mapObjectId; @@ -112,7 +112,7 @@ static void sub_810B428(u8 taskId) static void sub_810B4CC(u8 taskId) { void (*func)(void) = (void (*)(void))(((u16)gTasks[taskId].data[8] << 16) | (u16)gTasks[taskId].data[9]); - + func(); gPlayerAvatar.unk6 = 0; DestroyTask(taskId); @@ -141,7 +141,7 @@ static void sub_810B53C(void) int FldEff_RockSmash(void) { u8 taskId = oei_task_add(); - + gTasks[taskId].data[8] = (u32)sub_810B58C >> 16; gTasks[taskId].data[9] = (u32)sub_810B58C; IncrementGameStat(0x13); @@ -179,7 +179,7 @@ static void sub_810B5D8(void) int FldEff_UseDig(void) { u8 taskId = oei_task_add(); - + gTasks[taskId].data[8] = (u32)sub_810B634 >> 16; gTasks[taskId].data[9] = (u32)sub_810B634; if (!ShouldDoBrailleDigEffect()) @@ -190,7 +190,7 @@ int FldEff_UseDig(void) static void sub_810B634(void) { u8 taskId; - + FieldEffectActiveListRemove(0x26); if (ShouldDoBrailleDigEffect()) { -- cgit v1.2.3 From 4d2b22a899c11dfcacfec6889968ab01655a3fe3 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Fri, 26 May 2017 14:53:51 +0200 Subject: Add headers --- src/rom6.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) (limited to 'src/rom6.c') diff --git a/src/rom6.c b/src/rom6.c index a2b52c9aa..c466e724d 100644 --- a/src/rom6.c +++ b/src/rom6.c @@ -1,6 +1,8 @@ +#include "field_map_obj.h" +#include "pokemon_menu.h" +#include "item_use.h" #include "global.h" #include "rom6.h" -#include "asm.h" #include "braille_puzzles.h" #include "field_effect.h" #include "field_player_avatar.h" @@ -19,10 +21,6 @@ extern u8 gLastFieldPokeMenuOpened; extern void (*gUnknown_03005CE4)(void); extern u8 UseRockSmashScript[]; -extern void sub_808AB90(void); -extern void task08_080A1C44(u8); -extern u8 sub_80CA1C8(void); - static void task08_080C9820(u8); static void sub_810B3DC(u8); static void sub_810B428(u8); -- cgit v1.2.3 From f26daa3d6954d2db3a7c44b79d319a7a084462c2 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Fri, 26 May 2017 15:01:42 +0200 Subject: Sort includes --- src/rom6.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/rom6.c') diff --git a/src/rom6.c b/src/rom6.c index c466e724d..d5314fdec 100644 --- a/src/rom6.c +++ b/src/rom6.c @@ -1,11 +1,11 @@ -#include "field_map_obj.h" -#include "pokemon_menu.h" -#include "item_use.h" #include "global.h" #include "rom6.h" #include "braille_puzzles.h" #include "field_effect.h" +#include "field_map_obj.h" #include "field_player_avatar.h" +#include "item_use.h" +#include "pokemon_menu.h" #include "rom4.h" #include "script.h" #include "songs.h" -- cgit v1.2.3 From 8435b8835a9b5c5348b2849e943e36ffdd8c76b3 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Thu, 15 Jun 2017 03:34:11 -0400 Subject: move player_pc data to C file and do a lot of labeling --- src/rom6.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/rom6.c') diff --git a/src/rom6.c b/src/rom6.c index a2b52c9aa..a8233eb5b 100644 --- a/src/rom6.c +++ b/src/rom6.c @@ -14,7 +14,7 @@ extern u16 gScriptLastTalked; extern u32 gUnknown_0202FF84[]; extern struct MapPosition gUnknown_0203923C; -extern void (*gUnknown_0300485C)(void); +extern void (*gFieldCallback)(void); extern u8 gLastFieldPokeMenuOpened; extern void (*gUnknown_03005CE4)(void); extern u8 UseRockSmashScript[]; @@ -122,7 +122,7 @@ bool8 SetUpFieldMove_RockSmash(void) { if (npc_before_player_of_type(0x56) == TRUE) { - gUnknown_0300485C = sub_808AB90; + gFieldCallback = sub_808AB90; gUnknown_03005CE4 = sub_810B53C; return TRUE; } @@ -159,7 +159,7 @@ int SetUpFieldMove_Dig(void) { if (sub_80CA1C8() == TRUE) { - gUnknown_0300485C = sub_808AB90; + gFieldCallback = sub_808AB90; gUnknown_03005CE4 = sub_810B5D8; return TRUE; } -- cgit v1.2.3