From 5d268f0acf7ecc320423b0c9bff18e125015b4c3 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 26 Jun 2019 19:47:30 -0400 Subject: Make Ruby compile with gcc-8 --- src/battle/anim/fire_2.c | 1 + src/battle/anim/ghost.c | 3 +- src/battle/anim/heal_bell.c | 2 +- src/battle/anim/musical.c | 2 +- src/battle/battle_7.c | 2 -- src/battle/battle_anim_80CA710.c | 8 ++--- src/battle/battle_controller_linkopponent.c | 6 ---- src/battle/battle_controller_linkpartner.c | 16 +--------- src/battle/battle_controller_opponent.c | 8 ----- src/battle/battle_controller_player.c | 1 - src/battle/battle_controller_safari.c | 2 -- src/battle/battle_controller_wally.c | 4 --- src/berry_blender.c | 16 +++++----- src/daycare.c | 10 +++--- src/debug/sound_check_menu.c | 4 +-- src/egg_hatch.c | 3 -- src/field_weather_effects.c | 2 +- src/item_menu.c | 34 +++++++------------- src/libs/m4a.c | 1 + src/main.c | 7 +++++ src/main_menu.c | 7 ----- src/pokemon_size_record.c | 2 +- src/pokenav_before.c | 2 +- src/reset_rtc_screen.c | 2 +- src/roulette.c | 48 ++++++++++++++--------------- src/save.c | 5 ++- src/trade.c | 2 +- 27 files changed, 77 insertions(+), 123 deletions(-) (limited to 'src') diff --git a/src/battle/anim/fire_2.c b/src/battle/anim/fire_2.c index 7ebd7dd87..1d69b2c1c 100644 --- a/src/battle/anim/fire_2.c +++ b/src/battle/anim/fire_2.c @@ -467,6 +467,7 @@ static void sub_80D54E0(u8 taskId) // animate Move_ERUPTION? break; default: + break; } } diff --git a/src/battle/anim/ghost.c b/src/battle/anim/ghost.c index 52911f366..69d47a998 100644 --- a/src/battle/anim/ghost.c +++ b/src/battle/anim/ghost.c @@ -1145,7 +1145,8 @@ static void sub_80DF0B8(struct Sprite *sprite) if (++coeffB > 16) coeffB = 16; - if (--(s16)coeffA < 0) + --coeffA; + if ((s16)coeffA < 0) coeffA = 0; REG_BLDALPHA = (coeffB << 8) | coeffA; diff --git a/src/battle/anim/heal_bell.c b/src/battle/anim/heal_bell.c index e191460ea..94bf490c2 100644 --- a/src/battle/anim/heal_bell.c +++ b/src/battle/anim/heal_bell.c @@ -76,7 +76,7 @@ void sub_80D1ADC(u8 taskId) { int i; u8 sp[8]; - void* src; + const void* src; void* dest; void* what; sp[0] = IndexOfSpritePaletteTag(0x27DE); diff --git a/src/battle/anim/musical.c b/src/battle/anim/musical.c index 1e559d975..1a58c4daf 100644 --- a/src/battle/anim/musical.c +++ b/src/battle/anim/musical.c @@ -291,7 +291,7 @@ void sub_80CECE8(struct Sprite* sprite) if (GetBattlerSide(gBattleAnimAttacker) == 1) { a = gBattleAnimArgs[1]; - (u16)gBattleAnimArgs[1] = -a; + *(u16*)&gBattleAnimArgs[1] = -a; } sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[1]; diff --git a/src/battle/battle_7.c b/src/battle/battle_7.c index 6e1ddceaf..0ff44a249 100644 --- a/src/battle/battle_7.c +++ b/src/battle/battle_7.c @@ -94,9 +94,7 @@ const struct SpritePalette gUnknown_0820A4D4[] = }; extern void c3_0802FDF4(u8); -extern void sub_80440EC(); extern void sub_804777C(); -extern u8 GetBattlerSpriteCoord(); extern u8 IsBankSpritePresent(u8); extern u8 sub_8077F68(u8); extern u8 sub_8077F7C(u8); diff --git a/src/battle/battle_anim_80CA710.c b/src/battle/battle_anim_80CA710.c index 65ccd7c21..75168f083 100644 --- a/src/battle/battle_anim_80CA710.c +++ b/src/battle/battle_anim_80CA710.c @@ -6,10 +6,10 @@ // Static RAM declarations -IWRAM_DATA u32 filler_03000724; -IWRAM_DATA u16 gUnknown_03000728[4]; -IWRAM_DATA u16 gUnknown_03000730[6]; -IWRAM_DATA u32 filler_0300073c; +BSS_DATA u32 filler_03000724; +BSS_DATA u16 gUnknown_03000728[4]; +BSS_DATA u16 gUnknown_03000730[6]; +BSS_DATA u32 filler_0300073c; // Static ROM declarations diff --git a/src/battle/battle_controller_linkopponent.c b/src/battle/battle_controller_linkopponent.c index 117aeb932..05a6f8ac0 100644 --- a/src/battle/battle_controller_linkopponent.c +++ b/src/battle/battle_controller_linkopponent.c @@ -55,7 +55,6 @@ extern MainCallback gPreBattleCallback1; extern struct MusicPlayerInfo gMPlay_BGM; extern u8 sub_8077F68(); -extern u8 GetBattlerSubpriority(); extern u8 GetBattlerPosition(u8); extern void BattleLoadOpponentMonSprite(struct Pokemon *, u8); extern void sub_8037A74(void); @@ -64,7 +63,6 @@ extern void sub_8037E30(void); extern void sub_80312F0(struct Sprite *); extern u8 StartSendOutMonAnimation(); extern void sub_8032A08(); -extern void sub_8043DB0(); extern void sub_8037BBC(void); extern s32 sub_803FC34(u16); extern void sub_8031A6C(u16, u8); @@ -78,15 +76,12 @@ extern void sub_8010384(struct Sprite *); extern void sub_8037B78(void); extern u8 sub_8031720(); extern bool8 mplay_80342A4(u8); -extern void DoMoveAnim(); extern void sub_80326EC(); extern void sub_8031F24(void); extern void sub_80324BC(); extern void BufferStringBattle(); extern void sub_8037C2C(void); -extern void sub_8043D84(); extern void sub_8037B24(void); -extern void sub_8045A5C(); extern void sub_8037FAC(void); extern void move_anim_start_t2_for_situation(); extern void dp01t_0F_4_move_anim(void); @@ -99,7 +94,6 @@ extern void nullsub_47(void); extern bool8 IsDoubleBattle(void); extern void sub_8037840(void); extern void sub_8031B74(); -extern u8 IsBankSpritePresent(); extern u8 move_anim_start_t3(); extern void sub_8037FD8(void); extern void sub_8037F34(void); diff --git a/src/battle/battle_controller_linkpartner.c b/src/battle/battle_controller_linkpartner.c index 0db2f54b4..018fd1bf0 100644 --- a/src/battle/battle_controller_linkpartner.c +++ b/src/battle/battle_controller_linkpartner.c @@ -58,17 +58,14 @@ extern u8 gAnimScriptActive; extern void (*gAnimScriptCallback)(void); extern u8 move_anim_start_t3(); -extern u8 IsBankSpritePresent(); extern void sub_8044CA0(u8); extern void sub_8030E38(struct Sprite *); extern void StartBattleIntroAnim(); extern void sub_8047858(); extern void move_anim_start_t2_for_situation(); -extern void sub_8043D84(); extern void BufferStringBattle(); extern void sub_8031F24(void); extern void sub_80326EC(); -extern void DoMoveAnim(); extern void sub_80324BC(); extern u8 sub_8031720(); extern u8 mplay_80342A4(); @@ -83,21 +80,10 @@ extern u8 StartSendOutMonAnimation(); extern void sub_80312F0(struct Sprite *); extern u8 CreateInvisibleSpriteWithCallback(); extern void BattleLoadPlayerMonSprite(); -extern u8 GetBattlerSpriteCoord(); extern u8 sub_8077F68(); -extern u8 GetBattlerSubpriority(); extern void nullsub_10(); -extern void sub_8045A5C(); -extern void sub_804777C(); -extern void sub_8043DFC(); -//extern s16 sub_8045C78(); -extern void sub_80440EC(); -extern void HandleLowHpMusicChange(); extern void nullsub_9(u16); -extern void sub_8043DB0(); -extern void move_anim_start_t4(); extern void c3_0802FDF4(u8); -extern void sub_8031F88(); extern void c2_8011A1C(void); // this file's functions @@ -327,7 +313,7 @@ void sub_811DCA0(void) sub_8045A5C(gHealthboxIDs[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], 0); sub_804777C(gActiveBattler); sub_8043DFC(gHealthboxIDs[gActiveBattler]); - (s8)ewram17810[4].unk9 &= ~1; + ewram17810[4].unk9 = (s8)ewram17810[4].unk9 & ~1; gBattleBankFunc[gActiveBattler] = sub_811DBC0; } } diff --git a/src/battle/battle_controller_opponent.c b/src/battle/battle_controller_opponent.c index 15e077e92..8717f7f82 100644 --- a/src/battle/battle_controller_opponent.c +++ b/src/battle/battle_controller_opponent.c @@ -59,15 +59,12 @@ extern bool8 gDoingBattleAnim; extern u16 gUnknown_02024DE8; extern u8 gUnknown_02024E68[]; extern MainCallback gPreBattleCallback1; -extern void (*const gOpponentBufferCommands[])(void); extern struct MusicPlayerInfo gMPlay_SE1; extern struct MusicPlayerInfo gMPlay_SE2; extern struct MusicPlayerInfo gMPlay_BGM; extern u32 gBattleExecBuffer; -extern u8 GetBattlerSpriteCoord(); extern u8 sub_8077F68(); -extern u8 GetBattlerSubpriority(); extern void sub_8033018(void); extern void BattleLoadOpponentMonSprite(); extern u8 GetBattlerPosition(u8); @@ -76,7 +73,6 @@ extern void sub_80333D4(void); extern void sub_80312F0(struct Sprite *); extern u8 StartSendOutMonAnimation(); extern void sub_8032A08(); -extern void sub_8043DB0(); extern void sub_8033160(void); extern u8 get_trainer_class_pic_index(void); extern void sub_80313A0(struct Sprite *); @@ -91,7 +87,6 @@ extern void sub_803311C(void); extern void sub_8010384(struct Sprite *); extern bool8 mplay_80342A4(u8); extern u8 sub_8031720(); -extern void DoMoveAnim(); extern void sub_80326EC(); extern void sub_8031F24(void); extern void sub_80324BC(); @@ -100,8 +95,6 @@ extern void sub_80331D0(void); extern void AI_TrySwitchOrUseItem(void); extern u8 GetBattlerAtPosition(u8); extern void sub_80330C8(void); -extern void sub_8043D84(); -extern void sub_8045A5C(); void sub_8033494(void); extern void move_anim_start_t2_for_situation(); extern void bx_blink_t7(void); @@ -113,7 +106,6 @@ extern void nullsub_45(void); extern void sub_8031B74(); extern bool8 IsDoubleBattle(void); extern void sub_8032E2C(void); -extern u8 IsBankSpritePresent(); extern u8 move_anim_start_t3(); extern void sub_80334C0(void); diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c index 5d7a8955c..5dde153e6 100644 --- a/src/battle/battle_controller_player.c +++ b/src/battle/battle_controller_player.c @@ -106,7 +106,6 @@ extern void sub_802E460(void); extern void b_link_standby_message(void); extern void sub_802D18C(void); extern void sub_802DF18(void); -extern void BufferStringBattle(); extern void sub_80326EC(); extern void sub_8031F24(void); extern void sub_80324BC(); diff --git a/src/battle/battle_controller_safari.c b/src/battle/battle_controller_safari.c index e547c4a3c..1722925f3 100644 --- a/src/battle/battle_controller_safari.c +++ b/src/battle/battle_controller_safari.c @@ -45,10 +45,8 @@ extern void LoadPlayerTrainerBankSprite(); extern u8 GetBattlerSubpriority(); extern void sub_80313A0(struct Sprite *); extern void sub_810BADC(void); -extern void sub_8045A5C(); extern void StartBattleIntroAnim(); extern void sub_804777C(); -extern void sub_8043DFC(); extern bool8 move_anim_start_t3(); #if ENGLISH diff --git a/src/battle/battle_controller_wally.c b/src/battle/battle_controller_wally.c index fa8b2a63b..9be426187 100644 --- a/src/battle/battle_controller_wally.c +++ b/src/battle/battle_controller_wally.c @@ -64,9 +64,7 @@ extern void Emitcmd35(u8, u16); extern void nullsub_14(void); extern void PrepareBagForWallyTutorial(void); -extern void sub_8045A5C(); extern void sub_804777C(); -extern void sub_8043DFC(); extern bool8 IsDoubleBattle(void); extern void c3_0802FDF4(u8); extern void PlayerHandlecmd1(void); @@ -75,11 +73,9 @@ extern u8 GetBattlerPosition(u8); extern void sub_80313A0(struct Sprite *); extern u8 GetBattlerAtPosition(u8); extern u8 sub_8031720(); -extern void DoMoveAnim(); extern void sub_80326EC(); extern void sub_8031F24(void); extern void sub_80324BC(); -extern void BufferStringBattle(); extern u8 GetBattlerSide(u8); extern void sub_80304A8(void); extern void sub_8047858(); diff --git a/src/berry_blender.c b/src/berry_blender.c index 85c992d8d..219e65994 100644 --- a/src/berry_blender.c +++ b/src/berry_blender.c @@ -214,14 +214,14 @@ u16 gUnknown_03004840[10]; struct BerryBlenderData* gBerryBlenderData; // iwram bss -IWRAM_DATA s16 gUnknown_03000510[8]; -IWRAM_DATA s16 gUnknown_03000520[6]; -IWRAM_DATA s16 gUnknown_0300052C; -IWRAM_DATA s16 gUnknown_0300052E; -IWRAM_DATA s32 gUnknown_03000530[6]; -IWRAM_DATA s32 gUnknown_03000548[5]; -IWRAM_DATA u32 gUnknown_0300055C; -IWRAM_DATA struct BlenderDebug sBlenderDebug; +static s16 gUnknown_03000510[8]; +static s16 gUnknown_03000520[6]; +static s16 gUnknown_0300052C; +static s16 gUnknown_0300052E; +static s32 gUnknown_03000530[6]; +static s32 gUnknown_03000548[5]; +static u32 gUnknown_0300055C; +static struct BlenderDebug sBlenderDebug; // this file's functions void Blender_SetBankBerryData(u8 bank, u16 itemID); diff --git a/src/daycare.c b/src/daycare.c index 1bc2d9ef1..616b1dd22 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -23,11 +23,11 @@ #include "trade.h" // RAM buffers used to assist with BuildEggMoveset() -IWRAM_DATA u16 gHatchedEggLevelUpMoves[52]; -IWRAM_DATA u16 gHatchedEggFatherMoves[4]; -IWRAM_DATA u16 gHatchedEggFinalMoves[4]; -IWRAM_DATA u16 gHatchedEggEggMoves[12]; -IWRAM_DATA u16 gHatchedEggMotherMoves[4]; +static u16 gHatchedEggLevelUpMoves[52]; +static u16 gHatchedEggFatherMoves[4]; +static u16 gHatchedEggFinalMoves[4]; +static u16 gHatchedEggEggMoves[12]; +static u16 gHatchedEggMotherMoves[4]; extern u16 gMoveToLearn; diff --git a/src/debug/sound_check_menu.c b/src/debug/sound_check_menu.c index ba2439a64..a1a09d8df 100644 --- a/src/debug/sound_check_menu.c +++ b/src/debug/sound_check_menu.c @@ -184,8 +184,8 @@ void Task_InitSoundCheckMenu(u8 taskId) // ideally this should be a multi Coords8 struct, but it wont match when its treated like a struct. static const u8 gUnknown_083D0300[] = { 1, 1, 1, 3, 1, 5, 1, 7, 1, 9, 1, 11, 1, 13, 1, 15, 1, 17 }; -extern const u8 *const gBGMNames[]; -extern const u8 *const gSENames[]; +static const u8 *const gBGMNames[]; +static const u8 *const gSENames[]; void sub_80BA384(u8 taskId) // Task_HandleDrawingSoundCheckMenuText { diff --git a/src/egg_hatch.c b/src/egg_hatch.c index 876034d2a..0c115ddfe 100644 --- a/src/egg_hatch.c +++ b/src/egg_hatch.c @@ -44,9 +44,6 @@ struct EggHatchData* gEggHatchData; extern const u32 gBattleTextboxTiles[]; extern const u32 gBattleTextboxTilemap[]; extern const u16 gBattleTextboxPalette[]; //palette -extern const struct SpriteSheet sUnknown_0820A3B0; -extern const struct SpriteSheet sUnknown_0820A3B8; -extern const struct SpritePalette sUnknown_0820A3C0; bool8 GetSetPokedexFlag(u16 nationalNum, u8 caseID); u8 sav1_map_get_name(void); diff --git a/src/field_weather_effects.c b/src/field_weather_effects.c index da3314aa1..db67be4de 100644 --- a/src/field_weather_effects.c +++ b/src/field_weather_effects.c @@ -544,7 +544,7 @@ void sub_807E6F0(struct Sprite *sprite, u16 b) } } -extern const struct SpriteSheet sRainSpriteSheet; // defined below +static const struct SpriteSheet sRainSpriteSheet; // defined below void LoadRainSpriteSheet(void) { diff --git a/src/item_menu.c b/src/item_menu.c index b69866453..19be2ad5d 100644 --- a/src/item_menu.c +++ b/src/item_menu.c @@ -36,24 +36,12 @@ #include "scanline_effect.h" #include "menu_helpers.h" #include "ewram.h" - -// External stuff -extern void FreeAndReserveObjectSpritePalettes(void); -extern void SetVerticalScrollIndicatorPriority(); -extern void sub_809D104(u16 *, u16, u16, const u8 *, u16, u16, u16, u16); -extern void PauseVerticalScrollIndicator(); -extern u8 sub_80F9284(void); -extern void sub_808B5B4(); -extern u8 sub_80F92F4(); -extern void pal_fill_black(void); -extern bool8 IsWeatherNotFadingIn(void); -extern u8 sub_80F931C(); -extern void sub_808A3F8(u8); -extern void Shop_FadeReturnToMartMenu(void); -extern void sub_80546B8(u8); -extern void sub_804E990(u8); -extern void sub_802E424(u8); -extern void ScriptUnfreezeEventObjects(void); +#include "berry_blender.h" +#include "field_fadetransition.h" +#include "shop.h" +#include "field_weather.h" +#include "pokemon_storage_system.h" +#include "event_obj_lock.h" struct UnknownStruct2 { @@ -762,7 +750,7 @@ static void sub_80A39B8(u16 *a, u8 b) { u8 var = b * 2; - sub_809D104(a, 4, 10, gBagScreenLabels_Tilemap, 0, var, 8, 2); + sub_809D104((void *)a, 4, 10, gBagScreenLabels_Tilemap, 0, var, 8, 2); } static void sub_80A39E4(u16 *a, u8 b, u8 c, s8 d) @@ -776,8 +764,8 @@ static void sub_80A39E4(u16 *a, u8 b, u8 c, s8 d) if (b == 5) r7 = 2; - sub_809D104(a, 4, 10, gBagScreenLabels_Tilemap, 8 - c, r2, c, 2); - sub_809D104(a, c + 4, 10, gBagScreenLabels_Tilemap, 0, r7, 8 - c, 2); + sub_809D104((void *)a, 4, 10, gBagScreenLabels_Tilemap, 8 - c, r2, c, 2); + sub_809D104((void *)a, c + 4, 10, gBagScreenLabels_Tilemap, 0, r7, 8 - c, 2); } else if (d == 1) { @@ -785,8 +773,8 @@ static void sub_80A39E4(u16 *a, u8 b, u8 c, s8 d) if (b == 1) r7 = 10; - sub_809D104(a, 4, 10, gBagScreenLabels_Tilemap, c, r7, 8 - c, 2); - sub_809D104(a, 12 - c, 10, gBagScreenLabels_Tilemap, 0, r2, c, 2); + sub_809D104((void *)a, 4, 10, gBagScreenLabels_Tilemap, c, r7, 8 - c, 2); + sub_809D104((void *)a, 12 - c, 10, gBagScreenLabels_Tilemap, 0, r2, c, 2); } } diff --git a/src/libs/m4a.c b/src/libs/m4a.c index 7b4441ca4..267a72657 100644 --- a/src/libs/m4a.c +++ b/src/libs/m4a.c @@ -1,3 +1,4 @@ +#include #include "gba/m4a_internal.h" extern const u8 gCgb3Vol[]; diff --git a/src/main.c b/src/main.c index d7ef91df0..75845213f 100644 --- a/src/main.c +++ b/src/main.c @@ -89,7 +89,14 @@ static void WaitForVBlank(void); void AgbMain() { +#if MODERN + // Modern compilers are liberal with the stack on entry to this function, + // so RegisterRamReset may crash if it resets IWRAM. + RegisterRamReset(RESET_ALL & ~RESET_IWRAM); + DmaFill32(3, 0, (void *)0x03000000, 0x7E00); +#else RegisterRamReset(RESET_ALL); +#endif //MODERN REG_WAITCNT = WAITCNT_PREFETCH_ENABLE | WAITCNT_WS0_S_1 | WAITCNT_WS0_N_3; InitKeys(); InitIntrHandlers(); diff --git a/src/main_menu.c b/src/main_menu.c index 93d9be77a..11d6381c6 100644 --- a/src/main_menu.c +++ b/src/main_menu.c @@ -40,13 +40,6 @@ extern u8 gBirchSpeech_AhOkayYouArePlayer[]; extern u8 gBirchSpeech_AreYouReady[]; extern struct SpriteTemplate gUnknown_02024E8C; -extern const struct MenuAction gUnknown_081E79B0[]; -extern const struct MenuAction gMalePresetNames[]; -extern const struct MenuAction gFemalePresetNames[]; - -extern const u8 gUnknown_081E7834[]; - -extern const union AffineAnimCmd *const gSpriteAffineAnimTable_81E79AC[]; //Menu layouts enum diff --git a/src/pokemon_size_record.c b/src/pokemon_size_record.c index 6a7ee69b3..42de71e14 100644 --- a/src/pokemon_size_record.c +++ b/src/pokemon_size_record.c @@ -96,7 +96,7 @@ static void FormatMonSizeRecord(u8 *string, u32 size) #ifdef UNITS_IMPERIAL //Convert size from centimeters to inches - size = (double)(size * 10) / (CM_PER_INCH * 10); + size = DOUBLE_U32(size * 10) / (CM_PER_INCH * 10); #endif string = ConvertIntToDecimalStringN(string, size / 10, 0, 8); diff --git a/src/pokenav_before.c b/src/pokenav_before.c index 3150629b7..f017cf834 100644 --- a/src/pokenav_before.c +++ b/src/pokenav_before.c @@ -98,7 +98,7 @@ struct PokenavRibbonIconGfx { u8 paletteNum; }; -IWRAM_DATA void (*gUnknown_03000744)(void); +static void (*gUnknown_03000744)(void); struct UnkPokenavStruct *const gPokenavStructPtr = (struct UnkPokenavStruct *)gSharedMem; diff --git a/src/reset_rtc_screen.c b/src/reset_rtc_screen.c index 7bccddde5..7c0a47b13 100644 --- a/src/reset_rtc_screen.c +++ b/src/reset_rtc_screen.c @@ -118,7 +118,7 @@ const union AnimCmd gSpriteAnim_83764C4[] = const union AnimCmd gSpriteAnim_83764CC[] = { - ANIMCMD_FRAME(0, 158, .vFlip = TRUE), + ANIMCMD_FRAME(0, 30, .vFlip = TRUE), ANIMCMD_JUMP(0), }; diff --git a/src/roulette.c b/src/roulette.c index 288de36fd..bde1b2842 100644 --- a/src/roulette.c +++ b/src/roulette.c @@ -242,7 +242,7 @@ void sub_8119D80(struct Sprite *); extern u8 gUnknown_02019000[]; extern u16 gSpecialVar_0x8004; extern struct StructgUnknown_083F8DF4 gUnknown_083F8DF4[]; -extern u8 gUnknown_083F8EC4; +extern const u16 gUnknown_083F8EC4[3]; extern u8 gUnknown_083F8DF0[]; extern u8 gUnknown_083F8E34[]; extern const u8 gUnknown_08E8096C[]; @@ -371,7 +371,7 @@ void sub_8115238(void) struct StructgUnknown_083F8DF4 *s0; u16 arr[0x3]; // the third is never used ? - memcpy(arr, &gUnknown_083F8EC4, 0x6); + memcpy(arr, gUnknown_083F8EC4, sizeof(gUnknown_083F8EC4)); // u16 arr[] = {RGB(24, 4, 10), RGB(10, 19, 6), RGB(24, 4, 10)}; memset(eRoulette, 0x0, 0x17C); eRoulette->var04_0 = (gSpecialVar_0x8004 & 0x1); @@ -2526,7 +2526,7 @@ void sub_8118F8C(struct Sprite *sprite) struct StructgUnknown_083F8DF4 *p; eRoulette->var90 = 0.0f; p = &gUnknown_083F8DF4[0]; - eRoulette->var8C -= ((float)p[eRoulette->var04_0].var03) + eRoulette->var8C -= (FLOAT_U8(p[eRoulette->var04_0].var03)) / ((float)(s16)(p[eRoulette->var04_0].var04 + 0x1)); sprite->data[0x1] = 0x4; #if DEBUG @@ -2554,32 +2554,32 @@ void sub_8118F8C(struct Sprite *sprite) void sub_8119088(struct Sprite *sprite) { sub_8118724(sprite); - if (!(eRoulette->var94 > 40.f)) - { - eRoulette->var98 = - ( 4.0f / (float)(u16)eRoulette->var86); - eRoulette->var90 = - (eRoulette->var8C / (float)(u16)eRoulette->var86); - sprite->animNum = 0x2; - sprite->animBeginning = TRUE; - sprite->animEnded = FALSE; - sprite->data[0x1] = 0x3; - sprite->callback = &sub_8118F8C; - } + if (eRoulette->var94 > 40.f) + return; + + eRoulette->var98 = - ( 4.0f / FLOAT_U16((u16)eRoulette->var86)); + eRoulette->var90 = - (eRoulette->var8C / FLOAT_U16((u16)eRoulette->var86)); + sprite->animNum = 0x2; + sprite->animBeginning = TRUE; + sprite->animEnded = FALSE; + sprite->data[0x1] = 0x3; + sprite->callback = &sub_8118F8C; } void sub_8119134(struct Sprite *sprite) { sub_8118724(sprite); - if (!(eRoulette->var94 > 60.0f)) - { - m4aSongNumStartOrChange(0x5D); - eRoulette->var98 = - ( 20.0f / (float)(u16)eRoulette->var84); - eRoulette->var90 = ((1.0f - eRoulette->var8C) / (float)(u16)eRoulette->var84); - sprite->animNum = 0x1; - sprite->animBeginning = TRUE; - sprite->animEnded = FALSE; - sprite->data[0x1] = 0x2; - sprite->callback = &sub_8119088; - } + if (eRoulette->var94 > 60.0f) + return; + + m4aSongNumStartOrChange(SE_TAMAKORO_E); + eRoulette->var98 = - ( 20.0f / FLOAT_U16((u16)eRoulette->var84)); + eRoulette->var90 = ((1.0f - eRoulette->var8C) / FLOAT_U16((u16)eRoulette->var84)); + sprite->animNum = 0x1; + sprite->animBeginning = TRUE; + sprite->animEnded = FALSE; + sprite->data[0x1] = 0x2; + sprite->callback = &sub_8119088; } void sub_81191F4(struct Sprite *sprite) diff --git a/src/save.c b/src/save.c index 0df83200a..bc9546f52 100644 --- a/src/save.c +++ b/src/save.c @@ -658,7 +658,10 @@ static u16 CalculateChecksum(void *data, u16 size) u32 checksum = 0; for (i = 0; i < (size / 4); i++) - checksum += *((u32 *)data)++; + { + checksum += *((u32 *)data); + data += sizeof(u32); + } return ((checksum >> 16) + checksum); } diff --git a/src/trade.c b/src/trade.c index bd298b58e..bee58ff15 100644 --- a/src/trade.c +++ b/src/trade.c @@ -126,7 +126,7 @@ struct TradeEwramSubstruct { /*0x08fc*/ u8 filler_08fc[0x704]; }; -IWRAM_DATA u8 gUnknown_03000508[8]; +static u8 gUnknown_03000508[8]; struct UnkStructF { u8 filler_0000[9]; -- cgit v1.2.3 From 8cf019bb3ac6373ad9b834639f2af47afcc1316f Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 3 Jul 2019 09:43:11 -0400 Subject: Fix crash on battle start (thanks MCBoy/Pidgey) --- src/battle/battle_interface.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/battle/battle_interface.c b/src/battle/battle_interface.c index dedde2cb3..9cc1c3c58 100644 --- a/src/battle/battle_interface.c +++ b/src/battle/battle_interface.c @@ -3175,7 +3175,7 @@ s32 sub_8045C78(u8 a, u8 unused1, u8 c, u8 unused2) static void sub_8045D58(u8 a, u8 b) { - u8 sp8[7]; + u8 sp8[8]; u8 r0; u8 r8; u8 i; -- cgit v1.2.3 From 0f19a99599ffa77a34535925a683113464095b8e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 3 Jul 2019 10:12:16 -0400 Subject: Remove the FLOAT_Uxx and DOUBLE_Uxx macros --- src/pokemon_size_record.c | 2 +- src/roulette_gfx.c | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/pokemon_size_record.c b/src/pokemon_size_record.c index 42de71e14..6a7ee69b3 100644 --- a/src/pokemon_size_record.c +++ b/src/pokemon_size_record.c @@ -96,7 +96,7 @@ static void FormatMonSizeRecord(u8 *string, u32 size) #ifdef UNITS_IMPERIAL //Convert size from centimeters to inches - size = DOUBLE_U32(size * 10) / (CM_PER_INCH * 10); + size = (double)(size * 10) / (CM_PER_INCH * 10); #endif string = ConvertIntToDecimalStringN(string, size / 10, 0, 8); diff --git a/src/roulette_gfx.c b/src/roulette_gfx.c index c309a27d3..55662ba39 100644 --- a/src/roulette_gfx.c +++ b/src/roulette_gfx.c @@ -1502,7 +1502,7 @@ void sub_8118F8C(struct Sprite *sprite) const struct StructgUnknown_083F8DF4 *p; eRoulette->var90 = 0.0f; p = gUnknown_083F8DF4; - eRoulette->var8C -= (FLOAT_U8(p[eRoulette->var04_0].var03)) + eRoulette->var8C -= ((float)(p[eRoulette->var04_0].var03)) / ((float)(s16)(p[eRoulette->var04_0].var04 + 1)); sprite->data[1] = 4; #if DEBUG @@ -1532,8 +1532,8 @@ void sub_8119088(struct Sprite *sprite) sub_8118724(sprite); if (!(eRoulette->var94 > 40.f)) { - eRoulette->var98 = - ( 4.0f / FLOAT_U16((u16)eRoulette->var86)); - eRoulette->var90 = - (eRoulette->var8C / FLOAT_U16((u16)eRoulette->var86)); + eRoulette->var98 = - ( 4.0f / (float)((u16)eRoulette->var86)); + eRoulette->var90 = - (eRoulette->var8C / (float)((u16)eRoulette->var86)); sprite->animNum = 2; sprite->animBeginning = TRUE; sprite->animEnded = FALSE; @@ -1548,8 +1548,8 @@ void sub_8119134(struct Sprite *sprite) if (!(eRoulette->var94 > 60.0f)) { m4aSongNumStartOrChange(SE_TAMAKORO_E); - eRoulette->var98 = - ( 20.0f / FLOAT_U16((u16)eRoulette->var84)); - eRoulette->var90 = ((1.0f - eRoulette->var8C) / FLOAT_U16((u16)eRoulette->var84)); + eRoulette->var98 = - ( 20.0f / (float)((u16)eRoulette->var84)); + eRoulette->var90 = ((1.0f - eRoulette->var8C) / (float)((u16)eRoulette->var84)); sprite->animNum = 1; sprite->animBeginning = TRUE; sprite->animEnded = FALSE; -- cgit v1.2.3 From 8f5c30da23d5666d7c557821c2b3e8d670d5d169 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 3 Jul 2019 10:23:00 -0400 Subject: Preemptively fix evolution_scene bug --- src/evolution_scene.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src') diff --git a/src/evolution_scene.c b/src/evolution_scene.c index a855efb1b..146565533 100644 --- a/src/evolution_scene.c +++ b/src/evolution_scene.c @@ -145,7 +145,11 @@ static void Task_BeginEvolutionScene(u8 taskID) bool8 canStopEvo; u8 partyID; +#if MODERN + mon = (struct Pokemon*)((u16)gTasks[taskID].tMonPtrHI | (gTasks[taskID].tMonPtrLO << 0x10)); +#else mon = (struct Pokemon*)(gTasks[taskID].tMonPtrHI | (gTasks[taskID].tMonPtrLO << 0x10)); +#endif speciesToEvolve = gTasks[taskID].tPostEvoSpecies; canStopEvo = gTasks[taskID].tCanStop; partyID = gTasks[taskID].tPartyID; -- cgit v1.2.3 From 23ae00eb585a026d8ac17caeadfc936db76c4e4e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 3 Jul 2019 11:16:51 -0400 Subject: Document TOOLCHAIN variable in INSTALL.md --- src/evolution_scene.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/evolution_scene.c b/src/evolution_scene.c index 146565533..d8f729610 100644 --- a/src/evolution_scene.c +++ b/src/evolution_scene.c @@ -113,8 +113,8 @@ static void CB2_BeginEvolutionScene(void) } #define tState data[0] -#define tMonPtrHI data[1] -#define tMonPtrLO data[2] +#define tMonPtrLo data[1] +#define tMonPtrHi data[2] #define tPreEvoSpecies data[3] #define tPostEvoSpecies data[4] #define tCanStop data[5] // in first fast data[5] only checks that @@ -146,9 +146,9 @@ static void Task_BeginEvolutionScene(u8 taskID) u8 partyID; #if MODERN - mon = (struct Pokemon*)((u16)gTasks[taskID].tMonPtrHI | (gTasks[taskID].tMonPtrLO << 0x10)); + mon = (struct Pokemon*)((u16)gTasks[taskID].tMonPtrLo | (gTasks[taskID].tMonPtrHi << 0x10)); #else - mon = (struct Pokemon*)(gTasks[taskID].tMonPtrHI | (gTasks[taskID].tMonPtrLO << 0x10)); + mon = (struct Pokemon*)(gTasks[taskID].tMonPtrLo | (gTasks[taskID].tMonPtrHi << 0x10)); #endif speciesToEvolve = gTasks[taskID].tPostEvoSpecies; canStopEvo = gTasks[taskID].tCanStop; @@ -165,8 +165,8 @@ void BeginEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStop { u8 taskID = CreateTask(Task_BeginEvolutionScene, 0); gTasks[taskID].tState = 0; - gTasks[taskID].tMonPtrHI = (u32)(mon); - gTasks[taskID].tMonPtrLO = (u32)(mon) >> 0x10; + gTasks[taskID].tMonPtrLo = (u32)(mon); + gTasks[taskID].tMonPtrHi = (u32)(mon) >> 0x10; gTasks[taskID].tPostEvoSpecies = speciesToEvolve; gTasks[taskID].tCanStop = canStopEvo; gTasks[taskID].tPartyID = partyID; @@ -262,8 +262,8 @@ void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, gTasks[ID].tState = 0; gTasks[ID].tPreEvoSpecies = currSpecies; gTasks[ID].tPostEvoSpecies = speciesToEvolve; - gTasks[ID].tMonPtrHI = (u32)(mon); - gTasks[ID].tMonPtrLO = (u32)(mon) >> 0x10; + gTasks[ID].tMonPtrLo = (u32)(mon); + gTasks[ID].tMonPtrHi = (u32)(mon) >> 0x10; gTasks[ID].tCanStop = canStopEvo; gTasks[ID].tLearnsFirstMove = TRUE; gTasks[ID].tEvoWasStopped = FALSE; @@ -463,8 +463,8 @@ void TradeEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8 preEvoSpri gTasks[ID].tState = 0; gTasks[ID].tPreEvoSpecies = currSpecies; gTasks[ID].tPostEvoSpecies = speciesToEvolve; - gTasks[ID].tMonPtrHI = (u32)(mon); - gTasks[ID].tMonPtrLO = (u32)(mon) >> 0x10; + gTasks[ID].tMonPtrLo = (u32)(mon); + gTasks[ID].tMonPtrHi = (u32)(mon) >> 0x10; gTasks[ID].tLearnsFirstMove = TRUE; gTasks[ID].tEvoWasStopped = FALSE; gTasks[ID].tPartyID = partyID; @@ -529,7 +529,7 @@ static void CreateShedinja(u16 preEvoSpecies, struct Pokemon* mon) static void Task_EvolutionScene(u8 taskID) { u32 var; - struct Pokemon* mon = (struct Pokemon*)(gTasks[taskID].tMonPtrHI | (gTasks[taskID].tMonPtrLO << 0x10)); + struct Pokemon* mon = (struct Pokemon*)(gTasks[taskID].tMonPtrLo | (gTasks[taskID].tMonPtrHi << 0x10)); // check if B Button was held, so the evolution gets stopped if (gMain.heldKeys == B_BUTTON && gTasks[taskID].tState == 8 && gTasks[taskID].tBits & TASK_BIT_CAN_STOP) @@ -885,7 +885,7 @@ static void Task_EvolutionScene(u8 taskID) static void Task_TradeEvolutionScene(u8 taskID) { u32 var; - struct Pokemon* mon = (struct Pokemon*)(gTasks[taskID].tMonPtrHI | (gTasks[taskID].tMonPtrLO << 0x10)); + struct Pokemon* mon = (struct Pokemon*)(gTasks[taskID].tMonPtrLo | (gTasks[taskID].tMonPtrHi << 0x10)); switch (gTasks[taskID].tState) { -- cgit v1.2.3 From 049085c761424a69011c8fd2ccf6202ec671e37d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 3 Jul 2019 11:55:32 -0400 Subject: Implement debug info option --- src/save.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/save.c b/src/save.c index bc9546f52..3eeea88de 100644 --- a/src/save.c +++ b/src/save.c @@ -932,4 +932,5 @@ u8 unref_sub_8126080(u8 sector, u8 *data) } asm(".section .rodata\n" - "\t.align 2"); + "\t.align 2\n" + "\t.text"); -- cgit v1.2.3 From 509c3aeb568821fbde76ffe6c0ebb327fcd043c0 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 7 Jul 2019 21:07:40 -0400 Subject: Stack-free IWRAM clear --- src/main.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/main.c b/src/main.c index 75845213f..5cb8039c7 100644 --- a/src/main.c +++ b/src/main.c @@ -93,7 +93,20 @@ void AgbMain() // Modern compilers are liberal with the stack on entry to this function, // so RegisterRamReset may crash if it resets IWRAM. RegisterRamReset(RESET_ALL & ~RESET_IWRAM); - DmaFill32(3, 0, (void *)0x03000000, 0x7E00); + asm("mov\tr1, #0xC0\n" + "\tlsl\tr1, r1, #0x12\n" + "\tmov r2, #0xFC\n" + "\tlsl r2, r2, #0x7\n" + "\tadd\tr2, r1, r2\n" + "\tmov\tr0, #0\n" + "\tmov\tr3, r0\n" + "\tmov\tr4, r0\n" + "\tmov\tr5, r0\n" + ".LCU0:\n" + "\tstmia r1!, {r0, r3, r4, r5}\n" + "\tcmp\tr1, r2\n" + "\tbcc\t.LCU0\n" + ); #else RegisterRamReset(RESET_ALL); #endif //MODERN -- cgit v1.2.3 From d23c1af73e98f3bd91b4551bf624638a33bbe236 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 2 Oct 2019 14:18:17 -0400 Subject: Update INSTALL.md --- src/field_fadetransition.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/field_fadetransition.c b/src/field_fadetransition.c index 670d8c54b..b4edd5588 100644 --- a/src/field_fadetransition.c +++ b/src/field_fadetransition.c @@ -511,16 +511,18 @@ void sub_80810DC(void) #if DEBUG -NAKED void debug_sub_80888D8() { - asm("\ + debug_sub_8052E04(); + sub_8080E88(); + ScriptContext2_Enable(); +/* asm("\ PUSH {LR}\n\ BL debug_sub_8052E04\n\ BL sub_8080E88\n\ BL ScriptContext2_Enable\n\ POP {R0}\n\ - BX R0"); + BX R0");*/ } #endif -- cgit v1.2.3 From cafbffd5b82836d779ec446e2362a9885fd18c4a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 17 Dec 2019 11:53:57 -0500 Subject: Fix name error --- src/field_fadetransition.c | 1 + 1 file changed, 1 insertion(+) (limited to 'src') diff --git a/src/field_fadetransition.c b/src/field_fadetransition.c index b4edd5588..8539becd7 100644 --- a/src/field_fadetransition.c +++ b/src/field_fadetransition.c @@ -19,6 +19,7 @@ #include "sound.h" #include "start_menu.h" #include "task.h" +#include "new_game.h" #include "constants/event_object_movement_constants.h" #include "constants/songs.h" -- cgit v1.2.3