summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/code_808417C.s8
-rw-r--r--asm/code_80958E8.s14
-rw-r--r--asm/wonder_mail_2.s10
-rw-r--r--asm/wonder_mail_3.s2
-rw-r--r--asm/wonder_mail_5.s312
-rw-r--r--include/code_8094F88.h2
-rw-r--r--include/global.h5
-rw-r--r--include/pokemon.h9
-rw-r--r--include/sub_8095228.h17
-rwxr-xr-xld_script.txt1
-rw-r--r--src/adventure_log.c34
-rw-r--r--src/code_8095824.c12
-rw-r--r--src/code_80972F4.c16
-rw-r--r--src/code_8097670.c6
-rw-r--r--src/code_8097DD0.c10
-rw-r--r--src/code_80A26CC.c2
-rw-r--r--src/dungeon_2.c12
-rw-r--r--src/friend_rescue_1.c22
-rw-r--r--src/music_pre.c349
-rw-r--r--src/pokemon_3.c12
-rw-r--r--src/post_office_guide.c125
-rw-r--r--src/rescue_password_menu.c2
-rw-r--r--src/thank_you_wonder_mail.c8
-rw-r--r--src/wonder_mail.c12
-rw-r--r--src/wonder_mail_2.c6
-rw-r--r--src/wonder_mail_3.c4
-rw-r--r--src/wonder_mail_802DF88.c41
27 files changed, 323 insertions, 730 deletions
diff --git a/asm/code_808417C.s b/asm/code_808417C.s
index 03b4f3b..05c90be 100644
--- a/asm/code_808417C.s
+++ b/asm/code_808417C.s
@@ -213,7 +213,7 @@ sub_80842F0:
_08084320:
lsls r0, r6, 24
lsrs r0, 24
- bl sub_8096AB4
+ bl GetJobSlotInfo
adds r4, r0, 0
ldrb r0, [r4]
cmp r0, 0x6
@@ -300,7 +300,7 @@ sub_80843BC:
_080843C6:
lsls r0, r4, 24
lsrs r0, 24
- bl sub_8096AB4
+ bl GetJobSlotInfo
adds r3, r0, 0
ldrb r0, [r3]
cmp r0, 0x6
@@ -353,7 +353,7 @@ sub_8084424:
_08084428:
lsls r0, r4, 24
lsrs r0, 24
- bl sub_8096AB4
+ bl GetJobSlotInfo
adds r1, r0, 0
ldrb r0, [r1]
cmp r0, 0x8
@@ -760,7 +760,7 @@ sub_8084778:
_08084784:
lsls r0, r4, 24
lsrs r0, 24
- bl sub_8096AB4
+ bl GetJobSlotInfo
adds r1, r0, 0
ldrb r0, [r1]
cmp r0, 0x6
diff --git a/asm/code_80958E8.s b/asm/code_80958E8.s
index e326783..904f41c 100644
--- a/asm/code_80958E8.s
+++ b/asm/code_80958E8.s
@@ -2019,7 +2019,7 @@ sub_80969D0:
_080969DA:
lsls r0, r4, 24
lsrs r0, 24
- bl sub_8096AB4
+ bl GetJobSlotInfo
adds r1, r0, 0
ldrb r0, [r1, 0x4]
cmp r0, r6
@@ -2054,7 +2054,7 @@ sub_8096A08:
_08096A14:
lsls r0, r4, 24
lsrs r0, 24
- bl sub_8096AB4
+ bl GetJobSlotInfo
adds r2, r0, 0
ldrb r0, [r2, 0x4]
cmp r0, r5
@@ -2139,8 +2139,8 @@ _08096AAE:
bx r1
thumb_func_end sub_8096A78
- thumb_func_start sub_8096AB4
-sub_8096AB4:
+ thumb_func_start GetJobSlotInfo
+GetJobSlotInfo:
lsls r0, 24
lsrs r0, 24
ldr r2, _08096AC8
@@ -2153,7 +2153,7 @@ sub_8096AB4:
bx lr
.align 2, 0
_08096AC8: .4byte gUnknown_203B490
- thumb_func_end sub_8096AB4
+ thumb_func_end GetJobSlotInfo
thumb_func_start IsJobSlotEmpty
IsJobSlotEmpty:
@@ -2191,7 +2191,7 @@ sub_8096AF8:
lsrs r0, 24
lsls r4, 24
lsrs r4, 24
- bl sub_8096AB4
+ bl GetJobSlotInfo
adds r3, r0, 0
movs r1, 0
strb r1, [r5]
@@ -2275,7 +2275,7 @@ sub_8096B98:
_08096BA0:
lsls r0, r4, 24
lsrs r0, 24
- bl sub_8096AB4
+ bl GetJobSlotInfo
adds r1, r0, 0
ldrb r0, [r1]
cmp r0, 0x6
diff --git a/asm/wonder_mail_2.s b/asm/wonder_mail_2.s
index 19e314f..96e0130 100644
--- a/asm/wonder_mail_2.s
+++ b/asm/wonder_mail_2.s
@@ -1098,7 +1098,7 @@ _0802C7B4:
adds r0, r5
adds r1, r0
ldrb r0, [r1]
- bl sub_8096AB4
+ bl GetJobSlotInfo
adds r4, r0, 0
ldr r0, [r6]
ldr r1, [r0, 0x3C]
@@ -1459,7 +1459,7 @@ _0802CA7C: .4byte gUnknown_203B2F0
_0802CA80:
ldr r0, [r4]
ldrb r0, [r0, 0xC]
- bl sub_8096AB4
+ bl GetJobSlotInfo
ldr r1, [r4]
adds r1, 0x10
bl sub_803B35C
@@ -1482,7 +1482,7 @@ sub_802CAA4:
ldr r5, _0802CAC8
ldr r0, [r5]
ldrb r0, [r0, 0xC]
- bl sub_8096AB4
+ bl GetJobSlotInfo
adds r4, r0, 0
ldr r2, [r5]
ldr r0, [r2]
@@ -1759,7 +1759,7 @@ _0802CCD8:
ldr r0, _0802CCF0
ldr r0, [r0]
ldrb r0, [r0, 0xC]
- bl sub_8096AB4
+ bl GetJobSlotInfo
movs r1, 0x6
b _0802CD06
.align 2, 0
@@ -1771,7 +1771,7 @@ _0802CCF4:
ldr r0, _0802CD14
ldr r0, [r0]
ldrb r0, [r0, 0xC]
- bl sub_8096AB4
+ bl GetJobSlotInfo
movs r1, 0x5
_0802CD06:
strb r1, [r0]
diff --git a/asm/wonder_mail_3.s b/asm/wonder_mail_3.s
index 043c1e7..0f14aa9 100644
--- a/asm/wonder_mail_3.s
+++ b/asm/wonder_mail_3.s
@@ -662,7 +662,7 @@ sub_802DAA8:
ldr r4, _0802DAD0
ldr r0, [r4]
ldrb r0, [r0, 0x10]
- bl sub_8096AB4
+ bl GetJobSlotInfo
adds r1, r0, 0
ldr r4, [r4]
ldrb r0, [r4, 0x9]
diff --git a/asm/wonder_mail_5.s b/asm/wonder_mail_5.s
deleted file mode 100644
index 86b83e0..0000000
--- a/asm/wonder_mail_5.s
+++ /dev/null
@@ -1,312 +0,0 @@
- #include "asm/constants/gba_constants.inc"
- #include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start DisplayMissionObjectives
-DisplayMissionObjectives:
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xDC
- ldr r7, _08031B24
- ldr r0, [r7]
- ldr r0, [r0, 0x10]
- bl sub_80073B8
- ldr r2, _08031B28
- ldr r0, [r7]
- ldr r3, [r0, 0x10]
- movs r6, 0
- str r6, [sp]
- movs r0, 0xA
- movs r1, 0
- bl xxx_call_draw_string
- ldr r1, [r7]
- ldrb r0, [r1, 0xC]
- cmp r0, 0x1
- beq _08031B2C
- cmp r0, 0x1
- bgt _08031B1E
- b _08031CD4
-_08031B1E:
- cmp r0, 0x2
- beq _08031B94
- b _08031CD4
- .align 2, 0
-_08031B24: .4byte gUnknown_203B330
-_08031B28: .4byte gUnknown_80E1F30
-_08031B2C:
- add r4, sp, 0x68
- adds r0, r4, 0
- bl sub_8099394
- ldrb r0, [r4]
- bl sub_8095228
- adds r5, r0, 0
- ldr r0, [r7]
- ldr r3, [r0, 0x10]
- movs r0, 0xA
- movs r1, 0x10
- movs r2, 0x3
- bl sub_803B6B0
- ldr r1, _08031B8C
- ldrb r2, [r5, 0x5]
- add r0, sp, 0x4
- bl sprintf_2
- ldr r0, [r7]
- ldr r3, [r0, 0x10]
- str r6, [sp]
- movs r0, 0x15
- movs r1, 0x10
- add r2, sp, 0x4
- bl xxx_call_draw_string
- ldr r4, _08031B90
- movs r1, 0xC
- ldrsh r0, [r5, r1]
- bl GetMonSpecies
- adds r2, r0, 0
- add r0, sp, 0x4
- adds r1, r4, 0
- bl sprintf_2
- ldr r0, [r7]
- ldr r3, [r0, 0x10]
- str r6, [sp]
- movs r0, 0x28
- movs r1, 0x10
- add r2, sp, 0x4
- bl xxx_call_draw_string
- b _08031D4E
- .align 2, 0
-_08031B8C: .4byte gUnknown_80E1F3C
-_08031B90: .4byte gUnknown_80E1F40
-_08031B94:
- ldrb r0, [r1, 0xD]
- bl sub_80969D0
- adds r1, r0, 0
- cmp r1, 0
- bne _08031BB0
- ldr r2, _08031BAC
- ldr r0, [r7]
- ldr r3, [r0, 0x10]
- str r1, [sp]
- b _08031D2C
- .align 2, 0
-_08031BAC: .4byte gUnknown_80E1F54
-_08031BB0:
- movs r6, 0x10
- movs r2, 0
- mov r10, r2
- mov r8, r2
- ldr r0, _08031C28
- mov r9, r0
- mov r1, sp
- adds r1, 0x6C
- str r1, [sp, 0xD8]
-_08031BC2:
- mov r2, r10
- lsls r0, r2, 24
- lsrs r0, 24
- bl sub_8096AB4
- adds r4, r0, 0
- ldr r1, [r7]
- ldrb r0, [r4, 0x4]
- ldrb r2, [r1, 0xD]
- cmp r0, r2
- bne _08031CC2
- ldrb r0, [r4]
- cmp r0, 0
- beq _08031CC2
- cmp r0, 0x5
- beq _08031CC2
- cmp r0, 0x7
- beq _08031CC2
- ldr r3, [r1, 0x10]
- movs r0, 0xA
- adds r1, r6, 0
- movs r2, 0x3
- bl sub_803B6B0
- ldrb r0, [r4, 0x1]
- add r5, sp, 0x6C
- cmp r0, 0x3
- beq _08031C16
- ldrb r2, [r4, 0x5]
- ldr r0, [sp, 0xD8]
- ldr r1, _08031C2C
- bl sprintf_2
- ldr r0, [r7]
- ldr r3, [r0, 0x10]
- mov r0, r8
- str r0, [sp]
- movs r0, 0x15
- adds r1, r6, 0
- ldr r2, [sp, 0xD8]
- bl xxx_call_draw_string
-_08031C16:
- ldrb r0, [r4, 0x1]
- cmp r0, 0x3
- beq _08031C58
- cmp r0, 0x3
- bgt _08031C30
- cmp r0, 0x2
- beq _08031C70
- b _08031C9C
- .align 2, 0
-_08031C28: .4byte gUnknown_202DE58
-_08031C2C: .4byte gUnknown_80E1F3C
-_08031C30:
- cmp r0, 0x4
- bne _08031C9C
- ldrb r1, [r4, 0x10]
- mov r0, r9
- movs r2, 0
- bl sub_8090DC4
- adds r0, r5, 0
- ldr r1, _08031C54
- mov r2, r9
- bl sprintf_2
- ldr r0, [r7]
- ldr r3, [r0, 0x10]
- mov r1, r8
- str r1, [sp]
- b _08031C8A
- .align 2, 0
-_08031C54: .4byte gUnknown_80E1F60
-_08031C58:
- ldrb r1, [r4, 0x10]
- mov r0, r9
- movs r2, 0
- bl sub_8090DC4
- adds r0, r5, 0
- ldr r1, _08031C6C
- mov r2, r9
- b _08031C7E
- .align 2, 0
-_08031C6C: .4byte gUnknown_80E1F70
-_08031C70:
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- bl GetMonSpecies
- adds r2, r0, 0
- adds r0, r5, 0
- ldr r1, _08031C98
-_08031C7E:
- bl sprintf_2
- ldr r0, [r7]
- ldr r3, [r0, 0x10]
- mov r2, r8
- str r2, [sp]
-_08031C8A:
- movs r0, 0x28
- adds r1, r6, 0
- adds r2, r5, 0
- bl xxx_call_draw_string
- b _08031CC0
- .align 2, 0
-_08031C98: .4byte gUnknown_80E1F80
-_08031C9C:
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- bl GetMonSpecies
- adds r2, r0, 0
- adds r0, r5, 0
- ldr r1, _08031CD0
- bl sprintf_2
- ldr r0, [r7]
- ldr r3, [r0, 0x10]
- mov r2, r8
- str r2, [sp]
- movs r0, 0x28
- adds r1, r6, 0
- adds r2, r5, 0
- bl xxx_call_draw_string
-_08031CC0:
- adds r6, 0xC
-_08031CC2:
- movs r0, 0x1
- add r10, r0
- mov r1, r10
- cmp r1, 0x7
- bgt _08031CCE
- b _08031BC2
-_08031CCE:
- b _08031D4E
- .align 2, 0
-_08031CD0: .4byte gUnknown_80E1F40
-_08031CD4:
- add r0, sp, 0xD0
- mov r4, sp
- adds r4, 0xD2
- adds r1, r4, 0
- bl sub_80992E0
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- beq _08031D04
- movs r2, 0
- ldrsh r0, [r4, r2]
- bl GetCurrentMissionText
- adds r2, r0, 0
- ldr r0, _08031D00
- ldr r0, [r0]
- ldr r3, [r0, 0x10]
- movs r0, 0
- str r0, [sp]
- b _08031D2C
- .align 2, 0
-_08031D00: .4byte gUnknown_203B330
-_08031D04:
- add r4, sp, 0xD4
- adds r0, r4, 0
- bl sub_8099360
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- beq _08031D3C
- ldrb r0, [r4]
- bl sub_80A2688
- lsls r0, 16
- asrs r0, 16
- bl sub_80975DC
- adds r2, r0, 0
- ldr r0, _08031D38
- ldr r0, [r0]
- ldr r3, [r0, 0x10]
- str r5, [sp]
-_08031D2C:
- movs r0, 0xA
- movs r1, 0x10
- bl xxx_call_draw_string
- b _08031D4E
- .align 2, 0
-_08031D38: .4byte gUnknown_203B330
-_08031D3C:
- ldr r2, _08031D68
- ldr r0, _08031D6C
- ldr r0, [r0]
- ldr r3, [r0, 0x10]
- str r1, [sp]
- movs r0, 0xA
- movs r1, 0x10
- bl xxx_call_draw_string
-_08031D4E:
- ldr r0, _08031D6C
- ldr r0, [r0]
- ldr r0, [r0, 0x10]
- bl sub_80073E0
- add sp, 0xDC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08031D68: .4byte gUnknown_80E1F94
-_08031D6C: .4byte gUnknown_203B330
- thumb_func_end DisplayMissionObjectives
-
- .align 2,0
diff --git a/include/code_8094F88.h b/include/code_8094F88.h
index 32ef7a5..9af6c7a 100644
--- a/include/code_8094F88.h
+++ b/include/code_8094F88.h
@@ -4,7 +4,7 @@
struct unkStruct_203B480
{
u8 unk0;
- struct unkPokeSubStruct_4 unk4;
+ struct DungeonLocation unk4;
u32 unk8;
u32 unkC;
u32 unk10;
diff --git a/include/global.h b/include/global.h
index 81388a8..5c71009 100644
--- a/include/global.h
+++ b/include/global.h
@@ -32,4 +32,9 @@
#define ARRAY_COUNT(array) (sizeof(array) / sizeof((array)[0]))
+struct DungeonLocation {
+ u8 dungeonIndex;
+ u8 dungeonFloor;
+};
+
#endif // GUARD_GLOBAL_H
diff --git a/include/pokemon.h b/include/pokemon.h
index c50dc75..6b514c8 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -19,11 +19,6 @@ struct Offense {
u8 def[2];
};
-struct unkPokeSubStruct_4 {
- u8 dungeonIndex;
- u8 dungeonFloor;
-};
-
struct unkPokeSubStruct_C
{
u8 unk0;
@@ -36,7 +31,7 @@ struct PokemonStruct
/* 0x0 */ u16 unk0; // recruited??
/* 0x1 */ bool8 isLeader;
/* 0x3 */ u8 unkHasNextStage; // set to a random value?
- /* 0x4 */ struct unkPokeSubStruct_4 unk4;
+ /* 0x4 */ struct DungeonLocation unk4;
/* 0x8 */ s16 speciesNum; // species #
/* 0xC */ struct unkPokeSubStruct_C unkC[2];
/* 0x14 */ s16 IQ;
@@ -77,7 +72,7 @@ struct PokemonStruct2
u16 unk0; // corresponds to unk0 inPokemonStruct
bool8 isLeader; // unk2
u8 unkHasNextStage; // unk3
- struct unkPokeSubStruct_4 unk4; // unk4
+ struct DungeonLocation unk4; // unk4
u16 IQ; // IQ (other offset)
u16 unkA;
u16 unkC;
diff --git a/include/sub_8095228.h b/include/sub_8095228.h
index 3fd5993..9541d20 100644
--- a/include/sub_8095228.h
+++ b/include/sub_8095228.h
@@ -3,13 +3,16 @@
struct unkStruct_8095228
{
- u8 unk0;
- u8 unk1;
- u8 unk2;
- u8 unk3;
- u8 unk4;
- u8 padding[0x10 - 0x5];
- u32 unk10;
+ /* 0x0 */ u8 mailType; // mail type
+ /* 0x1 */ u8 missionType; // mission type
+ /* 0x2 */ u8 unk2;
+ /* 0x3 */ u8 unk3;
+ /* 0x4 */ u8 dungeon; // dungeon
+ /* 0x5 */ u8 floor; // floor
+ /* 0x8 */ u32 unk8;
+ /* 0xC */ s16 clientSpecies; // client pokemon
+ /* 0xE */ s16 targetSpecies; // target
+ u32 unk10; // TODO: verify that this is just a union of the 4 bytes in Wonder Mail
u8 padding2[0x20 - 0x14];
struct ItemSlot unk20;
u8 padding3[0x28 - 0x24];
diff --git a/ld_script.txt b/ld_script.txt
index 13ffffd..87983a0 100755
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -143,7 +143,6 @@ SECTIONS {
src/wonder_mail_4.o(.text);
asm/wonder_mail_4.o(.text);
src/post_office_guide.o(.text);
- asm/wonder_mail_5.o(.text);
asm/code_8031D70.o(.text);
src/adventure_log.o(.text);
src/friend_rescue.o(.text);
diff --git a/src/adventure_log.c b/src/adventure_log.c
index 9480361..bf0424b 100644
--- a/src/adventure_log.c
+++ b/src/adventure_log.c
@@ -202,29 +202,30 @@ void sub_8032084(void)
}
#endif
-// Uses 1 too many regs
+// Mostly matches except around the switch
#ifdef NONMATCHING
void DisplayAdventureLog(void)
{
s32 counter;
- s32 iVar5;
- u32 uVar6;
+ s32 r4; // r4
+ s32 r6; // r6
u8 temp;
sub_8008C54(gAdventureLog->unk34);
sub_80073B8(gAdventureLog->unk34);
- iVar5 = gAdventureLog->currPage * 8;
- iVar5 += 10;
+ r4 = gAdventureLog->currPage * 8;
+ r6 = r4;
+ r6 += 10;
// Draw Header
- xxx_call_draw_string(iVar5, 0, gAdventureLogHeaderText, gAdventureLog->unk34, 0);
- iVar5 += 4;
- iVar5 += gAdventureLog->unk9E * 8;
+ xxx_call_draw_string(r6, 0, gAdventureLogHeaderText, gAdventureLog->unk34, 0);
+ r4 += 4;
+ r6 = r4 + gAdventureLog->unk9E * 8;
// Draw Page #
- sub_8012BC4(iVar5, 0, gAdventureLog->currPage + 1, 1, 7, gAdventureLog->unk34);
- counter = 0;
- do {
- uVar6 = gAdventureLog->currPage * gAdventureLog->unk1C + counter;
- temp = uVar6; // Having another var in middle gets close (does a u8 cast)
+ sub_8012BC4(r6, 0, gAdventureLog->currPage + 1, 1, 7, gAdventureLog->unk34);
+
+ for(counter = 0; counter < gAdventureLog->unk1A; counter++)
+ {
+ temp = gAdventureLog->currPage * gAdventureLog->unk1C + counter;
if(sub_8097710(temp)){
switch(temp) {
case 0xc:
@@ -248,16 +249,15 @@ void DisplayAdventureLog(void)
default:
break;
}
- xxx_format_and_draw(8, sub_8013800(gAdventureLog, counter), GetAdventureLogLine(uVar6), gAdventureLog->unk34, 0);
+ xxx_format_and_draw(8, sub_8013800(gAdventureLog, counter), GetAdventureLogLine(temp), gAdventureLog->unk34, 0);
}
else
{
// Draw the ?????????? across the row
xxx_call_draw_string(8, sub_8013800(gAdventureLog, counter), gUnknown_80E2030, gAdventureLog->unk34, 0);
}
- counter++;
- } while(counter < gAdventureLog->unk1A);
- sub_80073E0(gAdventureLog->unk34);
+ }
+ sub_80073E0(gAdventureLog->unk34);
}
#else
NAKED
diff --git a/src/code_8095824.c b/src/code_8095824.c
index 8792545..938b47f 100644
--- a/src/code_8095824.c
+++ b/src/code_8095824.c
@@ -6,8 +6,8 @@ extern struct unkStruct_203B484 *gUnknown_203B484;
extern struct unkStruct_203B480 *gUnknown_203B480;
extern struct unkStruct_203B48C *gUnknown_203B48C;
-extern void xxx_save_poke_sub_4_80902F4(struct unkStruct_8094924*, struct unkPokeSubStruct_4*);
-extern void xxx_restore_poke_sub_4_8090314(struct unkStruct_8094924*, struct unkPokeSubStruct_4*);
+extern void SaveDungeonLocation(struct unkStruct_8094924*, struct DungeonLocation*);
+extern void RestoreDungeonLocation(struct unkStruct_8094924*, struct DungeonLocation*);
extern void xxx_save_poke_sub_c_808F41C(struct unkStruct_8094924* a1, struct unkPokeSubStruct_C* unkC);
extern void xxx_restore_poke_sub_c_808F410(struct unkStruct_8094924*, struct unkPokeSubStruct_C*);
extern void SavePokemonMoves(struct unkStruct_8094924 *r0, struct PokemonMove *moveSet);
@@ -42,7 +42,7 @@ u32 sub_80954CC(u8 *a, u32 b)
RestoreIntegerBits(&backup, &temp->unk0, 2);
RestoreIntegerBits(&backup, &temp->isLeader, 1);
RestoreIntegerBits(&backup, &temp->unkHasNextStage, 7);
- xxx_restore_poke_sub_4_8090314(&backup, &temp->unk4);
+ RestoreDungeonLocation(&backup, &temp->unk4);
RestoreIntegerBits(&backup, &temp->speciesNum, 9);
xxx_restore_poke_sub_c_808F410(&backup, &temp->unkC[0]);
xxx_restore_poke_sub_c_808F410(&backup, &temp->unkC[1]);
@@ -84,7 +84,7 @@ u32 sub_8095624(u8 *a, u32 b)
SaveIntegerBits(&backup, &temp->unk0, 2);
SaveIntegerBits(&backup, &temp->isLeader, 1);
SaveIntegerBits(&backup, &temp->unkHasNextStage, 7);
- xxx_save_poke_sub_4_80902F4(&backup, &temp->unk4);
+ SaveDungeonLocation(&backup, &temp->unk4);
SaveIntegerBits(&backup, &temp->speciesNum, 9);
xxx_save_poke_sub_c_808F41C(&backup, &temp->unkC[0]);
xxx_save_poke_sub_c_808F41C(&backup, &temp->unkC[1]);
@@ -115,7 +115,7 @@ void sub_8095774(struct unkStruct_8094924 * a, struct unkStruct_203B480 *b)
u8 temp;
RestoreIntegerBits(a, &b->unk0, 4);
- xxx_restore_poke_sub_4_8090314(a, &b->unk4);
+ RestoreDungeonLocation(a, &b->unk4);
RestoreIntegerBits(a, &b->unk8, 0x18);
RestoreIntegerBits(a, &b->unkC, 0x9);
RestoreIntegerBits(a, &b->unk10, 0x20);
@@ -140,7 +140,7 @@ void sub_8095824(struct unkStruct_8094924 * a, struct unkStruct_203B480 *b)
zero = 0;
SaveIntegerBits(a, &b->unk0, 4);
- xxx_save_poke_sub_4_80902F4(a, &b->unk4);
+ SaveDungeonLocation(a, &b->unk4);
SaveIntegerBits(a, &b->unk8, 0x18);
SaveIntegerBits(a, &b->unkC, 0x9);
SaveIntegerBits(a, &b->unk10, 0x20);
diff --git a/src/code_80972F4.c b/src/code_80972F4.c
index c0fa1a3..1c7e125 100644
--- a/src/code_80972F4.c
+++ b/src/code_80972F4.c
@@ -2,8 +2,8 @@
#include "pokemon.h"
#include "wonder_mail.h"
-extern void xxx_save_poke_sub_4_80902F4(struct unkStruct_8094924*, struct unkPokeSubStruct_4*);
-extern void xxx_restore_poke_sub_4_8090314(struct unkStruct_8094924*, struct unkPokeSubStruct_4*);
+extern void SaveDungeonLocation(struct unkStruct_8094924*, struct DungeonLocation*);
+extern void RestoreDungeonLocation(struct unkStruct_8094924*, struct DungeonLocation*);
extern void sub_80015C0(u32, u32);
struct unkStruct_8097270
@@ -11,7 +11,7 @@ struct unkStruct_8097270
u8 unk0;
u8 unk1;
u8 unk2;
- struct unkPokeSubStruct_4 unk4;
+ struct DungeonLocation unk4;
u32 unk8;
u16 unkC;
u16 unkE;
@@ -24,7 +24,7 @@ struct unkStruct_8097270
struct subStruct_203B490
{
// size: 0xC
- struct unkPokeSubStruct_4 unk0;
+ struct DungeonLocation unk0;
u32 unk4;
u32 unk8;
};
@@ -109,7 +109,7 @@ u32 sub_8096FA0(u8 *r0, u32 size)
{
RestoreIntegerBits(&backup, &gUnknown_203B490->unk230[index].unk8, 0x20);
RestoreIntegerBits(&backup, &gUnknown_203B490->unk230[index].unk4, 0x18);
- xxx_restore_poke_sub_4_8090314(&backup, &gUnknown_203B490->unk230[index].unk0);
+ RestoreDungeonLocation(&backup, &gUnknown_203B490->unk230[index].unk0);
}
nullsub_102(&backup);
return backup.unk8;
@@ -153,7 +153,7 @@ u32 sub_80970D8(u8 *r0, u32 size)
{
SaveIntegerBits(&backup, &gUnknown_203B490->unk230[index].unk8, 0x20);
SaveIntegerBits(&backup, &gUnknown_203B490->unk230[index].unk4, 0x18);
- xxx_save_poke_sub_4_80902F4(&backup, &gUnknown_203B490->unk230[index].unk0);
+ SaveDungeonLocation(&backup, &gUnknown_203B490->unk230[index].unk0);
}
nullsub_102(&backup);
return backup.unk8;
@@ -171,7 +171,7 @@ void sub_80971EC(struct unkStruct_8094924 *a, struct unkStruct_8097270 *b)
RestoreIntegerBits(a, &b->unk12, 8);
RestoreIntegerBits(a, &b->unk13, 6);
RestoreIntegerBits(a, &b->unk8, 0x18);
- xxx_restore_poke_sub_4_8090314(a, &b->unk4);
+ RestoreDungeonLocation(a, &b->unk4);
}
void sub_8097270(struct unkStruct_8094924 *a, struct unkStruct_8097270 *b)
@@ -186,7 +186,7 @@ void sub_8097270(struct unkStruct_8094924 *a, struct unkStruct_8097270 *b)
SaveIntegerBits(a, &b->unk12, 8);
SaveIntegerBits(a, &b->unk13, 6);
SaveIntegerBits(a, &b->unk8, 0x18);
- xxx_save_poke_sub_4_80902F4(a, &b->unk4);
+ SaveDungeonLocation(a, &b->unk4);
}
void sub_80972F4(void)
diff --git a/src/code_8097670.c b/src/code_8097670.c
index a918ac9..e2b3723 100644
--- a/src/code_8097670.c
+++ b/src/code_8097670.c
@@ -8,7 +8,7 @@ struct unkStruct_203B494
s32 numAdventures;
s32 unk8;
s32 unkC;
- struct unkPokeSubStruct_4 dungeonLocation;
+ struct DungeonLocation dungeonLocation;
s16 unk14;
s16 unk16;
s16 unk18;
@@ -33,13 +33,13 @@ struct unkStruct_203B494 *sub_8097680(void)
return &gUnknown_2039778;
}
-void SetDungeonLocationInfo(struct unkPokeSubStruct_4 *r0)
+void SetDungeonLocationInfo(struct DungeonLocation *r0)
{
gUnknown_203B494->dungeonLocation.dungeonIndex = r0->dungeonIndex;
gUnknown_203B494->dungeonLocation.dungeonFloor = r0->dungeonFloor;
}
-struct unkPokeSubStruct_4 *GetDungeonLocationInfo(void)
+struct DungeonLocation *GetDungeonLocationInfo(void)
{
return &gUnknown_203B494->dungeonLocation;
}
diff --git a/src/code_8097DD0.c b/src/code_8097DD0.c
index e5d4966..abbb02e 100644
--- a/src/code_8097DD0.c
+++ b/src/code_8097DD0.c
@@ -9,7 +9,7 @@ struct unkStruct_203B494
s32 numAdventures;
s32 unk8;
s32 unkC;
- struct unkPokeSubStruct_4 dungeonLocation;
+ struct DungeonLocation dungeonLocation;
s16 unk14;
s16 unk16;
s16 unk18;
@@ -21,8 +21,8 @@ struct unkStruct_203B494
extern struct unkStruct_203B494 *gUnknown_203B494;
-extern void xxx_save_poke_sub_4_80902F4(struct unkStruct_8094924*, struct unkPokeSubStruct_4*);
-extern void xxx_restore_poke_sub_4_8090314(struct unkStruct_8094924*, struct unkPokeSubStruct_4*);
+extern void SaveDungeonLocation(struct unkStruct_8094924*, struct DungeonLocation*);
+extern void RestoreDungeonLocation(struct unkStruct_8094924*, struct DungeonLocation*);
void ReadExclusivePokemon(struct unkStruct_8094924 *r0);
void ReadGameOptions(struct unkStruct_8094924 *param_1);
void ReadPlayTime(struct unkStruct_8094924 *r0);
@@ -46,7 +46,7 @@ void sub_8097C18(struct unkStruct_8094924 *r0)
SaveIntegerBits(r0, gUnknown_203B494->unk1C, 0xE0 << 1);
SaveIntegerBits(r0, gUnknown_203B494->unk54, 0xE0 << 1);
SaveIntegerBits(r0, gUnknown_203B494->unk8C, 0xD0 << 1);
- xxx_save_poke_sub_4_80902F4(r0, &gUnknown_203B494->dungeonLocation);
+ SaveDungeonLocation(r0, &gUnknown_203B494->dungeonLocation);
}
void sub_8097CC0(struct unkStruct_8094924 *r0)
@@ -62,7 +62,7 @@ void sub_8097CC0(struct unkStruct_8094924 *r0)
RestoreIntegerBits(r0, gUnknown_203B494->unk1C, 0xE0 << 1);
RestoreIntegerBits(r0, gUnknown_203B494->unk54, 0xE0 << 1);
RestoreIntegerBits(r0, gUnknown_203B494->unk8C, 0xD0 << 1);
- xxx_restore_poke_sub_4_8090314(r0, &gUnknown_203B494->dungeonLocation);
+ RestoreDungeonLocation(r0, &gUnknown_203B494->dungeonLocation);
}
u32 sub_8097D60(u8 *r0, u32 size)
diff --git a/src/code_80A26CC.c b/src/code_80A26CC.c
index bc5f60e..b18cf5f 100644
--- a/src/code_80A26CC.c
+++ b/src/code_80A26CC.c
@@ -61,7 +61,7 @@ s32 sub_80A2668(u32 r0)
}
}
-u32 sub_80A2688(u8 r0, u32 r1)
+u32 sub_80A2688(u8 r0)
{
u32 uVar1;
diff --git a/src/dungeon_2.c b/src/dungeon_2.c
index 18b6fe5..282ac99 100644
--- a/src/dungeon_2.c
+++ b/src/dungeon_2.c
@@ -11,7 +11,7 @@ extern const char gUnknown_8108F2C[];
extern u8 gUnknown_81077A8[];
extern u8 gUnknown_81077E8[];
-void sub_80901D8(struct unkPokeSubStruct_4 *param_1,struct unkPokeSubStruct_4 *param_2)
+void sub_80901D8(struct DungeonLocation *param_1,struct DungeonLocation *param_2)
{
if ((u8)(param_2->dungeonIndex - DUNGEON_NORMAL_MAZE_2) < NUM_DUNGEON_MAZE) {
param_1->dungeonIndex = DUNGEON_NORMAL_MAZE;
@@ -22,12 +22,12 @@ void sub_80901D8(struct unkPokeSubStruct_4 *param_1,struct unkPokeSubStruct_4 *p
}
}
-void PrintYellowDungeonNametoBuffer(u8 *buffer, struct unkPokeSubStruct_4 *dungeonLocation)
+void PrintYellowDungeonNametoBuffer(u8 *buffer, struct DungeonLocation *dungeonLocation)
{
sprintf_2(buffer, gUnknown_8108F10, gDungeonNames[dungeonLocation->dungeonIndex].name1); // {COLOR_2 YELLOW_4}%s{END_COLOR_TEXT_2} (normal floor print (no B)
}
-void PrintDungeonLocationtoBuffer(u8 *buffer, struct unkPokeSubStruct_4 *dungeonLocation)
+void PrintDungeonLocationtoBuffer(u8 *buffer, struct DungeonLocation *dungeonLocation)
{
if(gDungeons[dungeonLocation->dungeonIndex].stairDirection != 0){
sprintf_2(buffer, gUnknown_8108F18, gDungeonNames[dungeonLocation->dungeonIndex].name1, dungeonLocation->dungeonFloor); //_F
@@ -38,7 +38,7 @@ void PrintDungeonLocationtoBuffer(u8 *buffer, struct unkPokeSubStruct_4 *dungeon
}
}
-void CopyDungeonName1toBuffer(u8 *buffer, struct unkPokeSubStruct_4 *dungeonLocation)
+void CopyDungeonName1toBuffer(u8 *buffer, struct DungeonLocation *dungeonLocation)
{
strncpy(buffer, gDungeonNames[dungeonLocation->dungeonIndex].name1, 0x50);
}
@@ -63,13 +63,13 @@ u8 sub_80902C8(u8 dungeon)
return gUnknown_81077E8[dungeon];
}
-void xxx_save_poke_sub_4_80902F4(struct unkStruct_8094924* r0, struct unkPokeSubStruct_4* r1)
+void SaveDungeonLocation(struct unkStruct_8094924* r0, struct DungeonLocation* r1)
{
SaveIntegerBits(r0, &r1->dungeonIndex, 0x7);
SaveIntegerBits(r0, &r1->dungeonFloor, 0x7);
}
-void xxx_restore_poke_sub_4_8090314(struct unkStruct_8094924* r0, struct unkPokeSubStruct_4* r1)
+void RestoreDungeonLocation(struct unkStruct_8094924* r0, struct DungeonLocation* r1)
{
r1->dungeonIndex = 0;
r1->dungeonFloor = 0;
diff --git a/src/friend_rescue_1.c b/src/friend_rescue_1.c
index f7a74ef..c3571c0 100644
--- a/src/friend_rescue_1.c
+++ b/src/friend_rescue_1.c
@@ -82,10 +82,10 @@ extern void sub_8023DA4(void);
extern void sub_8035D1C(void);
extern u16 sub_8023B44(void);
-extern u32 sub_8039068(u32, u8 *r1, u8 *r0);
+extern u32 sub_8039068(u32, u8 *r1, struct unkStruct_8095228 *r0);
extern void sub_8095274(u32);
-extern void sub_80951BC(u8 *r0);
-extern void sub_80951FC(u8 *r0);
+extern void sub_80951BC(struct unkStruct_8095228 *r0);
+extern void sub_80951FC(struct unkStruct_8095228 *r0);
extern u8 sub_809539C(u32, u32);
extern u8 sub_800D588(void);
extern u32 sub_8095324(u32);
@@ -455,7 +455,7 @@ void sub_8033DBC(void)
default:
break;
}
- switch(sub_8039068(input_var, gUnknown_203B33C->passwordBuffer, &temp.unk0))
+ switch(sub_8039068(input_var, gUnknown_203B33C->passwordBuffer, &temp))
{
case 17:
sub_8014248(gUnknown_80E48A8, 0, 6, gUnknown_80E2290, 0, 4, 0, 0, 0x101);
@@ -471,8 +471,8 @@ void sub_8033DBC(void)
break;
case 22:
sub_8095274(temp.unk10);
- temp.unk0 = 2; // Some sort of Ack?
- sub_80951BC(&temp.unk0);
+ temp.mailType = 2;
+ sub_80951BC(&temp);
sub_80141B4(gUnknown_80E4928, 0, 0, 0x101);
SetFriendRescueMenuState(0x16);
break;
@@ -485,10 +485,10 @@ void sub_8033DBC(void)
SetFriendRescueMenuState(8);
break;
case 23:
- temp.unk0 = 5; // Some sort of Ack?
- sub_80951FC(&temp.unk0);
+ temp.mailType = 5;
+ sub_80951FC(&temp);
temp2 = sub_8095228(sub_809539C(1, temp.unk10));
- temp2->unk0 = 7;
+ temp2->mailType = 7;
MemoryFill8((u8 *)gUnknown_203B484, 0, sizeof(struct unkStruct_203B484));
SetFriendRescueMenuState(0x40);
break;
@@ -1340,7 +1340,7 @@ void sub_8034D74(void)
switch(return_var)
{
case 3:
- switch(sub_8039068(0x20, gUnknown_203B33C->passwordBuffer, &temp.unk0))
+ switch(sub_8039068(0x20, gUnknown_203B33C->passwordBuffer, &temp))
{
case 17:
sub_8014248(gUnknown_80E48A8, 0, 6, gUnknown_80E2440, 0, 4, 0, 0, 0x101);
@@ -1357,7 +1357,7 @@ void sub_8034D74(void)
case 24:
temp2 = sub_8095228(sub_809539C(4, temp.unk10));
*temp2 = temp;
- temp2->unk0 = 6; // Some sort of Ack?
+ temp2->mailType = 6;
gUnknown_203B33C->unk420 = temp.unk10;
SetFriendRescueMenuState(0x6D);
break;
diff --git a/src/music_pre.c b/src/music_pre.c
index 95940aa..3bac474 100644
--- a/src/music_pre.c
+++ b/src/music_pre.c
@@ -407,7 +407,7 @@ void InitMusic(void)
gBGMusicPlayerState = 0;
gCurrentBGSong = 999;
gUnknown_202D68C = 999;
- gUnknown_202D68E = 0x3e5;
+ gUnknown_202D68E = 997;
gUnknown_202D690 = 0;
gUnknown_202D692 = 0;
gUnknown_202D694 = 0;
@@ -415,7 +415,7 @@ void InitMusic(void)
for(counter = 0, preload = &gUnknown_3000FD8[0]; counter < 8; counter++, preload++)
{
preload->unk0 = 0;
- preload->songIndex = 0x3e5;
+ preload->songIndex = 997;
preload->unk4 = 0;
preload->unk6 = 0;
}
@@ -425,8 +425,8 @@ void InitMusic(void)
void sub_800BDDC(void)
{
sub_800BF80();
- sub_800C298(0x3e6);
- sub_800C298(0x3e5);
+ sub_800C298(998);
+ sub_800C298(997);
}
@@ -583,52 +583,53 @@ u16 GetCurrentBGSong(void)
return gCurrentBGSong;
}
-#ifdef NONMATCHING
-// TODO fix reg allocation.. using one too many regs
void sub_800C074(u16 SongIndex, u16 param_2)
{
bool8 interrupt_flag;
+ bool8 interrupt_flag2;
u16 msVar;
struct unkStruct_3000FD8 *preload;
- if (SongIndex == 0x3e5)
+ if (SongIndex == 997)
return;
- if (256 < param_2)
+ if (param_2 > 256)
param_2 = 256;
if (sub_800CACC(SongIndex))
{
- msVar = GetMusicPlayerIndex(SongIndex);
- if (msVar == 1) {
+ if (GetMusicPlayerIndex(SongIndex) == 1) {
interrupt_flag = DisableInterrupts();
gUnknown_202D68E = SongIndex;
if(gUnknown_202D690 == 0)
{
if (gCurrentBGSong != 999)
{
- if ((u16)(gBGMusicPlayerState - 1U) < 2)
+ if ((u16)(gBGMusicPlayerState - 1) < 2)
{
- gUnknown_202D690 = msVar;
+ gUnknown_202D690 = 1;
gUnknown_202D692 = 16;
gUnknown_202D694 = 0;
- m4aMPlayFadeOutTemporarily(&gMPlayInfo_BGM,1);
+ m4aMPlayFadeOutTemporarily(&gMPlayInfo_BGM, 1);
}
- else
+ else if (gBGMusicPlayerState == 3)
+ gUnknown_202D690 = 2;
+ else
{
- if (gBGMusicPlayerState == 3)
- gUnknown_202D690 = 2;
- else
- {
- gUnknown_202D690 = 3;
- m4aMPlayStop(&gMPlayInfo_BGM);
- m4aSongNumStart(gUnknown_202D68E);
- }
+ gUnknown_202D690 = 3;
+ m4aMPlayStop(&gMPlayInfo_BGM);
+ m4aSongNumStart(gUnknown_202D68E);
}
}
+ else
+ {
+ gUnknown_202D690 = 3;
+ m4aMPlayStop(&gMPlayInfo_BGM);
+ m4aSongNumStart(gUnknown_202D68E);
+ }
}
else
{
- if (1 < (u16)(gUnknown_202D690 - 1U))
+ if (1 < (u16)(gUnknown_202D690 - 1))
{
m4aMPlayStop(&gMPlayInfo_BGM);
m4aSongNumStart(gUnknown_202D68E);
@@ -675,230 +676,24 @@ void sub_800C074(u16 SongIndex, u16 param_2)
nullsub_20(SongIndex);
else
{
- interrupt_flag = DisableInterrupts();
+ interrupt_flag2 = DisableInterrupts();
m4aSongNumStart(SongIndex);
preload->unk0 = 1;
preload->songIndex = SongIndex;
- if(msVar == param_2)
+ if(param_2 == 256)
{
- preload->unk6 = 1;
+ preload->unk6 = 0;
}
else
{
- preload->unk6 = 0;
+ preload->unk6 = 1;
}
- preload->unk4 = msVar;
- if (interrupt_flag)
+ preload->unk4 = param_2;
+ if (interrupt_flag2)
EnableInterrupts();
}
}
}
-#else
-NAKED
-void sub_800C074(u16 SongIndex, u16 param_2)
-{
- asm_unified("\tpush {r4-r7,lr}\n"
- "\tmov r7, r8\n"
- "\tpush {r7}\n"
- "\tlsls r0, 16\n"
- "\tlsrs r5, r0, 16\n"
- "\tmov r8, r5\n"
- "\tlsls r1, 16\n"
- "\tlsrs r6, r1, 16\n"
- "\tldr r0, _0800C0FC\n"
- "\tcmp r5, r0\n"
- "\tbne _0800C08C\n"
- "\tb _0800C208\n"
-"_0800C08C:\n"
- "\tmovs r7, 0x80\n"
- "\tlsls r7, 1\n"
- "\tcmp r6, r7\n"
- "\tbls _0800C096\n"
- "\tadds r6, r7, 0\n"
-"_0800C096:\n"
- "\tadds r0, r5, 0\n"
- "\tbl sub_800CACC\n"
- "\tlsls r0, 24\n"
- "\tcmp r0, 0\n"
- "\tbne _0800C0A4\n"
- "\tb _0800C1B0\n"
-"_0800C0A4:\n"
- "\tadds r0, r5, 0\n"
- "\tbl GetMusicPlayerIndex\n"
- "\tlsls r0, 16\n"
- "\tlsrs r7, r0, 16\n"
- "\tcmp r7, 0x1\n"
- "\tbeq _0800C0B4\n"
- "\tb _0800C1D0\n"
-"_0800C0B4:\n"
- "\tbl DisableInterrupts\n"
- "\tlsls r0, 24\n"
- "\tlsrs r0, 24\n"
- "\tmov r8, r0\n"
- "\tldr r6, _0800C100\n"
- "\tstrh r5, [r6]\n"
- "\tldr r4, _0800C104\n"
- "\tldrh r0, [r4]\n"
- "\tadds r2, r0, 0\n"
- "\tcmp r2, 0\n"
- "\tbne _0800C144\n"
- "\tldr r0, _0800C108\n"
- "\tldrh r1, [r0]\n"
- "\tldr r0, _0800C10C\n"
- "\tcmp r1, r0\n"
- "\tbeq _0800C12C\n"
- "\tldr r0, _0800C110\n"
- "\tldrh r1, [r0]\n"
- "\tsubs r0, r1, 0x1\n"
- "\tlsls r0, 16\n"
- "\tlsrs r0, 16\n"
- "\tcmp r0, 0x1\n"
- "\tbhi _0800C120\n"
- "\tstrh r7, [r4]\n"
- "\tldr r1, _0800C114\n"
- "\tmovs r0, 0x10\n"
- "\tstrh r0, [r1]\n"
- "\tldr r0, _0800C118\n"
- "\tstrb r2, [r0]\n"
- "\tldr r0, _0800C11C\n"
- "\tmovs r1, 0x1\n"
- "\tbl m4aMPlayFadeOutTemporarily\n"
- "\tb _0800C15E\n"
- "\t.align 2, 0\n"
-"_0800C0FC: .4byte 0x000003e5\n"
-"_0800C100: .4byte gUnknown_202D68E\n"
-"_0800C104: .4byte gUnknown_202D690\n"
-"_0800C108: .4byte gCurrentBGSong\n"
-"_0800C10C: .4byte 0x000003e7\n"
-"_0800C110: .4byte gBGMusicPlayerState\n"
-"_0800C114: .4byte gUnknown_202D692\n"
-"_0800C118: .4byte gUnknown_202D694\n"
-"_0800C11C: .4byte gMPlayInfo_BGM\n"
-"_0800C120:\n"
- "\tlsls r0, r1, 16\n"
- "\tlsrs r0, 16\n"
- "\tcmp r0, 0x3\n"
- "\tbne _0800C12C\n"
- "\tmovs r0, 0x2\n"
- "\tb _0800C15C\n"
-"_0800C12C:\n"
- "\tmovs r0, 0x3\n"
- "\tstrh r0, [r4]\n"
- "\tldr r0, _0800C140\n"
- "\tbl m4aMPlayStop\n"
- "\tldrh r0, [r6]\n"
- "\tbl m4aSongNumStart\n"
- "\tb _0800C15E\n"
- "\t.align 2, 0\n"
-"_0800C140: .4byte gMPlayInfo_BGM\n"
-"_0800C144:\n"
- "\tsubs r0, 0x1\n"
- "\tlsls r0, 16\n"
- "\tlsrs r0, 16\n"
- "\tcmp r0, 0x1\n"
- "\tbls _0800C15E\n"
- "\tldr r0, _0800C17C\n"
- "\tbl m4aMPlayStop\n"
- "\tldrh r0, [r6]\n"
- "\tbl m4aSongNumStart\n"
- "\tmovs r0, 0x3\n"
-"_0800C15C:\n"
- "\tstrh r0, [r4]\n"
-"_0800C15E:\n"
- "\tldr r0, _0800C180\n"
- "\tldrh r0, [r0]\n"
- "\tcmp r0, 0x26\n"
- "\tbgt _0800C184\n"
- "\tcmp r0, 0x25\n"
- "\tbge _0800C19A\n"
- "\tcmp r0, 0x1A\n"
- "\tblt _0800C1A0\n"
- "\tcmp r0, 0x1F\n"
- "\tble _0800C19A\n"
- "\tcmp r0, 0x23\n"
- "\tbgt _0800C1A0\n"
- "\tcmp r0, 0x22\n"
- "\tblt _0800C1A0\n"
- "\tb _0800C19A\n"
- "\t.align 2, 0\n"
-"_0800C17C: .4byte gMPlayInfo_BGM\n"
-"_0800C180: .4byte gCurrentBGSong\n"
-"_0800C184:\n"
- "\tcmp r0, 0x7A\n"
- "\tbeq _0800C19A\n"
- "\tcmp r0, 0x7A\n"
- "\tbgt _0800C196\n"
- "\tcmp r0, 0x77\n"
- "\tbgt _0800C1A0\n"
- "\tcmp r0, 0x75\n"
- "\tblt _0800C1A0\n"
- "\tb _0800C19A\n"
-"_0800C196:\n"
- "\tcmp r0, 0x7F\n"
- "\tbne _0800C1A0\n"
-"_0800C19A:\n"
- "\tldr r1, _0800C1AC\n"
- "\tmovs r0, 0x1\n"
- "\tstrb r0, [r1]\n"
-"_0800C1A0:\n"
- "\tmov r0, r8\n"
- "\tcmp r0, 0\n"
- "\tbeq _0800C208\n"
- "\tbl EnableInterrupts\n"
- "\tb _0800C208\n"
- "\t.align 2, 0\n"
-"_0800C1AC: .4byte gUnknown_202D694\n"
-"_0800C1B0:\n"
- "\tadds r0, r5, 0\n"
- "\tbl sub_800CAAC\n"
- "\tlsls r0, 24\n"
- "\tcmp r0, 0\n"
- "\tbeq _0800C208\n"
- "\tadds r0, r5, 0\n"
- "\tbl GetMusicPlayerIndex\n"
- "\tlsls r0, 16\n"
- "\tlsrs r0, 16\n"
- "\tlsls r2, r0, 3\n"
- "\tldr r1, _0800C1D8\n"
- "\tadds r4, r2, r1\n"
- "\tcmp r0, 0x1\n"
- "\tbhi _0800C1DC\n"
-"_0800C1D0:\n"
- "\tadds r0, r5, 0\n"
- "\tbl nullsub_20\n"
- "\tb _0800C208\n"
- "\t.align 2, 0\n"
-"_0800C1D8: .4byte gUnknown_3000FD8\n"
-"_0800C1DC:\n"
- "\tbl DisableInterrupts\n"
- "\tlsls r0, 24\n"
- "\tlsrs r5, r0, 24\n"
- "\tmov r0, r8\n"
- "\tbl m4aSongNumStart\n"
- "\tmovs r0, 0x1\n"
- "\tstrh r0, [r4]\n"
- "\tmov r0, r8\n"
- "\tstrh r0, [r4, 0x2]\n"
- "\tcmp r6, r7\n"
- "\tbne _0800C1FA\n"
- "\tmovs r0, 0\n"
- "\tb _0800C1FC\n"
-"_0800C1FA:\n"
- "\tmovs r0, 0x1\n"
-"_0800C1FC:\n"
- "\tstrb r0, [r4, 0x6]\n"
- "\tstrh r6, [r4, 0x4]\n"
- "\tcmp r5, 0\n"
- "\tbeq _0800C208\n"
- "\tbl EnableInterrupts\n"
-"_0800C208:\n"
- "\tpop {r3}\n"
- "\tmov r8, r3\n"
- "\tpop {r4-r7}\n"
- "\tpop {r0}\n"
- "\tbx r0");
-}
-#endif
void sub_800C214(u16 songIndex, u16 volume)
{
@@ -940,14 +735,14 @@ void sub_800C298(u16 songIndex)
struct unkStruct_3000FD8 *preload;
struct unkStruct_3000FD8 *puVar3;
- if (songIndex == 0x3e5) {
+ if (songIndex == 997) {
cVar1 = DisableInterrupts();
for(iVar4 = 2, puVar3 = &gUnknown_3000FE8[0]; iVar4 < 7; iVar4++, puVar3++)
{
m4aMPlayStop(gMPlayTable[iVar4].info);
puVar3->unk0 = 0;
- puVar3->songIndex = 0x3e5;
+ puVar3->songIndex = 997;
puVar3->unk4 = 0;
puVar3->unk6 = 0;
}
@@ -955,7 +750,7 @@ void sub_800C298(u16 songIndex)
EnableInterrupts();
}
}
- else if (sub_800CAAC(songIndex) != '\0')
+ else if (sub_800CAAC(songIndex))
{
uVar2 = GetMusicPlayerIndex(songIndex);
puVar6 = gMPlayTable[uVar2].info;
@@ -968,7 +763,7 @@ void sub_800C298(u16 songIndex)
if (preload->songIndex == songIndex) {
m4aMPlayStop(puVar6);
preload->unk0 = 0;
- preload->songIndex = 0x3e5;
+ preload->songIndex = 997;
preload->unk4 = 0;
preload->unk6 = 0;
}
@@ -977,12 +772,12 @@ void sub_800C298(u16 songIndex)
}
}
}
- else if (songIndex == 0x3e6)
+ else if (songIndex == 998)
{
cVar3 = DisableInterrupts();
if (gUnknown_202D690 != 0) {
- if (gUnknown_202D68E != 0x3e5) {
- gUnknown_202D68E = 0x3e5;
+ if (gUnknown_202D68E != 997) {
+ gUnknown_202D68E = 997;
m4aMPlayStop(&gUnknown_2000970);
}
}
@@ -990,12 +785,12 @@ void sub_800C298(u16 songIndex)
EnableInterrupts();
}
}
- else if (sub_800CACC(songIndex) != '\0')
+ else if (sub_800CACC(songIndex))
{
cVar4 = DisableInterrupts();
if (gUnknown_202D690 != 0) {
if (gUnknown_202D68E == songIndex) {
- gUnknown_202D68E = 0x3e5;
+ gUnknown_202D68E = 997;
m4aMPlayStop(&gUnknown_2000970);
}
}
@@ -1031,19 +826,18 @@ void sub_800C3F8(u16 songIndex, u16 speed)
}
}
- if (songIndex == 0x3e5) {
+ if (songIndex == 997) {
cVar1 = DisableInterrupts();
-
for(uVar6 = 2, puVar3 = &gUnknown_3000FE8[0]; uVar6 < 7; uVar6++, puVar3++)
{
- if (puVar3->songIndex != 0x3e5) {
+ if (puVar3->songIndex != 997) {
if (sub_800CAF0(uVar6) != '\0') {
m4aMPlayFadeOut(gMPlayTable[uVar6].info,speed);
}
else {
m4aMPlayStop(gMPlayTable[uVar6].info);
puVar3->unk0 = 0;
- puVar3->songIndex = 0x3e5;
+ puVar3->songIndex = 997;
puVar3->unk4 = 0;
puVar3->unk6 = 0;
}
@@ -1054,19 +848,19 @@ void sub_800C3F8(u16 songIndex, u16 speed)
}
}
else {
- if (sub_800CAAC(songIndex) != '\0') {
+ if (sub_800CAAC(songIndex)) {
uVar8 = GetMusicPlayerIndex(songIndex);
preload = &gUnknown_3000FD8[uVar8];
puVar5 = gMPlayTable[uVar8].info;
cVar2 = DisableInterrupts();
- if (preload->songIndex != 0x3e5) {
+ if (preload->songIndex != 997) {
if (sub_800CAF0(uVar8) != '\0') {
m4aMPlayFadeOut(puVar5,speed);
}
else {
m4aMPlayStop(puVar5);
preload->unk0 = 0;
- preload->songIndex = 0x3e5;
+ preload->songIndex = 997;
preload->unk4 = 0;
preload->unk6 = 0;
}
@@ -1075,40 +869,35 @@ void sub_800C3F8(u16 songIndex, u16 speed)
EnableInterrupts();
}
}
- else
- {
- if (songIndex == 0x3e6) {
- cVar3 = DisableInterrupts();
- if ((gUnknown_202D690 != 0) && (gUnknown_202D68E != 0x3e5)) {
- if (sub_800CAF0(1) != '\0') {
- m4aMPlayFadeOut(&gUnknown_2000970,speed);
- }
- else {
- m4aMPlayStop(&gUnknown_2000970);
- gUnknown_202D68E = 0x3e5;
- }
+ else if (songIndex == 998) {
+ cVar3 = DisableInterrupts();
+ if ((gUnknown_202D690 != 0) && (gUnknown_202D68E != 997)) {
+ if (sub_800CAF0(1) != '\0') {
+ m4aMPlayFadeOut(&gUnknown_2000970,speed);
}
- if (cVar3 != '\0') {
- EnableInterrupts();
+ else {
+ m4aMPlayStop(&gUnknown_2000970);
+ gUnknown_202D68E = 997;
}
}
- else {
- if (sub_800CACC(songIndex) != '\0') {
- cVar4 = DisableInterrupts();
- if ((gUnknown_202D690 != 0) && (gUnknown_202D68E == songIndex)) {
- if (sub_800CAF0(1) != '\0') {
- m4aMPlayFadeOut(&gUnknown_2000970,speed);
- }
- else {
- m4aMPlayStop(&gUnknown_2000970);
- gUnknown_202D68E = 0x3e5;
- }
- }
- if (cVar4 != '\0') {
- EnableInterrupts();
- }
+ if (cVar3 != '\0') {
+ EnableInterrupts();
+ }
+ }
+ else if (sub_800CACC(songIndex)) {
+ cVar4 = DisableInterrupts();
+ if ((gUnknown_202D690 != 0) && (gUnknown_202D68E == songIndex)) {
+ if (sub_800CAF0(1) != '\0') {
+ m4aMPlayFadeOut(&gUnknown_2000970,speed);
+ }
+ else {
+ m4aMPlayStop(&gUnknown_2000970);
+ gUnknown_202D68E = 997;
}
}
+ if (cVar4 != '\0') {
+ EnableInterrupts();
+ }
}
}
}
diff --git a/src/pokemon_3.c b/src/pokemon_3.c
index 1a38475..251a69f 100644
--- a/src/pokemon_3.c
+++ b/src/pokemon_3.c
@@ -49,10 +49,10 @@ extern s32 gUnknown_810AC90[10];
extern void AddSprite(u16 *, u32, u32, u32);
-extern void xxx_save_poke_sub_4_80902F4(struct unkStruct_8094924*, struct unkPokeSubStruct_4*);
+extern void SaveDungeonLocation(struct unkStruct_8094924*, struct DungeonLocation*);
extern void xxx_save_poke_sub_c_808F41C(struct unkStruct_8094924*, struct unkPokeSubStruct_C*);
extern void SavePokemonMoves(struct unkStruct_8094924*, struct PokemonMove*);
-void xxx_restore_poke_sub_4_8090314(struct unkStruct_8094924*, struct unkPokeSubStruct_4*);
+void RestoreDungeonLocation(struct unkStruct_8094924*, struct DungeonLocation*);
void xxx_restore_poke_sub_c_808F410(struct unkStruct_8094924*, struct unkPokeSubStruct_C*);
void RestorePokemonMoves(struct unkStruct_8094924*, struct PokemonMove*);
@@ -755,7 +755,7 @@ void SavePokemonStruct(struct unkStruct_8094924* a1, struct PokemonStruct* pokem
{
SaveIntegerBits(a1, &pokemon->unkHasNextStage, 7);
SaveIntegerBits(a1, &pokemon->speciesNum, 9);
- xxx_save_poke_sub_4_80902F4(a1, &pokemon->unk4);
+ SaveDungeonLocation(a1, &pokemon->unk4);
xxx_save_poke_sub_c_808F41C(a1, &pokemon->unkC[0]);
xxx_save_poke_sub_c_808F41C(a1, &pokemon->unkC[1]);
SaveIntegerBits(a1, &pokemon->IQ, 10);
@@ -782,7 +782,7 @@ void RestorePokemonStruct(struct unkStruct_8094924* a1, struct PokemonStruct* po
pokemon->unk0 |= 1;
}
RestoreIntegerBits(a1, &pokemon->speciesNum, 9);
- xxx_restore_poke_sub_4_8090314(a1, &pokemon->unk4);
+ RestoreDungeonLocation(a1, &pokemon->unk4);
xxx_restore_poke_sub_c_808F410(a1, &pokemon->unkC[0]);
xxx_restore_poke_sub_c_808F410(a1, &pokemon->unkC[1]);
RestoreIntegerBits(a1, &pokemon->IQ, 10);
@@ -817,7 +817,7 @@ s32 SavePokemonStruct2(u8* a1, s32 size)
SaveIntegerBits(&backup, pokemon2->isLeader ? &data_u8_neg1 : &data_u8_zero, 1);
SaveIntegerBits(&backup, &pokemon2->unkHasNextStage, 7);
- xxx_save_poke_sub_4_80902F4(&backup, &pokemon2->unk4);
+ SaveDungeonLocation(&backup, &pokemon2->unk4);
SaveIntegerBits(&backup, &pokemon2->IQ, 10);
SaveIntegerBits(&backup, &pokemon2->unkA, 16);
SaveIntegerBits(&backup, &pokemon2->unkC, 16);
@@ -865,7 +865,7 @@ s32 RestorePokemonStruct2(u8* a1, s32 size)
}
RestoreIntegerBits(&backup, &pokemon2->unkHasNextStage, 7);
- xxx_restore_poke_sub_4_8090314(&backup, &pokemon2->unk4);
+ RestoreDungeonLocation(&backup, &pokemon2->unk4);
RestoreIntegerBits(&backup, &pokemon2->IQ, 10);
RestoreIntegerBits(&backup, &pokemon2->unkA, 16);
RestoreIntegerBits(&backup, &pokemon2->unkC, 16);
diff --git a/src/post_office_guide.c b/src/post_office_guide.c
index f009895..2103e5f 100644
--- a/src/post_office_guide.c
+++ b/src/post_office_guide.c
@@ -5,6 +5,8 @@
#include "menu.h"
#include "memory.h"
#include "text.h"
+#include "sub_8095228.h"
+#include "wonder_mail.h"
struct PostOfficeHelper
{
@@ -29,7 +31,7 @@ struct unkStruct_203B330
struct UnkInputStruct *unk0;
u8 fill4[0x8];
u8 unkC;
- u8 unkD;
+ u8 dungeonIndex;
u8 fillE[2];
u32 unk10;
struct UnkTextStruct2 *unk14;
@@ -41,11 +43,19 @@ EWRAM_DATA struct unkStruct_203B330 *gUnknown_203B330;
extern const char GetHelp_Text[];
extern const char GoRescue_Text[];
extern const char FriendRescueInfo_Text[];
-
extern const char FriendRescue_80E0A80[];
extern const char Delivery_Text[];
extern const char BulletinBoard_Text[];
extern const char PostOffice_Text[];
+extern u8 gUnknown_80E1F30[];
+extern u8 gUnknown_80E1F3C[];
+extern u8 gUnknown_80E1F60[];
+extern u8 gUnknown_80E1F70[];
+extern u8 gUnknown_202DE58[];
+extern u8 gUnknown_80E1F80[];
+extern u8 gUnknown_80E1F40[];
+extern u8 gUnknown_80E1F54[];
+extern u8 gUnknown_80E1F94[];
enum PostOfficeStates
{
@@ -167,6 +177,18 @@ extern u32 sub_8012A64(struct UnkInputStruct**, u32);
extern void PlayMenuSoundEffect(u32);
extern void sub_8031A84();
extern void DisplayMissionObjectives();
+extern u8 *GetCurrentMissionText(s16 r0);
+extern u8 *sub_80975DC(u32 r0);
+extern u8 sub_8099360(u8 *);
+extern u8 sub_8099394(u8 *);
+extern struct WonderMail *GetJobSlotInfo(u8);
+extern void xxx_call_draw_string(s32 x, u32 y, const u8 *, u32 , u32);
+extern void sub_80073B8(u32);
+extern void sub_80073E0(u32);
+extern void sprintf_2(char *buffer, const char *text, ...);
+extern void sub_803B6B0(u32, u32, u32, u32);
+extern s16 sub_80A2688(u8 r0);
+extern u8 sub_80992E0(s16 *, s16 *);
extern u8 gUnknown_202E5D8[];
extern u8 gAvailablePokemonNames[];
@@ -504,12 +526,12 @@ void ReturnToGetHelpMenu(void)
}
}
-u32 sub_80319A4(u8 param_1,u8 param_2,int param_3)
+u32 sub_80319A4(u8 param_1,u8 dungeon,int param_3)
{
gUnknown_203B330 = MemoryAlloc(sizeof(struct unkStruct_203B330),8);
gUnknown_203B330->unkC = param_1;
- gUnknown_203B330->unkD = param_2;
+ gUnknown_203B330->dungeonIndex = dungeon;
sub_801317C(&gUnknown_203B330->unk0);
gUnknown_203B330->unk10 = param_3;
gUnknown_203B330->unk14 = &gUnknown_203B330->unk18[param_3];
@@ -557,7 +579,7 @@ void sub_8031A84(void)
sub_8006518(gUnknown_203B330->unk18);
gUnknown_203B330->unk18[gUnknown_203B330->unk10] = gUnknown_80E1F18;
if (gUnknown_203B330->unkC == 2) {
- iVar1 = sub_80969D0(gUnknown_203B330->unkD);
+ iVar1 = sub_80969D0(gUnknown_203B330->dungeonIndex);
if (iVar1 == 0) {
iVar1 = 1;
}
@@ -566,3 +588,96 @@ void sub_8031A84(void)
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B330->unk18,1,1);
}
+
+void DisplayMissionObjectives(void)
+{
+ s32 yCoord;
+ s32 jobSlotIdx;
+ struct unkStruct_8095228 *iVar8;
+ struct WonderMail *jobInfo;
+ u8 auStack248 [100];
+ u8 local_94 [4];
+ u8 auStack144 [100];
+ short auStack44;
+ short local_2a;
+ u8 local_test;
+
+ sub_80073B8(gUnknown_203B330->unk10);
+ // Objectives
+ xxx_call_draw_string(10,0,gUnknown_80E1F30,gUnknown_203B330->unk10,0);
+ switch(gUnknown_203B330->unkC)
+ {
+ case 1:
+ sub_8099394(local_94);
+ iVar8 = sub_8095228(local_94[0]);
+ sub_803B6B0(10,16,3,gUnknown_203B330->unk10);
+ // %dF
+ sprintf_2(auStack248,gUnknown_80E1F3C,iVar8->floor);
+ xxx_call_draw_string(0x15,16,auStack248,gUnknown_203B330->unk10,0);
+ // Rescue #C6%s#R
+ sprintf_2(auStack248,gUnknown_80E1F40,GetMonSpecies(iVar8->clientSpecies));
+ xxx_call_draw_string(0x28,16,auStack248,gUnknown_203B330->unk10,0);
+ break;
+ case 2:
+ if (sub_80969D0(gUnknown_203B330->dungeonIndex) == 0) {
+ // Just go!
+ xxx_call_draw_string(10,16,gUnknown_80E1F54,gUnknown_203B330->unk10,0);
+ }
+ else
+ {
+ yCoord = 16;
+
+ // 8 Job Slots... check each of them
+ for(jobSlotIdx = 0; jobSlotIdx < 8; jobSlotIdx++)
+ {
+ jobInfo = GetJobSlotInfo(jobSlotIdx);
+ if ((((jobInfo->dungeon == gUnknown_203B330->dungeonIndex) && (jobInfo->mailType != 0)
+ ) && (jobInfo->mailType != 5)) && (jobInfo->mailType != 7)) {
+ sub_803B6B0(10,yCoord,3,gUnknown_203B330->unk10);
+ if (jobInfo->missionType != WONDER_MAIL_MISSION_TYPE_FIND_ITEM) {
+ sprintf_2(auStack144,gUnknown_80E1F3C,jobInfo->floor);
+ xxx_call_draw_string(21,yCoord,auStack144,gUnknown_203B330->unk10,0);
+ }
+ switch(jobInfo->missionType)
+ {
+ case WONDER_MAIL_MISSION_TYPE_DELIVER_ITEM:
+ // Bring #C4%s#R
+ sub_8090DC4(gUnknown_202DE58,jobInfo->targetItem,0);
+ sprintf_2(auStack144,gUnknown_80E1F60,gUnknown_202DE58);
+ xxx_call_draw_string(40,yCoord,auStack144,gUnknown_203B330->unk10,0);
+ break;
+ case WONDER_MAIL_MISSION_TYPE_FIND_ITEM:
+ // Find #C4%s#R
+ sub_8090DC4(gUnknown_202DE58,jobInfo->targetItem,0);
+ sprintf_2(auStack144,gUnknown_80E1F70,gUnknown_202DE58);
+ xxx_call_draw_string(40,yCoord,auStack144,gUnknown_203B330->unk10,0);
+ break;
+ case WONDER_MAIL_MISSION_TYPE_ESCORT_CLIENT:
+ // Escort to #C6$s#R
+ sprintf_2(auStack144,gUnknown_80E1F80,GetMonSpecies(jobInfo->targetSpecies));
+ xxx_call_draw_string(40,yCoord,auStack144,gUnknown_203B330->unk10,0);
+ break;
+ default:
+ // Rescue #C6%s#R
+ sprintf_2(auStack144,gUnknown_80E1F40,GetMonSpecies(jobInfo->targetSpecies));
+ xxx_call_draw_string(40,yCoord,auStack144,gUnknown_203B330->unk10,0);
+ break;
+ }
+ yCoord = yCoord + 12;
+ }
+ }
+ }
+ break;
+ case 3:
+ case 0:
+ default:
+ if (sub_80992E0(&auStack44,&local_2a) != 0)
+ xxx_call_draw_string(10,16,GetCurrentMissionText(local_2a),gUnknown_203B330->unk10,0);
+ else if (sub_8099360(&local_test) != 0)
+ xxx_call_draw_string(10,16,sub_80975DC(sub_80A2688(local_test)),gUnknown_203B330->unk10,0);
+ else
+ xxx_call_draw_string(10,16,gUnknown_80E1F94,gUnknown_203B330->unk10,0);
+ break;
+ }
+ sub_80073E0(gUnknown_203B330->unk10);
+}
diff --git a/src/rescue_password_menu.c b/src/rescue_password_menu.c
index ac2f296..f170a00 100644
--- a/src/rescue_password_menu.c
+++ b/src/rescue_password_menu.c
@@ -66,7 +66,7 @@ void CreateRescuePasswordMenu(u32 currMenu)
case MENU_DISPLAY_RESCUE_PASSWORD:
temp = sub_8095228(0x1F);
MemoryFill8((u8 *)temp, 0, sizeof(struct unkStruct_8095228));
- temp->unk0 = 2;
+ temp->mailType = 2;
temp->unk20.itemIndex = ITEM_ID_NOTHING;
sub_8031D70(0x1F, 0);
break;
diff --git a/src/thank_you_wonder_mail.c b/src/thank_you_wonder_mail.c
index cdfb97a..fedf2ff 100644
--- a/src/thank_you_wonder_mail.c
+++ b/src/thank_you_wonder_mail.c
@@ -251,7 +251,7 @@ extern void sub_801CB5C(u32);
extern void sub_801CCD8(void);
extern void sub_8011C28(u32);
extern u32 sub_80154F0(void);
-extern u32 sub_8039068(u32, u8 *r1, u8 *r0);
+extern u32 sub_8039068(u32, u8 *r1, struct unkStruct_8095228 *r0);
extern u8 sub_809539C(u32, u32);
@@ -829,7 +829,7 @@ void HandleThankYouMailPasswordMenu(void)
switch(return_var)
{
case 3:
- switch(sub_8039068(0x20,gUnknown_203B2C4->passwordBuffer,&temp.unk0))
+ switch(sub_8039068(0x20,gUnknown_203B2C4->passwordBuffer,&temp))
{
case 0x11:
// Wrong password
@@ -851,7 +851,7 @@ void HandleThankYouMailPasswordMenu(void)
uVar1 = sub_809539C(4,temp.unk10);
puVar5 = sub_8095228(uVar1);
*puVar5 = temp;
- puVar5->unk0 = 6;
+ puVar5->mailType = 6;
gUnknown_203B2C4->unk430 = temp.unk10;
SetThankYouMailMenuState(THANK_YOU_PASSWORD_SUCCESS);
break;
@@ -1423,7 +1423,7 @@ void UpdateThankYouMailText(void)
else
gUnknown_203B2C4->unk53C.itemRewards[0] = 0; // unk558
gUnknown_203B2C4->unk53C.numItems = 1; // unk55B
- gUnknown_203B2C4->unk53C.teamRankPtsReward = sub_803C200(&puVar4->unk4, 0); // unk560
+ gUnknown_203B2C4->unk53C.teamRankPtsReward = sub_803C200(&puVar4->dungeon, 0); // unk560
gUnknown_203B2C4->unk53C.itemRewards[1] = 0; // unk559
gUnknown_203B2C4->unk53C.itemRewards[2] = 0; // unk55A
gUnknown_203B2C4->unk53C.friendAreaReward = 0; // unk55C
diff --git a/src/wonder_mail.c b/src/wonder_mail.c
index 0844a96..6c449aa 100644
--- a/src/wonder_mail.c
+++ b/src/wonder_mail.c
@@ -46,11 +46,11 @@ extern void sub_8030DE4(void);
extern void sub_803092C(void);
extern u32 sub_80154F0();
-extern u32 sub_8039068(u32, u8 *r1, u8 *r0);
+extern u32 sub_8039068(u32, u8 *r1, struct unkStruct_8095228 *r0);
extern void sub_8014248(const char *r0, u32, u32, const struct MenuItem *r4, u32, u32, u32, void *r5, u32);
extern void sub_8095274(u32);
extern void sub_80155F0();
-extern void sub_80951BC(u8 *r0);
+extern void sub_80951BC(struct unkStruct_8095228 *r0);
extern void sub_8013114(u32 *r0, s32 *r1);
extern void sub_8023C60();
extern u32 sub_8023A94(u32);
@@ -1171,7 +1171,7 @@ void sub_8028FDC(void)
{
case 8:
return_var = sub_8095228(gUnknown_203B2C0->unk218);
- if(sub_80A2824(return_var->unk4) == 0)
+ if(sub_80A2824(return_var->dungeon) == 0)
{
sub_8028B04(0x1C);
}
@@ -1459,7 +1459,7 @@ void sub_80293F4(void)
switch(return_var)
{
case 3:
- switch(sub_8039068(0x1C, (gUnknown_203B2C0->passwordBuffer), &temp.unk0))
+ switch(sub_8039068(0x1C, (gUnknown_203B2C0->passwordBuffer), &temp))
{
case 17:
sub_8014248(gWonderMailPasswordIncorrectText, 0, 8, gUnknown_80DDA48, 0, 4, 0, &gUnknown_203B2C0->faceFile, 0xC);
@@ -1475,8 +1475,8 @@ void sub_80293F4(void)
break;
case 22:
sub_8095274(temp.unk10);
- temp.unk0 = 2; // Some sort of Ack?
- sub_80951BC(&temp.unk0);
+ temp.mailType = 2;
+ sub_80951BC(&temp);
sub_80141B4(gWonderMailAOKMailReceivedText, 0, &gUnknown_203B2C0->faceFile, 0x101);
sub_8028B04(35);
break;
diff --git a/src/wonder_mail_2.c b/src/wonder_mail_2.c
index 6c90992..3359a61 100644
--- a/src/wonder_mail_2.c
+++ b/src/wonder_mail_2.c
@@ -386,8 +386,8 @@ void sub_802B3E0(void)
gUnknown_203B2C8->unk114.moneyReward = 0;
sub_8097790();
iVar3 = sub_8095228(gUnknown_203B2C8->unk1);
- sub_803C37C(&iVar3->unk4, 0, gUnknown_203B2C8->unk114.itemRewards);
- gUnknown_203B2C8->unk114.teamRankPtsReward = sub_803C200(&iVar3->unk4, 0);
+ sub_803C37C(&iVar3->dungeon, 0, gUnknown_203B2C8->unk114.itemRewards);
+ gUnknown_203B2C8->unk114.teamRankPtsReward = sub_803C200(&iVar3->dungeon, 0);
gUnknown_203B2C8->unk114.itemRewards[1] = 0;
gUnknown_203B2C8->unk114.itemRewards[2] = 0;
gUnknown_203B2C8->unk114.numItems = 10;
@@ -447,7 +447,7 @@ void sub_802B5B8(void)
if (sub_80144A4(&temp) == 0) {
uVar2 = sub_8011C34();
puVar3 = sub_8095228(gUnknown_203B2C8->unk1);
- puVar3->unk0 = 4;
+ puVar3->mailType = 4;
puVar3->unk28 = uVar2;
sub_802B548(3);
sub_8011C28(1);
diff --git a/src/wonder_mail_3.c b/src/wonder_mail_3.c
index 02dcfb7..4cc2e0e 100644
--- a/src/wonder_mail_3.c
+++ b/src/wonder_mail_3.c
@@ -85,7 +85,7 @@ extern u8 sub_8096C08(u8 *);
extern void sub_802C750(void);
extern void sub_802D1A0(u32);
extern void sub_8012EA4(u8 *, u32);
-extern void* sub_8096AB4(u8);
+extern struct WonderMail* GetJobSlotInfo(u8);
extern void sub_803B35C(void *, u32*);
extern void sub_802DE84(u32 *);
extern void sub_802D73C(void);
@@ -321,7 +321,7 @@ void sub_802D2A8(void)
sub_8012D60(gUnknown_203B2F8->unkC8,gUnknown_203B2F8->unk158,0,0,4,3);
break;
case 0xf:
- sub_803B35C(sub_8096AB4(gUnknown_203B2F8->unk10),&gUnknown_203B2F8->unk14);
+ sub_803B35C(GetJobSlotInfo(gUnknown_203B2F8->unk10),&gUnknown_203B2F8->unk14);
gUnknown_203B2F8->unk14 = 3;
sub_802DE84(&gUnknown_203B2F8->unk14);
break;
diff --git a/src/wonder_mail_802DF88.c b/src/wonder_mail_802DF88.c
index b85df28..ffac5a8 100644
--- a/src/wonder_mail_802DF88.c
+++ b/src/wonder_mail_802DF88.c
@@ -16,9 +16,8 @@ struct unkStruct_203B2FC
s16 unkE;
u8 unk10;
u8 fill11[0x30 - 0x11];
- u8 unk30;
- u8 fill31[3];
- struct WonderMail *unk34;
+ u8 jobSlot;
+ struct WonderMail *jobInfo;
struct OpenedFile *faceFile;
u8 *faceData;
u16 unk40;
@@ -76,16 +75,16 @@ extern void sub_802DC40(void);
extern void sub_802DC9C(void);
void sub_802DE44(void);
void sub_802DE60(void);
-struct WonderMail *sub_8096AB4(u8);
+struct WonderMail *GetJobSlotInfo(u8);
extern void sub_8096AF8(u8 *, u32, u32);
extern void sub_8096EEC(void);
extern void sub_803C21C(struct WonderMail *, u32 *);
-u32 sub_802DB28(u8 param_1, u8 param_2)
+u32 sub_802DB28(u8 jobSlot, u8 param_2)
{
char local_18 [8];
- sub_8096AF8(local_18,param_1,param_2);
+ sub_8096AF8(local_18,jobSlot,param_2);
if (local_18[0] == '\0') {
return 0;
}
@@ -93,11 +92,11 @@ u32 sub_802DB28(u8 param_1, u8 param_2)
ResetUnusedInputStruct();
sub_800641C(0,1,1);
gUnknown_203B2FC = MemoryAlloc(sizeof(struct unkStruct_203B2FC),8);
- gUnknown_203B2FC->unk30 = param_1;
- gUnknown_203B2FC->unk34 = sub_8096AB4(param_1);
+ gUnknown_203B2FC->jobSlot = jobSlot;
+ gUnknown_203B2FC->jobInfo = GetJobSlotInfo(jobSlot);
sub_8096EEC();
- sub_803C21C(gUnknown_203B2FC->unk34,&gUnknown_203B2FC->unk8);
- gUnknown_203B2FC->faceFile = GetDialogueSpriteDataPtr(gUnknown_203B2FC->unk34->clientSpecies);
+ sub_803C21C(gUnknown_203B2FC->jobInfo,&gUnknown_203B2FC->unk8);
+ gUnknown_203B2FC->faceFile = GetDialogueSpriteDataPtr(gUnknown_203B2FC->jobInfo->clientSpecies);
gUnknown_203B2FC->faceData = NULL;
gUnknown_203B2FC->unk44 = 0;
gUnknown_203B2FC->unk45 = 0;
@@ -117,7 +116,7 @@ u32 sub_802DBD4(void)
switch(gUnknown_203B2FC->state)
{
case 7:
- gUnknown_203B2FC->unk34->mailType = 7;
+ gUnknown_203B2FC->jobInfo->mailType = 7;
return 3;
case 6:
sub_802DE44();
@@ -173,16 +172,16 @@ void sub_802DC9C(void)
switch(gUnknown_203B2FC->state) {
case 0:
- CopyYellowSpeciesNametoBuffer(gUnknown_202E5D8,gUnknown_203B2FC->unk34->clientSpecies);
- CopyYellowSpeciesNametoBuffer(gUnknown_202E1C8,gUnknown_203B2FC->unk34->clientSpecies);
- speciesText = GetMonSpecies(gUnknown_203B2FC->unk34->clientSpecies);
+ CopyYellowSpeciesNametoBuffer(gUnknown_202E5D8,gUnknown_203B2FC->jobInfo->clientSpecies);
+ CopyYellowSpeciesNametoBuffer(gUnknown_202E1C8,gUnknown_203B2FC->jobInfo->clientSpecies);
+ speciesText = GetMonSpecies(gUnknown_203B2FC->jobInfo->clientSpecies);
strcpy(gUnknown_202E1C8 + 0xfffffdd0,speciesText);
- speciesText = GetMonSpecies(gUnknown_203B2FC->unk34->targetSpecies);
+ speciesText = GetMonSpecies(gUnknown_203B2FC->jobInfo->targetSpecies);
strcpy(gUnknown_202E1C8 + 0xfffffe20,speciesText);
- UnlockExclusivePokemon(gUnknown_203B2FC->unk34->clientSpecies);
- sub_8090DC4(gUnknown_202DE58,gUnknown_203B2FC->unk34->targetItem,0);
+ UnlockExclusivePokemon(gUnknown_203B2FC->jobInfo->clientSpecies);
+ sub_8090DC4(gUnknown_202DE58,gUnknown_203B2FC->jobInfo->targetItem,0);
gUnknown_203B2FC->fallbackState = 6;
- switch(gUnknown_203B2FC->unk34->missionType) {
+ switch(gUnknown_203B2FC->jobInfo->missionType) {
case WONDER_MAIL_MISSION_TYPE_DELIVER_ITEM:
sub_802DC28(5);
break;
@@ -191,11 +190,11 @@ void sub_802DC9C(void)
break;
case WONDER_MAIL_MISSION_TYPE_RESCUE_TARGET:
sub_802DC28(2);
- UnlockExclusivePokemon(gUnknown_203B2FC->unk34->targetSpecies);
+ UnlockExclusivePokemon(gUnknown_203B2FC->jobInfo->targetSpecies);
break;
case WONDER_MAIL_MISSION_TYPE_ESCORT_CLIENT:
sub_802DC28(3);
- UnlockExclusivePokemon(gUnknown_203B2FC->unk34->targetSpecies);
+ UnlockExclusivePokemon(gUnknown_203B2FC->jobInfo->targetSpecies);
break;
default:
case WONDER_MAIL_MISSION_TYPE_RESCUE_CLIENT:
@@ -216,7 +215,7 @@ void sub_802DC9C(void)
sub_80141B4(gWonderMailClientItemDelivered1,0,&gUnknown_203B2FC->faceFile,0x10d);
break;
case 4:
- index = FindItemInInventory(gUnknown_203B2FC->unk34->targetItem);
+ index = FindItemInInventory(gUnknown_203B2FC->jobInfo->targetItem);
if (index != -1) {
ShiftItemsDownFrom(index);
FillInventoryGaps();