mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2024-12-26 03:34:15 +01:00
sub_8121478
This commit is contained in:
parent
8914645231
commit
8d31a46c6f
158
asm/mail.s
158
asm/mail.s
@ -5,164 +5,6 @@
|
|||||||
|
|
||||||
.text
|
.text
|
||||||
|
|
||||||
thumb_func_start sub_8121478
|
|
||||||
sub_8121478: @ 8121478
|
|
||||||
push {r4-r7,lr}
|
|
||||||
sub sp, 0x4
|
|
||||||
adds r5, r0, 0
|
|
||||||
adds r7, r1, 0
|
|
||||||
lsls r2, 24
|
|
||||||
lsrs r6, r2, 24
|
|
||||||
ldr r4, =gUnknown_0203A134
|
|
||||||
ldr r0, =0x0000222c
|
|
||||||
bl AllocZeroed
|
|
||||||
str r0, [r4]
|
|
||||||
ldr r1, =0x0000021d
|
|
||||||
adds r0, r1
|
|
||||||
movs r1, 0x2
|
|
||||||
strb r1, [r0]
|
|
||||||
ldr r0, [r4]
|
|
||||||
ldr r2, =0x0000021e
|
|
||||||
adds r0, r2
|
|
||||||
movs r1, 0x1
|
|
||||||
strb r1, [r0]
|
|
||||||
ldr r4, [r4]
|
|
||||||
movs r3, 0x88
|
|
||||||
lsls r3, 2
|
|
||||||
adds r1, r4, r3
|
|
||||||
ldr r0, =CopyEasyChatWord
|
|
||||||
str r0, [r1]
|
|
||||||
movs r0, 0x89
|
|
||||||
lsls r0, 2
|
|
||||||
adds r1, r4, r0
|
|
||||||
ldr r0, =ConvertEasyChatWordsToString
|
|
||||||
str r0, [r1]
|
|
||||||
ldrh r1, [r5, 0x20]
|
|
||||||
adds r0, r1, 0
|
|
||||||
subs r0, 0x79
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r0, 16
|
|
||||||
cmp r0, 0xB
|
|
||||||
bhi _081214E8
|
|
||||||
subs r1, 0x79
|
|
||||||
subs r2, 0x4
|
|
||||||
adds r0, r4, r2
|
|
||||||
strb r1, [r0]
|
|
||||||
b _081214F2
|
|
||||||
.pool
|
|
||||||
_081214E8:
|
|
||||||
ldr r3, =0x0000021a
|
|
||||||
adds r1, r4, r3
|
|
||||||
movs r0, 0
|
|
||||||
strb r0, [r1]
|
|
||||||
movs r6, 0
|
|
||||||
_081214F2:
|
|
||||||
ldr r0, =gUnknown_0203A134
|
|
||||||
ldr r1, [r0]
|
|
||||||
ldr r2, =0x0000021e
|
|
||||||
adds r0, r1, r2
|
|
||||||
ldrb r0, [r0]
|
|
||||||
cmp r0, 0
|
|
||||||
beq _08121504
|
|
||||||
cmp r0, 0x1
|
|
||||||
beq _0812152C
|
|
||||||
_08121504:
|
|
||||||
movs r3, 0x8A
|
|
||||||
lsls r3, 2
|
|
||||||
adds r2, r1, r3
|
|
||||||
subs r3, 0xE
|
|
||||||
adds r0, r1, r3
|
|
||||||
ldrb r1, [r0]
|
|
||||||
lsls r0, r1, 1
|
|
||||||
adds r0, r1
|
|
||||||
lsls r0, 2
|
|
||||||
ldr r1, =gUnknown_0859F3B4
|
|
||||||
b _08121540
|
|
||||||
.pool
|
|
||||||
_0812152C:
|
|
||||||
movs r0, 0x8A
|
|
||||||
lsls r0, 2
|
|
||||||
adds r2, r1, r0
|
|
||||||
ldr r3, =0x0000021a
|
|
||||||
adds r0, r1, r3
|
|
||||||
ldrb r1, [r0]
|
|
||||||
lsls r0, r1, 1
|
|
||||||
adds r0, r1
|
|
||||||
lsls r0, 2
|
|
||||||
ldr r1, =gUnknown_0859F458
|
|
||||||
_08121540:
|
|
||||||
adds r0, r1
|
|
||||||
str r0, [r2]
|
|
||||||
ldrh r0, [r5, 0x1E]
|
|
||||||
mov r1, sp
|
|
||||||
bl sub_80D45E8
|
|
||||||
lsls r0, 16
|
|
||||||
ldr r1, =0xffff0000
|
|
||||||
adds r0, r1
|
|
||||||
movs r1, 0xCD
|
|
||||||
lsls r1, 17
|
|
||||||
cmp r0, r1
|
|
||||||
bhi _081215AC
|
|
||||||
ldr r1, =gUnknown_0203A134
|
|
||||||
ldr r2, [r1]
|
|
||||||
ldr r3, =0x0000021a
|
|
||||||
adds r0, r2, r3
|
|
||||||
ldrb r0, [r0]
|
|
||||||
adds r3, r1, 0
|
|
||||||
cmp r0, 0x6
|
|
||||||
beq _0812158C
|
|
||||||
cmp r0, 0x9
|
|
||||||
beq _0812159C
|
|
||||||
ldr r0, =0x0000021b
|
|
||||||
adds r1, r2, r0
|
|
||||||
movs r0, 0
|
|
||||||
strb r0, [r1]
|
|
||||||
b _081215BA
|
|
||||||
.pool
|
|
||||||
_0812158C:
|
|
||||||
ldr r0, =0x0000021b
|
|
||||||
adds r1, r2, r0
|
|
||||||
movs r0, 0x1
|
|
||||||
strb r0, [r1]
|
|
||||||
b _081215BA
|
|
||||||
.pool
|
|
||||||
_0812159C:
|
|
||||||
ldr r0, =0x0000021b
|
|
||||||
adds r1, r2, r0
|
|
||||||
movs r0, 0x2
|
|
||||||
strb r0, [r1]
|
|
||||||
b _081215BA
|
|
||||||
.pool
|
|
||||||
_081215AC:
|
|
||||||
ldr r0, =gUnknown_0203A134
|
|
||||||
ldr r1, [r0]
|
|
||||||
ldr r2, =0x0000021b
|
|
||||||
adds r1, r2
|
|
||||||
movs r2, 0
|
|
||||||
strb r2, [r1]
|
|
||||||
adds r3, r0, 0
|
|
||||||
_081215BA:
|
|
||||||
ldr r1, [r3]
|
|
||||||
movs r3, 0x85
|
|
||||||
lsls r3, 2
|
|
||||||
adds r0, r1, r3
|
|
||||||
str r5, [r0]
|
|
||||||
movs r2, 0x83
|
|
||||||
lsls r2, 2
|
|
||||||
adds r0, r1, r2
|
|
||||||
str r7, [r0]
|
|
||||||
adds r3, 0x4
|
|
||||||
adds r0, r1, r3
|
|
||||||
strb r6, [r0]
|
|
||||||
ldr r0, =sub_81219F0
|
|
||||||
bl SetMainCallback2
|
|
||||||
add sp, 0x4
|
|
||||||
pop {r4-r7}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_8121478
|
|
||||||
|
|
||||||
thumb_func_start sub_81215EC
|
thumb_func_start sub_81215EC
|
||||||
sub_81215EC: @ 81215EC
|
sub_81215EC: @ 81215EC
|
||||||
push {r4-r6,lr}
|
push {r4-r6,lr}
|
||||||
|
@ -30,7 +30,8 @@ enum
|
|||||||
|
|
||||||
void InitEasyChatPhrases(void);
|
void InitEasyChatPhrases(void);
|
||||||
void easy_chat_input_maybe(void);
|
void easy_chat_input_maybe(void);
|
||||||
void CopyEasyChatWord(u8 *, u16);
|
void CopyEasyChatWord(u8 *dest, u16 word);
|
||||||
|
void ConvertEasyChatWordsToString(u8 *dest, const u16 *src, u16 length1, u16 length2);
|
||||||
bool32 sub_811F8D8(u16);
|
bool32 sub_811F8D8(u16);
|
||||||
|
|
||||||
#endif // GUARD_EASYCHAT_H
|
#endif // GUARD_EASYCHAT_H
|
||||||
|
12
include/mail_data.h
Normal file
12
include/mail_data.h
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#ifndef GUARD_MAIL_DATA_H
|
||||||
|
#define GUARD_MAIL_DATA_H
|
||||||
|
|
||||||
|
// Exported type declarations
|
||||||
|
|
||||||
|
// Exported RAM declarations
|
||||||
|
|
||||||
|
// Exported ROM declarations
|
||||||
|
|
||||||
|
u16 sub_80D45E8(u16, u16 *);
|
||||||
|
|
||||||
|
#endif //GUARD_MAIL_DATA_H
|
@ -2,7 +2,7 @@
|
|||||||
#define GUARD_MALLOC_H
|
#define GUARD_MALLOC_H
|
||||||
|
|
||||||
#define malloc Alloc
|
#define malloc Alloc
|
||||||
#define calloc AllocZeroed
|
#define calloc(ct, sz) AllocZeroed((ct) * (sz))
|
||||||
#define free Free
|
#define free Free
|
||||||
|
|
||||||
extern u8 gHeap[];
|
extern u8 gHeap[];
|
||||||
|
@ -164,6 +164,7 @@ SECTIONS {
|
|||||||
asm/easy_chat.o(.text);
|
asm/easy_chat.o(.text);
|
||||||
asm/mon_markings.o(.text);
|
asm/mon_markings.o(.text);
|
||||||
asm/mauville_old_man.o(.text);
|
asm/mauville_old_man.o(.text);
|
||||||
|
src/mail.o(.text);
|
||||||
asm/mail.o(.text);
|
asm/mail.o(.text);
|
||||||
asm/menu_helpers.o(.text);
|
asm/menu_helpers.o(.text);
|
||||||
asm/dewford_trend.o(.text);
|
asm/dewford_trend.o(.text);
|
||||||
|
127
src/mail.c
Normal file
127
src/mail.c
Normal file
@ -0,0 +1,127 @@
|
|||||||
|
|
||||||
|
// Includes
|
||||||
|
#include "global.h"
|
||||||
|
#include "main.h"
|
||||||
|
#include "species.h"
|
||||||
|
#include "malloc.h"
|
||||||
|
#include "easy_chat.h"
|
||||||
|
#include "mail_data.h"
|
||||||
|
#include "mail.h"
|
||||||
|
|
||||||
|
// Static type declarations
|
||||||
|
|
||||||
|
struct UnkMailStruct
|
||||||
|
{
|
||||||
|
u8 unk_0_0:2;
|
||||||
|
u8 unk_0_2:2;
|
||||||
|
u8 unk_0_4:4;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct MailLayout
|
||||||
|
{
|
||||||
|
u8 var0;
|
||||||
|
u8 var1;
|
||||||
|
u8 var2;
|
||||||
|
u8 var3_0:4;
|
||||||
|
u8 var3_4:4;
|
||||||
|
struct UnkMailStruct *var4;
|
||||||
|
u32 var8;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Unk203A134
|
||||||
|
{
|
||||||
|
/*0x0000*/ u8 filler_0000[0x20c];
|
||||||
|
/*0x020C*/ MainCallback callback;
|
||||||
|
/*0x0210*/ u8 filler_0210[4];
|
||||||
|
/*0x0214*/ struct MailStruct *mail;
|
||||||
|
/*0x0218*/ bool8 flag;
|
||||||
|
/*0x0219*/ u8 filler_0219[1];
|
||||||
|
/*0x021a*/ u8 mailType;
|
||||||
|
/*0x021b*/ u8 unk_021b;
|
||||||
|
/*0x021c*/ u8 unk_021c;
|
||||||
|
/*0x021d*/ u8 language;
|
||||||
|
/*0x021e*/ bool8 playerIsSender;
|
||||||
|
/*0x0220*/ void (*parserSingle)(u8 *dest, u16 word);
|
||||||
|
/*0x0224*/ void (*parserMultiple)(u8 *dest, const u16 *src, u16 length1, u16 length2);
|
||||||
|
/*0x0228*/ const struct MailLayout *layout;
|
||||||
|
/*0x022c*/ u8 filler_022C[0x2000];
|
||||||
|
};
|
||||||
|
|
||||||
|
struct MailGraphics
|
||||||
|
{
|
||||||
|
u16 (*palette)[];
|
||||||
|
u8 (*tiles)[];
|
||||||
|
u8 (*tileMap)[];
|
||||||
|
u16 var0C;
|
||||||
|
u16 var0E;
|
||||||
|
u16 color10;
|
||||||
|
u16 color12;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Static RAM declarations
|
||||||
|
|
||||||
|
EWRAM_DATA struct Unk203A134 *gUnknown_0203A134;
|
||||||
|
|
||||||
|
// Static ROM declarations
|
||||||
|
|
||||||
|
void sub_81219F0(void);
|
||||||
|
|
||||||
|
// .rodata
|
||||||
|
|
||||||
|
extern const struct MailLayout gUnknown_0859F3B4[];
|
||||||
|
extern const struct MailLayout gUnknown_0859F458[];
|
||||||
|
|
||||||
|
// .text
|
||||||
|
|
||||||
|
void sub_8121478(struct MailStruct *mail, MainCallback callback, bool8 flag) {
|
||||||
|
u16 buffer[2];
|
||||||
|
u16 species;
|
||||||
|
|
||||||
|
gUnknown_0203A134 = calloc(1, sizeof(struct Unk203A134));
|
||||||
|
gUnknown_0203A134->language = LANGUAGE_ENGLISH;
|
||||||
|
gUnknown_0203A134->playerIsSender = TRUE;
|
||||||
|
gUnknown_0203A134->parserSingle = CopyEasyChatWord;
|
||||||
|
gUnknown_0203A134->parserMultiple = ConvertEasyChatWordsToString;
|
||||||
|
if (mail->itemId >= ITEM_ORANGE_MAIL && mail->itemId <= ITEM_RETRO_MAIL) {
|
||||||
|
gUnknown_0203A134->mailType = mail->itemId - ITEM_ORANGE_MAIL;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
gUnknown_0203A134->mailType = 0;
|
||||||
|
flag = FALSE;
|
||||||
|
}
|
||||||
|
switch (gUnknown_0203A134->playerIsSender)
|
||||||
|
{
|
||||||
|
case FALSE:
|
||||||
|
default:
|
||||||
|
gUnknown_0203A134->layout = &gUnknown_0859F3B4[gUnknown_0203A134->mailType];
|
||||||
|
break;
|
||||||
|
case TRUE:
|
||||||
|
gUnknown_0203A134->layout = &gUnknown_0859F458[gUnknown_0203A134->mailType];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
species = sub_80D45E8(mail->species, buffer);
|
||||||
|
if (species >= SPECIES_BULBASAUR && species < NUM_SPECIES)
|
||||||
|
{
|
||||||
|
switch (gUnknown_0203A134->mailType)
|
||||||
|
{
|
||||||
|
default:
|
||||||
|
gUnknown_0203A134->unk_021b = 0;
|
||||||
|
break;
|
||||||
|
case ITEM_BEAD_MAIL - ITEM_ORANGE_MAIL:
|
||||||
|
gUnknown_0203A134->unk_021b = 1;
|
||||||
|
break;
|
||||||
|
case ITEM_DREAM_MAIL - ITEM_ORANGE_MAIL:
|
||||||
|
gUnknown_0203A134->unk_021b = 2;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
gUnknown_0203A134->unk_021b = 0;
|
||||||
|
}
|
||||||
|
gUnknown_0203A134->mail = mail;
|
||||||
|
gUnknown_0203A134->callback = callback;
|
||||||
|
gUnknown_0203A134->flag = flag;
|
||||||
|
SetMainCallback2(sub_81219F0);
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user