diff options
author | GriffinR <griffin.g.richards@gmail.com> | 2020-07-20 18:03:49 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-07-20 18:03:49 -0400 |
commit | 4dc2ba23f617f0b53a8f4d95e82a71580a808c91 (patch) | |
tree | 9522877c5990fcc3877e985f0d1c228a1c42593d /src | |
parent | c6b4319b682807d714f88857f16287770b483db8 (diff) | |
parent | aeeff84462973b267e62031a945603d96afed716 (diff) |
Merge branch 'master' into constants-mapdatasize
Diffstat (limited to 'src')
43 files changed, 464 insertions, 905 deletions
diff --git a/src/battle/anim/shadow_minimize.c b/src/battle/anim/shadow_minimize.c index a4589f096..913e58bc4 100644 --- a/src/battle/anim/shadow_minimize.c +++ b/src/battle/anim/shadow_minimize.c @@ -8,14 +8,14 @@ extern s16 gBattleAnimArgs[]; extern u8 gBattleAnimAttacker; extern u8 gBattleAnimTarget; -static void sub_80D04E0(u8 taskId); -void sub_80D0614(struct Task* task, u8 taskId); -void sub_80D0704(struct Sprite* sprite); +static void AnimTask_Minimize_Step(u8 taskId); +void CreateMinimizeSprite(struct Task* task, u8 taskId); +void ClonedMinimizeSprite_Step(struct Sprite* sprite); // shadow_minimize (the minimizing-like shadow over the Pokemon effect.) // Used in Minimize. -void sub_80D0488(u8 taskId) +void AnimTask_Minimize(u8 taskId) { struct Task* task = &gTasks[taskId]; u8 spriteId = GetAnimBattlerSpriteId(0); @@ -28,17 +28,17 @@ void sub_80D0488(u8 taskId) task->data[5] = 0; task->data[6] = 0; task->data[7] = GetBattlerSubpriority(gBattleAnimAttacker); - task->func = sub_80D04E0; + task->func = AnimTask_Minimize_Step; } -void sub_80D04E0(u8 taskId) +void AnimTask_Minimize_Step(u8 taskId) { struct Task* task = &gTasks[taskId]; switch (task->data[1]) { case 0: if (task->data[2] == 0 || task->data[2] == 3 || task->data[2] == 6) - sub_80D0614(task, taskId); + CreateMinimizeSprite(task, taskId); task->data[2]++; task->data[4] += 0x28; obj_id_set_rotscale(task->data[0], task->data[4], task->data[4], 0); @@ -97,164 +97,40 @@ void sub_80D04E0(u8 taskId) } } -#ifdef NONMATCHING -void sub_80D0614(struct Task* task, u8 taskId) +void CreateMinimizeSprite(struct Task* task, u8 taskId) { - s16 r8 = duplicate_obj_of_side_rel2move_in_transparent_mode(0); - if (r8 >= 0) + s16 matrixNum; // u16 in Emerald + s16 spriteId = duplicate_obj_of_side_rel2move_in_transparent_mode(0); + + if (spriteId >= 0) { - u8 r6 = AllocOamMatrix(); - if (r6 == 0xFF) + matrixNum = AllocOamMatrix(); + if (matrixNum == 0xFF) { - obj_delete_but_dont_free_vram(&gSprites[r8]); + obj_delete_but_dont_free_vram(&gSprites[spriteId]); + return; } else { - gSprites[r8].oam.objMode = ST_OAM_OBJ_BLEND; - gSprites[r8].oam.affineMode = ST_OAM_AFFINE_DOUBLE; - gSprites[r8].affineAnimPaused = TRUE; - r6 &= 0x1f; - - gSprites[r8].oam.matrixNum = r6; // need to inhibit optimizing out the mov r0, 0x3f / neg r0, r0 - // current code does subs r0, #94 (0x1f - 94 = 0xc1, !0x3f = 0xc1) - gSprites[r8].subpriority = task->data[7] - task->data[3]; + gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND; + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_DOUBLE; + gSprites[spriteId].affineAnimPaused = TRUE; + gSprites[spriteId].oam.matrixNum = matrixNum; + gSprites[spriteId].subpriority = task->data[7] - task->data[3]; task->data[3]++; task->data[6]++; - gSprites[r8].data[0] = 16; - gSprites[r8].data[1] = taskId; - gSprites[r8].data[2] = 6; - gSprites[r8].callback = sub_80D0704; - obj_id_set_rotscale(r8, task->data[4], task->data[4], 0); - gSprites[r8].oam.affineMode = 1; - CalcCenterToCornerVec(&gSprites[r8], gSprites[r8].oam.shape, gSprites[r8].oam.size, gSprites[r8].oam.affineMode); + gSprites[spriteId].data[0] = 16; + gSprites[spriteId].data[1] = taskId; + gSprites[spriteId].data[2] = 6; + gSprites[spriteId].callback = ClonedMinimizeSprite_Step; + obj_id_set_rotscale(spriteId, task->data[4], task->data[4], 0); + gSprites[spriteId].oam.affineMode = 1; + CalcCenterToCornerVec(&gSprites[spriteId], gSprites[spriteId].oam.shape, gSprites[spriteId].oam.size, gSprites[spriteId].oam.affineMode); } } } -#else -NAKED -void sub_80D0614(struct Task* task, u8 taskId) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r9\n\ - mov r6, r8\n\ - push {r6,r7}\n\ - adds r7, r0, 0 @r7 is task\n\ - lsls r1, 24\n\ - lsrs r1, 24\n\ - mov r9, r1 @r9 is taskId\n\ - movs r0, 0\n\ - bl duplicate_obj_of_side_rel2move_in_transparent_mode\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - mov r8, r0\n\ - lsls r0, 16\n\ - asrs r4, r0, 16\n\ - cmp r4, 0\n\ - blt _080D06EE @jump to bottom\n\ - bl AllocOamMatrix\n\ - lsls r0, 24\n\ - lsrs r6, r0, 24\n\ - cmp r6, 0xFF\n\ - bne _080D0658\n\ - lsls r0, r4, 4\n\ - adds r0, r4\n\ - lsls r0, 2\n\ - ldr r1, _080D0654 @ =gSprites\n\ - adds r0, r1\n\ - bl obj_delete_but_dont_free_vram\n\ - b _080D06EE @ jump to bottom\n\ - .align 2, 0\n\ -_080D0654: .4byte gSprites\n\ -_080D0658:\n\ - ldr r5, _080D06FC @ =gSprites\n\ - lsls r3, r4, 4\n\ - adds r3, r4\n\ - lsls r3, 2\n\ - adds r4, r3, r5\n\ - ldrb r1, [r4, 0x1]\n\ - movs r0, 0xD\n\ - negs r0, r0\n\ - ands r0, r1\n\ - movs r1, 0x4\n\ - orrs r0, r1\n\ - movs r1, 0x3\n\ - orrs r0, r1\n\ - strb r0, [r4, 0x1]\n\ - adds r2, r4, 0\n\ - adds r2, 0x2C\n\ - ldrb r0, [r2]\n\ - movs r1, 0x80\n\ - orrs r0, r1\n\ - strb r0, [r2]\n\ - movs r0, 0x1F\n\ - ands r6, r0\n\ - lsls r2, r6, 1\n\ - ldrb r1, [r4, 0x3]\n\ - movs r0, 0x3F\n\ - negs r0, r0\n\ - ands r0, r1\n\ - orrs r0, r2\n\ - strb r0, [r4, 0x3]\n\ - ldrb r0, [r7, 0x16]\n\ - ldrb r1, [r7, 0xE]\n\ - subs r0, r1\n\ - adds r1, r4, 0\n\ - adds r1, 0x43\n\ - strb r0, [r1]\n\ - ldrh r0, [r7, 0xE]\n\ - adds r0, 0x1\n\ - strh r0, [r7, 0xE]\n\ - ldrh r0, [r7, 0x14]\n\ - adds r0, 0x1\n\ - strh r0, [r7, 0x14]\n\ - movs r0, 0x10\n\ - strh r0, [r4, 0x2E]\n\ - mov r0, r9\n\ - strh r0, [r4, 0x30]\n\ - movs r0, 0x6\n\ - strh r0, [r4, 0x32]\n\ - adds r5, 0x1C\n\ - adds r3, r5\n\ - ldr r0, _080D0700 @ =sub_80D0704\n\ - str r0, [r3]\n\ - mov r1, r8 @duplicate_obj_of_side_rel2move_in_transparent_mode(0)\n\ - lsls r0, r1, 24\n\ - lsrs r0, 24\n\ - movs r1, 0x10\n\ - ldrsh r2, [r7, r1]\n\ - adds r1, r2, 0\n\ - movs r3, 0\n\ - bl obj_id_set_rotscale\n\ - ldrb r0, [r4, 0x1]\n\ - movs r3, 0x4\n\ - negs r3, r3\n\ - ands r3, r0\n\ - movs r0, 0x1\n\ - orrs r3, r0\n\ - strb r3, [r4, 0x1]\n\ - lsrs r1, r3, 6\n\ - ldrb r2, [r4, 0x3]\n\ - lsrs r2, 6\n\ - lsls r3, 30\n\ - lsrs r3, 30\n\ - adds r0, r4, 0\n\ - bl CalcCenterToCornerVec\n\ -_080D06EE:\n\ - pop {r3,r4}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_080D06FC: .4byte gSprites\n\ -_080D0700: .4byte sub_80D0704\n\ -.syntax divided\n"); -} -#endif -void sub_80D0704(struct Sprite* sprite) +void ClonedMinimizeSprite_Step(struct Sprite* sprite) { if (--sprite->data[0] == 0) { diff --git a/src/battle/anim/unused_9.c b/src/battle/anim/unused_9.c index a9a42a695..23012fe8a 100644 --- a/src/battle/anim/unused_9.c +++ b/src/battle/anim/unused_9.c @@ -33,7 +33,6 @@ void sub_80CFDFC(struct Sprite* sprite) sprite->callback = sub_80CFE2C; } -#ifdef NONMATCHING static void sub_80CFE2C(struct Sprite* sprite) { u16 r7; @@ -44,9 +43,9 @@ static void sub_80CFE2C(struct Sprite* sprite) sprite->data[1] = 0; r5 = sprite->data[0]; r7 = gPlttBufferFaded[r5 + 8]; - for (i = 0; i < 8; i++) + for (i = 8; i < 16; i++) { - gPlttBufferFaded[r5 + i + 8] = gPlttBufferFaded[r5 + i + 9]; + gPlttBufferFaded[r5 + i] = gPlttBufferFaded[r5 + i + 1]; } gPlttBufferFaded[r5 + 15] = r7; @@ -54,67 +53,3 @@ static void sub_80CFE2C(struct Sprite* sprite) DestroyAnimSprite(sprite); } } -#else -NAKED -static void sub_80CFE2C(struct Sprite* sprite) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - adds r4, r0, 0\n\ - ldrh r0, [r4, 0x30]\n\ - adds r0, 0x1\n\ - strh r0, [r4, 0x30]\n\ - lsls r0, 16\n\ - asrs r0, 16\n\ - cmp r0, 0x2\n\ - bne _080CFE90\n\ - movs r0, 0\n\ - strh r0, [r4, 0x30]\n\ - ldrh r5, [r4, 0x2E]\n\ - ldr r1, _080CFE98 @ =gPlttBufferFaded\n\ - adds r0, r5, 0\n\ - adds r0, 0x8\n\ - lsls r0, 1\n\ - adds r0, r1\n\ - ldrh r7, [r0]\n\ - adds r6, r1, 0 @puts gPlttBufferFaded in r6\n\ - adds r1, r5, 0\n\ - adds r1, 0x9\n\ - lsls r0, r5, 1\n\ - adds r0, r6 \n\ - adds r2, r0, 0\n\ - adds r2, 0x10\n\ - movs r3, 0x7\n\ - lsls r1, 1\n\ - adds r1, r6 \n\ -_080CFE64:\n\ - ldrh r0, [r1]\n\ - strh r0, [r2]\n\ - adds r1, 0x2\n\ - adds r2, 0x2\n\ - subs r3, 0x1\n\ - cmp r3, 0\n\ - bge _080CFE64\n\ - adds r0, r5, 0\n\ - adds r0, 0xF\n\ - lsls r0, 1\n\ - adds r0, r6\n\ - strh r7, [r0]\n\ - ldrh r0, [r4, 0x32]\n\ - adds r0, 0x1\n\ - strh r0, [r4, 0x32]\n\ - lsls r0, 16\n\ - asrs r0, 16\n\ - cmp r0, 0x18\n\ - bne _080CFE90\n\ - adds r0, r4, 0\n\ - bl DestroyAnimSprite\n\ -_080CFE90:\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_080CFE98: .4byte gPlttBufferFaded\n\ -.syntax divided\n"); -} -#endif diff --git a/src/battle_setup.c b/src/battle_setup.c index a7da9905a..cb07c5049 100644 --- a/src/battle_setup.c +++ b/src/battle_setup.c @@ -27,6 +27,7 @@ #include "task.h" #include "text.h" #include "trainer.h" +#include "constants/battle_setup.h" #include "constants/map_types.h" #include "constants/maps.h" #include "constants/opponents.h" @@ -54,13 +55,13 @@ extern u8 gBattleOutcome; extern struct ObjectEvent gObjectEvents[]; -extern u8 gUnknown_0819F818[]; -extern u8 gUnknown_0819F840[]; -extern u8 gUnknown_0819F878[]; -extern u8 gUnknown_0819F887[]; -extern u8 gUnknown_0819F8AE[]; +extern u8 EventScript_TryDoNormalTrainerBattle[]; +extern u8 EventScript_TryDoDoubleTrainerBattle[]; +extern u8 EventScript_DoNoIntroTrainerBattle[]; +extern u8 EventScript_TryDoRematchBattle[]; +extern u8 EventScript_TryDoDoubleRematchBattle[]; -extern u8 gUnknown_0819F80B[]; +extern u8 EventScript_StartTrainerBattle[]; extern u8 gUnknown_081C6C02[]; // The first transition is used if the enemy pokemon are lower level than our pokemon. @@ -1005,37 +1006,37 @@ u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data) switch (sTrainerBattleMode) { - case 3: + case TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT: TrainerBattleLoadArgs(gTrainerBattleSpecs_3, data); - return gUnknown_0819F878; - case 4: + return EventScript_DoNoIntroTrainerBattle; + case TRAINER_BATTLE_DOUBLE: TrainerBattleLoadArgs(gTrainerBattleSpecs_2, data); SetMapVarsToTrainer(); - return gUnknown_0819F840; - case 1: - case 2: + return EventScript_TryDoDoubleTrainerBattle; + case TRAINER_BATTLE_CONTINUE_SCRIPT_NO_MUSIC: + case TRAINER_BATTLE_CONTINUE_SCRIPT: TrainerBattleLoadArgs(gTrainerBattleSpecs_1, data); SetMapVarsToTrainer(); - return gUnknown_0819F818; - case 6: - case 8: + return EventScript_TryDoNormalTrainerBattle; + case TRAINER_BATTLE_CONTINUE_SCRIPT_DOUBLE: + case TRAINER_BATTLE_CONTINUE_SCRIPT_DOUBLE_NO_MUSIC: TrainerBattleLoadArgs(gTrainerBattleSpecs_4, data); SetMapVarsToTrainer(); - return gUnknown_0819F840; - case 7: + return EventScript_TryDoDoubleTrainerBattle; + case TRAINER_BATTLE_REMATCH_DOUBLE: TrainerBattleLoadArgs(gTrainerBattleSpecs_2, data); SetMapVarsToTrainer(); gTrainerBattleOpponent = GetRematchTrainerId(gTrainerBattleOpponent); - return gUnknown_0819F8AE; - case 5: + return EventScript_TryDoDoubleRematchBattle; + case TRAINER_BATTLE_REMATCH: TrainerBattleLoadArgs(gTrainerBattleSpecs_0, data); SetMapVarsToTrainer(); gTrainerBattleOpponent = GetRematchTrainerId(gTrainerBattleOpponent); - return gUnknown_0819F887; - default: + return EventScript_TryDoRematchBattle; + default: // TRAINER_BATTLE_SINGLE TrainerBattleLoadArgs(gTrainerBattleSpecs_0, data); SetMapVarsToTrainer(); - return gUnknown_0819F818; + return EventScript_TryDoNormalTrainerBattle; } } @@ -1044,7 +1045,7 @@ void TrainerWantsBattle(u8 trainerObjEventId, const u8 *trainerScript) gSelectedObjectEvent = trainerObjEventId; gSpecialVar_LastTalked = gObjectEvents[trainerObjEventId].localId; BattleSetup_ConfigureTrainerBattle(trainerScript + 1); - ScriptContext1_SetupScript(gUnknown_0819F80B); + ScriptContext1_SetupScript(EventScript_StartTrainerBattle); ScriptContext2_Enable(); } @@ -1054,7 +1055,7 @@ bool32 GetTrainerFlagFromScriptPointer(const u8 *data) return FlagGet(TRAINER_FLAG_START + flag); } -void sub_8082524(void) +void SetUpTrainerMovement(void) { struct ObjectEvent *objectEvent = &gObjectEvents[gSelectedObjectEvent]; @@ -1066,7 +1067,7 @@ u8 ScrSpecial_GetTrainerBattleMode(void) return sTrainerBattleMode; } -u8 ScrSpecial_HasTrainerBeenFought(void) +u8 GetTrainerFlag(void) { return FlagGet(CurrentOpponentTrainerFlag()); } @@ -1139,7 +1140,7 @@ void CB2_EndTrainerEyeRematchBattle(void) } } -void ScrSpecial_StartTrainerEyeRematch(void) +void BattleSetup_StartRematchBattle(void) { gBattleTypeFlags = BATTLE_TYPE_TRAINER; gMain.savedCallback = CB2_EndTrainerEyeRematchBattle; @@ -1150,7 +1151,7 @@ void ScrSpecial_StartTrainerEyeRematch(void) static const u8 *GetTrainerIntroSpeech(void); static const u8 *GetTrainerNonBattlingSpeech(void); -void ScrSpecial_ShowTrainerIntroSpeech(void) +void ShowTrainerIntroSpeech(void) { ShowFieldMessage(GetTrainerIntroSpeech()); } @@ -1471,7 +1472,7 @@ bool8 ShouldTryRematchBattle(void) return WasSecondRematchWon(gTrainerEyeTrainers, gTrainerBattleOpponent); } -u8 ScrSpecial_GetTrainerEyeRematchFlag(void) +u8 IsTrainerReadyForRematch(void) { return GetTrainerEyeRematchFlag(gTrainerEyeTrainers, gTrainerBattleOpponent); } diff --git a/src/berry.c b/src/berry.c index f1bdb5235..590b03469 100644 --- a/src/berry.c +++ b/src/berry.c @@ -11,6 +11,7 @@ #include "random.h" #include "task.h" #include "text.h" +#include "constants/berry.h" #include "constants/event_object_movement.h" #include "constants/items.h" @@ -1127,7 +1128,7 @@ const struct Berry *GetBerryInfo(u8 berry) // when getting the pointer to the berry info, enigma berries are handled differently. if your // berry is an Enigma Berry and its checksum is valid, fetch the pointer to its information in // the save block. - if (berry == GETBERRYID(ITEM_ENIGMA_BERRY) && IsEnigmaBerryValid()) + if (berry == ITEM_TO_BERRY(ITEM_ENIGMA_BERRY) && IsEnigmaBerryValid()) return &gSaveBlock1.enigmaBerry.berry; else { @@ -1135,8 +1136,8 @@ const struct Berry *GetBerryInfo(u8 berry) // an enigma berry whos checksum failed, the game will use the Enigma Berry information // for this: meaning if you see the Enigma Berry information, its actually because the // checksum failed. - if (berry == BERRY_NONE || berry > GETBERRYID(LAST_BERRY)) - berry = GETBERRYID(FIRST_BERRY); + if (berry == BERRY_NONE || berry > ITEM_TO_BERRY(LAST_BERRY_INDEX)) + berry = ITEM_TO_BERRY(FIRST_BERRY_INDEX); return &gBerries[berry - 1]; } } @@ -1321,22 +1322,22 @@ u8 GetStageByBerryTreeId(u8 id) u8 ItemIdToBerryType(u16 item) { - u16 berry = item - FIRST_BERRY; + u16 berry = item - FIRST_BERRY_INDEX; - if (berry > LAST_BERRY - FIRST_BERRY) - return GETBERRYID(FIRST_BERRY); + if (berry > LAST_BERRY_INDEX - FIRST_BERRY_INDEX) + return ITEM_TO_BERRY(FIRST_BERRY_INDEX); else - return GETBERRYID(item); + return ITEM_TO_BERRY(item); } static u16 BerryTypeToItemId(u16 berry) { u16 item = berry - 1; - if (item > LAST_BERRY - FIRST_BERRY) - return FIRST_BERRY; + if (item > LAST_BERRY_INDEX - FIRST_BERRY_INDEX) + return FIRST_BERRY_INDEX; else - return GETITEMID(berry); + return berry + FIRST_BERRY_INDEX - 1; } void GetBerryNameByBerryType(u8 berry, u8 *string) diff --git a/src/berry_tag_screen.c b/src/berry_tag_screen.c index a8f797e28..2a2ff6ae2 100644 --- a/src/berry_tag_screen.c +++ b/src/berry_tag_screen.c @@ -20,7 +20,6 @@ #include "text.h" #define OFFSET_7B (123) -#define FIRST_BERRY ITEM_CHERI_BERRY struct Struct2000000 { @@ -277,7 +276,7 @@ static void sub_81464E4(void) berryInfo = GetBerryInfo(gSpecialVar_ItemId + OFFSET_7B + 1); - ConvertIntToDecimalStringN(gStringVar1, gSpecialVar_ItemId - FIRST_BERRY + 1, STR_CONV_MODE_LEADING_ZEROS, 2); + ConvertIntToDecimalStringN(gStringVar1, gSpecialVar_ItemId - FIRST_BERRY_INDEX + 1, STR_CONV_MODE_LEADING_ZEROS, 2); Menu_PrintText(gStringVar1, 12, 4); #if ENGLISH diff --git a/src/cable_club.c b/src/cable_club.c index 28bf3b759..78e227cef 100644 --- a/src/cable_club.c +++ b/src/cable_club.c @@ -732,7 +732,7 @@ static void sub_80837EC(u8 taskId) void sub_8083820(void) { - ScrSpecial_DoSaveDialog(); + SaveGame(); } static void sub_808382C(u8 taskId) diff --git a/src/coins.c b/src/coins.c index 2c217e635..273322161 100644 --- a/src/coins.c +++ b/src/coins.c @@ -54,7 +54,7 @@ u16 GetCoins(void) return gSaveBlock1.coins; } -bool8 GiveCoins(u16 coins) +bool8 AddCoins(u16 coins) { u32 newCoins; @@ -72,7 +72,7 @@ bool8 GiveCoins(u16 coins) return TRUE; } -bool8 TakeCoins(u16 coins) +bool8 RemoveCoins(u16 coins) { if (GetCoins() >= coins) { diff --git a/src/crt0.s b/src/crt0.s index 15698972d..e876c4c10 100644 --- a/src/crt0.s +++ b/src/crt0.s @@ -1,3 +1,4 @@ + .include "constants/global.h" .include "constants/gba_constants.inc" .include "constants/misc_constants.inc" .include "constants/version.inc" diff --git a/src/debug/nohara_debug_menu.c b/src/debug/nohara_debug_menu.c index d26d6038c..53501a52b 100644 --- a/src/debug/nohara_debug_menu.c +++ b/src/debug/nohara_debug_menu.c @@ -831,7 +831,7 @@ bool8 debug_sub_80901A4(void) bool8 debug_sub_80901E4(void) { ResetFanClub(); - sub_810FAA0(); + UpdateTrainerFanClubGameClear(); CloseMenu(); return TRUE; } diff --git a/src/debug/taya_debug_window.c b/src/debug/taya_debug_window.c index aa3c1d993..0b3afa28d 100644 --- a/src/debug/taya_debug_window.c +++ b/src/debug/taya_debug_window.c @@ -262,7 +262,7 @@ bool8 debug_sub_8090880(void) { if (!UpdatePaletteFade()) { - sub_80E60D8(); + ShowEasyChatScreen(); return TRUE; } diff --git a/src/debug/tomomichi_debug_menu.c b/src/debug/tomomichi_debug_menu.c index c9804c638..5d30cf2c6 100644 --- a/src/debug/tomomichi_debug_menu.c +++ b/src/debug/tomomichi_debug_menu.c @@ -737,7 +737,7 @@ static const struct MenuAction gUnknown_Debug_083C1A9C[] = { static const u8 gUnknown_Debug_083C1AAC[] = {2}; static const u16 gUnknown_Debug_083C1AAE[][9] = { - {FLAG_ITEM_ABANDONED_SHIP_HIDDEN_FLOOR_ROOMS_2, FLAG_ITEM_MOSSDEEP_STEVENS_HOUSE_1} + {FLAG_ITEM_ABANDONED_SHIP_HIDDEN_FLOOR_ROOMS_2, FLAG_ITEM_MOSSDEEP_STEVENS_HOUSE_HM08} }; static const u8 gUnknown_Debug_083C1AC0[] = DTR("ジムリーダー", "GYM LEADER"); @@ -1561,7 +1561,7 @@ static const u16 sControlWorks_SaveWork_ItemArrays[][9] = { {VAR_TRICK_HOUSE_ENTRANCE_STATE_2, VAR_TRICK_HOUSE_PRIZE_PICKUP, VAR_TRICK_HOUSE_STATE, VAR_TRICK_HOUSE_ENTRANCE_STATE_3, VAR_TRICK_HOUSE_ENTRANCE_STATE}, {VAR_TRICK_HOUSE_PUZZLE_1_STATE, VAR_TRICK_HOUSE_PUZZLE_2_STATE, VAR_TRICK_HOUSE_PUZZLE_3_STATE, VAR_TRICK_HOUSE_PUZZLE_4_STATE, VAR_TRICK_HOUSE_PUZZLE_5_STATE, VAR_TRICK_HOUSE_PUZZLE_6_STATE, VAR_TRICK_HOUSE_PUZZLE_7_STATE, VAR_TRICK_HOUSE_PUZZLE_8_STATE, VAR_TRICK_HOUSE_PUZZLE_7_STATE_2}, {VAR_BRINEY_HOUSE_STATE, VAR_GLASS_WORKSHOP_STATE}, - {VAR_0x4089, VAR_BOARD_BRINEY_BOAT_ROUTE104_STATE, VAR_BRINEY_LOCATION, VAR_0x4097, VAR_LILYCOVE_CONTEST_LOBBY_STATE, VAR_ELITE_4_STATE, VAR_CABLE_CAR_STATION_STATE, VAR_SAFARI_ZONE_STATE, VAR_CYCLING_CHALLENGE_STATE}, + {VAR_SECRET_BASE_INITIALIZED, VAR_BOARD_BRINEY_BOAT_ROUTE104_STATE, VAR_BRINEY_LOCATION, VAR_INIT_SECRET_BASE, VAR_LILYCOVE_CONTEST_LOBBY_STATE, VAR_ELITE_4_STATE, VAR_CABLE_CAR_STATION_STATE, VAR_SAFARI_ZONE_STATE, VAR_CYCLING_CHALLENGE_STATE}, {VAR_WEATHER_INSTITUTE_STATE, VAR_SLATEPORT_FAN_CLUB_STATE, 0x40BB, VAR_BRAVO_TRAINER_BATTLE_TOWER_ON, VAR_GAME_CORNER_STATE, VAR_WHICH_FOSSIL_REVIVED} }; diff --git a/src/decompress.c b/src/decompress.c index d6c52439f..c0158ada8 100644 --- a/src/decompress.c +++ b/src/decompress.c @@ -111,3 +111,147 @@ void Unused_LZDecompressWramIndirect(const void **src, void *dest) { LZ77UnCompWram(*src, dest); } + +void unref_sub_800D42C(s32 object_size, s32 object_count, u8 *src_tiles, u8 *dest_tiles) +{ + /* + This function appears to emulate behaviour found in the GB(C) versions regarding how the Pokemon images + are stitched together to be displayed on the battle screen. + Given "compacted" tiles, an object count and a bounding box/object size, place the tiles in such a way + that the result will have each object centered in a 8x8 tile canvas. + */ + s32 i, j, k, l; + u8 *src = src_tiles, *dest = dest_tiles; + u8 bottom_off; + + if (object_size & 1) + { + // Object size is odd + bottom_off = (object_size >> 1) + 4; + for (l = 0; l < object_count; l++) + { + // Clear all unused rows of tiles plus the half-tile required due to centering + for (j = 0; j < 8-object_size; j++) + { + for (k = 0; k < 8; k++) + { + for (i = 0; i < 16; i++) + { + if (j % 2 == 0) + { + // Clear top half of top tile and bottom half of bottom tile when on even j + ((dest+i) + (k << 5))[((j >> 1) << 8)] = 0; + ((bottom_off << 8) + (dest+i) + (k << 5) + 16)[((j >> 1) << 8)] = 0; + } + else + { + // Clear bottom half of top tile and top half of tile following bottom tile when on odd j + ((dest+i) + (k << 5) + 16)[((j >> 1) << 8)] = 0; + ((bottom_off << 8) + (dest+i) + (k << 5) + 256)[((j >> 1) << 8)] = 0; + } + } + } + } + + // Clear the columns to the left and right that wont be used completely + // Unlike the previous loops, this will clear the later used space as well + for (j = 0; j < 2; j++) + { + for (i = 0; i < 8; i++) + { + for (k = 0; k < 32; k++) + { + // Left side + ((dest+k) + (i << 8))[(j << 5)] = 0; + // Right side + ((dest+k) + (i << 8))[(j << 5)+192] = 0; + } + } + } + + // Skip the top row and first tile on the second row for objects of size 5 + if (object_size == 5) dest += 0x120; + + // Copy tile data + for (j = 0; j < object_size; j++) + { + for (k = 0; k < object_size; k++) + { + for (i = 0; i < 4; i++) + { + // Offset the tile by +4px in both x and y directions + (dest + (i << 2))[18] = (src + (i << 2))[0]; + (dest + (i << 2))[19] = (src + (i << 2))[1]; + (dest + (i << 2))[48] = (src + (i << 2))[2]; + (dest + (i << 2))[49] = (src + (i << 2))[3]; + + (dest + (i << 2))[258] = (src + (i << 2))[16]; + (dest + (i << 2))[259] = (src + (i << 2))[17]; + (dest + (i << 2))[288] = (src + (i << 2))[18]; + (dest + (i << 2))[289] = (src + (i << 2))[19]; + } + src += 32; + dest += 32; + } + + // At the end of a row, skip enough tiles to get to the beginning of the next row + if (object_size == 7) dest += 0x20; + else if (object_size == 5) dest += 0x60; + } + + // Skip remaining unused space to go to the beginning of the next object + if (object_size == 7) dest += 0x100; + else if (object_size == 5) dest += 0x1e0; + } + } + else + { + // Object size is even + for (i = 0; i < object_count; i++) + { + // For objects of size 6, the first and last row and column will be cleared + // While the remaining space will be filled with actual data + if (object_size == 6) + { + for (k = 0; k < 256; k++) { + *dest = 0; + dest++; + } + } + + for (j = 0; j < object_size; j++) + { + if (object_size == 6) + { + for (k = 0; k < 32; k++) { + *dest = 0; + dest++; + } + } + + // Copy tile data + for (k = 0; k < 32 * object_size; k++) { + *dest = *src; + src++; + dest++; + } + + if (object_size == 6) + { + for (k = 0; k < 32; k++) { + *dest = 0; + dest++; + } + } + } + + if (object_size == 6) + { + for (k = 0; k < 256; k++) { + *dest = 0; + dest++; + } + } + } + } +} diff --git a/src/decoration.c b/src/decoration.c index 8dde2834d..4dd7e0f12 100644 --- a/src/decoration.c +++ b/src/decoration.c @@ -1430,7 +1430,7 @@ const struct YesNoFuncTable gUnknown_083EC634[] = { // text -extern u8 gUnknown_0815F399[]; +extern u8 SecretBase_EventScript_PCCancel[]; void sub_80FE1DC(void) { @@ -1524,7 +1524,7 @@ void gpu_pal_decompress_alloc_tag_and_upload(u8 taskId) FreeSpritePaletteByTag(6); if (ewram_1f000.isPlayerRoom == 0) { - ScriptContext1_SetupScript(gUnknown_0815F399); + ScriptContext1_SetupScript(SecretBase_EventScript_PCCancel); DestroyTask(taskId); } else { diff --git a/src/decoration_inventory.c b/src/decoration_inventory.c index feec11670..d9aa5d0fc 100644 --- a/src/decoration_inventory.c +++ b/src/decoration_inventory.c @@ -61,7 +61,7 @@ bool8 InventoryContainsDecoration(u8 decorationId) return FALSE; } -bool8 GiveDecoration(u8 decorationId) +bool8 AddDecoration(u8 decorationId) { u8 category; s8 slot; @@ -159,6 +159,6 @@ void Debug_GiveAllDecorations(void) u8 decor; for (decor = 0; decor < DECOR_COUNT; decor++) - GiveDecoration(decor); + AddDecoration(decor); } #endif diff --git a/src/easy_chat_1.c b/src/easy_chat_1.c index 4f5c71518..ba2fded16 100644 --- a/src/easy_chat_1.c +++ b/src/easy_chat_1.c @@ -197,7 +197,7 @@ u8 *sub_80EB218(u8 *, u16, u16); u16 sub_80EB2D4(); bool8 sub_80EB680(u16 *, u16, u16, u16); -void sub_80E60D8(void) +void ShowEasyChatScreen(void) { u8 r4 = 3; u16 *r1; diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index bca856e9e..6e9858cc5 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -49,40 +49,37 @@ u8 gSelectedObjectEvent; extern u8 gUnknown_081A2C51[]; extern u8 gUnknown_0815281E[]; extern u8 gUnknown_08152C39[]; -extern u8 gUnknown_0815F36C[]; -extern u8 gUnknown_0815F43A[]; -extern u8 gUnknown_081A0009[]; +extern u8 SecretBase_EventScript_PC[]; +extern u8 SecretBase_EventScript_RecordMixingPC[]; +extern u8 EventScript_PC[]; extern u8 gUnknown_081C6C02[]; -extern u8 HiddenItemScript[]; +extern u8 EventScript_HiddenItem[]; extern u8 Event_TV[]; -extern u8 gUnknown_081A0009[]; extern u8 ClosedSootopolisDoorScript[]; extern u8 gUnknown_081A4363[]; extern u8 gUnknown_081C346A[]; extern u8 gUnknown_081616E1[]; -extern u8 Event_WorldMap[]; +extern u8 EventScript_RegionMap[]; extern u8 S_RunningShoesManual[]; -extern u8 PictureBookShelfScript[]; -extern u8 BookshelfScript[]; -extern u8 PokemonCenterBookshelfScript[]; -extern u8 VaseScript[]; -extern u8 TrashCanScript[]; -extern u8 ShopShelfScript[]; -extern u8 BlueprintScript[]; -extern u8 gUnknown_0815F36C[]; -extern u8 gUnknown_0815F43A[]; -extern u8 gUnknown_0815F523[]; -extern u8 gUnknown_0815F528[]; -extern u8 UseSurfScript[]; +extern u8 EventScript_PictureBookshelf[]; +extern u8 EventScript_Bookshelf[]; +extern u8 EventScript_PokemonCenterBookshelf[]; +extern u8 EventScript_Vase[]; +extern u8 EventScript_EmptyTrashCan[]; +extern u8 EventScript_ShopShelf[]; +extern u8 EventScript_Blueprint[]; +extern u8 SecretBase_EventScript_SandOrnament[]; +extern u8 SecretBase_EventScript_ShieldOrToyTV[]; +extern u8 EventScript_UseSurf[]; extern u8 S_UseWaterfall[]; extern u8 S_CannotUseWaterfall[]; extern u8 UseDiveScript[]; extern u8 S_UseDiveUnderwater[]; -extern u8 S_FallDownHole[]; +extern u8 EventScript_FallDownHole[]; extern u8 gUnknown_081A14B8[]; extern u8 S_EggHatch[]; extern u8 gUnknown_0815FD0D[]; -extern u8 gUnknown_081C6BDE[]; +extern u8 EventScript_FallDownHoleMtPyre[]; static void GetPlayerPosition(struct MapPosition *); static void GetInFrontOfPlayerPosition(struct MapPosition *); @@ -228,7 +225,7 @@ int ProcessPlayerFieldInput(struct FieldInput *input) #if DEBUG !input->input_field_1_1 && #endif - mapheader_run_first_tag2_script_list_match() == 1) + TryRunOnFrameMapScript() == TRUE) return TRUE; if (input->pressedBButton && TrySetupDiveEmergeScript() == TRUE) @@ -320,9 +317,9 @@ static bool8 TryStartInteractionScript(struct MapPosition *position, u16 metatil // Play computer noise for PC-related scripts. if (script != gUnknown_0815281E && script != gUnknown_08152C39 - && script != gUnknown_0815F36C - && script != gUnknown_0815F43A - && script != gUnknown_081A0009) + && script != SecretBase_EventScript_PC + && script != SecretBase_EventScript_RecordMixingPC + && script != EventScript_PC) PlaySE(5); ScriptContext1_SetupScript(script); @@ -437,7 +434,7 @@ static u8 *GetInteractedBackgroundEventScript(struct MapPosition *position, u8 m gSpecialVar_0x8005 = (u32)bgEvent->bgUnion.script; if (FlagGet(gSpecialVar_0x8004) == TRUE) return NULL; - return HiddenItemScript; + return EventScript_HiddenItem; case BG_EVENT_SECRET_BASE: if (direction == DIR_NORTH) { @@ -458,7 +455,7 @@ static u8 *GetInteractedMetatileScript(struct MapPosition *position, u8 metatile if (MetatileBehavior_IsPlayerFacingTVScreen(metatileBehavior, direction) == TRUE) return Event_TV; if (MetatileBehavior_IsPC(metatileBehavior) == TRUE) - return gUnknown_081A0009; + return EventScript_PC; if (MetatileBehavior_IsClosedSootopolisDoor(metatileBehavior) == TRUE) return ClosedSootopolisDoorScript; if (MetatileBehavior_IsLinkBattleRecords(metatileBehavior) == TRUE) @@ -468,35 +465,35 @@ static u8 *GetInteractedMetatileScript(struct MapPosition *position, u8 metatile if (MetatileBehavior_IsTrickHousePuzzleDoor(metatileBehavior) == TRUE) return gUnknown_081616E1; if (MetatileBehavior_IsRegionMap(metatileBehavior) == TRUE) - return Event_WorldMap; + return EventScript_RegionMap; if (MetatileBehavior_IsRunningShoesManual(metatileBehavior) == TRUE) return S_RunningShoesManual; if (MetatileBehavior_IsPictureBookShelf(metatileBehavior) == TRUE) - return PictureBookShelfScript; + return EventScript_PictureBookshelf; if (MetatileBehavior_IsBookShelf(metatileBehavior) == TRUE) - return BookshelfScript; + return EventScript_Bookshelf; if (MetatileBehavior_IsPokeCenterBookShelf(metatileBehavior) == TRUE) - return PokemonCenterBookshelfScript; + return EventScript_PokemonCenterBookshelf; if (MetatileBehavior_IsVase(metatileBehavior) == TRUE) - return VaseScript; + return EventScript_Vase; if (MetatileBehavior_IsTrashCan(metatileBehavior) == TRUE) - return TrashCanScript; + return EventScript_EmptyTrashCan; if (MetatileBehavior_IsShopShelf(metatileBehavior) == TRUE) - return ShopShelfScript; + return EventScript_ShopShelf; if (MetatileBehavior_IsBlueprint(metatileBehavior) == TRUE) - return BlueprintScript; + return EventScript_Blueprint; height = position->height; if (height == MapGridGetZCoordAt(position->x, position->y)) { if (MetatileBehavior_IsSecretBasePC(metatileBehavior) == TRUE) - return gUnknown_0815F36C; + return SecretBase_EventScript_PC; if (MetatileBehavior_IsRecordMixingSecretBasePC(metatileBehavior) == TRUE) - return gUnknown_0815F43A; + return SecretBase_EventScript_RecordMixingPC; if (MetatileBehavior_IsSecretBaseSandOrnament(metatileBehavior) == TRUE) - return gUnknown_0815F523; + return SecretBase_EventScript_SandOrnament; if (MetatileBehavior_IsSecretBaseShieldOrToyTV(metatileBehavior) == TRUE) - return gUnknown_0815F528; + return SecretBase_EventScript_ShieldOrToyTV; } return NULL; @@ -505,7 +502,7 @@ static u8 *GetInteractedMetatileScript(struct MapPosition *position, u8 metatile static u8 *GetInteractedWaterScript(struct MapPosition *unused1, u8 metatileBehavior, u8 direction) { if (FlagGet(FLAG_BADGE05_GET) == TRUE && PartyHasMonWithSurf() == TRUE && IsPlayerFacingSurfableFishableWater() == TRUE) - return UseSurfScript; + return EventScript_UseSurf; if (MetatileBehavior_IsWaterfall(metatileBehavior) == TRUE) { @@ -566,7 +563,7 @@ bool8 TryStartCrackedFloorHoleScript(u16 metatileBehavior) { if (MetatileBehavior_IsCrackedFloorHole(metatileBehavior)) { - ScriptContext1_SetupScript(S_FallDownHole); + ScriptContext1_SetupScript(EventScript_FallDownHole); return TRUE; } return FALSE; @@ -720,7 +717,7 @@ bool8 TryStartWarpEventScript(struct MapPosition *position, u16 metatileBehavior } if (MetatileBehavior_IsMtPyreHole(metatileBehavior) == TRUE) { - ScriptContext1_SetupScript(gUnknown_081C6BDE); + ScriptContext1_SetupScript(EventScript_FallDownHoleMtPyre); return TRUE; } sub_8080E88(); diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 4e4ff7432..c757a4798 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -1009,19 +1009,19 @@ static void sub_8127FD4(struct ObjectEvent *objectEvent, struct Sprite *sprite) StartSpriteAnimIfDifferent(sprite, surfBlobDirectionAnims[objectEvent->movementDirection]); } -#ifdef NONMATCHING static void sub_812800C(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - s16 x; - s16 y; u8 i; + s16 x = objectEvent->currentCoords.x; + s16 y = objectEvent->currentCoords.y; + s32 spriteY = sprite->pos2.y; - x = objectEvent->currentCoords.x; - y = objectEvent->currentCoords.y; - if (sprite->pos2.y == 0 && (x != sprite->data[6] || y != sprite->data[7])) + if (spriteY == 0 && (x != sprite->data[6] || y != sprite->data[7])) { - sprite->data[5] = sprite->pos2.y; - for (sprite->data[6] = x, sprite->data[7] = y, i = DIR_SOUTH; i <= DIR_EAST; i ++, x = sprite->data[6], y = sprite->data[7]) + sprite->data[5] = spriteY; + sprite->data[6] = x; + sprite->data[7] = y; + for (i = DIR_SOUTH; i <= DIR_EAST; i++, x = sprite->data[6], y = sprite->data[7]) { MoveCoords(i, &x, &y); if (MapGridGetZCoordAt(x, y) == 3) @@ -1032,87 +1032,6 @@ static void sub_812800C(struct ObjectEvent *objectEvent, struct Sprite *sprite) } } } -#else -NAKED static void sub_812800C(struct ObjectEvent *objectEvent, struct Sprite *sprite) -{ - asm_unified("\tpush {r4-r7,lr}\n" - "\tmov r7, r8\n" - "\tpush {r7}\n" - "\tsub sp, 0x4\n" - "\tadds r4, r1, 0\n" - "\tldrh r2, [r0, 0x10]\n" - "\tmov r1, sp\n" - "\tstrh r2, [r1]\n" - "\tldrh r1, [r0, 0x12]\n" - "\tmov r0, sp\n" - "\tadds r0, 0x2\n" - "\tstrh r1, [r0]\n" - "\tmovs r2, 0x26\n" - "\tldrsh r3, [r4, r2]\n" - "\tmov r8, r0\n" - "\tcmp r3, 0\n" - "\tbne _08128094\n" - "\tmov r0, sp\n" - "\tmovs r5, 0\n" - "\tldrsh r2, [r0, r5]\n" - "\tmovs r5, 0x3A\n" - "\tldrsh r0, [r4, r5]\n" - "\tcmp r2, r0\n" - "\tbne _08128048\n" - "\tlsls r0, r1, 16\n" - "\tasrs r0, 16\n" - "\tmovs r5, 0x3C\n" - "\tldrsh r1, [r4, r5]\n" - "\tcmp r0, r1\n" - "\tbeq _08128094\n" - "_08128048:\n" - "\tstrh r3, [r4, 0x38]\n" - "\tstrh r2, [r4, 0x3A]\n" - "\tmov r1, r8\n" - "\tmovs r2, 0\n" - "\tldrsh r0, [r1, r2]\n" - "\tstrh r0, [r4, 0x3C]\n" - "\tmovs r5, 0x1\n" - "\tmov r7, r8\n" - "\tmov r6, sp\n" - "_0812805A:\n" - "\tadds r0, r5, 0\n" - "\tmov r1, sp\n" - "\tadds r2, r7, 0\n" - "\tbl MoveCoords\n" - "\tmovs r1, 0\n" - "\tldrsh r0, [r6, r1]\n" - "\tmovs r2, 0\n" - "\tldrsh r1, [r7, r2]\n" - "\tbl MapGridGetZCoordAt\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tcmp r0, 0x3\n" - "\tbne _08128080\n" - "\tldrh r0, [r4, 0x38]\n" - "\tadds r0, 0x1\n" - "\tstrh r0, [r4, 0x38]\n" - "\tb _08128094\n" - "_08128080:\n" - "\tadds r0, r5, 0x1\n" - "\tlsls r0, 24\n" - "\tlsrs r5, r0, 24\n" - "\tldrh r0, [r4, 0x3A]\n" - "\tstrh r0, [r6]\n" - "\tldrh r0, [r4, 0x3C]\n" - "\tmov r1, r8\n" - "\tstrh r0, [r1]\n" - "\tcmp r5, 0x4\n" - "\tbls _0812805A\n" - "_08128094:\n" - "\tadd sp, 0x4\n" - "\tpop {r3}\n" - "\tmov r8, r3\n" - "\tpop {r4-r7}\n" - "\tpop {r0}\n" - "\tbx r0"); -} -#endif static void sub_81280A0(struct ObjectEvent *objectEvent, struct Sprite *linkedSprite, struct Sprite *sprite) { @@ -1453,152 +1372,35 @@ void WaitFieldEffectSpriteAnim(struct Sprite *sprite) UpdateObjectEventSpriteVisibility(sprite, FALSE); } -#ifdef NONMATCHING static void sub_812882C(struct Sprite *sprite /*r6*/, u8 z, u8 offset) { u8 i; - s16 xlo; - s16 xhi; - s16 lx; - s16 lyhi; - s16 ly; - s16 ylo; - s16 yhi; - struct ObjectEvent *objectEvent; // r4 - const struct ObjectEventGraphicsInfo *graphicsInfo; // destroyed - struct Sprite *linkedSprite; // r5 + s16 var, xhi, lyhi, yhi, ylo; + const struct ObjectEventGraphicsInfo *graphicsInfo; // Unused Variable + struct Sprite *linkedSprite; SetObjectSubpriorityByZCoord(z, sprite, offset); - for (i = 0; i < 16; i ++) + for (i = 0; i < OBJECT_EVENTS_COUNT; i ++) { - objectEvent = &gObjectEvents[i]; + struct ObjectEvent *objectEvent = &gObjectEvents[i]; if (objectEvent->active) { graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); linkedSprite = &gSprites[objectEvent->spriteId]; xhi = sprite->pos1.x + sprite->centerToCornerVecX; - xlo = sprite->pos1.x - sprite->centerToCornerVecX; - lx = linkedSprite->pos1.x; - if (xhi < lx && xlo > lx) + var = sprite->pos1.x - sprite->centerToCornerVecX; + if (xhi < linkedSprite->pos1.x && var > linkedSprite->pos1.x) { lyhi = linkedSprite->pos1.y + linkedSprite->centerToCornerVecY; - ly = linkedSprite->pos1.y; + var = linkedSprite->pos1.y; ylo = sprite->pos1.y - sprite->centerToCornerVecY; yhi = ylo + linkedSprite->centerToCornerVecY; - if ((lyhi < yhi || lyhi < ylo) && ly > yhi) + if ((lyhi < yhi || lyhi < ylo) && var > yhi && sprite->subpriority <= linkedSprite->subpriority) { - if (sprite->subpriority <= linkedSprite->subpriority) - { - sprite->subpriority = linkedSprite->subpriority + 2; - break; - } + sprite->subpriority = linkedSprite->subpriority + 2; + break; } } } } -} -#else -NAKED static void sub_812882C(struct Sprite *sprite /*r6*/, u8 z, u8 offset) -{ - asm_unified("\tpush {r4-r7,lr}\n" - "\tadds r6, r0, 0\n" - "\tadds r0, r1, 0\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tlsls r2, 24\n" - "\tlsrs r2, 24\n" - "\tadds r1, r6, 0\n" - "\tbl SetObjectSubpriorityByZCoord\n" - "\tmovs r7, 0\n" - "_08128842:\n" - "\tlsls r0, r7, 3\n" - "\tadds r0, r7\n" - "\tlsls r0, 2\n" - "\tldr r1, _081288DC @ =gObjectEvents\n" - "\tadds r4, r0, r1\n" - "\tldrb r0, [r4]\n" - "\tlsls r0, 31\n" - "\tcmp r0, 0\n" - "\tbeq _081288E4\n" - "\tldrb r0, [r4, 0x5]\n" - "\tbl GetObjectEventGraphicsInfo\n" - "\tldrb r1, [r4, 0x4]\n" - "\tlsls r0, r1, 4\n" - "\tadds r0, r1\n" - "\tlsls r0, 2\n" - "\tldr r1, _081288E0 @ =gSprites\n" - "\tadds r5, r0, r1\n" - "\tadds r0, r6, 0\n" - "\tadds r0, 0x28\n" - "\tmovs r2, 0\n" - "\tldrsb r2, [r0, r2]\n" - "\tldrh r0, [r6, 0x20]\n" - "\tadds r1, r0, r2\n" - "\tsubs r0, r2\n" - "\tlsls r0, 16\n" - "\tlsrs r4, r0, 16\n" - "\tlsls r1, 16\n" - "\tasrs r1, 16\n" - "\tmovs r0, 0x20\n" - "\tldrsh r2, [r5, r0]\n" - "\tcmp r1, r2\n" - "\tbge _081288E4\n" - "\tlsls r0, r4, 16\n" - "\tasrs r0, 16\n" - "\tcmp r0, r2\n" - "\tble _081288E4\n" - "\tadds r0, r5, 0\n" - "\tadds r0, 0x29\n" - "\tmovs r3, 0\n" - "\tldrsb r3, [r0, r3]\n" - "\tldrh r2, [r5, 0x22]\n" - "\tadds r2, r3\n" - "\tldrh r4, [r5, 0x22]\n" - "\tadds r0, r6, 0\n" - "\tadds r0, 0x29\n" - "\tmovs r1, 0\n" - "\tldrsb r1, [r0, r1]\n" - "\tldrh r0, [r6, 0x22]\n" - "\tsubs r0, r1\n" - "\tlsls r0, 16\n" - "\tasrs r0, 16\n" - "\tadds r3, r0, r3\n" - "\tlsls r2, 16\n" - "\tasrs r2, 16\n" - "\tlsls r3, 16\n" - "\tasrs r3, 16\n" - "\tcmp r2, r3\n" - "\tblt _081288BC\n" - "\tcmp r2, r0\n" - "\tbge _081288E4\n" - "_081288BC:\n" - "\tlsls r0, r4, 16\n" - "\tasrs r0, 16\n" - "\tcmp r0, r3\n" - "\tble _081288E4\n" - "\tadds r2, r6, 0\n" - "\tadds r2, 0x43\n" - "\tadds r0, r5, 0\n" - "\tadds r0, 0x43\n" - "\tldrb r1, [r0]\n" - "\tldrb r0, [r2]\n" - "\tcmp r0, r1\n" - "\tbhi _081288E4\n" - "\tadds r0, r1, 0x2\n" - "\tstrb r0, [r2]\n" - "\tb _081288EE\n" - "\t.align 2, 0\n" - "_081288DC: .4byte gObjectEvents\n" - "_081288E0: .4byte gSprites\n" - "_081288E4:\n" - "\tadds r0, r7, 0x1\n" - "\tlsls r0, 24\n" - "\tlsrs r7, r0, 24\n" - "\tcmp r7, 0xF\n" - "\tbls _08128842\n" - "_081288EE:\n" - "\tpop {r4-r7}\n" - "\tpop {r0}\n" - "\tbx r0"); -} -#endif +}
\ No newline at end of file diff --git a/src/field_fadetransition.c b/src/field_fadetransition.c index ee1b334a8..a4959703e 100644 --- a/src/field_fadetransition.c +++ b/src/field_fadetransition.c @@ -401,7 +401,7 @@ void sub_8080EF0(void) CreateTask(sub_808115C, 10); } -void sp13F_fall_to_last_warp(void) +void DoFallWarp(void) { sp13E_warp_to_last_warp(); gFieldCallback = sub_8086748; diff --git a/src/field_special_scene.c b/src/field_special_scene.c index 78c425bc5..343830f25 100644 --- a/src/field_special_scene.c +++ b/src/field_special_scene.c @@ -338,7 +338,7 @@ void Task_HandlePorthole(u8 taskId) } break; case EXIT_PORTHOLE: // exit porthole. - FlagClear(FLAG_SPECIAL_FLAG_1); + FlagClear(FLAG_DONT_TRANSITION_MUSIC); FlagClear(FLAG_SPECIAL_FLAG_0); copy_saved_warp2_bank_and_enter_x_to_warp1(0); sp13E_warp_to_last_warp(); @@ -375,7 +375,7 @@ void sub_80C791C(void) void sub_80C7958(void) { FlagSet(FLAG_SYS_CRUISE_MODE); - FlagSet(FLAG_SPECIAL_FLAG_1); + FlagSet(FLAG_DONT_TRANSITION_MUSIC); FlagSet(FLAG_SPECIAL_FLAG_0); saved_warp2_set(0, gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1); sub_80C7754(); diff --git a/src/field_specials.c b/src/field_specials.c index 972b63a0d..38a0bd50b 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -722,7 +722,7 @@ void CableCarWarp(void) } } -void SetFlagInVar(void) +void SetHiddenItemFlag(void) { FlagSet(gSpecialVar_0x8004); } @@ -1791,7 +1791,7 @@ bool8 IsPokerusInParty(void) static void sub_810F7A8(u8); static void sub_810F814(u8); -void sub_810F758(void) +void ShakeCamera(void) { u8 taskId = CreateTask(sub_810F7A8, 9); gTasks[taskId].data[0] = gSpecialVar_0x8005; @@ -1966,7 +1966,7 @@ void sub_810FA74(void) } } -void sub_810FAA0(void) +void UpdateTrainerFanClubGameClear(void) { if (!((gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] >> 7) & 1)) { diff --git a/src/field_weather.c b/src/field_weather.c index 340445fd2..eb802ae84 100644 --- a/src/field_weather.c +++ b/src/field_weather.c @@ -15,6 +15,7 @@ #include "task.h" #include "trig.h" #include "ewram.h" +#include "constants/field_weather.h" #define MACRO1(color) ((((color) >> 1) & 0xF) | (((color) >> 2) & 0xF0) | (((color) >> 3) & 0xF00)) diff --git a/src/fieldmap.c b/src/fieldmap.c index aa6c72c7f..232ee05f9 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -38,7 +38,7 @@ void not_trainer_hill_battle_pyramid(void) { mapheader_copy_mapdata_with_padding(&gMapHeader); sub_80BB970(gMapHeader.events); - mapheader_run_script_with_tag_x1(); + RunOnLoadMapScript(); } void sub_8055FC0(void) @@ -47,7 +47,7 @@ void sub_8055FC0(void) sub_80BBCCC(0); sub_80BB970(gMapHeader.events); sub_8056670(); - mapheader_run_script_with_tag_x1(); + RunOnLoadMapScript(); UpdateTVScreensOnMap(gBackupMapLayout.width, gBackupMapLayout.height); } diff --git a/src/hof_pc.c b/src/hof_pc.c index ba64b5f4f..767970da7 100644 --- a/src/hof_pc.c +++ b/src/hof_pc.c @@ -29,7 +29,7 @@ static void ReshowPCMenuAfterHallOfFamePC(void) ScriptContext2_Enable(); Overworld_PlaySpecialMapMusic(); BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0)); - ScrSpecial_CreatePCMenu(); + ScriptMenu_CreatePCMultichoice(); ScriptMenu_DisplayPCStartupPrompt(); CreateTask(Task_WaitForPaletteFade, 10); } diff --git a/src/item.c b/src/item.c index 470b4d430..8483e6d3f 100644 --- a/src/item.c +++ b/src/item.c @@ -64,7 +64,7 @@ void CopyItemName(u16 itemId, u8 *string) { if (itemId == ITEM_ENIGMA_BERRY) { - StringCopy(string, GetBerryInfo(GETBERRYID(ITEM_ENIGMA_BERRY))->name); + StringCopy(string, GetBerryInfo(ITEM_TO_BERRY(ITEM_ENIGMA_BERRY))->name); StringAppend(string, gOtherText_Berry2); } else diff --git a/src/mail.c b/src/mail.c index 9a56d73cc..65c85e39b 100644 --- a/src/mail.c +++ b/src/mail.c @@ -868,7 +868,7 @@ u8 debug_sub_810CEA4(void) if (!gPaletteFade.active) { gSpecialVar_0x8004 = 4; - sub_80E60D8(); + ShowEasyChatScreen(); return 1; } return 0; diff --git a/src/main.c b/src/main.c index b778631f3..433143b38 100644 --- a/src/main.c +++ b/src/main.c @@ -24,14 +24,7 @@ static void VCountIntr(void); static void SerialIntr(void); static void IntrDummy(void); -#ifdef SAPPHIRE -#define GAME_VERSION VERSION_SAPPHIRE -#else -#define GAME_VERSION VERSION_RUBY -#endif - const u8 gGameVersion = GAME_VERSION; - const u8 gGameLanguage = GAME_LANGUAGE; // The debug menu expects this exact format. With the English build string, it diff --git a/src/new_game.c b/src/new_game.c index 683a22801..63a13be5e 100644 --- a/src/new_game.c +++ b/src/new_game.c @@ -38,7 +38,7 @@ extern u8 gPlayerPartyCount; extern u8 gUnknown_03005CE8; extern u16 gSaveFileStatus; -extern u8 gUnknown_0819FA81[]; +extern u8 EventScript_ResetAllMapFlags[]; static const struct ContestWinner sEmptyMuseumPortrait = { @@ -202,7 +202,7 @@ void NewGameInitData(void) ResetFanClub(); ResetLotteryCorner(); WarpToTruck(); - ScriptContext2_RunNewScript(gUnknown_0819FA81); + ScriptContext2_RunNewScript(EventScript_ResetAllMapFlags); } #if DEBUG diff --git a/src/overworld.c b/src/overworld.c index d50f72406..7265cf50a 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -60,8 +60,8 @@ extern u8 gUnknown_020297ED; extern u16 gTotalCameraPixelOffsetY; extern u16 gTotalCameraPixelOffsetX; -extern u8 S_WhiteOut[]; -extern u8 gUnknown_0819FC9F[]; +extern u8 EventScript_WhiteOut[]; +extern u8 EventScript_ResetMrBriney[]; extern u8 SingleBattleColosseum_EventScript_1A436F[]; extern u8 SingleBattleColosseum_EventScript_1A4379[]; extern u8 DoubleBattleColosseum_EventScript_1A4383[]; @@ -208,7 +208,7 @@ static void (*const gUnknown_082166D8[])(struct LinkPlayerObjectEvent *, struct static void DoWhiteOut(void) { - ScriptContext2_RunNewScript(S_WhiteOut); + ScriptContext2_RunNewScript(EventScript_WhiteOut); gSaveBlock1.money /= 2; ScrSpecial_HealPlayerParty(); Overworld_ResetStateAfterWhiteOut(); @@ -234,7 +234,7 @@ void Overworld_ResetStateAfterTeleport(void) FlagClear(FLAG_SYS_SAFARI_MODE); FlagClear(FLAG_SYS_USE_STRENGTH); FlagClear(FLAG_SYS_USE_FLASH); - ScriptContext2_RunNewScript(gUnknown_0819FC9F); + ScriptContext2_RunNewScript(EventScript_ResetMrBriney); } void Overworld_ResetStateAfterDigEscRope(void) @@ -582,7 +582,7 @@ static bool8 SetDiveWarp(u8 direction, u16 x, u16 y) } else { - mapheader_run_script_with_tag_x6(); + RunOnDiveWarpMapScript(); if (IsDummyWarp(&gFixedDiveWarp)) return FALSE; @@ -620,7 +620,7 @@ void sub_80538F0(u8 mapGroup, u8 mapNum) ChooseAmbientCrySpecies(); SetDefaultFlashLevel(); Overworld_ClearSavedMusic(); - mapheader_run_script_with_tag_x3(); + RunOnTransitionMapScript(); not_trainer_hill_battle_pyramid(); sub_8056D38(gMapHeader.mapLayout); apply_map_tileset2_palette(gMapHeader.mapLayout); @@ -633,7 +633,7 @@ void sub_80538F0(u8 mapGroup, u8 mapNum) RoamerMove(); DoCurrentWeather(); ResetFieldTasksArgs(); - mapheader_run_script_with_tag_x5(); + RunOnResumeMapScript(); ShowMapNamePopup(); } @@ -658,7 +658,7 @@ void sub_8053994(u32 a1) FlagClear(FLAG_SYS_USE_FLASH); SetDefaultFlashLevel(); Overworld_ClearSavedMusic(); - mapheader_run_script_with_tag_x3(); + RunOnTransitionMapScript(); UpdateLocationHistoryForRoamer(); RoamerMoveToOtherLocationSet(); not_trainer_hill_battle_pyramid(); @@ -926,7 +926,7 @@ void Overworld_ClearSavedMusic(void) void sub_8053F0C(void) { - if (FlagGet(FLAG_SPECIAL_FLAG_1) != TRUE) + if (FlagGet(FLAG_DONT_TRANSITION_MUSIC) != TRUE) { u16 newMusic = GetWarpDestinationMusic(); u16 currentMusic = GetCurrentMapMusic(); @@ -973,7 +973,7 @@ u8 GetMapMusicFadeoutSpeed(void) void TryFadeOutOldMapMusic(void) { u16 music = GetWarpDestinationMusic(); - if (FlagGet(FLAG_SPECIAL_FLAG_1) != TRUE && music != GetCurrentMapMusic()) + if (FlagGet(FLAG_DONT_TRANSITION_MUSIC) != TRUE && music != GetCurrentMapMusic()) { u8 speed = GetMapMusicFadeoutSpeed(); FadeOutMapMusic(speed); @@ -1829,7 +1829,7 @@ void sub_8054D4C(u32 a1) sub_8080750(); if (!a1) SetUpFieldTasks(); - mapheader_run_script_with_tag_x5(); + RunOnResumeMapScript(); } void sub_8054D90(void) @@ -1838,7 +1838,7 @@ void sub_8054D90(void) gTotalCameraPixelOffsetY = 0; ResetObjectEvents(); TrySpawnObjectEvents(0, 0); - mapheader_run_first_tag4_script_list_match(); + TryRunOnWarpIntoMapScript(); } void mli4_mapscripts_and_other(void) @@ -1855,7 +1855,7 @@ void mli4_mapscripts_and_other(void) ResetInitialPlayerAvatarState(); TrySpawnObjectEvents(0, 0); ResetBerryTreeSparkleFlags(); - mapheader_run_first_tag4_script_list_match(); + TryRunOnWarpIntoMapScript(); } void sub_8054E20(void) diff --git a/src/pokedex.c b/src/pokedex.c index 8d7ecb896..ea6c69478 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -1961,8 +1961,8 @@ static void sub_808D640(void) static void SortPokedex(u8 dexMode, u8 sortMode) { + s16 i, r5, r10; u16 vars[3]; //I have no idea why three regular variables are stored in an array, but whatever. - s16 i; gPokedexView->pokemonListCount = 0; @@ -2004,18 +2004,13 @@ static void SortPokedex(u8 dexMode, u8 sortMode) } else { - bool32 r10; - s16 r5; - - r10 = r5 = i = 0; - for (i = 0; i < vars[0]; i++) + for (i = 0, r5= 0, r10 = 0; i < vars[0]; i++) { vars[2] = i + 1; if (GetSetPokedexFlag(vars[2], 0)) r10 = 1; if (r10) { - asm(""); //Needed to match for some reason gPokedexView->unk0[r5].dexNum = vars[2]; gPokedexView->unk0[r5].seen = GetSetPokedexFlag(vars[2], 0); gPokedexView->unk0[r5].owned = GetSetPokedexFlag(vars[2], 1); diff --git a/src/pokemon_2.c b/src/pokemon_2.c index a92d12fd9..9fd145b80 100644 --- a/src/pokemon_2.c +++ b/src/pokemon_2.c @@ -1031,14 +1031,14 @@ u8 CalculateEnemyPartyCount(void) return gEnemyPartyCount; } -u8 sub_803DAA0(void) +u8 GetMonsStateToDoubles(void) { s32 aliveCount = 0; s32 i; CalculatePlayerPartyCount(); if (gPlayerPartyCount == 1) - return gPlayerPartyCount; + return gPlayerPartyCount; // PLAYER_HAS_ONE_MON for (i = 0; i < gPlayerPartyCount; i++) { @@ -1048,7 +1048,7 @@ u8 sub_803DAA0(void) aliveCount++; } - return (aliveCount > 1) ? 0 : 2; + return (aliveCount > 1) ? PLAYER_HAS_TWO_USABLE_MONS : PLAYER_HAS_ONE_USABLE_MON; } u8 GetAbilityBySpecies(u16 species, bool8 altAbility) diff --git a/src/pokemon_item_effect.c b/src/pokemon_item_effect.c index d59e8d77c..3ab351367 100644 --- a/src/pokemon_item_effect.c +++ b/src/pokemon_item_effect.c @@ -96,7 +96,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo sp34 = 4; } - if (!IS_POKEMON_ITEM(item)) + if (!ITEM_HAS_EFFECT(item)) return TRUE; if (gItemEffectTable[item - 13] == NULL && item != ITEM_ENIGMA_BERRY) return TRUE; diff --git a/src/record_mixing.c b/src/record_mixing.c index 8588bf637..9a2d32837 100644 --- a/src/record_mixing.c +++ b/src/record_mixing.c @@ -44,7 +44,7 @@ struct BattleTowerRecord *gBattleTowerPlayerRecord = &gSaveBlock2.battleTower.pl #define BUFFER_CHUNK_SIZE 200 -void sub_80B929C(void) +void RecordMixingPlayerSpotTriggered(void) { sub_8083A84(Task_RecordMixing_Main); } diff --git a/src/scrcmd.c b/src/scrcmd.c index ec3d2c1bc..1a2d55f2e 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -483,7 +483,7 @@ bool8 ScrCmd_random(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_giveitem(struct ScriptContext *ctx) +bool8 ScrCmd_additem(struct ScriptContext *ctx) { u16 itemId = VarGet(ScriptReadHalfword(ctx)); u32 quantity = VarGet(ScriptReadHalfword(ctx)); @@ -492,7 +492,7 @@ bool8 ScrCmd_giveitem(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_takeitem(struct ScriptContext *ctx) +bool8 ScrCmd_removeitem(struct ScriptContext *ctx) { u16 itemId = VarGet(ScriptReadHalfword(ctx)); u32 quantity = VarGet(ScriptReadHalfword(ctx)); @@ -527,7 +527,7 @@ bool8 ScrCmd_checkitemtype(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_givepcitem(struct ScriptContext *ctx) +bool8 ScrCmd_addpcitem(struct ScriptContext *ctx) { u16 itemId = VarGet(ScriptReadHalfword(ctx)); u16 quantity = VarGet(ScriptReadHalfword(ctx)); @@ -545,15 +545,15 @@ bool8 ScrCmd_checkpcitem(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_givedecoration(struct ScriptContext *ctx) +bool8 ScrCmd_adddecoration(struct ScriptContext *ctx) { u32 decoration = VarGet(ScriptReadHalfword(ctx)); - gSpecialVar_Result = GiveDecoration(decoration); + gSpecialVar_Result = AddDecoration(decoration); return FALSE; } -bool8 ScrCmd_takedecoration(struct ScriptContext *ctx) +bool8 ScrCmd_removedecoration(struct ScriptContext *ctx) { u32 decoration = VarGet(ScriptReadHalfword(ctx)); @@ -667,7 +667,7 @@ bool8 ScrCmd_initclock(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_dodailyevents(struct ScriptContext *ctx) +bool8 ScrCmd_dotimebasedevents(struct ScriptContext *ctx) { DoTimeBasedEvents(); return FALSE; @@ -770,7 +770,7 @@ bool8 ScrCmd_warphole(struct ScriptContext *ctx) SetFixedHoleWarpAsDestination(x - 7, y - 7); else Overworld_SetWarpDestination(mapGroup, mapNum, -1, x - 7, y - 7); - sp13F_fall_to_last_warp(); + DoFallWarp(); ResetInitialPlayerAvatarState(); return TRUE; } @@ -1386,7 +1386,7 @@ bool8 ScrCmd_drawboxtext(struct ScriptContext *ctx) } } -bool8 ScrCmd_drawmonpic(struct ScriptContext *ctx) +bool8 ScrCmd_showmonpic(struct ScriptContext *ctx) { u16 species = VarGet(ScriptReadHalfword(ctx)); u8 x = ScriptReadByte(ctx); @@ -1396,7 +1396,7 @@ bool8 ScrCmd_drawmonpic(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_erasemonpic(struct ScriptContext *ctx) +bool8 ScrCmd_hidemonpic(struct ScriptContext *ctx) { bool8 (*func)(void) = ScriptMenu_GetPicboxWaitFunc(); @@ -1406,7 +1406,7 @@ bool8 ScrCmd_erasemonpic(struct ScriptContext *ctx) return TRUE; } -bool8 ScrCmd_drawcontestwinner(struct ScriptContext *ctx) +bool8 ScrCmd_showcontestwinner(struct ScriptContext *ctx) { u8 v1 = ScriptReadByte(ctx); @@ -1513,7 +1513,7 @@ bool8 ScrCmd_bufferstdstring(struct ScriptContext *ctx) u8 stringVarIndex = ScriptReadByte(ctx); u16 index = VarGet(ScriptReadHalfword(ctx)); - StringCopy(sScriptStringVars[stringVarIndex], gUnknown_083CE048[index]); + StringCopy(sScriptStringVars[stringVarIndex], gStdStrings[index]); return FALSE; } @@ -1598,7 +1598,7 @@ bool8 ScrCmd_checkpartymove(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_givemoney(struct ScriptContext *ctx) +bool8 ScrCmd_addmoney(struct ScriptContext *ctx) { u32 amount = ScriptReadWord(ctx); u8 ignore = ScriptReadByte(ctx); @@ -1608,7 +1608,7 @@ bool8 ScrCmd_givemoney(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_takemoney(struct ScriptContext *ctx) +bool8 ScrCmd_removemoney(struct ScriptContext *ctx) { u32 amount = ScriptReadWord(ctx); u8 ignore = ScriptReadByte(ctx); @@ -1997,22 +1997,22 @@ bool8 ScrCmd_checkcoins(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_givecoins(struct ScriptContext *ctx) +bool8 ScrCmd_addcoins(struct ScriptContext *ctx) { u16 coins = VarGet(ScriptReadHalfword(ctx)); - if (GiveCoins(coins) == TRUE) + if (AddCoins(coins) == TRUE) gSpecialVar_Result = 0; else gSpecialVar_Result = 1; return FALSE; } -bool8 ScrCmd_takecoins(struct ScriptContext *ctx) +bool8 ScrCmd_removecoins(struct ScriptContext *ctx) { u16 coins = VarGet(ScriptReadHalfword(ctx)); - if (TakeCoins(coins) == TRUE) + if (RemoveCoins(coins) == TRUE) gSpecialVar_Result = 0; else gSpecialVar_Result = 1; diff --git a/src/script.c b/src/script.c index 2c6495552..cd4816a52 100644 --- a/src/script.c +++ b/src/script.c @@ -1,6 +1,7 @@ #include "global.h" #include "script.h" #include "event_data.h" +#include "constants/map_scripts.h" #define RAM_SCRIPT_MAGIC 51 #define SCRIPT_STACK_SIZE 20 @@ -256,14 +257,14 @@ static u8 *mapheader_get_tagged_pointer(u8 tag) } } -static void mapheader_run_script_by_tag(u8 tag) +static void MapHeaderRunScriptType(u8 tag) { u8 *ptr = mapheader_get_tagged_pointer(tag); if (ptr) ScriptContext2_RunNewScript(ptr); } -static u8 *mapheader_get_first_match_from_tagged_ptr_list(u8 tag) +static u8 *MapHeaderCheckScriptTable(u8 tag) { u8 *ptr = mapheader_get_tagged_pointer(tag); @@ -286,29 +287,29 @@ static u8 *mapheader_get_first_match_from_tagged_ptr_list(u8 tag) } } -void mapheader_run_script_with_tag_x1(void) +void RunOnLoadMapScript(void) { - mapheader_run_script_by_tag(1); + MapHeaderRunScriptType(MAP_SCRIPT_ON_LOAD); } -void mapheader_run_script_with_tag_x3(void) +void RunOnTransitionMapScript(void) { - mapheader_run_script_by_tag(3); + MapHeaderRunScriptType(MAP_SCRIPT_ON_TRANSITION); } -void mapheader_run_script_with_tag_x5(void) +void RunOnResumeMapScript(void) { - mapheader_run_script_by_tag(5); + MapHeaderRunScriptType(MAP_SCRIPT_ON_RESUME); } -void mapheader_run_script_with_tag_x6(void) +void RunOnDiveWarpMapScript(void) { - mapheader_run_script_by_tag(6); + MapHeaderRunScriptType(MAP_SCRIPT_ON_DIVE_WARP); } -bool8 mapheader_run_first_tag2_script_list_match(void) +bool8 TryRunOnFrameMapScript(void) { - u8 *ptr = mapheader_get_first_match_from_tagged_ptr_list(2); + u8 *ptr = MapHeaderCheckScriptTable(MAP_SCRIPT_ON_FRAME_TABLE); if (!ptr) return 0; @@ -317,9 +318,9 @@ bool8 mapheader_run_first_tag2_script_list_match(void) return 1; } -void mapheader_run_first_tag4_script_list_match(void) +void TryRunOnWarpIntoMapScript(void) { - u8 *ptr = mapheader_get_first_match_from_tagged_ptr_list(4); + u8 *ptr = MapHeaderCheckScriptTable(MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE); if (ptr) ScriptContext2_RunNewScript(ptr); } diff --git a/src/script_menu.c b/src/script_menu.c index 1a7489c82..03aef9813 100644 --- a/src/script_menu.c +++ b/src/script_menu.c @@ -11,6 +11,7 @@ #include "sprite.h" #include "strings.h" #include "task.h" +#include "constants/script_menu.h" // multichoice lists const struct MenuAction MultichoiceList_00[] = @@ -555,30 +556,30 @@ const struct MultichoiceListStruct gMultichoiceLists[] = {MultichoiceList_72, ARRAY_COUNT(MultichoiceList_72)}, }; -const u8 *const gUnknown_083CE048[] = +const u8 *const gStdStrings[] = { - OtherText_Cool2, - OtherText_Beauty3, - OtherText_Cute2, - OtherText_Smart2, - OtherText_Tough2, - OtherText_Normal, - OtherText_Super, - OtherText_Hyper, - OtherText_Master, - OtherText_Cool3, - OtherText_Beauty4, - OtherText_Cute3, - OtherText_Smart3, - OtherText_Tough3, - OtherText_Items, - OtherText_KeyItems, - OtherText_Balls, - OtherText_TMsHMs, - OtherText_Berries, + [STDSTRING_COOL] = OtherText_Cool2, + [STDSTRING_BEAUTY] = OtherText_Beauty3, + [STDSTRING_CUTE] = OtherText_Cute2, + [STDSTRING_SMART] = OtherText_Smart2, + [STDSTRING_TOUGH] = OtherText_Tough2, + [STDSTRING_NORMAL] = OtherText_Normal, + [STDSTRING_SUPER] = OtherText_Super, + [STDSTRING_HYPER] = OtherText_Hyper, + [STDSTRING_MASTER] = OtherText_Master, + [STDSTRING_COOL2] = OtherText_Cool3, + [STDSTRING_BEAUTY2] = OtherText_Beauty4, + [STDSTRING_CUTE2] = OtherText_Cute3, + [STDSTRING_SMART2] = OtherText_Smart3, + [STDSTRING_TOUGH2] = OtherText_Tough3, + [STDSTRING_ITEMS] = OtherText_Items, + [STDSTRING_KEYITEMS] = OtherText_KeyItems, + [STDSTRING_POKEBALLS] = OtherText_Balls, + [STDSTRING_TMHMS] = OtherText_TMsHMs, + [STDSTRING_BERRIES] = OtherText_Berries, }; -extern u8 gPCText_WhichPCShouldBeAccessed[]; +extern u8 Text_WhichPCShouldBeAccessed[]; extern u16 gSpecialVar_Result; @@ -880,7 +881,7 @@ static void Task_HandleMultichoiceGridInput(u8 taskId) #undef tIgnoreBPress #undef tDoWrap -bool8 ScrSpecial_CreatePCMenu(void) +bool8 ScriptMenu_CreatePCMultichoice(void) { if (FuncIsActiveTask(Task_HandleMultichoiceInput) == TRUE) { @@ -1097,7 +1098,7 @@ _080B588C: .4byte gPCText_PlayersPC\n\ void ScriptMenu_DisplayPCStartupPrompt(void) { Menu_DisplayDialogueFrame(); - Menu_PrintText(gPCText_WhichPCShouldBeAccessed, 2, 15); + Menu_PrintText(Text_WhichPCShouldBeAccessed, 2, 15); } #define tState data[0] diff --git a/src/script_pokemon_util_80C4BF0.c b/src/script_pokemon_util_80C4BF0.c index ce6c01439..c405d9cb4 100644 --- a/src/script_pokemon_util_80C4BF0.c +++ b/src/script_pokemon_util_80C4BF0.c @@ -437,20 +437,18 @@ u8 ScriptGiveEgg(u16 species) return GiveMonToPlayer(&mon); } -void CheckForAlivePartyMons(void) +void HasEnoughMonsForDoubleBattle(void) { - u8 var = sub_803DAA0(); - - switch(var) + switch (GetMonsStateToDoubles()) { - case 1: - gSpecialVar_Result = var; + case PLAYER_HAS_TWO_USABLE_MONS: + gSpecialVar_Result = PLAYER_HAS_TWO_USABLE_MONS; break; - case 0: - gSpecialVar_Result = var; + case PLAYER_HAS_ONE_MON: + gSpecialVar_Result = PLAYER_HAS_ONE_MON; break; - case 2: - gSpecialVar_Result = var; + case PLAYER_HAS_ONE_USABLE_MON: + gSpecialVar_Result = PLAYER_HAS_ONE_USABLE_MON; break; } } diff --git a/src/secret_base.c b/src/secret_base.c index 097d95cfe..21dd83dd2 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -30,6 +30,7 @@ #include "task.h" #include "text.h" #include "constants/event_bg.h" +#include "constants/event_objects.h" #include "constants/decorations.h" #include "constants/items.h" #include "constants/map_types.h" @@ -50,9 +51,10 @@ static void sub_80BCBC0(u8); static void sub_80BCBF8(u8 taskId); static void sub_80BCC54(u8 taskId); static void Task_SecretBasePC_Registry(u8 taskId); +static u8 GetSecretBaseOwnerType(u8 secretBaseIndex); -extern u8 gUnknown_0815F399[]; -extern u8 gUnknown_0815F49A[]; +extern u8 SecretBase_EventScript_PCCancel[]; +extern u8 SecretBase_EventScript_ShowRegisterMenu[]; EWRAM_DATA u8 gCurrentSecretBaseId = 0; const struct @@ -107,8 +109,19 @@ const struct YesNoFuncTable gUnknown_083D13E4 = { sub_80BCBC0 }; -const u8 gUnknown_083D13EC[] = { - 0x23,0x24,0xF,0x1F,0x21,0x2F,0xE,0x14,0x20,0x22,0x0,0x0 +static const u8 sSecretBaseOwnerGfxIds[] = { + // Male + OBJ_EVENT_GFX_YOUNGSTER, + OBJ_EVENT_GFX_BUG_CATCHER, + OBJ_EVENT_GFX_BOY_4, + OBJ_EVENT_GFX_CAMPER, + OBJ_EVENT_GFX_MAN_4, + // Female + OBJ_EVENT_GFX_LASS, + OBJ_EVENT_GFX_GIRL_3, + OBJ_EVENT_GFX_WOMAN_3, + OBJ_EVENT_GFX_PICNICKER, + OBJ_EVENT_GFX_WOMAN_7, }; extern u8 gUnknown_081A2E14[]; @@ -380,7 +393,7 @@ void sub_80BBAF0(void) bool8 sub_80BBB24(void) { - if (gMapHeader.mapType == MAP_TYPE_SECRET_BASE && VarGet(VAR_0x4097) == 0) + if (gMapHeader.mapType == MAP_TYPE_SECRET_BASE && VarGet(VAR_INIT_SECRET_BASE) == 0) return FALSE; return TRUE; } @@ -462,7 +475,7 @@ void sub_80BBCCC(u8 flagIn) sub_80BB764(&x, &y, 0x220); MapGridSetMetatileIdAt(x + 7, y + 7, 0xe21); } - else if (flagIn == 1 && VarGet(VAR_0x4089) == 1) + else if (flagIn == 1 && VarGet(VAR_SECRET_BASE_INITIALIZED) == 1) { sub_80BB764(&x, &y, 0x220); MapGridSetMetatileIdAt(x + 7, y + 7, 0xe0a); @@ -512,7 +525,7 @@ void sub_80BBDD0(void) metatile = MapGridGetMetatileBehaviorAt(gSpecialVar_0x8006 + 7, gSpecialVar_0x8007 + 7); if (MetatileBehavior_IsSecretBaseLargeMatEdge(metatile) == TRUE || MetatileBehavior_IsLargeMatCenter(metatile) == TRUE) { - gSpecialVar_Result = gMapHeader.events->objectEvents[objid].graphicsId + VAR_0x3F20; + gSpecialVar_Result = VAR_OBJ_GFX_ID_0 + (gMapHeader.events->objectEvents[objid].graphicsId - OBJ_EVENT_GFX_VAR_0); VarSet(gSpecialVar_Result, gDecorations[roomdecor[decidx]].tiles[0]); gSpecialVar_Result = gMapHeader.events->objectEvents[objid].localId; FlagClear(gSpecialVar_0x8004 + 0xAE); @@ -527,10 +540,10 @@ void sub_80BBDD0(void) } } -void sub_80BBFA4(void) +void SetSecretBaseOwnerGfxId(void) { int curBase = VarGet(VAR_CURRENT_SECRET_BASE); - VarSet(VAR_OBJ_GFX_ID_F, gUnknown_083D13EC[sub_80BCCA4(curBase)]); + VarSet(VAR_OBJ_GFX_ID_F, sSecretBaseOwnerGfxIds[GetSecretBaseOwnerType(curBase)]); } void SetCurrentSecretBaseFromPosition(struct MapPosition *position, struct MapEvents *events) @@ -704,7 +717,7 @@ void sub_80BC440(void) sub_80BC0F8(); } -void SecretBasePC_PackUp(void) +void MoveOutOfSecretBase(void) { IncrementGameStat(GAME_STAT_MOVED_SECRET_BASE); sub_80BC440(); @@ -765,7 +778,7 @@ u8 sub_80BC538(void) return retVal; } -void sub_80BC56C(void) +void GetCurSecretBaseRegistrationValidity(void) { if (sub_80BC268(sub_80BC14C(gCurrentSecretBaseId)) == TRUE) gSpecialVar_Result = 1; @@ -775,10 +788,10 @@ void sub_80BC56C(void) gSpecialVar_Result = 0; } -void sub_80BC5BC(void) +void ToggleCurSecretBaseRegistry(void) { gSaveBlock1.secretBases[sub_80BC14C(gCurrentSecretBaseId)].sbr_field_1_6 ^= 1; - FlagSet(FLAG_DECORATION_16); + FlagSet(FLAG_SECRET_BASE_REGISTRY_ENABLED); } void SecretBasePC_Decoration(void) @@ -1076,14 +1089,14 @@ void sub_80BCC54(u8 taskId) DestroyVerticalScrollIndicator(BOTTOM_ARROW); if (curBaseIndex == 0) - ScriptContext1_SetupScript(gUnknown_0815F399); + ScriptContext1_SetupScript(SecretBase_EventScript_PCCancel); else - ScriptContext1_SetupScript(gUnknown_0815F49A); + ScriptContext1_SetupScript(SecretBase_EventScript_ShowRegisterMenu); DestroyTask(taskId); } -u8 sub_80BCCA4(u8 secretBaseIndex) +static u8 GetSecretBaseOwnerType(u8 secretBaseIndex) { return (gSaveBlock1.secretBases[secretBaseIndex].playerName[OT_NAME_LENGTH] % 5) + gSaveBlock1.secretBases[secretBaseIndex].gender * 5; @@ -1091,7 +1104,7 @@ u8 sub_80BCCA4(u8 secretBaseIndex) const u8 *GetSecretBaseTrainerLoseText(void) { - u8 param = sub_80BCCA4(VarGet(VAR_CURRENT_SECRET_BASE)); + u8 param = GetSecretBaseOwnerType(VarGet(VAR_CURRENT_SECRET_BASE)); if (param == 0) return UnknownString_81A1BB2; if (param == 1) return UnknownString_81A1F67; if (param == 2) return UnknownString_81A2254; @@ -1147,7 +1160,7 @@ void sub_80BCE90() FlagSet(FLAG_DAILY_UNKNOWN_8C2); } - gSpecialVar_0x8004 = sub_80BCCA4(curBaseIndex); + gSpecialVar_0x8004 = GetSecretBaseOwnerType(curBaseIndex); gSpecialVar_Result = gSaveBlock1.secretBases[curBaseIndex].sbr_field_1_5; } diff --git a/src/shop.c b/src/shop.c index 3e399f0da..75d83d132 100644 --- a/src/shop.c +++ b/src/shop.c @@ -691,7 +691,7 @@ static void Task_DoItemPurchase(u8 taskId) } else // a normal mart is only type 0, so types 1 and 2 are decoration marts. { - if (GiveDecoration(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor])) + if (AddDecoration(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor])) { if (gMartInfo.martType == MART_TYPE_1) DisplayItemMessageOnField(taskId, gOtherText_HereYouGo2, Shop_DoItemTransaction, 0xC3E1); diff --git a/src/start_menu.c b/src/start_menu.c index 747f13b3a..c87ad6330 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -613,7 +613,7 @@ static u8 RunSaveDialogCallback(void) return saveDialogCallback(); } -void ScrSpecial_DoSaveDialog(void) +void SaveGame(void) { sub_807160C(); CreateTask(Task_SaveDialog, 0x50); diff --git a/src/trader.c b/src/trader.c index f8606d499..5403f53eb 100644 --- a/src/trader.c +++ b/src/trader.c @@ -249,7 +249,7 @@ void ScrSpecial_TraderDoDecorationTrade(void) struct MauvilleManTrader *trader = &gSaveBlock1.mauvilleMan.trader; RemoveDecorationFromInventory(gSpecialVar_0x8006); - GiveDecoration(gSpecialVar_0x8004); + AddDecoration(gSpecialVar_0x8004); StringCopy(trader->unk5[gSpecialVar_0x8005], gSaveBlock2.playerName); trader->unk1[gSpecialVar_0x8005] = gSpecialVar_0x8006; sub_810993C(); diff --git a/src/trainer_see.c b/src/trainer_see.c index caeb22a79..30d8d2794 100644 --- a/src/trainer_see.c +++ b/src/trainer_see.c @@ -449,7 +449,7 @@ void sub_8084794(struct ObjectEvent *var) static void Task_DestroyTrainerApproachTask(u8); -void ScrSpecial_EndTrainerApproach(void) +void EndTrainerApproach(void) { sub_80842FC(Task_DestroyTrainerApproachTask); } @@ -43,6 +43,7 @@ #include "constants/moves.h" #include "constants/region_map_sections.h" #include "constants/metatile_labels.h" +#include "constants/script_menu.h" struct UnkTvStruct { @@ -1512,16 +1513,16 @@ void sub_80BEF10(u8 strvaridx, u8 rank) switch (rank) { case NORMAL_RANK: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[NORMAL_RANK + 5]); + StringCopy(gUnknown_083D1464[strvaridx], gStdStrings[STDSTRING_NORMAL]); break; case SUPER_RANK: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[SUPER_RANK + 5]); + StringCopy(gUnknown_083D1464[strvaridx], gStdStrings[STDSTRING_SUPER]); break; case HYPER_RANK: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[HYPER_RANK + 5]); + StringCopy(gUnknown_083D1464[strvaridx], gStdStrings[STDSTRING_HYPER]); break; case MASTER_RANK: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[MASTER_RANK + 5]); + StringCopy(gUnknown_083D1464[strvaridx], gStdStrings[STDSTRING_MASTER]); break; } } @@ -1531,19 +1532,19 @@ void CopyContestCategoryToStringVar(u8 strvaridx, u8 category) switch (category) { case CONTEST_COOL: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_COOL]); + StringCopy(gUnknown_083D1464[strvaridx], gStdStrings[STDSTRING_COOL]); break; case CONTEST_BEAUTY: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_BEAUTY]); + StringCopy(gUnknown_083D1464[strvaridx], gStdStrings[STDSTRING_BEAUTY]); break; case CONTEST_CUTE: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_CUTE]); + StringCopy(gUnknown_083D1464[strvaridx], gStdStrings[STDSTRING_CUTE]); break; case CONTEST_SMART: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_SMART]); + StringCopy(gUnknown_083D1464[strvaridx], gStdStrings[STDSTRING_SMART]); break; case CONTEST_TOUGH: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_TOUGH]); + StringCopy(gUnknown_083D1464[strvaridx], gStdStrings[STDSTRING_TOUGH]); break; } } @@ -2366,11 +2367,12 @@ s8 sub_80C019C(TVShow tvShows[]) return -1; } -#ifdef NONMATCHING void sub_80C01D4(void) { u16 i; - for (i=0; i<24; i++) + u16 j; + + for (i = 0; i < 24; i++) { switch (gSaveBlock1.tvShows[i].common.kind) { @@ -2380,251 +2382,58 @@ void sub_80C01D4(void) case TVSHOW_MASS_OUTBREAK: break; case TVSHOW_FAN_CLUB_LETTER: - sub_80C03C8((&gSaveBlock1.tvShows[i])->fanclubLetter.species, i); + j = (&gSaveBlock1.tvShows[i])->fanclubLetter.species; + sub_80C03C8(j, i); break; case TVSHOW_PKMN_FAN_CLUB_OPINIONS: - sub_80C03C8((&gSaveBlock1.tvShows[i])->fanclubOpinions.var02, i); + j = (&gSaveBlock1.tvShows[i])->fanclubOpinions.var02; + sub_80C03C8(j, i); break; case TVSHOW_UNKN_SHOWTYPE_04: - sub_80C03C8((&gSaveBlock1.tvShows[i])->unkShow04.var06, i); + j = (&gSaveBlock1.tvShows[i])->unkShow04.var06; + sub_80C03C8(j, i); break; case TVSHOW_NAME_RATER_SHOW: - sub_80C03C8((&gSaveBlock1.tvShows[i])->nameRaterShow.species, i); - sub_80C03C8((&gSaveBlock1.tvShows[i])->nameRaterShow.var1C, i); + j = (&gSaveBlock1.tvShows[i])->nameRaterShow.species; + sub_80C03C8(j, i); + j = (&gSaveBlock1.tvShows[i])->nameRaterShow.var1C; + sub_80C03C8(j, i); break; case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: - sub_80C03C8((&gSaveBlock1.tvShows[i])->bravoTrainer.species, i); + j = (&gSaveBlock1.tvShows[i])->bravoTrainer.species; + sub_80C03C8(j, i); break; case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: - sub_80C03C8((&gSaveBlock1.tvShows[i])->bravoTrainerTower.species, i); - sub_80C03C8((&gSaveBlock1.tvShows[i])->bravoTrainerTower.defeatedSpecies, i); + j = (&gSaveBlock1.tvShows[i])->bravoTrainerTower.species; + sub_80C03C8(j, i); + j = (&gSaveBlock1.tvShows[i])->bravoTrainerTower.defeatedSpecies; + sub_80C03C8(j, i); break; case TVSHOW_POKEMON_TODAY_CAUGHT: - sub_80C03C8((&gSaveBlock1.tvShows[i])->pokemonToday.species, i); + j = (&gSaveBlock1.tvShows[i])->pokemonToday.species; + sub_80C03C8(j, i); break; case TVSHOW_POKEMON_TODAY_FAILED: - sub_80C03C8((&gSaveBlock1.tvShows[i])->pokemonTodayFailed.species, i); - sub_80C03C8((&gSaveBlock1.tvShows[i])->pokemonTodayFailed.species2, i); + j = (&gSaveBlock1.tvShows[i])->pokemonTodayFailed.species; + sub_80C03C8(j, i); + j = (&gSaveBlock1.tvShows[i])->pokemonTodayFailed.species2; + sub_80C03C8(j, i); break; case TVSHOW_FISHING_ADVICE: - sub_80C03C8((&gSaveBlock1.tvShows[i])->pokemonAngler.var04, i); + j = (&gSaveBlock1.tvShows[i])->pokemonAngler.var04; + sub_80C03C8(j, i); break; case TVSHOW_WORLD_OF_MASTERS: - sub_80C03C8((&gSaveBlock1.tvShows[i])->worldOfMasters.var08, i); - sub_80C03C8((&gSaveBlock1.tvShows[i])->worldOfMasters.var04, i); + j = (&gSaveBlock1.tvShows[i])->worldOfMasters.var08; + sub_80C03C8(j, i); + j = (&gSaveBlock1.tvShows[i])->worldOfMasters.var04; + sub_80C03C8(j, i); break; default: sub_80C03A8(i); } } } -#else -NAKED -void sub_80C01D4(void) { - asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - movs r6, 0\n\ -_080C01D8:\n\ - ldr r0, _080C01F8 @ =gSaveBlock1\n\ - lsls r2, r6, 3\n\ - adds r1, r2, r6\n\ - lsls r1, 2\n\ - adds r1, r0\n\ - ldr r0, _080C01FC @ =0x00002738\n\ - adds r1, r0\n\ - ldrb r0, [r1]\n\ - cmp r0, 0x29\n\ - bls _080C01EE\n\ - b _default\n\ -_080C01EE:\n\ - lsls r0, 2\n\ - ldr r1, _080C0200 @ =_080C0204\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .align 2, 0\n\ -_080C01F8: .4byte gSaveBlock1\n\ -_080C01FC: .4byte 0x00002738\n\ -_080C0200: .4byte _080C0204\n\ - .align 2, 0\n\ -_080C0204:\n\ - .4byte _break\n\ - .4byte _fanclubLetter @ TVSHOW_FAN_CLUB_LETTER\n\ - .4byte _break @ TVSHOW_RECENT_HAPPENINGS\n\ - .4byte _fanclubOpinions @ TVSHOW_PKMN_FAN_CLUB_OPINIONS\n\ - .4byte _showtype4 @ TVSHOW_UNKN_SHOWTYPE_04\n\ - .4byte _nameRater @ TVSHOW_NAME_RATER_SHOW\n\ - .4byte _bravoTrainerContest @ TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE\n\ - .4byte _bravoTrainerTower @ TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _pokemonTodayS @ TVSHOW_POKEMON_TODAY_CAUGHT\n\ - .4byte _break @ TVSHOW_SMART_SHOPPER\n\ - .4byte _pokemonTodayF @ TVSHOW_POKEMON_TODAY_FAILED\n\ - .4byte _fishing @ TVSHOW_FISHING_ADVICE\n\ - .4byte _worldOfMasters @ TVSHOW_WORLD_OF_MASTERS\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _break @ TVSHOW_MASS_OUTBREAK\n\ -_fanclubLetter:\n\ - adds r0, r2, r6\n\ - lsls r0, 2\n\ - ldr r1, _080C02B8 @ =gSaveBlock1 + 0x2738\n\ - adds r0, r1\n\ - ldrh r0, [r0, 0x2]\n\ - b _checkSpecies1 @ sub_80C03C8(r0, i)\n\ - .align 2, 0\n\ -_080C02B8: .4byte gSaveBlock1 + 0x2738\n\ -_fanclubOpinions:\n\ - adds r0, r2, r6\n\ - lsls r0, 2\n\ - ldr r1, _080C02C8 @ =gSaveBlock1 + 0x2738\n\ - adds r0, r1\n\ - ldrh r0, [r0, 0x2]\n\ - b _checkSpecies1 @ sub_80C03C8(r0, i)\n\ - .align 2, 0\n\ -_080C02C8: .4byte gSaveBlock1 + 0x2738\n\ -_showtype4:\n\ - adds r0, r2, r6\n\ - lsls r0, 2\n\ - ldr r1, _080C02D8 @ =gSaveBlock1 + 0x2738\n\ - adds r0, r1\n\ - ldrh r0, [r0, 0x6]\n\ - b _checkSpecies1 @ sub_80C03C8(r0, i)\n\ - .align 2, 0\n\ -_080C02D8: .4byte gSaveBlock1 + 0x2738\n\ -_nameRater:\n\ - adds r4, r2, r6\n\ - lsls r4, 2\n\ - ldr r0, _080C02F4 @ =gSaveBlock1 + 0x2738\n\ - adds r4, r0\n\ - ldrh r0, [r4, 0x2]\n\ - lsls r5, r6, 24\n\ - lsrs r5, 24\n\ - adds r1, r5, 0\n\ - bl sub_80C03C8\n\ - ldrh r0, [r4, 0x1C]\n\ - b _checkSpecies2 @ sub_80C03C8(r0, i)\n\ - .align 2, 0\n\ -_080C02F4: .4byte gSaveBlock1 + 0x2738\n\ -_bravoTrainerContest:\n\ - adds r0, r2, r6\n\ - lsls r0, 2\n\ - ldr r1, _080C0304 @ =gSaveBlock1 + 0x2738\n\ - adds r0, r1\n\ - ldrh r0, [r0, 0x2]\n\ - b _checkSpecies1 @ sub_80C03C8(r0, i)\n\ - .align 2, 0\n\ -_080C0304: .4byte gSaveBlock1 + 0x2738\n\ -_bravoTrainerTower:\n\ - adds r4, r2, r6\n\ - lsls r4, 2\n\ - ldr r0, _080C0320 @ =gSaveBlock1 + 0x2738\n\ - adds r4, r0\n\ - ldrh r0, [r4, 0xA]\n\ - lsls r5, r6, 24\n\ - lsrs r5, 24\n\ - adds r1, r5, 0\n\ - bl sub_80C03C8\n\ - ldrh r0, [r4, 0x14]\n\ - b _checkSpecies2 @ sub_80C03C8(r0, i)\n\ - .align 2, 0\n\ -_080C0320: .4byte gSaveBlock1 + 0x2738\n\ -_pokemonTodayS:\n\ - adds r0, r2, r6\n\ - lsls r0, 2\n\ - ldr r1, _080C0330 @ =gSaveBlock1 + 0x2738\n\ - adds r0, r1\n\ - ldrh r0, [r0, 0x10]\n\ - b _checkSpecies1 @ sub_80C03C8(r0, i)\n\ - .align 2, 0\n\ -_080C0330: .4byte gSaveBlock1 + 0x2738\n\ -_pokemonTodayF:\n\ - adds r4, r2, r6\n\ - lsls r4, 2\n\ - ldr r0, _080C034C @ =gSaveBlock1 + 0x2738\n\ - adds r4, r0\n\ - ldrh r0, [r4, 0xC]\n\ - lsls r5, r6, 24\n\ - lsrs r5, 24\n\ - adds r1, r5, 0\n\ - bl sub_80C03C8\n\ - ldrh r0, [r4, 0xE]\n\ - b _checkSpecies2 @ sub_80C03C8(r0, i)\n\ - .align 2, 0\n\ -_080C034C: .4byte gSaveBlock1 + 0x2738\n\ -_fishing:\n\ - adds r0, r2, r6\n\ - lsls r0, 2\n\ - ldr r1, _080C0364 @ =gSaveBlock1 + 0x2738\n\ - adds r0, r1\n\ - ldrh r0, [r0, 0x4]\n\ -_checkSpecies1:\n\ - lsls r1, r6, 24\n\ - lsrs r1, 24\n\ - bl sub_80C03C8\n\ - b _break\n\ - .align 2, 0\n\ -_080C0364: .4byte gSaveBlock1 + 0x2738\n\ -_worldOfMasters:\n\ - adds r4, r2, r6\n\ - lsls r4, 2\n\ - ldr r0, _080C0388 @ =gSaveBlock1 + 0x2738\n\ - adds r4, r0\n\ - ldrh r0, [r4, 0x8]\n\ - lsls r5, r6, 24\n\ - lsrs r5, 24\n\ - adds r1, r5, 0\n\ - bl sub_80C03C8\n\ - ldrh r0, [r4, 0x4]\n\ -_checkSpecies2:\n\ - adds r1, r5, 0\n\ - bl sub_80C03C8\n\ - b _break\n\ - .align 2, 0\n\ -_080C0388: .4byte gSaveBlock1 + 0x2738\n\ -_default:\n\ - lsls r0, r6, 24\n\ - lsrs r0, 24\n\ - bl sub_80C03A8\n\ -_break:\n\ - adds r0, r6, 0x1\n\ - lsls r0, 16\n\ - lsrs r6, r0, 16\n\ - cmp r6, 0x17\n\ - bhi _080C03A0\n\ - b _080C01D8\n\ -_080C03A0:\n\ - pop {r4-r6}\n\ - pop {r0}\n\ - bx r0\n\ -.syntax divided\n"); -} -#endif void sub_80C03A8(u8 showidx) { diff --git a/src/wild_encounter.c b/src/wild_encounter.c index 47eb81541..1ad55dbee 100644 --- a/src/wild_encounter.c +++ b/src/wild_encounter.c @@ -86,20 +86,12 @@ static bool8 CheckFeebas(void) x -= 7; y -= 7; -#ifdef NONMATCHING + if (y >= gRoute119WaterTileData[3 * 0 + 0] && y <= gRoute119WaterTileData[3 * 0 + 1]) + route119section = 0; if (y >= gRoute119WaterTileData[3 * 1 + 0] && y <= gRoute119WaterTileData[3 * 1 + 1]) route119section = 1; if (y >= gRoute119WaterTileData[3 * 2 + 0] && y <= gRoute119WaterTileData[3 * 2 + 1]) route119section = 2; -#else - { - register const u16 *arr asm("r0"); - if (y >= (arr = gRoute119WaterTileData)[3 * 1 + 0] && y <= arr[3 * 1 + 1]) - route119section = 1; - if (y >= arr[3 * 2 + 0] && y <= arr[3 * 2 + 1]) - route119section = 2; - } -#endif if (Random() % 100 > 49) //50% chance of encountering Feebas return FALSE; |