diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/easy_chat.c | 1 | ||||
-rw-r--r-- | src/mauville_old_man.c | 179 | ||||
-rw-r--r-- | src/new_game.c | 2 | ||||
-rw-r--r-- | src/trader.c | 19 |
4 files changed, 127 insertions, 74 deletions
diff --git a/src/easy_chat.c b/src/easy_chat.c index cca8c1355..e0073d8d8 100644 --- a/src/easy_chat.c +++ b/src/easy_chat.c @@ -19,7 +19,6 @@ extern const u8 gEasyChatGroupSizes[]; extern u16 gSpecialVar_0x8004; - u8 *sub_80EB3FC(u8 *dst, u16 word) { u16 group; diff --git a/src/mauville_old_man.c b/src/mauville_old_man.c index 93684fc60..84c8f740c 100644 --- a/src/mauville_old_man.c +++ b/src/mauville_old_man.c @@ -1,6 +1,7 @@ #include "global.h" #include "mauville_old_man.h" #include "easy_chat.h" +#include "easy_chat_constants.h" #include "menu.h" #include "rng.h" #include "script.h" @@ -11,79 +12,129 @@ extern u16 gScriptResult; extern u16 gSpecialVar_0x8004; -extern u32 gUnknown_083E5388[]; -extern u32 gUnknown_083E53A8[]; +extern const u8 *gGiddyAdjectives[]; +extern const u8 *gGiddyQuestions[]; -extern u16 gUnknown_083E537C[]; - -void sub_80F7A34(void) +const u16 gDefaultBardSongLyrics[] = +{ +#ifdef ENGLISH + EC_WORD_SISTER, + EC_WORD_EATS, + EC_WORD_SWEETS, + EC_WORD_VORACIOUS, + EC_WORD_AND, + EC_WORD_DROOLING, +#else + EC_WORD_SISTER, + EC_WORD_MUST_BE, + EC_WORD_SWEETS, + EC_WORD_VORACIOUS, + EC_WORD_DROOLING, + EC_WORD_THICK, +#endif +}; + +void SetupBard(void) { u16 i; - OldMan *oldMan = &gSaveBlock1.oldMan; + struct MauvilleManBard *bard = &gSaveBlock1.oldMan.bard; - oldMan->oldMan1.unk_2D94 = 0; - oldMan->oldMan1.unk_2DBD = 0; - - for(i = 0; i < 6; i++) - oldMan->oldMan1.mauvilleOldMan_ecArray[i] = gUnknown_083E537C[i]; + bard->id = MAUVILLE_MAN_BARD; + bard->unk_2DBD = 0; + for (i = 0; i < 6; i++) + bard->songLyrics[i] = gDefaultBardSongLyrics[i]; } -void sub_80F7A6C(void) +void SetupHipster(void) { - struct UnkMauvilleOldManStruct *bard = &gSaveBlock1.oldMan.oldMan1; + struct MauvilleManHipster *hipster = &gSaveBlock1.oldMan.hipster; - bard->unk_2D94 = 1; - bard->unk_2D95 = 0; + hipster->id = MAUVILLE_MAN_HIPSTER; + hipster->unk1 = 0; } -void sub_80F7A7C(void) +void SetupStoryteller(void) { - sub_80F83F8(); + StorytellerSetup(); } -void sub_80F7A88(void) +void SetupGiddy(void) { - OldMan *oldMan = &gSaveBlock1.oldMan; + struct MauvilleManGiddy *giddy = &gSaveBlock1.oldMan.giddy; - oldMan->oldMan1.unk_2D94 = 4; - oldMan->oldMan1.unk_2D95 = 0; + giddy->id = MAUVILLE_MAN_GIDDY; + giddy->unk1 = 0; } -void sub_80F7A98(void) +void SetupTrader(void) { - sub_81099CC(); + TraderSetup(); } -void SetMauvilleOldMan(void) +void SetupMauvilleOldMan(void) { - u32 var = ((u16)((gSaveBlock2.playerTrainerId[1] << 8 | gSaveBlock2.playerTrainerId[0])) % 10) / 2; + u16 trainerId = (gSaveBlock2.playerTrainerId[1] << 8) | gSaveBlock2.playerTrainerId[0]; - switch(var) + // Determine man based on the last digit of the player's trainer ID. + switch ((trainerId % 10) / 2) { - case 0: - sub_80F7A34(); + case MAUVILLE_MAN_BARD: + SetupBard(); break; - case 1: - sub_80F7A6C(); + case MAUVILLE_MAN_HIPSTER: + SetupHipster(); break; - case 2: - sub_80F7A98(); + case MAUVILLE_MAN_TRADER: + SetupTrader(); break; - case 3: - sub_80F7A7C(); + case MAUVILLE_MAN_STORYTELLER: + SetupStoryteller(); break; - case 4: - sub_80F7A88(); + case MAUVILLE_MAN_GIDDY: + SetupGiddy(); break; } sub_80F83D0(); } +/* +// Safely changes man to test functionality u8 GetCurrentMauvilleOldMan(void) { - OldMan *oldMan = &gSaveBlock1.oldMan; + u8 newMan = MAUVILLE_MAN_GIDDY; + struct MauvilleManCommon *common = &gSaveBlock1.oldMan.common; + + if (common->id != newMan) + { + switch (newMan) + { + 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_80F83D0(); + } + return common->id; +} +*/ + +u8 GetCurrentMauvilleOldMan(void) +{ + struct MauvilleManCommon *common = &gSaveBlock1.oldMan.common; - return oldMan->oldMan1.unk_2D94; + return common->id; } void sub_80F7B14(void) @@ -96,29 +147,28 @@ void sub_80F7B2C(void) u16 *scriptPtr = &gScriptResult; // why?? OldMan *oldMan = &gSaveBlock1.oldMan; - *scriptPtr = oldMan->oldMan1.unk_2DBD; + *scriptPtr = oldMan->bard.unk_2DBD; } void sub_80F7B40(void) { u16 i; - OldMan *oldMan = &gSaveBlock1.oldMan; - //struct UnkMauvilleOldManStruct *oldManStruct = &gSaveBlock1.oldManStruct; + struct MauvilleManBard *bard = &gSaveBlock1.oldMan.bard; - StringCopy(oldMan->oldMan1.playerName, gSaveBlock2.playerName); + StringCopy(bard->playerName, gSaveBlock2.playerName); for(i = 0; i < 4; i++) - oldMan->oldMan1.playerTrainerId[i] = gSaveBlock2.playerTrainerId[i]; + bard->playerTrainerId[i] = gSaveBlock2.playerTrainerId[i]; for(i = 0; i < 6; i++) - oldMan->oldMan1.mauvilleOldMan_ecArray[i] = oldMan->oldMan1.mauvilleOldMan_ecArray2[i]; + bard->songLyrics[i] = bard->mauvilleOldMan_ecArray2[i]; - oldMan->oldMan1.unk_2DBD = 1; + bard->unk_2DBD = 1; } void sub_80F7BA0(void) { - struct UnkMauvilleOldManStruct *oldMan = &gSaveBlock1.oldMan.oldMan1; + struct MauvilleManBard *oldMan = &gSaveBlock1.oldMan.bard; u16 specialVar = gSpecialVar_0x8004; // It's a bit odd to use this temp variable, but it seems needed to match. u16 *r5; u16 i; @@ -127,7 +177,7 @@ void sub_80F7BA0(void) r5 = oldMan->mauvilleOldMan_ecArray2; if (specialVar == 0) - r5 = oldMan->mauvilleOldMan_ecArray; + r5 = oldMan->songLyrics; ptr = gStringVar4; r4 = ptr; for (i = 0; i < 2; i++) @@ -178,14 +228,14 @@ void sub_80F7C70(void) u16 *scriptPtr = &gScriptResult; // again?? OldMan *oldMan = &gSaveBlock1.oldMan; - *scriptPtr = oldMan->oldMan1.unk_2D95; + *scriptPtr = oldMan->bard.unk_2D95; } void sub_80F7C84(void) { OldMan *oldMan = &gSaveBlock1.oldMan; - oldMan->oldMan1.unk_2D95 = 1; + oldMan->bard.unk_2D95 = 1; } void sub_80F7C90(void) @@ -207,41 +257,44 @@ void sub_80F7CC8(void) { OldMan *oldMan = &gSaveBlock1.oldMan; - if(oldMan->oldMan1.unk_2D95 == 10) + if (oldMan->bard.unk_2D95 == 10) { gScriptResult = FALSE; - oldMan->oldMan1.unk_2D95 = 0; + oldMan->bard.unk_2D95 = 0; } else + { gScriptResult = TRUE; + } } -void sub_80F7CF4(void) +void ScrSpecial_GenerateGiddyLine(void) { - struct UnkMauvilleOldManStruct2 *oldMan = &gSaveBlock1.oldMan.oldMan2; + struct MauvilleManGiddy *giddy = &gSaveBlock1.oldMan.giddy; - if(oldMan->unk1 == 0) + if (giddy->unk1 == 0) sub_80F7DC0(); - if(oldMan->mauvilleOldMan_ecArray[oldMan->unk1] != 0xFFFF) // is not the last element of the array? + if (giddy->mauvilleOldMan_ecArray[giddy->unk1] != 0xFFFF) // is not the last element of the array? { u8 *stringPtr; - u32 random = Random(); + u32 adjective = Random(); - random %= 8; - stringPtr = sub_80EB3FC(gStringVar4, oldMan->mauvilleOldMan_ecArray[oldMan->unk1]); + adjective %= 8; + stringPtr = sub_80EB3FC(gStringVar4, giddy->mauvilleOldMan_ecArray[giddy->unk1]); stringPtr = StringCopy(stringPtr, gOtherText_Is); - stringPtr = StringCopy(stringPtr, (u8 *)gUnknown_083E5388[random]); + stringPtr = StringCopy(stringPtr, gGiddyAdjectives[adjective]); StringCopy(stringPtr, gOtherText_DontYouAgree); } else { - StringCopy(gStringVar4, (u8 *)gUnknown_083E53A8[oldMan->mauvilleOldMan_ecArray2[oldMan->unk2++]]); + StringCopy(gStringVar4, gGiddyQuestions[giddy->mauvilleOldMan_ecArray2[giddy->unk2++]]); } - if(!(Random() % 10)) - oldMan->unk1 = 10; + + if (!(Random() % 10)) + giddy->unk1 = 10; else - oldMan->unk1++; + giddy->unk1++; gScriptResult = TRUE; } diff --git a/src/new_game.c b/src/new_game.c index 226ac9bb7..1ef19bd00 100644 --- a/src/new_game.c +++ b/src/new_game.c @@ -157,7 +157,7 @@ void NewGameInitData(void) ClearPokeblocks(); ClearDecorationInventories(); InitEasyChatPhrases(); - SetMauvilleOldMan(); + SetupMauvilleOldMan(); InitDewfordTrend(); ResetFanClub(); ResetLotteryCorner(); diff --git a/src/trader.c b/src/trader.c index ea06058e9..9aeefa3d1 100644 --- a/src/trader.c +++ b/src/trader.c @@ -3,6 +3,7 @@ #include "decoration_inventory.h" #include "event_data.h" #include "main.h" +#include "mauville_old_man.h" #include "menu.h" #include "menu_helpers.h" #include "script.h" @@ -36,7 +37,7 @@ void sub_810993C(void) { u8 i, j; u8 buffer[12]; - struct MauvilleOldManTrader *trader = &gSaveBlock1.oldMan.trader; + struct MauvilleManTrader *trader = &gSaveBlock1.oldMan.trader; for (i = 0; i < 3; i++) { @@ -55,12 +56,12 @@ void sub_810993C(void) } } -void sub_81099CC(void) +void TraderSetup(void) { u8 i; - struct MauvilleOldManTrader *trader = &gSaveBlock1.oldMan.trader; + struct MauvilleManTrader *trader = &gSaveBlock1.oldMan.trader; - trader->unk0 = 2; + trader->id = MAUVILLE_MAN_TRADER; trader->unk31 = 0; for (i = 0; i < 4; i++) @@ -74,7 +75,7 @@ void sub_81099CC(void) void sub_8109A20(void) { - struct MauvilleOldManTrader *trader = &gSaveBlock1.oldMan.trader; + struct MauvilleManTrader *trader = &gSaveBlock1.oldMan.trader; trader->unk31 = 0; } @@ -88,7 +89,7 @@ void sub_8109A48(u8 taskId) u8 i; u8 numChoices = 1; u8 numDecorations = 0; - struct MauvilleOldManTrader *trader = &gSaveBlock1.oldMan.trader; + struct MauvilleManTrader *trader = &gSaveBlock1.oldMan.trader; for (i = 0; i < 4; i++) { @@ -141,7 +142,7 @@ void sub_8109B34(u8 taskId, u8 decorationId) void sub_8109B7C(u8 taskId) { - struct MauvilleOldManTrader *trader = &gSaveBlock1.oldMan.trader; + struct MauvilleManTrader *trader = &gSaveBlock1.oldMan.trader; if (gMain.newKeys & DPAD_UP) { @@ -176,7 +177,7 @@ void sub_8109B7C(u8 taskId) void sub_8109C44(void) { - struct MauvilleOldManTrader *trader = &gSaveBlock1.oldMan.trader; + struct MauvilleManTrader *trader = &gSaveBlock1.oldMan.trader; gScriptResult = trader->unk31; } @@ -244,7 +245,7 @@ void sub_8109DAC(u8 taskId) void sub_8109DE0(void) { - struct MauvilleOldManTrader *trader = &gSaveBlock1.oldMan.trader; + struct MauvilleManTrader *trader = &gSaveBlock1.oldMan.trader; sub_81340A8(gSpecialVar_0x8006); IsThereStorageSpaceForDecoration(gSpecialVar_0x8004); |