summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorProjectRevoTPP <projectrevotpp@hotmail.com>2017-02-28 04:12:14 +0000
committerProjectRevoTPP <projectrevotpp@hotmail.com>2017-02-28 04:12:14 +0000
commit93cd06195985eaa52d3dca28a42434009369b2cf (patch)
treef22a346760e2772546628292c0916ba374b80dde
parent81099d83683a3ac8cdddf587877b7c46239dba39 (diff)
start decompiling script_pokemon_util_80F99CC.c
-rw-r--r--asm/script_pokemon_util_80F99CC.s281
-rw-r--r--include/battle_party_menu.h21
-rw-r--r--ld_script.txt1
-rw-r--r--src/battle_party_menu.c18
-rw-r--r--src/script_pokemon_util_80F99CC.c280
5 files changed, 303 insertions, 298 deletions
diff --git a/asm/script_pokemon_util_80F99CC.s b/asm/script_pokemon_util_80F99CC.s
index d107902ae..4908fee4e 100644
--- a/asm/script_pokemon_util_80F99CC.s
+++ b/asm/script_pokemon_util_80F99CC.s
@@ -6,287 +6,6 @@
.text
- thumb_func_start sub_80F99CC
-sub_80F99CC: @ 80F99CC
- push {lr}
- sub sp, 0x4
- bl ScriptContext2_Enable
- ldr r0, _080F9A04 @ =sub_80F9A8C
- movs r1, 0xA
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080F9A08 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r2, 0
- movs r0, 0x2
- strh r0, [r1, 0x8]
- subs r0, 0x3
- str r2, [sp]
- movs r1, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_080F9A04: .4byte sub_80F9A8C
-_080F9A08: .4byte gTasks
- thumb_func_end sub_80F99CC
-
- thumb_func_start sub_80F9A0C
-sub_80F9A0C: @ 80F9A0C
- push {lr}
- sub sp, 0x4
- bl ScriptContext2_Enable
- ldr r0, _080F9A44 @ =sub_80F9A8C
- movs r1, 0xA
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080F9A48 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r2, 0
- movs r0, 0x3
- strh r0, [r1, 0x8]
- subs r0, 0x4
- str r2, [sp]
- movs r1, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_080F9A44: .4byte sub_80F9A8C
-_080F9A48: .4byte gTasks
- thumb_func_end sub_80F9A0C
-
- thumb_func_start sub_80F9A4C
-sub_80F9A4C: @ 80F9A4C
- push {lr}
- sub sp, 0x4
- bl ScriptContext2_Enable
- ldr r0, _080F9A84 @ =sub_80F9A8C
- movs r1, 0xA
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080F9A88 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r2, 0
- movs r0, 0x7
- strh r0, [r1, 0x8]
- subs r0, 0x8
- str r2, [sp]
- movs r1, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_080F9A84: .4byte sub_80F9A8C
-_080F9A88: .4byte gTasks
- thumb_func_end sub_80F9A4C
-
- thumb_func_start sub_80F9A8C
-sub_80F9A8C: @ 80F9A8C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r2, _080F9AC4 @ =gPaletteFade
- ldrb r1, [r2, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080F9ABE
- ldrb r0, [r2, 0x8]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2, 0x8]
- ldr r1, _080F9AC8 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldrb r0, [r0, 0x8]
- movs r1, 0
- bl OpenPartyMenu
- adds r0, r4, 0
- bl DestroyTask
-_080F9ABE:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F9AC4: .4byte gPaletteFade
-_080F9AC8: .4byte gTasks
- thumb_func_end sub_80F9A8C
-
- thumb_func_start sub_80F9ACC
-sub_80F9ACC: @ 80F9ACC
- push {r4,r5,lr}
- ldr r1, _080F9AEC @ =0x0201b000
- movs r2, 0x99
- lsls r2, 2
- adds r0, r1, r2
- movs r2, 0
- ldrsh r0, [r0, r2]
- adds r4, r1, 0
- cmp r0, 0x7
- bls _080F9AE2
- b _080F9BF6
-_080F9AE2:
- lsls r0, 2
- ldr r1, _080F9AF0 @ =_080F9AF4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080F9AEC: .4byte 0x0201b000
-_080F9AF0: .4byte _080F9AF4
- .align 2, 0
-_080F9AF4:
- .4byte _080F9B14
- .4byte _080F9B54
- .4byte _080F9B5A
- .4byte _080F9B6E
- .4byte _080F9B98
- .4byte _080F9B9E
- .4byte _080F9BB0
- .4byte _080F9BC8
-_080F9B14:
- ldr r0, _080F9B3C @ =0x00000266
- adds r5, r4, r0
- movs r1, 0
- ldrsh r3, [r5, r1]
- ldr r0, _080F9B40 @ =gPlayerPartyCount
- ldrb r0, [r0]
- cmp r3, r0
- bge _080F9B48
- movs r2, 0x98
- lsls r2, 2
- adds r0, r4, r2
- ldrb r0, [r0]
- ldrb r1, [r5]
- movs r2, 0x64
- muls r2, r3
- ldr r3, _080F9B44 @ =gPlayerParty
- adds r2, r3
- bl TryCreatePartyMenuMonIcon
- b _080F9BF0
- .align 2, 0
-_080F9B3C: .4byte 0x00000266
-_080F9B40: .4byte gPlayerPartyCount
-_080F9B44: .4byte gPlayerParty
-_080F9B48:
- movs r0, 0
- strh r0, [r5]
- movs r0, 0x99
- lsls r0, 2
- adds r1, r4, r0
- b _080F9BBC
-_080F9B54:
- bl LoadHeldItemIconGraphics
- b _080F9BB4
-_080F9B5A:
- movs r1, 0x98
- lsls r1, 2
- adds r0, r4, r1
- ldrb r0, [r0]
- bl CreateHeldItemIcons_806DC34
- movs r2, 0x99
- lsls r2, 2
- adds r1, r4, r2
- b _080F9BBC
-_080F9B6E:
- movs r1, 0x98
- lsls r1, 2
- adds r0, r4, r1
- ldrb r0, [r0]
- ldr r2, _080F9B94 @ =0x00000266
- adds r5, r4, r2
- ldrb r1, [r5]
- bl sub_806BD58
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080F9BF0
- movs r0, 0
- strh r0, [r5]
- movs r0, 0x99
- lsls r0, 2
- adds r1, r4, r0
- b _080F9BBC
- .align 2, 0
-_080F9B94: .4byte 0x00000266
-_080F9B98:
- bl PartyMenuPrintMonsLevelOrStatus
- b _080F9BB4
-_080F9B9E:
- bl PrintPartyMenuMonNicknames
- ldr r1, _080F9BAC @ =0x0201b000
- movs r0, 0x99
- lsls r0, 2
- adds r1, r0
- b _080F9BBC
- .align 2, 0
-_080F9BAC: .4byte 0x0201b000
-_080F9BB0:
- bl sub_80F9C00
-_080F9BB4:
- ldr r1, _080F9BC4 @ =0x0201b000
- movs r2, 0x99
- lsls r2, 2
- adds r1, r2
-_080F9BBC:
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _080F9BF6
- .align 2, 0
-_080F9BC4: .4byte 0x0201b000
-_080F9BC8:
- ldr r0, _080F9BEC @ =0x00000266
- adds r5, r4, r0
- ldrb r0, [r5]
- bl sub_806B58C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080F9BF0
- movs r1, 0
- strh r1, [r5]
- movs r2, 0x99
- lsls r2, 2
- adds r0, r4, r2
- strh r1, [r0]
- movs r0, 0x1
- b _080F9BF8
- .align 2, 0
-_080F9BEC: .4byte 0x00000266
-_080F9BF0:
- ldrh r0, [r5]
- adds r0, 0x1
- strh r0, [r5]
-_080F9BF6:
- movs r0, 0
-_080F9BF8:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80F9ACC
-
thumb_func_start sub_80F9C00
sub_80F9C00: @ 80F9C00
push {r4,lr}
diff --git a/include/battle_party_menu.h b/include/battle_party_menu.h
new file mode 100644
index 000000000..c808cdcd7
--- /dev/null
+++ b/include/battle_party_menu.h
@@ -0,0 +1,21 @@
+#ifndef GUARD_BATTLE_PARTY_MENU_H
+#define GUARD_BATTLE_PARTY_MENU_H
+
+struct UnknownStruct1
+{
+ u8 filler0[0x259];
+ u8 unk259;
+ u8 filler25A[6];
+ u8 unk260;
+ u8 filler261[1];
+ u8 unk262;
+ s16 unk264;
+ s16 unk266;
+};
+
+extern u8 unk_2000000[];
+
+#define EWRAM_1609D unk_2000000[0x1609D]
+#define EWRAM_1B000 (*(struct UnknownStruct1 *)(unk_2000000 + 0x1B000))
+
+#endif
diff --git a/ld_script.txt b/ld_script.txt
index 28de8a235..aa5d8f24f 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -186,6 +186,7 @@ SECTIONS {
asm/mauville_old_man.o(.text);
src/mail.o(.text);
asm/menu_helpers.o(.text);
+ src/script_pokemon_util_80F99CC.o(.text);
asm/script_pokemon_util_80F99CC.o(.text);
src/dewford_trend.o(.text);
src/heal_location.o(.text);
diff --git a/src/battle_party_menu.c b/src/battle_party_menu.c
index c6d39d5a0..dab97db9b 100644
--- a/src/battle_party_menu.c
+++ b/src/battle_party_menu.c
@@ -9,6 +9,7 @@
#include "string_util.h"
#include "task.h"
#include "text.h"
+#include "battle_party_menu.h"
struct PartyMenuItem
{
@@ -60,23 +61,6 @@ extern void sub_8094C98(u8, u8);
extern void sub_806E6F0();
extern void sub_806D538();
-struct UnknownStruct1
-{
- u8 filler0[0x259];
- u8 unk259;
- u8 filler25A[6];
- u8 unk260;
- u8 filler261[1];
- u8 unk262;
- s16 unk264;
- s16 unk266;
-};
-
-extern u8 unk_2000000[];
-
-#define EWRAM_1609D unk_2000000[0x1609D]
-#define EWRAM_1B000 (*(struct UnknownStruct1 *)(unk_2000000 + 0x1B000))
-
extern u16 gScriptItemId;
extern u8 gPlayerPartyCount;
extern u8 gUnknown_02024A68;
diff --git a/src/script_pokemon_util_80F99CC.c b/src/script_pokemon_util_80F99CC.c
new file mode 100644
index 000000000..50c5a6b8f
--- /dev/null
+++ b/src/script_pokemon_util_80F99CC.c
@@ -0,0 +1,280 @@
+#include "global.h"
+#include "script.h"
+#include "task.h"
+#include "palette.h"
+#include "battle_party_menu.h"
+
+extern u8 gPlayerPartyCount;
+
+extern void OpenPartyMenu(u8, u8);
+extern void TryCreatePartyMenuMonIcon(u8, u8, struct Pokemon *);
+extern void LoadHeldItemIconGraphics(void);
+extern void CreateHeldItemIcons_806DC34(); // undefined args
+extern u8 sub_806BD58(u8, u8);
+extern void PartyMenuPrintMonsLevelOrStatus(void);
+extern void PrintPartyMenuMonNicknames(void);
+extern void sub_80F9C00(void);
+extern u8 sub_806B58C(u8);
+
+void sub_80F9A8C(u8);
+
+void sub_80F99CC(void)
+{
+ u8 taskId;
+
+ ScriptContext2_Enable();
+ taskId = CreateTask((void *)sub_80F9A8C, 0xA);
+ gTasks[taskId].data[0] = 2;
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+}
+
+void sub_80F9A0C(void)
+{
+ u8 taskId;
+
+ ScriptContext2_Enable();
+ taskId = CreateTask((void *)sub_80F9A8C, 0xA);
+ gTasks[taskId].data[0] = 3;
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+}
+
+void sub_80F9A4C(void)
+{
+ u8 taskId;
+
+ ScriptContext2_Enable();
+ taskId = CreateTask((void *)sub_80F9A8C, 0xA);
+ gTasks[taskId].data[0] = 7;
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+}
+
+void sub_80F9A8C(u8 taskId)
+{
+ if(!gPaletteFade.active)
+ {
+ gPaletteFade.bufferTransferDisabled = 1;
+ OpenPartyMenu(gTasks[taskId].data[0], 0);
+ DestroyTask(taskId);
+ }
+}
+
+bool8 sub_80F9ACC(void)
+{
+ switch(EWRAM_1B000.unk264)
+ {
+ case 0:
+ if(EWRAM_1B000.unk266 < gPlayerPartyCount)
+ {
+ TryCreatePartyMenuMonIcon(EWRAM_1B000.unk260, EWRAM_1B000.unk266, &gPlayerParty[EWRAM_1B000.unk266]);
+ EWRAM_1B000.unk266++;
+ }
+ else
+ {
+ EWRAM_1B000.unk266 = 0;
+ EWRAM_1B000.unk264++;
+
+ }
+ break;
+ case 1:
+ LoadHeldItemIconGraphics();
+ EWRAM_1B000.unk264++;
+ break;
+ case 2:
+ CreateHeldItemIcons_806DC34(EWRAM_1B000.unk260);
+ EWRAM_1B000.unk264++;
+ break;
+ case 3:
+ if(sub_806BD58(EWRAM_1B000.unk260, EWRAM_1B000.unk266) != 1)
+ {
+ EWRAM_1B000.unk266++;
+ break;
+ }
+ else
+ {
+ EWRAM_1B000.unk266 = 0;
+ EWRAM_1B000.unk264++;
+ break;
+ }
+ case 4:
+ PartyMenuPrintMonsLevelOrStatus();
+ EWRAM_1B000.unk264++;
+ break;
+ case 5:
+ PrintPartyMenuMonNicknames();
+ EWRAM_1B000.unk264++;
+ break;
+ case 6:
+ sub_80F9C00();
+ EWRAM_1B000.unk264++;
+ break;
+ case 7: // the only case that can return true.
+ if(sub_806B58C(EWRAM_1B000.unk266) != 1)
+ {
+ EWRAM_1B000.unk266++;
+ break;
+ }
+ else
+ {
+ EWRAM_1B000.unk266 = 0;
+ EWRAM_1B000.unk264 = 0;
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+/*
+ thumb_func_start sub_80F9ACC
+sub_80F9ACC: @ 80F9ACC
+ push {r4,r5,lr}
+ ldr r1, _080F9AEC @ =0x0201b000
+ movs r2, 0x99
+ lsls r2, 2
+ adds r0, r1, r2
+ movs r2, 0
+ ldrsh r0, [r0, r2]
+ adds r4, r1, 0
+ cmp r0, 0x7
+ bls _080F9AE2
+ b _080F9BF6
+_080F9AE2:
+ lsls r0, 2
+ ldr r1, _080F9AF0 @ =_080F9AF4
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080F9AEC: .4byte 0x0201b000
+_080F9AF0: .4byte _080F9AF4
+ .align 2, 0
+_080F9AF4:
+ .4byte _080F9B14
+ .4byte _080F9B54
+ .4byte _080F9B5A
+ .4byte _080F9B6E
+ .4byte _080F9B98
+ .4byte _080F9B9E
+ .4byte _080F9BB0
+ .4byte _080F9BC8
+_080F9B14:
+ ldr r0, _080F9B3C @ =0x00000266
+ adds r5, r4, r0
+ movs r1, 0
+ ldrsh r3, [r5, r1]
+ ldr r0, _080F9B40 @ =gPlayerPartyCount
+ ldrb r0, [r0]
+ cmp r3, r0
+ bge _080F9B48
+ movs r2, 0x98
+ lsls r2, 2
+ adds r0, r4, r2
+ ldrb r0, [r0]
+ ldrb r1, [r5]
+ movs r2, 0x64
+ muls r2, r3
+ ldr r3, _080F9B44 @ =gPlayerParty
+ adds r2, r3
+ bl TryCreatePartyMenuMonIcon
+ b _080F9BF0
+ .align 2, 0
+_080F9B3C: .4byte 0x00000266
+_080F9B40: .4byte gPlayerPartyCount
+_080F9B44: .4byte gPlayerParty
+_080F9B48:
+ movs r0, 0
+ strh r0, [r5]
+ movs r0, 0x99
+ lsls r0, 2
+ adds r1, r4, r0
+ b _080F9BBC
+_080F9B54:
+ bl LoadHeldItemIconGraphics
+ b _080F9BB4
+_080F9B5A:
+ movs r1, 0x98
+ lsls r1, 2
+ adds r0, r4, r1
+ ldrb r0, [r0]
+ bl CreateHeldItemIcons_806DC34
+ movs r2, 0x99
+ lsls r2, 2
+ adds r1, r4, r2
+ b _080F9BBC
+_080F9B6E:
+ movs r1, 0x98
+ lsls r1, 2
+ adds r0, r4, r1
+ ldrb r0, [r0]
+ ldr r2, _080F9B94 @ =0x00000266
+ adds r5, r4, r2
+ ldrb r1, [r5]
+ bl sub_806BD58
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080F9BF0
+ movs r0, 0
+ strh r0, [r5]
+ movs r0, 0x99
+ lsls r0, 2
+ adds r1, r4, r0
+ b _080F9BBC
+ .align 2, 0
+_080F9B94: .4byte 0x00000266
+_080F9B98:
+ bl PartyMenuPrintMonsLevelOrStatus
+ b _080F9BB4
+_080F9B9E:
+ bl PrintPartyMenuMonNicknames
+ ldr r1, _080F9BAC @ =0x0201b000
+ movs r0, 0x99
+ lsls r0, 2
+ adds r1, r0
+ b _080F9BBC
+ .align 2, 0
+_080F9BAC: .4byte 0x0201b000
+_080F9BB0:
+ bl sub_80F9C00
+_080F9BB4:
+ ldr r1, _080F9BC4 @ =0x0201b000
+ movs r2, 0x99
+ lsls r2, 2
+ adds r1, r2
+_080F9BBC:
+ ldrh r0, [r1]
+ adds r0, 0x1
+ strh r0, [r1]
+ b _080F9BF6
+ .align 2, 0
+_080F9BC4: .4byte 0x0201b000
+_080F9BC8:
+ ldr r0, _080F9BEC @ =0x00000266
+ adds r5, r4, r0
+ ldrb r0, [r5]
+ bl sub_806B58C
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080F9BF0
+ movs r1, 0
+ strh r1, [r5]
+ movs r2, 0x99
+ lsls r2, 2
+ adds r0, r4, r2
+ strh r1, [r0]
+ movs r0, 0x1
+ b _080F9BF8
+ .align 2, 0
+_080F9BEC: .4byte 0x00000266
+_080F9BF0:
+ ldrh r0, [r5]
+ adds r0, 0x1
+ strh r0, [r5]
+_080F9BF6:
+ movs r0, 0
+_080F9BF8:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80F9ACC
+*/