mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2024-12-25 11:14:15 +01:00
through SetMauvilleOldMan
This commit is contained in:
parent
867b496f2e
commit
21c3e7e8e5
7
.idea/inspectionProfiles/profiles_settings.xml
generated
Normal file
7
.idea/inspectionProfiles/profiles_settings.xml
generated
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
<component name="InspectionProjectProfileManager">
|
||||||
|
<settings>
|
||||||
|
<option name="PROJECT_PROFILE" value="Default" />
|
||||||
|
<option name="USE_PROJECT_PROFILE" value="false" />
|
||||||
|
<version value="1.0" />
|
||||||
|
</settings>
|
||||||
|
</component>
|
@ -5,144 +5,6 @@
|
|||||||
|
|
||||||
.text
|
.text
|
||||||
|
|
||||||
thumb_func_start sub_81200A0
|
|
||||||
sub_81200A0: @ 81200A0
|
|
||||||
push {r4,lr}
|
|
||||||
ldr r0, =gSaveBlock1Ptr
|
|
||||||
ldr r2, [r0]
|
|
||||||
ldr r1, =0x00002e28
|
|
||||||
adds r0, r2, r1
|
|
||||||
movs r1, 0
|
|
||||||
strb r1, [r0]
|
|
||||||
ldr r3, =0x00002e51
|
|
||||||
adds r0, r2, r3
|
|
||||||
strb r1, [r0]
|
|
||||||
ldr r0, =gGameLanguage
|
|
||||||
ldrb r1, [r0]
|
|
||||||
adds r3, 0x1
|
|
||||||
adds r0, r2, r3
|
|
||||||
strb r1, [r0]
|
|
||||||
movs r3, 0
|
|
||||||
ldr r0, =0x00002e2a
|
|
||||||
adds r2, r0
|
|
||||||
ldr r4, =gUnknown_0859EFE4
|
|
||||||
_081200C6:
|
|
||||||
lsls r0, r3, 1
|
|
||||||
adds r1, r2, r0
|
|
||||||
adds r0, r4
|
|
||||||
ldrh r0, [r0]
|
|
||||||
strh r0, [r1]
|
|
||||||
adds r0, r3, 0x1
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r3, r0, 16
|
|
||||||
cmp r3, 0x5
|
|
||||||
bls _081200C6
|
|
||||||
pop {r4}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_81200A0
|
|
||||||
|
|
||||||
thumb_func_start sub_81200F8
|
|
||||||
sub_81200F8: @ 81200F8
|
|
||||||
ldr r0, =gSaveBlock1Ptr
|
|
||||||
ldr r1, [r0]
|
|
||||||
ldr r0, =0x00002e28
|
|
||||||
adds r1, r0
|
|
||||||
movs r2, 0
|
|
||||||
movs r0, 0x1
|
|
||||||
strb r0, [r1]
|
|
||||||
strb r2, [r1, 0x1]
|
|
||||||
ldr r0, =gGameLanguage
|
|
||||||
ldrb r0, [r0]
|
|
||||||
strb r0, [r1, 0x2]
|
|
||||||
bx lr
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_81200F8
|
|
||||||
|
|
||||||
thumb_func_start sub_812011C
|
|
||||||
sub_812011C: @ 812011C
|
|
||||||
push {lr}
|
|
||||||
bl sub_8120E08
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
thumb_func_end sub_812011C
|
|
||||||
|
|
||||||
thumb_func_start sub_8120128
|
|
||||||
sub_8120128: @ 8120128
|
|
||||||
ldr r0, =gSaveBlock1Ptr
|
|
||||||
ldr r1, [r0]
|
|
||||||
ldr r0, =0x00002e28
|
|
||||||
adds r2, r1, r0
|
|
||||||
movs r3, 0
|
|
||||||
movs r0, 0x4
|
|
||||||
strb r0, [r2]
|
|
||||||
strb r3, [r2, 0x1]
|
|
||||||
ldr r0, =gGameLanguage
|
|
||||||
ldrb r0, [r0]
|
|
||||||
ldr r2, =0x00002e48
|
|
||||||
adds r1, r2
|
|
||||||
strb r0, [r1]
|
|
||||||
bx lr
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_8120128
|
|
||||||
|
|
||||||
thumb_func_start sub_8120154
|
|
||||||
sub_8120154: @ 8120154
|
|
||||||
push {lr}
|
|
||||||
bl sub_81339F8
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
thumb_func_end sub_8120154
|
|
||||||
|
|
||||||
thumb_func_start SetMauvilleOldMan
|
|
||||||
SetMauvilleOldMan: @ 8120160
|
|
||||||
push {lr}
|
|
||||||
ldr r0, =gSaveBlock2Ptr
|
|
||||||
ldr r0, [r0]
|
|
||||||
ldrb r1, [r0, 0xB]
|
|
||||||
lsls r1, 8
|
|
||||||
ldrb r0, [r0, 0xA]
|
|
||||||
orrs r0, r1
|
|
||||||
movs r1, 0xA
|
|
||||||
bl __umodsi3
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r0, 17
|
|
||||||
cmp r0, 0x4
|
|
||||||
bhi _081201C0
|
|
||||||
lsls r0, 2
|
|
||||||
ldr r1, =_08120190
|
|
||||||
adds r0, r1
|
|
||||||
ldr r0, [r0]
|
|
||||||
mov pc, r0
|
|
||||||
.pool
|
|
||||||
.align 2, 0
|
|
||||||
_08120190:
|
|
||||||
.4byte _081201A4
|
|
||||||
.4byte _081201AA
|
|
||||||
.4byte _081201B0
|
|
||||||
.4byte _081201B6
|
|
||||||
.4byte _081201BC
|
|
||||||
_081201A4:
|
|
||||||
bl sub_81200A0
|
|
||||||
b _081201C0
|
|
||||||
_081201AA:
|
|
||||||
bl sub_81200F8
|
|
||||||
b _081201C0
|
|
||||||
_081201B0:
|
|
||||||
bl sub_8120154
|
|
||||||
b _081201C0
|
|
||||||
_081201B6:
|
|
||||||
bl sub_812011C
|
|
||||||
b _081201C0
|
|
||||||
_081201BC:
|
|
||||||
bl sub_8120128
|
|
||||||
_081201C0:
|
|
||||||
bl sub_8120B5C
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
thumb_func_end SetMauvilleOldMan
|
|
||||||
|
|
||||||
thumb_func_start sub_81201C8
|
thumb_func_start sub_81201C8
|
||||||
sub_81201C8: @ 81201C8
|
sub_81201C8: @ 81201C8
|
||||||
ldr r0, =gSaveBlock1Ptr
|
ldr r0, =gSaveBlock1Ptr
|
||||||
|
@ -4,9 +4,6 @@
|
|||||||
.section .rodata
|
.section .rodata
|
||||||
.align 2, 0
|
.align 2, 0
|
||||||
|
|
||||||
gUnknown_0859EFE4:: @ 859EFE4
|
|
||||||
.2byte 0x2811, 0x1029, 0x1018, 0xE0D, 0x1A1A, 0x1A1D
|
|
||||||
|
|
||||||
gUnknown_0859EFF0:: @ 859EFF0
|
gUnknown_0859EFF0:: @ 859EFF0
|
||||||
.4byte gText_SoPretty
|
.4byte gText_SoPretty
|
||||||
.4byte gText_SoDarling
|
.4byte gText_SoDarling
|
||||||
|
@ -428,28 +428,50 @@ struct MailStruct
|
|||||||
/*0x20*/ u16 itemId;
|
/*0x20*/ u16 itemId;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct UnkMauvilleOldManStruct
|
struct MauvilleManCommon
|
||||||
{
|
{
|
||||||
u8 unk_2D94;
|
u8 id;
|
||||||
u8 unk_2D95;
|
};
|
||||||
/*0x2D96*/ u16 mauvilleOldMan_ecArray[6];
|
|
||||||
/*0x2DA2*/ u16 mauvilleOldMan_ecArray2[6];
|
struct MauvilleManBard
|
||||||
/*0x2DAE*/ u8 playerName[8];
|
{
|
||||||
/*0x2DB6*/ u8 filler_2DB6[0x3];
|
/*0x00*/ u8 id;
|
||||||
/*0x2DB9*/ u8 playerTrainerId[4];
|
/*0x02*/ u16 songLyrics[6];
|
||||||
u8 unk_2DBD;
|
/*0x0E*/ u16 temporaryLyrics[6];
|
||||||
|
/*0x1A*/ u8 playerName[8];
|
||||||
|
/*0x22*/ u8 filler_2DB6[0x3];
|
||||||
|
/*0x25*/ u8 playerTrainerId[4];
|
||||||
|
/*0x29*/ bool8 hasChangedSong;
|
||||||
|
/*0x2A*/ u8 language;
|
||||||
}; /*size = 0x2C*/
|
}; /*size = 0x2C*/
|
||||||
|
|
||||||
struct UnkMauvilleOldManStruct2
|
struct MauvilleManStoryteller
|
||||||
{
|
{
|
||||||
u8 filler0;
|
u8 id;
|
||||||
u8 unk1;
|
bool8 alreadyRecorded;
|
||||||
u8 unk2;
|
u8 filler2[2];
|
||||||
u16 mauvilleOldMan_ecArray[10];
|
u8 gameStatIDs[4];
|
||||||
u8 mauvilleOldMan_ecArray2[12];
|
u8 trainerNames[4][7];
|
||||||
u8 fillerF[0x2];
|
u8 statValues[4][4];
|
||||||
|
};
|
||||||
|
|
||||||
|
struct MauvilleManGiddy
|
||||||
|
{
|
||||||
|
/*0x00*/ u8 id;
|
||||||
|
/*0x01*/ u8 taleCounter;
|
||||||
|
/*0x02*/ u8 questionNum;
|
||||||
|
/*0x04*/ u16 randomWords[10];
|
||||||
|
/*0x18*/ u8 questionList[8];
|
||||||
|
/*0x20*/ u8 language;
|
||||||
}; /*size = 0x2C*/
|
}; /*size = 0x2C*/
|
||||||
|
|
||||||
|
struct MauvilleManHipster
|
||||||
|
{
|
||||||
|
u8 id;
|
||||||
|
bool8 alreadySpoken;
|
||||||
|
u8 language;
|
||||||
|
};
|
||||||
|
|
||||||
struct MauvilleOldManTrader
|
struct MauvilleOldManTrader
|
||||||
{
|
{
|
||||||
u8 unk0;
|
u8 unk0;
|
||||||
@ -460,8 +482,10 @@ struct MauvilleOldManTrader
|
|||||||
|
|
||||||
typedef union OldMan
|
typedef union OldMan
|
||||||
{
|
{
|
||||||
struct UnkMauvilleOldManStruct oldMan1;
|
struct MauvilleManCommon common;
|
||||||
struct UnkMauvilleOldManStruct2 oldMan2;
|
struct MauvilleManBard bard;
|
||||||
|
struct MauvilleManGiddy giddy;
|
||||||
|
struct MauvilleManHipster hipster;
|
||||||
struct MauvilleOldManTrader trader;
|
struct MauvilleOldManTrader trader;
|
||||||
u8 filler[0x40];
|
u8 filler[0x40];
|
||||||
} OldMan;
|
} OldMan;
|
||||||
|
@ -2,6 +2,15 @@
|
|||||||
#ifndef GUARD_MAUVILLE_OLD_MAN_H
|
#ifndef GUARD_MAUVILLE_OLD_MAN_H
|
||||||
#define GUARD_MAUVILLE_OLD_MAN_H
|
#define GUARD_MAUVILLE_OLD_MAN_H
|
||||||
|
|
||||||
|
enum MauvilleOldManType
|
||||||
|
{
|
||||||
|
MAUVILLE_MAN_BARD,
|
||||||
|
MAUVILLE_MAN_HIPSTER,
|
||||||
|
MAUVILLE_MAN_TRADER,
|
||||||
|
MAUVILLE_MAN_STORYTELLER,
|
||||||
|
MAUVILLE_MAN_GIDDY
|
||||||
|
};
|
||||||
|
|
||||||
void SetMauvilleOldMan(void);
|
void SetMauvilleOldMan(void);
|
||||||
u8 sub_81201C8(void);
|
u8 sub_81201C8(void);
|
||||||
|
|
||||||
|
@ -162,6 +162,7 @@ SECTIONS {
|
|||||||
src/bike.o(.text);
|
src/bike.o(.text);
|
||||||
asm/easy_chat.o(.text);
|
asm/easy_chat.o(.text);
|
||||||
src/mon_markings.o(.text);
|
src/mon_markings.o(.text);
|
||||||
|
src/mauville_old_man.o(.text);
|
||||||
asm/mauville_old_man.o(.text);
|
asm/mauville_old_man.o(.text);
|
||||||
src/mail.o(.text);
|
src/mail.o(.text);
|
||||||
asm/menu_helpers.o(.text);
|
asm/menu_helpers.o(.text);
|
||||||
@ -456,6 +457,7 @@ SECTIONS {
|
|||||||
src/bike.o(.rodata);
|
src/bike.o(.rodata);
|
||||||
data/easy_chat.o(.rodata);
|
data/easy_chat.o(.rodata);
|
||||||
src/mon_markings.o(.rodata);
|
src/mon_markings.o(.rodata);
|
||||||
|
src/mauville_old_man.o(.rodata);
|
||||||
data/mauville_old_man.o(.rodata);
|
data/mauville_old_man.o(.rodata);
|
||||||
src/mail.o(.rodata);
|
src/mail.o(.rodata);
|
||||||
data/menu_helpers.o(.rodata);
|
data/menu_helpers.o(.rodata);
|
||||||
|
84
src/mauville_old_man.c
Normal file
84
src/mauville_old_man.c
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
#include "global.h"
|
||||||
|
#include "main.h"
|
||||||
|
#include "constants/easy_chat.h"
|
||||||
|
#include "mauville_old_man.h"
|
||||||
|
|
||||||
|
void sub_8120E08(void); // StorytellerSetup
|
||||||
|
void sub_81339F8(void); // TraderSetup
|
||||||
|
void sub_8120B5C(void);
|
||||||
|
|
||||||
|
static const u16 sDefaultBardSongLyrics[6] = {
|
||||||
|
EC_WORD_SHAKE,
|
||||||
|
EC_WORD_IT,
|
||||||
|
EC_WORD_DO,
|
||||||
|
EC_WORD_THE,
|
||||||
|
EC_WORD_DIET,
|
||||||
|
EC_WORD_DANCE
|
||||||
|
};
|
||||||
|
|
||||||
|
static void SetupBard(void)
|
||||||
|
{
|
||||||
|
u16 i;
|
||||||
|
struct MauvilleManBard *bard = &gSaveBlock1Ptr->oldMan.bard;
|
||||||
|
|
||||||
|
bard->id = MAUVILLE_MAN_BARD;
|
||||||
|
bard->hasChangedSong = FALSE;
|
||||||
|
bard->language = gGameLanguage;
|
||||||
|
for (i = 0; i < 6; i++)
|
||||||
|
bard->songLyrics[i] = sDefaultBardSongLyrics[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
static void SetupHipster(void)
|
||||||
|
{
|
||||||
|
struct MauvilleManHipster *hipster = &gSaveBlock1Ptr->oldMan.hipster;
|
||||||
|
|
||||||
|
hipster->id = MAUVILLE_MAN_HIPSTER;
|
||||||
|
hipster->alreadySpoken = FALSE;
|
||||||
|
hipster->language = gGameLanguage;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void SetupStoryteller(void)
|
||||||
|
{
|
||||||
|
sub_8120E08();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void SetupGiddy(void)
|
||||||
|
{
|
||||||
|
struct MauvilleManGiddy *giddy = &gSaveBlock1Ptr->oldMan.giddy;
|
||||||
|
|
||||||
|
giddy->id = MAUVILLE_MAN_GIDDY;
|
||||||
|
giddy->taleCounter = 0;
|
||||||
|
giddy->language = gGameLanguage;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void SetupTrader(void)
|
||||||
|
{
|
||||||
|
sub_81339F8();
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetMauvilleOldMan(void)
|
||||||
|
{
|
||||||
|
u16 trainerId = (gSaveBlock2Ptr->playerTrainerId[1] << 8) | gSaveBlock2Ptr->playerTrainerId[0];
|
||||||
|
|
||||||
|
|
||||||
|
// Determine man based on the last digit of the player's trainer ID.
|
||||||
|
switch ((trainerId % 10) / 2)
|
||||||
|
{
|
||||||
|
case MAUVILLE_MAN_BARD:
|
||||||
|
SetupBard();
|
||||||
|
break;
|
||||||
|
case MAUVILLE_MAN_HIPSTER:
|
||||||
|
SetupHipster();
|
||||||
|
break;
|
||||||
|
case MAUVILLE_MAN_TRADER:
|
||||||
|
SetupTrader();
|
||||||
|
break;
|
||||||
|
case MAUVILLE_MAN_STORYTELLER:
|
||||||
|
SetupStoryteller();
|
||||||
|
break;
|
||||||
|
case MAUVILLE_MAN_GIDDY:
|
||||||
|
SetupGiddy();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
sub_8120B5C();
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user