mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2024-12-25 11:14:15 +01:00
through sub_81203FC
This commit is contained in:
parent
21c3e7e8e5
commit
cae0fb8ec2
@ -5,375 +5,6 @@
|
|||||||
|
|
||||||
.text
|
.text
|
||||||
|
|
||||||
thumb_func_start sub_81201C8
|
|
||||||
sub_81201C8: @ 81201C8
|
|
||||||
ldr r0, =gSaveBlock1Ptr
|
|
||||||
ldr r0, [r0]
|
|
||||||
ldr r1, =0x00002e28
|
|
||||||
adds r0, r1
|
|
||||||
ldrb r0, [r0]
|
|
||||||
bx lr
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_81201C8
|
|
||||||
|
|
||||||
thumb_func_start sub_81201DC
|
|
||||||
sub_81201DC: @ 81201DC
|
|
||||||
push {r4,lr}
|
|
||||||
ldr r4, =gSpecialVar_Result
|
|
||||||
bl sub_81201C8
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
strh r0, [r4]
|
|
||||||
pop {r4}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_81201DC
|
|
||||||
|
|
||||||
thumb_func_start sub_81201F4
|
|
||||||
sub_81201F4: @ 81201F4
|
|
||||||
ldr r1, =gSpecialVar_Result
|
|
||||||
ldr r0, =gSaveBlock1Ptr
|
|
||||||
ldr r0, [r0]
|
|
||||||
ldr r2, =0x00002e51
|
|
||||||
adds r0, r2
|
|
||||||
ldrb r0, [r0]
|
|
||||||
strh r0, [r1]
|
|
||||||
bx lr
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_81201F4
|
|
||||||
|
|
||||||
thumb_func_start sub_8120210
|
|
||||||
sub_8120210: @ 8120210
|
|
||||||
push {r4-r6,lr}
|
|
||||||
ldr r0, =gSaveBlock1Ptr
|
|
||||||
ldr r4, [r0]
|
|
||||||
ldr r0, =0x00002e28
|
|
||||||
adds r6, r4, r0
|
|
||||||
ldr r1, =0x00002e42
|
|
||||||
adds r0, r4, r1
|
|
||||||
ldr r5, =gSaveBlock2Ptr
|
|
||||||
ldr r1, [r5]
|
|
||||||
bl StringCopy
|
|
||||||
movs r2, 0
|
|
||||||
ldr r0, =0x00002e4d
|
|
||||||
adds r4, r0
|
|
||||||
_0812022C:
|
|
||||||
adds r1, r4, r2
|
|
||||||
ldr r0, [r5]
|
|
||||||
adds r0, 0xA
|
|
||||||
adds r0, r2
|
|
||||||
ldrb r0, [r0]
|
|
||||||
strb r0, [r1]
|
|
||||||
adds r0, r2, 0x1
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r2, r0, 16
|
|
||||||
cmp r2, 0x3
|
|
||||||
bls _0812022C
|
|
||||||
movs r2, 0
|
|
||||||
adds r5, r6, 0
|
|
||||||
adds r5, 0x29
|
|
||||||
adds r3, r6, 0x2
|
|
||||||
adds r4, r6, 0
|
|
||||||
adds r4, 0xE
|
|
||||||
_0812024E:
|
|
||||||
lsls r0, r2, 1
|
|
||||||
adds r1, r3, r0
|
|
||||||
adds r0, r4, r0
|
|
||||||
ldrh r0, [r0]
|
|
||||||
strh r0, [r1]
|
|
||||||
adds r0, r2, 0x1
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r2, r0, 16
|
|
||||||
cmp r2, 0x5
|
|
||||||
bls _0812024E
|
|
||||||
movs r0, 0x1
|
|
||||||
strb r0, [r5]
|
|
||||||
pop {r4-r6}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_8120210
|
|
||||||
|
|
||||||
thumb_func_start sub_8120280
|
|
||||||
sub_8120280: @ 8120280
|
|
||||||
push {r4-r7,lr}
|
|
||||||
ldr r0, =gSaveBlock1Ptr
|
|
||||||
ldr r1, [r0]
|
|
||||||
ldr r0, =gSpecialVar_0x8004
|
|
||||||
ldrh r0, [r0]
|
|
||||||
ldr r2, =0x00002e36
|
|
||||||
adds r5, r1, r2
|
|
||||||
cmp r0, 0
|
|
||||||
bne _08120296
|
|
||||||
ldr r0, =0x00002e2a
|
|
||||||
adds r5, r1, r0
|
|
||||||
_08120296:
|
|
||||||
ldr r2, =gStringVar4
|
|
||||||
adds r4, r2, 0
|
|
||||||
movs r6, 0
|
|
||||||
_0812029C:
|
|
||||||
ldrh r1, [r5]
|
|
||||||
adds r5, 0x2
|
|
||||||
adds r0, r2, 0
|
|
||||||
bl CopyEasyChatWord
|
|
||||||
adds r2, r0, 0
|
|
||||||
adds r7, r6, 0x1
|
|
||||||
cmp r2, r4
|
|
||||||
beq _081202BE
|
|
||||||
movs r1, 0x37
|
|
||||||
_081202B0:
|
|
||||||
ldrb r0, [r4]
|
|
||||||
cmp r0, 0
|
|
||||||
bne _081202B8
|
|
||||||
strb r1, [r4]
|
|
||||||
_081202B8:
|
|
||||||
adds r4, 0x1
|
|
||||||
cmp r2, r4
|
|
||||||
bne _081202B0
|
|
||||||
_081202BE:
|
|
||||||
adds r4, 0x1
|
|
||||||
movs r0, 0
|
|
||||||
strb r0, [r2]
|
|
||||||
adds r2, 0x1
|
|
||||||
ldrh r1, [r5]
|
|
||||||
adds r5, 0x2
|
|
||||||
adds r0, r2, 0
|
|
||||||
bl CopyEasyChatWord
|
|
||||||
adds r2, r0, 0
|
|
||||||
cmp r2, r4
|
|
||||||
beq _081202E6
|
|
||||||
movs r1, 0x37
|
|
||||||
_081202D8:
|
|
||||||
ldrb r0, [r4]
|
|
||||||
cmp r0, 0
|
|
||||||
bne _081202E0
|
|
||||||
strb r1, [r4]
|
|
||||||
_081202E0:
|
|
||||||
adds r4, 0x1
|
|
||||||
cmp r2, r4
|
|
||||||
bne _081202D8
|
|
||||||
_081202E6:
|
|
||||||
adds r4, 0x1
|
|
||||||
movs r0, 0xFE
|
|
||||||
strb r0, [r2]
|
|
||||||
adds r2, 0x1
|
|
||||||
ldrh r1, [r5]
|
|
||||||
adds r5, 0x2
|
|
||||||
adds r0, r2, 0
|
|
||||||
bl CopyEasyChatWord
|
|
||||||
adds r2, r0, 0
|
|
||||||
cmp r2, r4
|
|
||||||
beq _0812030E
|
|
||||||
movs r1, 0x37
|
|
||||||
_08120300:
|
|
||||||
ldrb r0, [r4]
|
|
||||||
cmp r0, 0
|
|
||||||
bne _08120308
|
|
||||||
strb r1, [r4]
|
|
||||||
_08120308:
|
|
||||||
adds r4, 0x1
|
|
||||||
cmp r2, r4
|
|
||||||
bne _08120300
|
|
||||||
_0812030E:
|
|
||||||
cmp r6, 0
|
|
||||||
bne _0812031E
|
|
||||||
movs r0, 0xFC
|
|
||||||
strb r0, [r2]
|
|
||||||
adds r2, 0x1
|
|
||||||
movs r0, 0xF
|
|
||||||
strb r0, [r2]
|
|
||||||
adds r2, 0x1
|
|
||||||
_0812031E:
|
|
||||||
lsls r0, r7, 16
|
|
||||||
lsrs r6, r0, 16
|
|
||||||
cmp r6, 0x1
|
|
||||||
bls _0812029C
|
|
||||||
pop {r4-r7}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_8120280
|
|
||||||
|
|
||||||
thumb_func_start sub_8120340
|
|
||||||
sub_8120340: @ 8120340
|
|
||||||
push {lr}
|
|
||||||
ldr r0, =gSpecialVar_0x8004
|
|
||||||
ldrb r0, [r0]
|
|
||||||
bl sub_81206C0
|
|
||||||
bl ScriptContext1_Stop
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_8120340
|
|
||||||
|
|
||||||
thumb_func_start sub_8120358
|
|
||||||
sub_8120358: @ 8120358
|
|
||||||
ldr r1, =gSpecialVar_Result
|
|
||||||
ldr r0, =gSaveBlock1Ptr
|
|
||||||
ldr r0, [r0]
|
|
||||||
ldr r2, =0x00002e28
|
|
||||||
adds r0, r2
|
|
||||||
ldrb r0, [r0, 0x1]
|
|
||||||
strh r0, [r1]
|
|
||||||
bx lr
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_8120358
|
|
||||||
|
|
||||||
thumb_func_start sub_8120374
|
|
||||||
sub_8120374: @ 8120374
|
|
||||||
ldr r0, =gSaveBlock1Ptr
|
|
||||||
ldr r0, [r0]
|
|
||||||
ldr r1, =0x00002e28
|
|
||||||
adds r0, r1
|
|
||||||
movs r1, 0x1
|
|
||||||
strb r1, [r0, 0x1]
|
|
||||||
bx lr
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_8120374
|
|
||||||
|
|
||||||
thumb_func_start sub_812038C
|
|
||||||
sub_812038C: @ 812038C
|
|
||||||
push {lr}
|
|
||||||
bl sub_811F01C
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r1, r0, 16
|
|
||||||
ldr r0, =0x0000ffff
|
|
||||||
cmp r1, r0
|
|
||||||
bne _081203AC
|
|
||||||
ldr r1, =gSpecialVar_Result
|
|
||||||
movs r0, 0
|
|
||||||
b _081203B6
|
|
||||||
.pool
|
|
||||||
_081203AC:
|
|
||||||
ldr r0, =gStringVar1
|
|
||||||
bl CopyEasyChatWord
|
|
||||||
ldr r1, =gSpecialVar_Result
|
|
||||||
movs r0, 0x1
|
|
||||||
_081203B6:
|
|
||||||
strh r0, [r1]
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_812038C
|
|
||||||
|
|
||||||
thumb_func_start sub_81203C4
|
|
||||||
sub_81203C4: @ 81203C4
|
|
||||||
push {lr}
|
|
||||||
ldr r0, =gSaveBlock1Ptr
|
|
||||||
ldr r0, [r0]
|
|
||||||
ldr r1, =0x00002e28
|
|
||||||
adds r2, r0, r1
|
|
||||||
ldrb r0, [r2, 0x1]
|
|
||||||
cmp r0, 0xA
|
|
||||||
bne _081203EC
|
|
||||||
ldr r1, =gSpecialVar_Result
|
|
||||||
movs r0, 0
|
|
||||||
strh r0, [r1]
|
|
||||||
strb r0, [r2, 0x1]
|
|
||||||
b _081203F2
|
|
||||||
.pool
|
|
||||||
_081203EC:
|
|
||||||
ldr r1, =gSpecialVar_Result
|
|
||||||
movs r0, 0x1
|
|
||||||
strh r0, [r1]
|
|
||||||
_081203F2:
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_81203C4
|
|
||||||
|
|
||||||
thumb_func_start sub_81203FC
|
|
||||||
sub_81203FC: @ 81203FC
|
|
||||||
push {r4-r6,lr}
|
|
||||||
ldr r0, =gSaveBlock1Ptr
|
|
||||||
ldr r4, [r0]
|
|
||||||
ldr r0, =0x00002e28
|
|
||||||
adds r5, r4, r0
|
|
||||||
ldrb r0, [r5, 0x1]
|
|
||||||
cmp r0, 0
|
|
||||||
bne _08120410
|
|
||||||
bl sub_81204DC
|
|
||||||
_08120410:
|
|
||||||
ldrb r0, [r5, 0x1]
|
|
||||||
lsls r0, 1
|
|
||||||
ldr r1, =0x00002e2c
|
|
||||||
adds r6, r4, r1
|
|
||||||
adds r0, r6, r0
|
|
||||||
ldrh r1, [r0]
|
|
||||||
ldr r0, =0x0000ffff
|
|
||||||
cmp r1, r0
|
|
||||||
beq _08120480
|
|
||||||
bl Random
|
|
||||||
adds r4, r0, 0
|
|
||||||
lsls r4, 16
|
|
||||||
lsrs r4, 16
|
|
||||||
movs r0, 0x7
|
|
||||||
ands r4, r0
|
|
||||||
ldr r0, =gStringVar4
|
|
||||||
ldrb r1, [r5, 0x1]
|
|
||||||
lsls r1, 1
|
|
||||||
adds r1, r6, r1
|
|
||||||
ldrh r1, [r1]
|
|
||||||
bl CopyEasyChatWord
|
|
||||||
adds r2, r0, 0
|
|
||||||
ldr r1, =gUnknown_082942FD
|
|
||||||
bl StringCopy
|
|
||||||
adds r2, r0, 0
|
|
||||||
ldr r0, =gUnknown_0859EFF0
|
|
||||||
lsls r4, 2
|
|
||||||
adds r4, r0
|
|
||||||
ldr r1, [r4]
|
|
||||||
adds r0, r2, 0
|
|
||||||
bl StringCopy
|
|
||||||
adds r2, r0, 0
|
|
||||||
ldr r1, =gUnknown_08294301
|
|
||||||
bl StringCopy
|
|
||||||
b _081204A2
|
|
||||||
.pool
|
|
||||||
_08120480:
|
|
||||||
ldr r0, =gStringVar4
|
|
||||||
ldr r3, =gUnknown_0859F010
|
|
||||||
ldrb r2, [r5, 0x2]
|
|
||||||
adds r1, r2, 0x1
|
|
||||||
strb r1, [r5, 0x2]
|
|
||||||
lsls r2, 24
|
|
||||||
lsrs r2, 24
|
|
||||||
movs r6, 0xB9
|
|
||||||
lsls r6, 6
|
|
||||||
adds r1, r4, r6
|
|
||||||
adds r1, r2
|
|
||||||
ldrb r1, [r1]
|
|
||||||
lsls r1, 2
|
|
||||||
adds r1, r3
|
|
||||||
ldr r1, [r1]
|
|
||||||
bl StringCopy
|
|
||||||
_081204A2:
|
|
||||||
bl Random
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r0, 16
|
|
||||||
movs r1, 0xA
|
|
||||||
bl __umodsi3
|
|
||||||
lsls r0, 16
|
|
||||||
cmp r0, 0
|
|
||||||
bne _081204C4
|
|
||||||
movs r0, 0xA
|
|
||||||
b _081204C8
|
|
||||||
.pool
|
|
||||||
_081204C4:
|
|
||||||
ldrb r0, [r5, 0x1]
|
|
||||||
adds r0, 0x1
|
|
||||||
_081204C8:
|
|
||||||
strb r0, [r5, 0x1]
|
|
||||||
ldr r1, =gSpecialVar_Result
|
|
||||||
movs r0, 0x1
|
|
||||||
strh r0, [r1]
|
|
||||||
pop {r4-r6}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_81203FC
|
|
||||||
|
|
||||||
thumb_func_start sub_81204DC
|
thumb_func_start sub_81204DC
|
||||||
sub_81204DC: @ 81204DC
|
sub_81204DC: @ 81204DC
|
||||||
push {r4-r7,lr}
|
push {r4-r7,lr}
|
||||||
|
@ -5887,10 +5887,10 @@ gText_SoAmusing:: @ 82942E3
|
|||||||
gText_SoMagical:: @ 82942F0
|
gText_SoMagical:: @ 82942F0
|
||||||
.string " so magical!$"
|
.string " so magical!$"
|
||||||
|
|
||||||
gUnknown_082942FD:: @ 82942FD
|
gOtherText_Is:: @ 82942FD
|
||||||
.string " is$"
|
.string " is$"
|
||||||
|
|
||||||
gUnknown_08294301:: @ 8294301
|
gOtherText_DontYouAgree:: @ 8294301
|
||||||
.string "\n"
|
.string "\n"
|
||||||
.string "Don’t you agree?$"
|
.string "Don’t you agree?$"
|
||||||
|
|
||||||
|
@ -4,26 +4,6 @@
|
|||||||
.section .rodata
|
.section .rodata
|
||||||
.align 2, 0
|
.align 2, 0
|
||||||
|
|
||||||
gUnknown_0859EFF0:: @ 859EFF0
|
|
||||||
.4byte gText_SoPretty
|
|
||||||
.4byte gText_SoDarling
|
|
||||||
.4byte gText_SoRelaxed
|
|
||||||
.4byte gText_SoSunny
|
|
||||||
.4byte gText_SoDesirable
|
|
||||||
.4byte gText_SoExciting
|
|
||||||
.4byte gText_SoAmusing
|
|
||||||
.4byte gText_SoMagical
|
|
||||||
|
|
||||||
gUnknown_0859F010:: @ 859F010
|
|
||||||
.4byte gUnknown_08294313
|
|
||||||
.4byte gUnknown_08294359
|
|
||||||
.4byte gUnknown_08294398
|
|
||||||
.4byte gUnknown_082943DA
|
|
||||||
.4byte gUnknown_0829441C
|
|
||||||
.4byte gUnknown_08294460
|
|
||||||
.4byte gUnknown_082944A0
|
|
||||||
.4byte gUnknown_082944D5
|
|
||||||
|
|
||||||
gUnknown_0859F030:: @ 859F030
|
gUnknown_0859F030:: @ 859F030
|
||||||
.4byte 0, 12, 13, 18, 19, 21
|
.4byte 0, 12, 13, 18, 19, 21
|
||||||
|
|
||||||
|
@ -1,40 +1,14 @@
|
|||||||
#ifndef GUARD_EASYCHAT_H
|
#ifndef GUARD_EASYCHAT_H
|
||||||
#define GUARD_EASYCHAT_H
|
#define GUARD_EASYCHAT_H
|
||||||
|
|
||||||
// Taken from Pokeruby, check if it's correct
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
EC_GROUP_POKEMON,
|
|
||||||
EC_GROUP_TRAINER,
|
|
||||||
EC_GROUP_STATUS,
|
|
||||||
EC_GROUP_BATTLE,
|
|
||||||
EC_GROUP_GREETINGS,
|
|
||||||
EC_GROUP_PEOPLE,
|
|
||||||
EC_GROUP_VOICES,
|
|
||||||
EC_GROUP_SPEECH,
|
|
||||||
EC_GROUP_ENDINGS,
|
|
||||||
EC_GROUP_FEELINGS,
|
|
||||||
EC_GROUP_CONDITIONS,
|
|
||||||
EC_GROUP_ACTIONS,
|
|
||||||
EC_GROUP_LIFESTYLE,
|
|
||||||
EC_GROUP_HOBBIES,
|
|
||||||
EC_GROUP_TIME,
|
|
||||||
EC_GROUP_MISC,
|
|
||||||
EC_GROUP_ADJECTIVES,
|
|
||||||
EC_GROUP_EVENTS,
|
|
||||||
EC_GROUP_MOVE_1,
|
|
||||||
EC_GROUP_MOVE_2,
|
|
||||||
EC_GROUP_TRENDY_SAYING,
|
|
||||||
EC_GROUP_POKEMON_2,
|
|
||||||
};
|
|
||||||
|
|
||||||
void InitEasyChatPhrases(void);
|
void InitEasyChatPhrases(void);
|
||||||
void easy_chat_input_maybe(void);
|
void easy_chat_input_maybe(void);
|
||||||
void CopyEasyChatWord(u8 *dest, u16 word);
|
u8 * CopyEasyChatWord(u8 *dest, u16 word);
|
||||||
bool32 sub_811F8D8(u16 word);
|
bool32 sub_811F8D8(u16 word);
|
||||||
void InitializeEasyChatWordArray(u16 *words, u16 length);
|
void InitializeEasyChatWordArray(u16 *words, u16 length);
|
||||||
void ConvertEasyChatWordsToString(u8 *dest, const u16 *src, u16 length1, u16 length2);
|
void ConvertEasyChatWordsToString(u8 *dest, const u16 *src, u16 length1, u16 length2);
|
||||||
bool8 ECWord_CheckIfOutsideOfValidRange(u16 word);
|
bool8 ECWord_CheckIfOutsideOfValidRange(u16 word);
|
||||||
u16 sub_811EE38(u16 group);
|
u16 sub_811EE38(u16 group);
|
||||||
|
u16 sub_811F01C(void);
|
||||||
|
|
||||||
#endif // GUARD_EASYCHAT_H
|
#endif // GUARD_EASYCHAT_H
|
||||||
|
@ -394,4 +394,24 @@ extern const u8 Route111_EventScript_2907F0[];
|
|||||||
extern const u8 LittlerootTown_BrendansHouse_2F_EventScript_1F863F[];
|
extern const u8 LittlerootTown_BrendansHouse_2F_EventScript_1F863F[];
|
||||||
extern const u8 LittlerootTown_MaysHouse_2F_EventScript_1F958F[];
|
extern const u8 LittlerootTown_MaysHouse_2F_EventScript_1F958F[];
|
||||||
|
|
||||||
|
//mauville_old_man
|
||||||
|
extern const u8 gOtherText_Is[];
|
||||||
|
extern const u8 gOtherText_DontYouAgree[];
|
||||||
|
extern const u8 gText_SoPretty[];
|
||||||
|
extern const u8 gText_SoDarling[];
|
||||||
|
extern const u8 gText_SoRelaxed[];
|
||||||
|
extern const u8 gText_SoSunny[];
|
||||||
|
extern const u8 gText_SoDesirable[];
|
||||||
|
extern const u8 gText_SoExciting[];
|
||||||
|
extern const u8 gText_SoAmusing[];
|
||||||
|
extern const u8 gText_SoMagical[];
|
||||||
|
extern const u8 gUnknown_08294313[];
|
||||||
|
extern const u8 gUnknown_08294359[];
|
||||||
|
extern const u8 gUnknown_08294398[];
|
||||||
|
extern const u8 gUnknown_082943DA[];
|
||||||
|
extern const u8 gUnknown_0829441C[];
|
||||||
|
extern const u8 gUnknown_08294460[];
|
||||||
|
extern const u8 gUnknown_082944A0[];
|
||||||
|
extern const u8 gUnknown_082944D5[];
|
||||||
|
|
||||||
#endif //GUARD_EVENT_SCRIPTS_H
|
#endif //GUARD_EVENT_SCRIPTS_H
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
// Includes
|
// Includes
|
||||||
#include "global.h"
|
#include "global.h"
|
||||||
#include "bard_music.h"
|
#include "bard_music.h"
|
||||||
|
#include "constants/easy_chat.h"
|
||||||
#include "easy_chat.h"
|
#include "easy_chat.h"
|
||||||
|
|
||||||
#include "data/bard_music/bard_sounds.h"
|
#include "data/bard_music/bard_sounds.h"
|
||||||
|
@ -101,7 +101,7 @@ struct MailRead
|
|||||||
/*0x021c*/ u8 monIconSprite;
|
/*0x021c*/ u8 monIconSprite;
|
||||||
/*0x021d*/ u8 language;
|
/*0x021d*/ u8 language;
|
||||||
/*0x021e*/ bool8 playerIsSender;
|
/*0x021e*/ bool8 playerIsSender;
|
||||||
/*0x0220*/ void (*parserSingle)(u8 *dest, u16 word);
|
/*0x0220*/ u8 * (*parserSingle)(u8 *dest, u16 word);
|
||||||
/*0x0224*/ void (*parserMultiple)(u8 *dest, const u16 *src, u16 length1, u16 length2);
|
/*0x0224*/ void (*parserMultiple)(u8 *dest, const u16 *src, u16 length1, u16 length2);
|
||||||
/*0x0228*/ const struct MailLayout *layout;
|
/*0x0228*/ const struct MailLayout *layout;
|
||||||
/*0x022c*/ u8 bg1TilemapBuffer[0x1000];
|
/*0x022c*/ u8 bg1TilemapBuffer[0x1000];
|
||||||
|
@ -2,10 +2,21 @@
|
|||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "constants/easy_chat.h"
|
#include "constants/easy_chat.h"
|
||||||
#include "mauville_old_man.h"
|
#include "mauville_old_man.h"
|
||||||
|
#include "event_data.h"
|
||||||
|
#include "string_util.h"
|
||||||
|
#include "text.h"
|
||||||
|
#include "easy_chat.h"
|
||||||
|
#include "script.h"
|
||||||
|
#include "random.h"
|
||||||
|
#include "event_scripts.h"
|
||||||
|
|
||||||
|
#define CHAR_SONG_WORD_SEPARATOR 0x37
|
||||||
|
|
||||||
void sub_8120E08(void); // StorytellerSetup
|
void sub_8120E08(void); // StorytellerSetup
|
||||||
void sub_81339F8(void); // TraderSetup
|
void sub_81339F8(void); // TraderSetup
|
||||||
void sub_8120B5C(void);
|
void sub_8120B5C(void);
|
||||||
|
void sub_81206C0(u8 a0); // StartBardSong
|
||||||
|
void sub_81204DC(void);
|
||||||
|
|
||||||
static const u16 sDefaultBardSongLyrics[6] = {
|
static const u16 sDefaultBardSongLyrics[6] = {
|
||||||
EC_WORD_SHAKE,
|
EC_WORD_SHAKE,
|
||||||
@ -16,6 +27,28 @@ static const u16 sDefaultBardSongLyrics[6] = {
|
|||||||
EC_WORD_DANCE
|
EC_WORD_DANCE
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const u8 * const sGiddyAdjectives[] = {
|
||||||
|
gText_SoPretty,
|
||||||
|
gText_SoDarling,
|
||||||
|
gText_SoRelaxed,
|
||||||
|
gText_SoSunny,
|
||||||
|
gText_SoDesirable,
|
||||||
|
gText_SoExciting,
|
||||||
|
gText_SoAmusing,
|
||||||
|
gText_SoMagical
|
||||||
|
};
|
||||||
|
|
||||||
|
static const u8 * const sGiddyQuestions[] = {
|
||||||
|
gUnknown_08294313,
|
||||||
|
gUnknown_08294359,
|
||||||
|
gUnknown_08294398,
|
||||||
|
gUnknown_082943DA,
|
||||||
|
gUnknown_0829441C,
|
||||||
|
gUnknown_08294460,
|
||||||
|
gUnknown_082944A0,
|
||||||
|
gUnknown_082944D5
|
||||||
|
};
|
||||||
|
|
||||||
static void SetupBard(void)
|
static void SetupBard(void)
|
||||||
{
|
{
|
||||||
u16 i;
|
u16 i;
|
||||||
@ -82,3 +115,177 @@ void SetMauvilleOldMan(void)
|
|||||||
}
|
}
|
||||||
sub_8120B5C();
|
sub_8120B5C();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
u8 sub_81201C8(void) // GetCurrentMauvilleOldMan
|
||||||
|
{
|
||||||
|
struct MauvilleManCommon *common = &gSaveBlock1Ptr->oldMan.common;
|
||||||
|
|
||||||
|
return common->id;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_81201DC(void) // ScrSpecial_GetCurrentMauvilleMan
|
||||||
|
{
|
||||||
|
gSpecialVar_Result = sub_81201C8();
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_81201F4(void) // ScrSpecial_HasBardSongBeenChanged
|
||||||
|
{
|
||||||
|
u16 *scriptResult = &gSpecialVar_Result; // why??
|
||||||
|
struct MauvilleManBard *bard = &gSaveBlock1Ptr->oldMan.bard;
|
||||||
|
|
||||||
|
*scriptResult = bard->hasChangedSong;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_8120210(void) // ScrSpecial_SaveBardSongLyrics
|
||||||
|
{
|
||||||
|
u16 i;
|
||||||
|
struct MauvilleManBard *bard = &gSaveBlock1Ptr->oldMan.bard;
|
||||||
|
|
||||||
|
StringCopy(bard->playerName, gSaveBlock2Ptr->playerName);
|
||||||
|
|
||||||
|
for (i = 0; i < 4; i++)
|
||||||
|
bard->playerTrainerId[i] = gSaveBlock2Ptr->playerTrainerId[i];
|
||||||
|
|
||||||
|
for (i = 0; i < 6; i++)
|
||||||
|
bard->songLyrics[i] = bard->temporaryLyrics[i];
|
||||||
|
|
||||||
|
bard->hasChangedSong = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Copies lyrics into gStringVar4
|
||||||
|
void sub_8120280(void)
|
||||||
|
{
|
||||||
|
struct MauvilleManBard *bard = &gSaveBlock1Ptr->oldMan.bard;
|
||||||
|
u16 specialVar = gSpecialVar_0x8004; // It's a bit odd to use this temp variable, but it seems needed to match.
|
||||||
|
u16 *lyrics;
|
||||||
|
u16 lineNum;
|
||||||
|
u8 *wordEnd;
|
||||||
|
u8 *str;
|
||||||
|
|
||||||
|
lyrics = bard->temporaryLyrics;
|
||||||
|
if (specialVar == 0)
|
||||||
|
lyrics = bard->songLyrics;
|
||||||
|
wordEnd = gStringVar4;
|
||||||
|
str = wordEnd;
|
||||||
|
// Put three words on each line
|
||||||
|
for (lineNum = 0; lineNum < 2; lineNum++)
|
||||||
|
{
|
||||||
|
wordEnd = CopyEasyChatWord(wordEnd, *(lyrics++));
|
||||||
|
while (wordEnd != str)
|
||||||
|
{
|
||||||
|
if (*str == CHAR_SPACE)
|
||||||
|
*str = CHAR_SONG_WORD_SEPARATOR;
|
||||||
|
str++;
|
||||||
|
}
|
||||||
|
|
||||||
|
str++;
|
||||||
|
*(wordEnd++) = CHAR_SPACE;
|
||||||
|
|
||||||
|
wordEnd = CopyEasyChatWord(wordEnd, *(lyrics++));
|
||||||
|
while (wordEnd != str)
|
||||||
|
{
|
||||||
|
if (*str == CHAR_SPACE)
|
||||||
|
*str = CHAR_SONG_WORD_SEPARATOR;
|
||||||
|
str++;
|
||||||
|
}
|
||||||
|
|
||||||
|
str++;
|
||||||
|
*(wordEnd++) = CHAR_NEWLINE;
|
||||||
|
|
||||||
|
wordEnd = CopyEasyChatWord(wordEnd, *(lyrics++));
|
||||||
|
while (wordEnd != str)
|
||||||
|
{
|
||||||
|
if (*str == CHAR_SPACE)
|
||||||
|
*str = CHAR_SONG_WORD_SEPARATOR;
|
||||||
|
str++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (lineNum == 0)
|
||||||
|
{
|
||||||
|
*(wordEnd++) = EXT_CTRL_CODE_BEGIN;
|
||||||
|
*(wordEnd++) = 15;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_8120340(void) // ScrSpecial_PlayBardSong
|
||||||
|
{
|
||||||
|
sub_81206C0(gSpecialVar_0x8004);
|
||||||
|
ScriptContext1_Stop();
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_8120358(void) // ScrSpecial_GetHipsterSpokenFlag
|
||||||
|
{
|
||||||
|
u16 *scriptResult = &gSpecialVar_Result; // again??
|
||||||
|
struct MauvilleManHipster *hipster = &gSaveBlock1Ptr->oldMan.hipster;
|
||||||
|
|
||||||
|
*scriptResult = hipster->alreadySpoken;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_8120374(void) // ScrSpecial_SetHipsterSpokenFlag
|
||||||
|
{
|
||||||
|
struct MauvilleManHipster *hipster = &gSaveBlock1Ptr->oldMan.hipster;
|
||||||
|
|
||||||
|
hipster->alreadySpoken = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_812038C(void) // ScrSpecial_HipsterTeachWord
|
||||||
|
{
|
||||||
|
u16 var = sub_811F01C();
|
||||||
|
|
||||||
|
if (var == 0xFFFF)
|
||||||
|
{
|
||||||
|
gSpecialVar_Result = FALSE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
CopyEasyChatWord(gStringVar1, var);
|
||||||
|
gSpecialVar_Result = TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_81203C4(void) // ScrSpecial_GiddyShouldTellAnotherTale
|
||||||
|
{
|
||||||
|
struct MauvilleManGiddy *giddy = &gSaveBlock1Ptr->oldMan.giddy;
|
||||||
|
|
||||||
|
if (giddy->taleCounter == 10)
|
||||||
|
{
|
||||||
|
gSpecialVar_Result = FALSE;
|
||||||
|
giddy->taleCounter = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
gSpecialVar_Result = TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_81203FC(void) // ScrSpecial_GenerateGiddyLine
|
||||||
|
{
|
||||||
|
struct MauvilleManGiddy *giddy = &gSaveBlock1Ptr->oldMan.giddy;
|
||||||
|
|
||||||
|
if (giddy->taleCounter == 0)
|
||||||
|
sub_81204DC();
|
||||||
|
|
||||||
|
if (giddy->randomWords[giddy->taleCounter] != 0xFFFF) // is not the last element of the array?
|
||||||
|
{
|
||||||
|
u8 *stringPtr;
|
||||||
|
u32 adjective = Random();
|
||||||
|
|
||||||
|
adjective %= 8;
|
||||||
|
stringPtr = CopyEasyChatWord(gStringVar4, giddy->randomWords[giddy->taleCounter]);
|
||||||
|
stringPtr = StringCopy(stringPtr, gOtherText_Is);
|
||||||
|
stringPtr = StringCopy(stringPtr, sGiddyAdjectives[adjective]);
|
||||||
|
StringCopy(stringPtr, gOtherText_DontYouAgree);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
StringCopy(gStringVar4, sGiddyQuestions[giddy->questionList[giddy->questionNum++]]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!(Random() % 10))
|
||||||
|
giddy->taleCounter = 10;
|
||||||
|
else
|
||||||
|
giddy->taleCounter++;
|
||||||
|
|
||||||
|
gSpecialVar_Result = TRUE;
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user