mirror of
https://github.com/pret/pmd-red.git
synced 2026-09-29 20:37:17 -05:00
unify wonder mail constants
This commit is contained in:
@@ -1,388 +0,0 @@
|
||||
#include "asm/constants/gba_constants.inc"
|
||||
#include "asm/macros.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_8030A74
|
||||
sub_8030A74:
|
||||
push {r4,r5,lr}
|
||||
movs r2, 0
|
||||
ldr r0, _08030A90
|
||||
ldr r0, [r0]
|
||||
ldr r0, [r0, 0x20]
|
||||
cmp r0, 0x7
|
||||
bls _08030A84
|
||||
b _08030C0E
|
||||
_08030A84:
|
||||
lsls r0, 2
|
||||
ldr r1, _08030A94
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_08030A90: .4byte gUnknown_203B320
|
||||
_08030A94: .4byte _08030A98
|
||||
.align 2, 0
|
||||
_08030A98:
|
||||
.4byte _08030AB8
|
||||
.4byte _08030B10
|
||||
.4byte _08030B3C
|
||||
.4byte _08030B94
|
||||
.4byte _08030B68
|
||||
.4byte _08030BC0
|
||||
.4byte _08030AE4
|
||||
.4byte _08030BEC
|
||||
_08030AB8:
|
||||
movs r1, 0
|
||||
ldr r5, _08030ADC
|
||||
ldr r4, _08030AE0
|
||||
movs r3, 0
|
||||
_08030AC0:
|
||||
ldr r0, [r5]
|
||||
adds r0, r3
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _08030AD2
|
||||
ldr r0, [r4]
|
||||
adds r0, r2
|
||||
strb r1, [r0]
|
||||
adds r2, 0x1
|
||||
_08030AD2:
|
||||
adds r3, 0x30
|
||||
adds r1, 0x1
|
||||
cmp r1, 0x1F
|
||||
ble _08030AC0
|
||||
b _08030C0E
|
||||
.align 2, 0
|
||||
_08030ADC: .4byte gUnknown_203B480
|
||||
_08030AE0: .4byte gUnknown_203B320
|
||||
_08030AE4:
|
||||
movs r1, 0
|
||||
ldr r5, _08030B08
|
||||
ldr r4, _08030B0C
|
||||
movs r3, 0
|
||||
_08030AEC:
|
||||
ldr r0, [r5]
|
||||
adds r0, r3
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x6
|
||||
bne _08030AFE
|
||||
ldr r0, [r4]
|
||||
adds r0, r2
|
||||
strb r1, [r0]
|
||||
adds r2, 0x1
|
||||
_08030AFE:
|
||||
adds r3, 0x30
|
||||
adds r1, 0x1
|
||||
cmp r1, 0x1F
|
||||
ble _08030AEC
|
||||
b _08030C0E
|
||||
.align 2, 0
|
||||
_08030B08: .4byte gUnknown_203B480
|
||||
_08030B0C: .4byte gUnknown_203B320
|
||||
_08030B10:
|
||||
movs r1, 0
|
||||
ldr r5, _08030B34
|
||||
ldr r4, _08030B38
|
||||
movs r3, 0
|
||||
_08030B18:
|
||||
ldr r0, [r5]
|
||||
adds r0, r3
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x1
|
||||
bne _08030B2A
|
||||
ldr r0, [r4]
|
||||
adds r0, r2
|
||||
strb r1, [r0]
|
||||
adds r2, 0x1
|
||||
_08030B2A:
|
||||
adds r3, 0x30
|
||||
adds r1, 0x1
|
||||
cmp r1, 0x1F
|
||||
ble _08030B18
|
||||
b _08030C0E
|
||||
.align 2, 0
|
||||
_08030B34: .4byte gUnknown_203B480
|
||||
_08030B38: .4byte gUnknown_203B320
|
||||
_08030B3C:
|
||||
movs r1, 0
|
||||
ldr r5, _08030B60
|
||||
ldr r4, _08030B64
|
||||
movs r3, 0
|
||||
_08030B44:
|
||||
ldr r0, [r5]
|
||||
adds r0, r3
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x2
|
||||
bne _08030B56
|
||||
ldr r0, [r4]
|
||||
adds r0, r2
|
||||
strb r1, [r0]
|
||||
adds r2, 0x1
|
||||
_08030B56:
|
||||
adds r3, 0x30
|
||||
adds r1, 0x1
|
||||
cmp r1, 0x1F
|
||||
ble _08030B44
|
||||
b _08030C0E
|
||||
.align 2, 0
|
||||
_08030B60: .4byte gUnknown_203B480
|
||||
_08030B64: .4byte gUnknown_203B320
|
||||
_08030B68:
|
||||
movs r1, 0
|
||||
ldr r5, _08030B8C
|
||||
ldr r4, _08030B90
|
||||
movs r3, 0
|
||||
_08030B70:
|
||||
ldr r0, [r5]
|
||||
adds r0, r3
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x4
|
||||
bne _08030B82
|
||||
ldr r0, [r4]
|
||||
adds r0, r2
|
||||
strb r1, [r0]
|
||||
adds r2, 0x1
|
||||
_08030B82:
|
||||
adds r3, 0x30
|
||||
adds r1, 0x1
|
||||
cmp r1, 0x1F
|
||||
ble _08030B70
|
||||
b _08030C0E
|
||||
.align 2, 0
|
||||
_08030B8C: .4byte gUnknown_203B480
|
||||
_08030B90: .4byte gUnknown_203B320
|
||||
_08030B94:
|
||||
movs r1, 0
|
||||
ldr r5, _08030BB8
|
||||
ldr r4, _08030BBC
|
||||
movs r3, 0
|
||||
_08030B9C:
|
||||
ldr r0, [r5]
|
||||
adds r0, r3
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x3
|
||||
bne _08030BAE
|
||||
ldr r0, [r4]
|
||||
adds r0, r2
|
||||
strb r1, [r0]
|
||||
adds r2, 0x1
|
||||
_08030BAE:
|
||||
adds r3, 0x30
|
||||
adds r1, 0x1
|
||||
cmp r1, 0x1F
|
||||
ble _08030B9C
|
||||
b _08030C0E
|
||||
.align 2, 0
|
||||
_08030BB8: .4byte gUnknown_203B480
|
||||
_08030BBC: .4byte gUnknown_203B320
|
||||
_08030BC0:
|
||||
movs r1, 0
|
||||
ldr r5, _08030BE4
|
||||
ldr r4, _08030BE8
|
||||
movs r3, 0
|
||||
_08030BC8:
|
||||
ldr r0, [r5]
|
||||
adds r0, r3
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x5
|
||||
bne _08030BDA
|
||||
ldr r0, [r4]
|
||||
adds r0, r2
|
||||
strb r1, [r0]
|
||||
adds r2, 0x1
|
||||
_08030BDA:
|
||||
adds r3, 0x30
|
||||
adds r1, 0x1
|
||||
cmp r1, 0x1F
|
||||
ble _08030BC8
|
||||
b _08030C0E
|
||||
.align 2, 0
|
||||
_08030BE4: .4byte gUnknown_203B480
|
||||
_08030BE8: .4byte gUnknown_203B320
|
||||
_08030BEC:
|
||||
movs r1, 0
|
||||
ldr r5, _08030C18
|
||||
ldr r4, _08030C1C
|
||||
movs r3, 0
|
||||
_08030BF4:
|
||||
ldr r0, [r5]
|
||||
adds r0, r3
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x7
|
||||
bne _08030C06
|
||||
ldr r0, [r4]
|
||||
adds r0, r2
|
||||
strb r1, [r0]
|
||||
adds r2, 0x1
|
||||
_08030C06:
|
||||
adds r3, 0x30
|
||||
adds r1, 0x1
|
||||
cmp r1, 0x1F
|
||||
ble _08030BF4
|
||||
_08030C0E:
|
||||
adds r0, r2, 0
|
||||
pop {r4,r5}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_08030C18: .4byte gUnknown_203B480
|
||||
_08030C1C: .4byte gUnknown_203B320
|
||||
thumb_func_end sub_8030A74
|
||||
|
||||
thumb_func_start sub_8030C20
|
||||
sub_8030C20:
|
||||
push {lr}
|
||||
cmp r0, 0x7
|
||||
bls _08030C28
|
||||
b _08030D34
|
||||
_08030C28:
|
||||
lsls r0, 2
|
||||
ldr r1, _08030C34
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_08030C34: .4byte _08030C38
|
||||
.align 2, 0
|
||||
_08030C38:
|
||||
.4byte _08030C58
|
||||
.4byte _08030C90
|
||||
.4byte _08030CAC
|
||||
.4byte _08030CE4
|
||||
.4byte _08030CC8
|
||||
.4byte _08030D00
|
||||
.4byte _08030C74
|
||||
.4byte _08030D20
|
||||
_08030C58:
|
||||
movs r1, 0
|
||||
ldr r0, _08030C70
|
||||
ldr r2, [r0]
|
||||
_08030C5E:
|
||||
ldrb r0, [r2]
|
||||
cmp r0, 0
|
||||
bne _08030D1C
|
||||
adds r2, 0x30
|
||||
adds r1, 0x1
|
||||
cmp r1, 0x1F
|
||||
ble _08030C5E
|
||||
b _08030D34
|
||||
.align 2, 0
|
||||
_08030C70: .4byte gUnknown_203B480
|
||||
_08030C74:
|
||||
movs r1, 0
|
||||
ldr r0, _08030C8C
|
||||
ldr r2, [r0]
|
||||
_08030C7A:
|
||||
ldrb r0, [r2]
|
||||
cmp r0, 0x6
|
||||
beq _08030D1C
|
||||
adds r2, 0x30
|
||||
adds r1, 0x1
|
||||
cmp r1, 0x1F
|
||||
ble _08030C7A
|
||||
b _08030D34
|
||||
.align 2, 0
|
||||
_08030C8C: .4byte gUnknown_203B480
|
||||
_08030C90:
|
||||
movs r1, 0
|
||||
ldr r0, _08030CA8
|
||||
ldr r2, [r0]
|
||||
_08030C96:
|
||||
ldrb r0, [r2]
|
||||
cmp r0, 0x1
|
||||
beq _08030D1C
|
||||
adds r2, 0x30
|
||||
adds r1, 0x1
|
||||
cmp r1, 0x1F
|
||||
ble _08030C96
|
||||
b _08030D34
|
||||
.align 2, 0
|
||||
_08030CA8: .4byte gUnknown_203B480
|
||||
_08030CAC:
|
||||
movs r1, 0
|
||||
ldr r0, _08030CC4
|
||||
ldr r2, [r0]
|
||||
_08030CB2:
|
||||
ldrb r0, [r2]
|
||||
cmp r0, 0x2
|
||||
beq _08030D1C
|
||||
adds r2, 0x30
|
||||
adds r1, 0x1
|
||||
cmp r1, 0x1F
|
||||
ble _08030CB2
|
||||
b _08030D34
|
||||
.align 2, 0
|
||||
_08030CC4: .4byte gUnknown_203B480
|
||||
_08030CC8:
|
||||
movs r1, 0
|
||||
ldr r0, _08030CE0
|
||||
ldr r2, [r0]
|
||||
_08030CCE:
|
||||
ldrb r0, [r2]
|
||||
cmp r0, 0x4
|
||||
beq _08030D1C
|
||||
adds r2, 0x30
|
||||
adds r1, 0x1
|
||||
cmp r1, 0x1F
|
||||
ble _08030CCE
|
||||
b _08030D34
|
||||
.align 2, 0
|
||||
_08030CE0: .4byte gUnknown_203B480
|
||||
_08030CE4:
|
||||
movs r1, 0
|
||||
ldr r0, _08030CFC
|
||||
ldr r2, [r0]
|
||||
_08030CEA:
|
||||
ldrb r0, [r2]
|
||||
cmp r0, 0x3
|
||||
beq _08030D1C
|
||||
adds r2, 0x30
|
||||
adds r1, 0x1
|
||||
cmp r1, 0x1F
|
||||
ble _08030CEA
|
||||
b _08030D34
|
||||
.align 2, 0
|
||||
_08030CFC: .4byte gUnknown_203B480
|
||||
_08030D00:
|
||||
movs r1, 0
|
||||
ldr r0, _08030D18
|
||||
ldr r2, [r0]
|
||||
_08030D06:
|
||||
ldrb r0, [r2]
|
||||
cmp r0, 0x5
|
||||
beq _08030D1C
|
||||
adds r2, 0x30
|
||||
adds r1, 0x1
|
||||
cmp r1, 0x1F
|
||||
ble _08030D06
|
||||
b _08030D34
|
||||
.align 2, 0
|
||||
_08030D18: .4byte gUnknown_203B480
|
||||
_08030D1C:
|
||||
movs r0, 0
|
||||
b _08030D36
|
||||
_08030D20:
|
||||
movs r1, 0
|
||||
ldr r0, _08030D3C
|
||||
ldr r2, [r0]
|
||||
_08030D26:
|
||||
ldrb r0, [r2]
|
||||
cmp r0, 0x7
|
||||
beq _08030D1C
|
||||
adds r2, 0x30
|
||||
adds r1, 0x1
|
||||
cmp r1, 0x1F
|
||||
ble _08030D26
|
||||
_08030D34:
|
||||
movs r0, 0x1
|
||||
_08030D36:
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_08030D3C: .4byte gUnknown_203B480
|
||||
thumb_func_end sub_8030C20
|
||||
|
||||
.align 2,0
|
||||
@@ -1,9 +1,11 @@
|
||||
#ifndef GUARD_CODE_8094F88_H
|
||||
#define GUARD_CODE_8094F88_H
|
||||
#define GUARD_CODE_8094F88_H
|
||||
|
||||
#include "global.h"
|
||||
|
||||
struct unkStruct_203B480
|
||||
{
|
||||
u8 unk0;
|
||||
u8 mailType;
|
||||
struct DungeonLocation unk4;
|
||||
u32 unk8;
|
||||
u32 unkC;
|
||||
|
||||
@@ -16,6 +16,36 @@ enum RewardType
|
||||
END_REWARDS
|
||||
};
|
||||
|
||||
enum WonderMailMode {
|
||||
WONDER_MAIL_MODE_SEND = 1,
|
||||
WONDER_MAIL_MODE_RECEIVE = 2,
|
||||
};
|
||||
|
||||
enum WonderMailMethod {
|
||||
WONDER_MAIL_GAME_LINK = 3,
|
||||
WONDER_MAIL_PASSWORD = 5,
|
||||
};
|
||||
|
||||
enum WonderMailTypes {
|
||||
WONDER_MAIL_TYPE_SOS = 1,
|
||||
//WONDER_MAIL_TYPE_SOS = 2, // SOS MAIL is 1 and 2?
|
||||
WONDER_MAIL_TYPE_AOK = 4,
|
||||
WONDER_MAIL_TYPE_THANK_YOU = 5,
|
||||
WONDER_MAIL_TYPE_WONDER = 5,
|
||||
WONDER_MAIL_TYPE_COMPLETED = 6,
|
||||
WONDER_MAIL_TYPE_OKD = 7,
|
||||
};
|
||||
|
||||
enum WonderMailMissionTypes
|
||||
{
|
||||
WONDER_MAIL_MISSION_TYPE_RESCUE_CLIENT = 0,
|
||||
WONDER_MAIL_MISSION_TYPE_RESCUE_TARGET = 1,
|
||||
WONDER_MAIL_MISSION_TYPE_ESCORT_CLIENT = 2,
|
||||
WONDER_MAIL_MISSION_TYPE_FIND_ITEM = 3,
|
||||
WONDER_MAIL_MISSION_TYPE_DELIVER_ITEM = 4,
|
||||
};
|
||||
|
||||
|
||||
#define NUM_POKEMON_NEWS 56 // 50 normal + 6 special issues
|
||||
#define PASSWORD_BUFFER_SIZE 54
|
||||
#define MAX_ITEM_REWARDS 3
|
||||
|
||||
@@ -119,31 +119,4 @@ struct WonderMailStruct_203B2C4
|
||||
|
||||
void sub_8028B04(u32 r0);
|
||||
|
||||
enum WonderMailMode {
|
||||
WONDER_MAIL_MODE_SEND = 1,
|
||||
WONDER_MAIL_MODE_RECEIVE = 2,
|
||||
};
|
||||
|
||||
enum WonderMailMethod {
|
||||
WONDER_MAIL_GAME_LINK = 3,
|
||||
WONDER_MAIL_PASSWORD = 5,
|
||||
};
|
||||
|
||||
enum WonderMailTypes {
|
||||
WONDER_MAIL_TYPE_SOS = 1,
|
||||
WONDER_MAIL_TYPE_AOK = 4,
|
||||
WONDER_MAIL_TYPE_THANK_YOU = 5,
|
||||
WONDER_MAIL_TYPE_WONDER = 5,
|
||||
// TODO: document 7
|
||||
};
|
||||
|
||||
enum WonderMailMissionTypes
|
||||
{
|
||||
WONDER_MAIL_MISSION_TYPE_RESCUE_CLIENT = 0,
|
||||
WONDER_MAIL_MISSION_TYPE_RESCUE_TARGET = 1,
|
||||
WONDER_MAIL_MISSION_TYPE_ESCORT_CLIENT = 2,
|
||||
WONDER_MAIL_MISSION_TYPE_FIND_ITEM = 3,
|
||||
WONDER_MAIL_MISSION_TYPE_DELIVER_ITEM = 4,
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -146,7 +146,6 @@ SECTIONS {
|
||||
asm/makuhita_dojo.o(.text);
|
||||
src/makuhita_dojo_1.o(.text);
|
||||
src/wonder_mail_4.o(.text);
|
||||
asm/wonder_mail_4.o(.text);
|
||||
src/wonder_mail_5.o(.text);
|
||||
asm/wonder_mail_5.o(.text);
|
||||
src/wonder_mail_6.o(.text);
|
||||
|
||||
@@ -44,19 +44,21 @@ struct unkStruct_203B48C *sub_8095110(void)
|
||||
}
|
||||
|
||||
|
||||
#ifdef NONMATCHING
|
||||
void sub_8095118(void)
|
||||
{
|
||||
int iVar1;
|
||||
s32 iVar1;
|
||||
struct unkStruct_203B480 *unused;
|
||||
|
||||
MemoryFill8((u8*)gUnknown_203B480,0,0x600);
|
||||
MemoryFill8(gUnknown_203B484,0,0x5c);
|
||||
MemoryFill8((u8*)gUnknown_203B484,0,0x5c);
|
||||
for(iVar1 = 0; iVar1 < 0x20; iVar1++){
|
||||
// NOTE: when it adds the index regs flip
|
||||
// Instead of add r0, r0, r1 -> add r0, r1, r0
|
||||
// Everything else matches...
|
||||
gUnknown_203B480[iVar1].unk0 = 0;
|
||||
|
||||
// NOTE: we use a temp variable here to force the match
|
||||
unused = &gUnknown_203B480[iVar1];
|
||||
gUnknown_203B480[iVar1].mailType = 0;
|
||||
unused = &gUnknown_203B480[iVar1];
|
||||
gUnknown_203B480[iVar1].unk22 = 0;
|
||||
unused = &gUnknown_203B480[iVar1];
|
||||
gUnknown_203B480[iVar1].unk2D = 0;
|
||||
}
|
||||
gUnknown_203B48C->unk0 = 0;
|
||||
@@ -64,66 +66,6 @@ void sub_8095118(void)
|
||||
gUnknown_203B48C->unk4[iVar1] = -1;
|
||||
}
|
||||
}
|
||||
#else
|
||||
NAKED
|
||||
void sub_8095118(void)
|
||||
{
|
||||
asm_unified("\tpush {r4,lr}\n"
|
||||
"\tldr r4, _0809517C\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tmovs r2, 0xC0\n"
|
||||
"\tlsls r2, 3\n"
|
||||
"\tmovs r1, 0\n"
|
||||
"\tbl MemoryFill8\n"
|
||||
"\tldr r0, _08095180\n"
|
||||
"\tldr r0, [r0]\n"
|
||||
"\tmovs r1, 0\n"
|
||||
"\tmovs r2, 0x5C\n"
|
||||
"\tbl MemoryFill8\n"
|
||||
"\tmovs r2, 0\n"
|
||||
"\tmovs r1, 0\n"
|
||||
"\tmovs r3, 0x1F\n"
|
||||
"_0809513A:\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tstrb r2, [r0]\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tadds r0, 0x22\n"
|
||||
"\tstrb r2, [r0]\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tadds r0, 0x2D\n"
|
||||
"\tstrb r2, [r0]\n"
|
||||
"\tadds r1, 0x30\n"
|
||||
"\tsubs r3, 0x1\n"
|
||||
"\tcmp r3, 0\n"
|
||||
"\tbge _0809513A\n"
|
||||
"\tldr r2, _08095184\n"
|
||||
"\tldr r1, [r2]\n"
|
||||
"\tmovs r0, 0\n"
|
||||
"\tstr r0, [r1]\n"
|
||||
"\tmovs r3, 0\n"
|
||||
"\tmovs r4, 0x1\n"
|
||||
"\tnegs r4, r4\n"
|
||||
"_08095166:\n"
|
||||
"\tldr r0, [r2]\n"
|
||||
"\tlsls r1, r3, 2\n"
|
||||
"\tadds r0, 0x4\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tstr r4, [r0]\n"
|
||||
"\tadds r3, 0x1\n"
|
||||
"\tcmp r3, 0x1F\n"
|
||||
"\tble _08095166\n"
|
||||
"\tpop {r4}\n"
|
||||
"\tpop {r0}\n"
|
||||
"\tbx r0\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0809517C: .4byte gUnknown_203B480\n"
|
||||
"_08095180: .4byte gUnknown_203B484\n"
|
||||
"_08095184: .4byte gUnknown_203B48C");
|
||||
}
|
||||
#endif
|
||||
|
||||
void nullsub_206(void)
|
||||
{
|
||||
@@ -138,7 +80,7 @@ s32 sub_8095190(void)
|
||||
int index;
|
||||
|
||||
for(index = 2; index < 0x20; index++){
|
||||
if(gUnknown_203B480[index].unk0 == 0)
|
||||
if(gUnknown_203B480[index].mailType == 0)
|
||||
return index;
|
||||
}
|
||||
return -1;
|
||||
|
||||
@@ -114,7 +114,7 @@ void sub_8095774(struct unkStruct_8094924 * a, struct unkStruct_203B480 *b)
|
||||
{
|
||||
u8 temp;
|
||||
|
||||
RestoreIntegerBits(a, &b->unk0, 4);
|
||||
RestoreIntegerBits(a, &b->mailType, 4);
|
||||
RestoreDungeonLocation(a, &b->unk4);
|
||||
RestoreIntegerBits(a, &b->unk8, 0x18);
|
||||
RestoreIntegerBits(a, &b->unkC, 0x9);
|
||||
@@ -139,7 +139,7 @@ void sub_8095824(struct unkStruct_8094924 * a, struct unkStruct_203B480 *b)
|
||||
neg1 = -1;
|
||||
zero = 0;
|
||||
|
||||
SaveIntegerBits(a, &b->unk0, 4);
|
||||
SaveIntegerBits(a, &b->mailType, 4);
|
||||
SaveDungeonLocation(a, &b->unk4);
|
||||
SaveIntegerBits(a, &b->unk8, 0x18);
|
||||
SaveIntegerBits(a, &b->unkC, 0x9);
|
||||
|
||||
@@ -453,7 +453,7 @@ u32 ConvertMenutoRescuePasswordState(u32 unused)
|
||||
|
||||
u32 sub_8039068(u32 mailMode, u8 *passwordBuffer, struct unkStruct_8095228 *param_3)
|
||||
{
|
||||
if ( (!sub_803D204(passwordBuffer, param_3)) || (7 < param_3->mailType) ||
|
||||
if ( (!sub_803D204(passwordBuffer, param_3)) || (WONDER_MAIL_TYPE_OKD < param_3->mailType) ||
|
||||
(param_3->dungeon.dungeonFloor >= GetDungeonFloorCount(param_3->dungeon.dungeonIndex)) ||
|
||||
(param_3->clientSpecies == SPECIES_NONE) || (SPECIES_RAYQUAZA_CUTSCENE < param_3->clientSpecies) ||
|
||||
(IsInvalidItemReward(param_3->unk20.itemIndex))) {
|
||||
|
||||
@@ -20,7 +20,7 @@ extern void sub_8011C28(u32);
|
||||
extern void sub_8095240(u8);
|
||||
|
||||
extern void sub_809927C(u8);
|
||||
extern u8 sub_8030C20(u32);
|
||||
extern bool8 HasNoWonderMailType(u32);
|
||||
extern u32 sub_8031050();
|
||||
extern void sub_80310B4();
|
||||
extern u32 sub_8095350();
|
||||
@@ -942,7 +942,7 @@ void sub_8028D4C()
|
||||
switch(gUnknown_203B2C0->unk538)
|
||||
{
|
||||
case 5:
|
||||
if(sub_8030C20(2) != 0)
|
||||
if(HasNoWonderMailType(2))
|
||||
{
|
||||
sub_8028B04(12);
|
||||
}
|
||||
@@ -952,7 +952,7 @@ void sub_8028D4C()
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
if(sub_8030C20(4) != 0)
|
||||
if(HasNoWonderMailType(4))
|
||||
{
|
||||
sub_8028B04(14);
|
||||
}
|
||||
@@ -962,7 +962,7 @@ void sub_8028D4C()
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
if(sub_8030C20(0) != 0)
|
||||
if(HasNoWonderMailType(0))
|
||||
{
|
||||
sub_8028B04(16);
|
||||
}
|
||||
|
||||
@@ -4,13 +4,16 @@
|
||||
#include "memory.h"
|
||||
#include "item.h"
|
||||
#include "sub_8095228.h"
|
||||
#include "pokemon.h"
|
||||
#include "code_8094F88.h"
|
||||
#include "constants/wonder_mail.h"
|
||||
|
||||
struct unkStruct_203B320
|
||||
{
|
||||
// size: 0xC4
|
||||
u8 unk0[4];
|
||||
u8 fill4[0x20 - 4];
|
||||
u32 wonderMailMode;
|
||||
u32 wonderMailType;
|
||||
u32 unk24;
|
||||
u8 fill28[0x3C - 0x28];
|
||||
s16 unk3C;
|
||||
@@ -29,6 +32,7 @@ extern struct unkStruct_203B320 *gUnknown_203B320;
|
||||
extern struct UnkTextStruct2 gUnknown_80E083C;
|
||||
extern struct UnkTextStruct2 gUnknown_80E0854;
|
||||
extern u8 *gUnknown_80E086C[];
|
||||
extern struct unkStruct_203B480 *gUnknown_203B480;
|
||||
|
||||
struct unkStruct_802C39C
|
||||
{
|
||||
@@ -46,7 +50,7 @@ struct unkStruct_802C39C
|
||||
/* 0x50 */ u32 unk50[3];
|
||||
};
|
||||
|
||||
extern u8 sub_8030C20(u32);
|
||||
extern bool8 HasNoWonderMailType(u32);
|
||||
extern s32 sub_8030A74(void);
|
||||
extern void sub_80308A0(void);
|
||||
extern void sub_803092C(void);
|
||||
@@ -67,12 +71,12 @@ extern void sub_80073B8(u32);
|
||||
extern void sub_80073E0(u32);
|
||||
extern void CreateRescueTitle(void *);
|
||||
|
||||
u32 sub_80306A8(u32 wonderMailMode, u32 r1, struct UnkTextStruct2_sub *r2, u32 r3)
|
||||
u32 sub_80306A8(u32 wonderMailType, u32 r1, struct UnkTextStruct2_sub *r2, u32 r3)
|
||||
{
|
||||
if(sub_8030C20(wonderMailMode))
|
||||
if(HasNoWonderMailType(wonderMailType))
|
||||
return 0;
|
||||
gUnknown_203B320 = MemoryAlloc(sizeof(struct unkStruct_203B320), 0x8);
|
||||
gUnknown_203B320->wonderMailMode = wonderMailMode;
|
||||
gUnknown_203B320->wonderMailType = wonderMailType;
|
||||
gUnknown_203B320->unk58 = r1;
|
||||
|
||||
gUnknown_203B320->unk5C = &gUnknown_203B320->unk60[gUnknown_203B320->unk58];
|
||||
@@ -246,7 +250,7 @@ void sub_803092C(void)
|
||||
r4 = gUnknown_203B320->unk42 * 8;
|
||||
r5 = r4;
|
||||
r5 += 10;
|
||||
xxx_call_draw_string(r5,0,gUnknown_80E086C[gUnknown_203B320->wonderMailMode],gUnknown_203B320->unk58,0);
|
||||
xxx_call_draw_string(r5,0,gUnknown_80E086C[gUnknown_203B320->wonderMailType],gUnknown_203B320->unk58,0);
|
||||
r4 += 4;
|
||||
r5 = r4 + gUnknown_203B320->unkC0[2] * 8;
|
||||
sub_8012BC4(r5,0,gUnknown_203B320->unk42 + 1,1,7,gUnknown_203B320->unk58);
|
||||
@@ -291,3 +295,168 @@ void sub_803092C(void)
|
||||
}
|
||||
sub_80073E0(gUnknown_203B320->unk58);
|
||||
}
|
||||
|
||||
s32 sub_8030A74(void)
|
||||
{
|
||||
s32 index;
|
||||
s32 count = 0;
|
||||
switch(gUnknown_203B320->wonderMailType) {
|
||||
case 0:
|
||||
for (index = 0; index < 0x20; index++)
|
||||
{
|
||||
struct unkStruct_203B480 *p = gUnknown_203B480 + index;
|
||||
if (p->mailType != 0) {
|
||||
gUnknown_203B320->unk0[count] = index;
|
||||
count++;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
for (index = 0; index < 0x20; index++)
|
||||
{
|
||||
struct unkStruct_203B480 *p = gUnknown_203B480 + index;
|
||||
if (p->mailType == 6) {
|
||||
gUnknown_203B320->unk0[count] = index;
|
||||
count++;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
for (index = 0; index < 0x20; index++)
|
||||
{
|
||||
struct unkStruct_203B480 *p = gUnknown_203B480 + index;
|
||||
if (p->mailType == 1) {
|
||||
gUnknown_203B320->unk0[count] = index;
|
||||
count++;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
for (index = 0; index < 0x20; index++)
|
||||
{
|
||||
struct unkStruct_203B480 *p = gUnknown_203B480 + index;
|
||||
if (p->mailType == 2) {
|
||||
gUnknown_203B320->unk0[count] = index;
|
||||
count++;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
for (index = 0; index < 0x20; index++)
|
||||
{
|
||||
struct unkStruct_203B480 *p = gUnknown_203B480 + index;
|
||||
if (p->mailType == 4) {
|
||||
gUnknown_203B320->unk0[count] = index;
|
||||
count++;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
for (index = 0; index < 0x20; index++)
|
||||
{
|
||||
struct unkStruct_203B480 *p = gUnknown_203B480 + index;
|
||||
if (p->mailType == 3) {
|
||||
gUnknown_203B320->unk0[count] = index;
|
||||
count++;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
for (index = 0; index < 0x20; index++)
|
||||
{
|
||||
struct unkStruct_203B480 *p = gUnknown_203B480 + index;
|
||||
if (p->mailType == 5) {
|
||||
gUnknown_203B320->unk0[count] = index;
|
||||
count++;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 7:
|
||||
for (index = 0; index < 0x20; index++)
|
||||
{
|
||||
struct unkStruct_203B480 *p = gUnknown_203B480 + index;
|
||||
if (p->mailType == 7) {
|
||||
gUnknown_203B320->unk0[count] = index;
|
||||
count++;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
bool8 HasNoWonderMailType(u32 wonderMailType)
|
||||
{
|
||||
s32 index;
|
||||
|
||||
switch(wonderMailType) {
|
||||
case 0:
|
||||
for (index = 0; index < 0x20; index++)
|
||||
{
|
||||
if (gUnknown_203B480[index].mailType != 0) {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
for (index = 0; index < 0x20; index++)
|
||||
{
|
||||
if (gUnknown_203B480[index].mailType == 6) {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
for (index = 0; index < 0x20; index++)
|
||||
{
|
||||
if (gUnknown_203B480[index].mailType == 1) {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
for (index = 0; index < 0x20; index++)
|
||||
{
|
||||
if (gUnknown_203B480[index].mailType == 2) {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
for (index = 0; index < 0x20; index++)
|
||||
{
|
||||
if (gUnknown_203B480[index].mailType == 4) {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
for (index = 0; index < 0x20; index++)
|
||||
{
|
||||
if (gUnknown_203B480[index].mailType == 3) {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 5:
|
||||
for (index = 0; index < 0x20; index++)
|
||||
{
|
||||
if (gUnknown_203B480[index].mailType == 5) {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 7:
|
||||
for (index = 0; index < 0x20; index++)
|
||||
{
|
||||
if (gUnknown_203B480[index].mailType == 7) {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
#include "menu.h"
|
||||
#include "code_8094F88.h"
|
||||
|
||||
extern bool8 sub_8030C20(u32);
|
||||
extern bool8 HasNoWonderMailType(u32);
|
||||
|
||||
struct unkStruct_203B328
|
||||
{
|
||||
@@ -26,7 +26,7 @@ struct unkStruct_203B328
|
||||
/* 0x114 */ u8 unk114;
|
||||
/* 0x115 */ u8 unk115;
|
||||
/* 0x116 */ u8 unk116;
|
||||
u32 wonderMailMode;
|
||||
u32 wonderMailType;
|
||||
};
|
||||
extern struct unkStruct_203B328 *gUnknown_203B328;
|
||||
extern struct unkStruct_203B480 *gUnknown_203B480;
|
||||
@@ -103,7 +103,7 @@ extern u8 sub_8012FD8(u32 *);
|
||||
extern void sub_8013114(u32 *, s32 *);
|
||||
extern void sub_8095240(u8);
|
||||
|
||||
bool8 sub_8030F58(u32 wonderMailMode)
|
||||
bool8 sub_8030F58(u32 wonderMailType)
|
||||
{
|
||||
struct OpenedFile *iVar3;
|
||||
|
||||
@@ -113,7 +113,7 @@ bool8 sub_8030F58(u32 wonderMailMode)
|
||||
gUnknown_203B328 = MemoryAlloc(sizeof(struct unkStruct_203B328),8);
|
||||
MemoryFill8((u8 *)gUnknown_203B328,0,sizeof(struct unkStruct_203B328));
|
||||
}
|
||||
gUnknown_203B328->wonderMailMode = wonderMailMode;
|
||||
gUnknown_203B328->wonderMailType = wonderMailType;
|
||||
iVar3 = GetDialogueSpriteDataPtr(SPECIES_PELIPPER);
|
||||
gUnknown_203B328->faceFile = iVar3;
|
||||
gUnknown_203B328->faceData = iVar3->data;
|
||||
@@ -123,8 +123,8 @@ bool8 sub_8030F58(u32 wonderMailMode)
|
||||
gUnknown_203B328->unk110 = 2;
|
||||
gUnknown_203B328->unk112 = 8;
|
||||
|
||||
if (sub_8030C20(wonderMailMode)) {
|
||||
switch(wonderMailMode)
|
||||
if (HasNoWonderMailType(wonderMailType)) {
|
||||
switch(wonderMailType)
|
||||
{
|
||||
case 2:
|
||||
// "You don{APOSTROPHE}t have any {COLOR_1 LIGHT_BLUE_2}SOS Mail{END_COLOR_TEXT_1}.\0"
|
||||
@@ -139,7 +139,7 @@ bool8 sub_8030F58(u32 wonderMailMode)
|
||||
}
|
||||
else {
|
||||
gUnknown_203B328->state = 0;
|
||||
sub_80306A8(wonderMailMode,0,0,8);
|
||||
sub_80306A8(wonderMailType,0,0,8);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
@@ -328,14 +328,14 @@ void sub_80313D8(u32 param_1)
|
||||
for(iVar2 = 0; iVar2 < 0x20; iVar2++)
|
||||
{
|
||||
unused = &gUnknown_203B480[iVar2];
|
||||
gUnknown_203B480[iVar2].unk0 = 0;
|
||||
gUnknown_203B480[iVar2].mailType = 0;
|
||||
unused = &gUnknown_203B480[iVar2];
|
||||
gUnknown_203B480[iVar2].unk22 = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
if ((gUnknown_203B328->wonderMailMode == 2) || (gUnknown_203B328->wonderMailMode == 4)) {
|
||||
if (sub_8030C20(gUnknown_203B328->wonderMailMode) != 0) {
|
||||
if ((gUnknown_203B328->wonderMailType == 2) || (gUnknown_203B328->wonderMailType == 4)) {
|
||||
if (HasNoWonderMailType(gUnknown_203B328->wonderMailType)) {
|
||||
sub_80310E4(5);
|
||||
}
|
||||
else {
|
||||
|
||||
Reference in New Issue
Block a user