fix a few nonmatchings and code cleanup

This commit is contained in:
Seth Barberee
2022-03-21 17:48:40 -07:00
parent 46420815f4
commit 57f540b320
27 changed files with 325 additions and 732 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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]

View File

@@ -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]

View File

@@ -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

View File

@@ -4,7 +4,7 @@
struct unkStruct_203B480
{
u8 unk0;
struct unkPokeSubStruct_4 unk4;
struct DungeonLocation unk4;
u32 unk8;
u32 unkC;
u32 unk10;

View File

@@ -32,4 +32,9 @@
#define ARRAY_COUNT(array) (sizeof(array) / sizeof((array)[0]))
struct DungeonLocation {
u8 dungeonIndex;
u8 dungeonFloor;
};
#endif // GUARD_GLOBAL_H

View File

@@ -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;

View File

@@ -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];

View File

@@ -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);

View File

@@ -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

View File

@@ -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);

View File

@@ -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)

View File

@@ -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;
}

View File

@@ -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)

View File

@@ -61,7 +61,7 @@ s32 sub_80A2668(u32 r0)
}
}
u32 sub_80A2688(u8 r0, u32 r1)
u32 sub_80A2688(u8 r0)
{
u32 uVar1;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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)
{
preload->unk6 = 1;
}
else
if(param_2 == 256)
{
preload->unk6 = 0;
}
preload->unk4 = msVar;
if (interrupt_flag)
else
{
preload->unk6 = 1;
}
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,39 +869,34 @@ 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();
}
}
}

View File

@@ -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);

View File

@@ -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);
}

View File

@@ -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;

View File

@@ -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

View File

@@ -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;

View File

@@ -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);

View File

@@ -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;

View File

@@ -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();