diff options
author | PikalaxALT <PikalaxALT@gmail.com> | 2020-04-04 12:58:08 -0400 |
---|---|---|
committer | PikalaxALT <PikalaxALT@gmail.com> | 2020-04-04 12:58:08 -0400 |
commit | cc3419eff7c7139f4b4a92a31bbb6255e3dba1dd (patch) | |
tree | 73a4d8c2e5c34feb46ca9ada6b1668b3d95cd3ac /src | |
parent | c47eca8a182a2a202cd65e2af93e9ef322d8674c (diff) |
Get pokefirered_modern to build
Diffstat (limited to 'src')
-rw-r--r-- | src/battle_anim.c | 2 | ||||
-rw-r--r-- | src/daycare.c | 2 | ||||
-rw-r--r-- | src/field_door.c | 2 | ||||
-rw-r--r-- | src/intro.c | 464 | ||||
-rw-r--r-- | src/link_rfu_2.c | 2 | ||||
-rw-r--r-- | src/main.c | 20 | ||||
-rw-r--r-- | src/multiboot.c | 4 | ||||
-rw-r--r-- | src/play_time.c | 2 |
8 files changed, 408 insertions, 90 deletions
diff --git a/src/battle_anim.c b/src/battle_anim.c index 1132b5725..b070766aa 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -2840,7 +2840,7 @@ s8 BattleAnimAdjustPanning2(s8 pan) return pan; } -s16 KeepPanInRange(s16 panArg, int oldPan) +s16 KeepPanInRange(s16 panArg, s32 oldPan) { s16 pan = panArg; diff --git a/src/daycare.c b/src/daycare.c index 1e50a7c09..5285abfb6 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -70,7 +70,7 @@ static void CreateRandomEggShardSprite(void); static void CreateEggShardSprite(u8 x, u8 y, s16 data1, s16 data2, s16 data3, u8 spriteAnimIndex); // IWRAM bss -static IWRAM_DATA struct EggHatchData *sEggHatchData; +static struct EggHatchData *sEggHatchData; // RAM buffers used to assist with BuildEggMoveset() EWRAM_DATA static u16 sHatchedEggLevelUpMoves[EGG_LVL_UP_MOVES_ARRAY_COUNT] = {0}; diff --git a/src/field_door.c b/src/field_door.c index e17ef0d5a..59b72f3ab 100644 --- a/src/field_door.c +++ b/src/field_door.c @@ -470,7 +470,7 @@ bool8 FieldIsDoorAnimationRunning(void) return FuncIsActiveTask(Task_AnimateDoor); } -u16 GetDoorSoundEffect(x, y) +u16 GetDoorSoundEffect(int x, int y) { if (GetDoorSoundType(sDoorGraphics, x, y) == DOOR_SOUND_NORMAL) return MUS_W_DOOR; diff --git a/src/intro.c b/src/intro.c index ec15d7473..7e1030090 100644 --- a/src/intro.c +++ b/src/intro.c @@ -47,18 +47,18 @@ static EWRAM_DATA u16 gUnknown_203AB06 = 0; static EWRAM_DATA u16 gUnknown_203AB08 = 0; static EWRAM_DATA u16 gUnknown_203AB0A = 0; static EWRAM_DATA u16 gUnknown_203AB0C = 0; -static EWRAM_DATA u16 gUnknown_203AB0E = 0; -static EWRAM_DATA u16 gUnknown_203AB10 = 0; -static EWRAM_DATA u16 gUnknown_203AB12 = 0; -static EWRAM_DATA u16 gUnknown_203AB14 = 0; -static EWRAM_DATA u16 gUnknown_203AB16 = 0; -static EWRAM_DATA u16 gUnknown_203AB18 = 0; -static EWRAM_DATA u16 gUnknown_203AB1A = 0; -static EWRAM_DATA u16 gUnknown_203AB1C = 0; -static EWRAM_DATA u16 gUnknown_203AB1E = 0; -static EWRAM_DATA u16 gUnknown_203AB20 = 0; -static EWRAM_DATA u16 gUnknown_203AB22 = 0; -static EWRAM_DATA u16 gUnknown_203AB24 = 0; +static EWRAM_DATA u16 sLargeStarXSpeed = 0; +static EWRAM_DATA u16 sLargeStarYSpeed = 0; +static EWRAM_DATA u16 sTrailingSparklesXmodMask = 0; +static EWRAM_DATA u16 sUnusedVarRelatedToGameFreakStars = 0; +static EWRAM_DATA u16 sTrailingSparklesSpawnRate = 0; +static EWRAM_DATA u16 sTrailingSparklesFlickerStartTime = 0; +static EWRAM_DATA u16 sTrailingSparklesDestroySpriteTime = 0; +static EWRAM_DATA u16 sTrailingSparklesGravityShift = 0; +static EWRAM_DATA u16 sTrailingSparklesXspeed = 0; +static EWRAM_DATA u16 sTrailingSparklesYspeed = 0; +static EWRAM_DATA u16 sTrailingSparklesXprecision = 0; +static EWRAM_DATA u16 sTrailingSparklesYprecision = 0; static void CB2_SetUpIntro(void); static void CB2_Intro(void); @@ -181,30 +181,111 @@ static const u32 sSpriteTiles_GengarSwipe[] = INCBIN_U32("graphics/intro/unk_840 static const u32 sSpriteTiles_NidorinoRecoilDust[] = INCBIN_U32("graphics/intro/unk_840BAE0.4bpp.lz"); static const struct BgTemplate sBgTemplates_GameFreakScene[] = { - { 3, 3, 31, 0, 0, 3, 0x000 }, - { 2, 3, 30, 0, 0, 2, 0x010 } + { + .bg = 3, + .charBaseIndex = 3, + .mapBaseIndex = 31, + .screenSize = 0, + .paletteMode = 0, + .priority = 3, + .baseTile = 0x000 + }, { + .bg = 2, + .charBaseIndex = 3, + .mapBaseIndex = 30, + .screenSize = 0, + .paletteMode = 0, + .priority = 2, + .baseTile = 0x010 + } }; static const struct BgTemplate sBgTemplates_FightScene1[] = { - { 0, 0, 28, 2, 0, 0, 0x000 }, - { 1, 1, 30, 2, 0, 0, 0x000 } + { + .bg = 0, + .charBaseIndex = 0, + .mapBaseIndex = 28, + .screenSize = 2, + .paletteMode = 0, + .priority = 0, + .baseTile = 0x000 + }, { + .bg = 1, + .charBaseIndex = 1, + .mapBaseIndex = 30, + .screenSize = 2, + .paletteMode = 0, + .priority = 0, + .baseTile = 0x000 + } }; static const struct BgTemplate sBgTemplates_FightScene2[] = { - { 3, 1, 30, 2, 0, 3, 0x000 }, - { 0, 0, 29, 0, 0, 0, 0x000 }, - { 2, 3, 27, 0, 0, 2, 0x000 }, - { 1, 2, 28, 0, 0, 1, 0x000 } + { + .bg = 3, + .charBaseIndex = 1, + .mapBaseIndex = 30, + .screenSize = 2, + .paletteMode = 0, + .priority = 3, + .baseTile = 0x000 + }, { + .bg = 0, + .charBaseIndex = 0, + .mapBaseIndex = 29, + .screenSize = 0, + .paletteMode = 0, + .priority = 0, + .baseTile = 0x000 + }, { + .bg = 2, + .charBaseIndex = 3, + .mapBaseIndex = 27, + .screenSize = 0, + .paletteMode = 0, + .priority = 2, + .baseTile = 0x000 + }, { + .bg = 1, + .charBaseIndex = 2, + .mapBaseIndex = 28, + .screenSize = 0, + .paletteMode = 0, + .priority = 1, + .baseTile = 0x000 + } }; static const struct BgTemplate sBgTemplates_FightScene3[] = { - { 1, 0, 29, 0, 0, 1, 0x000 }, - { 0, 1, 30, 2, 0, 0, 0x000 } + { + .bg = 1, + .charBaseIndex = 0, + .mapBaseIndex = 29, + .screenSize = 0, + .paletteMode = 0, + .priority = 1, + .baseTile = 0x000 + }, { + .bg = 0, + .charBaseIndex = 1, + .mapBaseIndex = 30, + .screenSize = 2, + .paletteMode = 0, + .priority = 0, + .baseTile = 0x000 + } }; static const struct WindowTemplate sWindowTemplate[] = { - { 2, 6, 4, 18, 9, 0xD, 0x000 }, - DUMMY_WIN_TEMPLATE + { + .bg = 2, + .tilemapLeft = 6, + .tilemapTop = 4, + .width = 18, + .height = 9, + .paletteNum = 0xD, + .baseBlock = 0x000 + }, DUMMY_WIN_TEMPLATE }; static const u8 sGengarBackSpritePos2UpdateMods[][2] = { @@ -241,9 +322,31 @@ static const struct Coords16 sTrailingSparkleCoords[] = { {0x0098, 0x0056} }; -static const struct OamData gOamData_840BC2C = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_1, .tileNum = 0x000, .priority = 2, .paletteNum = 0 }; +static const struct OamData gOamData_840BC2C = { + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = ST_OAM_SQUARE, + .matrixNum = 0, + .size = ST_OAM_SIZE_1, + .tileNum = 0x000, + .priority = 2, + .paletteNum = 0 +}; -static const struct OamData gOamData_840BC34 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_0, .tileNum = 0x000, .priority = 2, .paletteNum = 0 }; +static const struct OamData gOamData_840BC34 = { + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = ST_OAM_SQUARE, + .matrixNum = 0, + .size = ST_OAM_SIZE_0, + .tileNum = 0x000, + .priority = 2, + .paletteNum = 0 +}; static const union AnimCmd gAnimCmd_840BC3C[] = { ANIMCMD_FRAME(0, 4), @@ -266,11 +369,38 @@ static const union AnimCmd *const gAnimCmdTable_840BC64[] = { gAnimCmd_840BC50 }; -static const struct SpriteTemplate sSpriteTemplate_LargeStar = {0, 0, &gOamData_840BC2C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCB_LargeStar}; +static const struct SpriteTemplate sSpriteTemplate_LargeStar = { + .tileTag = 0, + .paletteTag = 0, + .oam = &gOamData_840BC2C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_LargeStar +}; -static const struct SpriteTemplate sSpriteTemplate_TrailingSparkles = {1, 1, &gOamData_840BC34, gAnimCmdTable_840BC64, NULL, gDummySpriteAffineAnimTable, SpriteCB_TrailingSparkles}; +static const struct SpriteTemplate sSpriteTemplate_TrailingSparkles = { + .tileTag = 1, + .paletteTag = 1, + .oam = &gOamData_840BC34, + .anims = gAnimCmdTable_840BC64, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_TrailingSparkles +}; -static const struct OamData gOamData_840BC9C = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_2, .tileNum = 0x000, .priority = 2, .paletteNum = 0 }; +static const struct OamData gOamData_840BC9C = { + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = ST_OAM_SQUARE, + .matrixNum = 0, + .size = ST_OAM_SIZE_2, + .tileNum = 0x000, + .priority = 2, + .paletteNum = 0 +}; static const union AnimCmd gAnimCmd_840BCA4[] = { ANIMCMD_FRAME(0, 8), @@ -284,17 +414,74 @@ static const union AnimCmd *const gAnimCmdTable_840BCB8[] = { gAnimCmd_840BCA4 }; -static const struct SpriteTemplate sSpriteTemplate_RevealGameFreakTextSparkles = {2, 1, &gOamData_840BC9C, gAnimCmdTable_840BCB8, NULL, gDummySpriteAffineAnimTable, SpriteCB_RevealGameFreakTextSparkles}; +static const struct SpriteTemplate sSpriteTemplate_RevealGameFreakTextSparkles = { + .tileTag = 2, + .paletteTag = 1, + .oam = &gOamData_840BC9C, + .anims = gAnimCmdTable_840BCB8, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_RevealGameFreakTextSparkles +}; -static const struct OamData gOamData_840BCD4 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_BLEND, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_V_RECTANGLE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 3, .paletteNum = 0 }; +static const struct OamData gOamData_840BCD4 = { + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_BLEND, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = ST_OAM_V_RECTANGLE, + .matrixNum = 0, + .size = ST_OAM_SIZE_3, + .tileNum = 0x000, + .priority = 3, + .paletteNum = 0 +}; -static const struct SpriteTemplate sSpriteTemplate_GameFreakLogoArt = {3, 3, &gOamData_840BCD4, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy}; +static const struct SpriteTemplate sSpriteTemplate_GameFreakLogoArt = { + .tileTag = 3, + .paletteTag = 3, + .oam = &gOamData_840BCD4, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy +}; -static const struct OamData gOamData_840BCF4 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_BLEND, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_H_RECTANGLE, .matrixNum = 0, .size = ST_OAM_SIZE_1, .tileNum = 0x000, .priority = 3, .paletteNum = 0 }; +static const struct OamData gOamData_840BCF4 = { + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_BLEND, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = ST_OAM_H_RECTANGLE, + .matrixNum = 0, + .size = ST_OAM_SIZE_1, + .tileNum = 0x000, + .priority = 3, + .paletteNum = 0 +}; -static const struct SpriteTemplate sSpriteTemplate_PresentsText = {4, 3, &gOamData_840BCF4, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy}; +static const struct SpriteTemplate sSpriteTemplate_PresentsText = { + .tileTag = 4, + .paletteTag = 3, + .oam = &gOamData_840BCF4, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy +}; -static const struct OamData gOamData_840BD14 = { .affineMode = ST_OAM_AFFINE_DOUBLE, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 1, .paletteNum = 0 }; +static const struct OamData gOamData_840BD14 = { + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = ST_OAM_SQUARE, + .matrixNum = 0, + .size = ST_OAM_SIZE_3, + .tileNum = 0x000, + .priority = 1, + .paletteNum = 0 +}; static const union AnimCmd gAnimCmd_840BD1C[] = { ANIMCMD_FRAME(0, 1), @@ -345,15 +532,61 @@ static const union AffineAnimCmd *const sAffineAnimTable_NidorinoAnim[] = { gAffineAnimCmd_840BD68 }; -static const struct SpriteTemplate sSpriteTemplate_NidorinoAnim = {5, 7, &gOamData_840BD14, sAnimTable_NidorinoAnim, NULL, sAffineAnimTable_NidorinoAnim, SpriteCallbackDummy}; +static const struct SpriteTemplate sSpriteTemplate_NidorinoAnim = { + .tileTag = 5, + .paletteTag = 7, + .oam = &gOamData_840BD14, + .anims = sAnimTable_NidorinoAnim, + .images = NULL, + .affineAnims = sAffineAnimTable_NidorinoAnim, + .callback = SpriteCallbackDummy +}; -static const struct OamData gOamData_840BDA0 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 1, .paletteNum = 0 }; +static const struct OamData gOamData_840BDA0 = { + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = ST_OAM_SQUARE, + .matrixNum = 0, + .size = ST_OAM_SIZE_3, + .tileNum = 0x000, + .priority = 1, + .paletteNum = 0 +}; -static const struct SpriteTemplate sSpriteTemplate_NidorinoStatic = {7, 7, &gOamData_840BDA0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy}; +static const struct SpriteTemplate sSpriteTemplate_NidorinoStatic = { + .tileTag = 7, + .paletteTag = 7, + .oam = &gOamData_840BDA0, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy +}; -static const struct SpriteTemplate sSpriteTemplate_GengarStatic = {6, 6, &gOamData_840BDA0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy}; +static const struct SpriteTemplate sSpriteTemplate_GengarStatic = { + .tileTag = 6, + .paletteTag = 6, + .oam = &gOamData_840BDA0, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy +}; -static const struct OamData gOamData_840BDD8 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_H_RECTANGLE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 0, .paletteNum = 0 }; +static const struct OamData gOamData_840BDD8 = { + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = ST_OAM_H_RECTANGLE, + .matrixNum = 0, + .size = ST_OAM_SIZE_3, + .tileNum = 0x000, + .priority = 0, + .paletteNum = 0 +}; static const union AnimCmd gAnimCmds_840BDE0[] = { ANIMCMD_FRAME(0, 0), @@ -371,9 +604,28 @@ static const union AnimCmd *const gAnimCmdTable_840BDF4[] = { gAnimCmds_840BDE8 }; -static const struct SpriteTemplate sSpriteTemplate_Grass = {8, 8, &gOamData_840BDD8, gAnimCmdTable_840BDF4, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy}; +static const struct SpriteTemplate sSpriteTemplate_Grass = { + .tileTag = 8, + .paletteTag = 8, + .oam = &gOamData_840BDD8, + .anims = gAnimCmdTable_840BDF4, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy +}; -static const struct OamData gOamData_840BE14 = { .affineMode = ST_OAM_AFFINE_DOUBLE, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 1, .paletteNum = 0 }; +static const struct OamData gOamData_840BE14 = { + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = ST_OAM_SQUARE, + .matrixNum = 0, + .size = ST_OAM_SIZE_3, + .tileNum = 0x000, + .priority = 1, + .paletteNum = 0 +}; static const union AnimCmd gAnimCmd_840BE1C[] = { ANIMCMD_FRAME(0, 0), @@ -402,9 +654,28 @@ static const union AnimCmd *const gAnimCmdTable_840BE3C[] = { gAnimCmd_840BE34 }; -static const struct SpriteTemplate sSpriteTemplate_GengarBack = {9, 6, &gOamData_840BE14, gAnimCmdTable_840BE3C, NULL, sAffineAnimTable_NidorinoAnim, SpriteCallbackDummy}; +static const struct SpriteTemplate sSpriteTemplate_GengarBack = { + .tileTag = 9, + .paletteTag = 6, + .oam = &gOamData_840BE14, + .anims = gAnimCmdTable_840BE3C, + .images = NULL, + .affineAnims = sAffineAnimTable_NidorinoAnim, + .callback = SpriteCallbackDummy +}; -static const struct OamData gOamData_840BE64 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_V_RECTANGLE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 1, .paletteNum = 0 }; +static const struct OamData gOamData_840BE64 = { + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = ST_OAM_V_RECTANGLE, + .matrixNum = 0, + .size = ST_OAM_SIZE_3, + .tileNum = 0x000, + .priority = 1, + .paletteNum = 0 +}; static const union AnimCmd gAnimCmd_840BE6C[] = { ANIMCMD_FRAME(0, 8), @@ -423,9 +694,28 @@ static const union AnimCmd *const gAnimCmdTable_840BE84[] = { gAnimCmd_840BE78 }; -static const struct SpriteTemplate sSpriteTemplate_GengarSwipe = {10, 10, &gOamData_840BE64, gAnimCmdTable_840BE84, NULL, gDummySpriteAffineAnimTable, SpriteCB_GengarSwipe}; +static const struct SpriteTemplate sSpriteTemplate_GengarSwipe = { + .tileTag = 10, + .paletteTag = 10, + .oam = &gOamData_840BE64, + .anims = gAnimCmdTable_840BE84, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_GengarSwipe +}; -static const struct OamData gOamData_840BEA4 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_1, .tileNum = 0x000, .priority = 1, .paletteNum = 0 }; +static const struct OamData gOamData_840BEA4 = { + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = ST_OAM_SQUARE, + .matrixNum = 0, + .size = ST_OAM_SIZE_1, + .tileNum = 0x000, + .priority = 1, + .paletteNum = 0 +}; static const union AnimCmd gAnimCmd_840BEAC[] = { ANIMCMD_FRAME(0, 10), @@ -439,7 +729,15 @@ static const union AnimCmd *const gAnimCmdTable_840BEC0[] = { gAnimCmd_840BEAC }; -static const struct SpriteTemplate sSpriteTemplate_NidorinoRecoilDust = {11, 11, &gOamData_840BEA4, gAnimCmdTable_840BEC0, NULL, gDummySpriteAffineAnimTable, SpriteCB_NidorinoRecoilDust}; +static const struct SpriteTemplate sSpriteTemplate_NidorinoRecoilDust = { + .tileTag = 11, + .paletteTag = 11, + .oam = &gOamData_840BEA4, + .anims = gAnimCmdTable_840BEC0, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_NidorinoRecoilDust +}; static const struct CompressedSpriteSheet sFightSceneSpriteSheets[] = { {sSpriteTiles_GengarStatic, 0x0800, 6}, @@ -1473,58 +1771,58 @@ static void GameFreakScene_LoadGfxCreateStar(void) { int i; u8 spriteId; - static EWRAM_DATA u32 gUnknown_203AB28 = 0; + static EWRAM_DATA u32 sTrailingSparklesRngSeed = 0; for (i = 0; i < NELEMS(sSpriteSheets_GameFreakScene); i++) { LoadCompressedSpriteSheet(&sSpriteSheets_GameFreakScene[i]); } LoadSpritePalettes(sSpritePalettes_GameFreakScene); - gUnknown_203AB0E = 0x60; - gUnknown_203AB10 = 0x10; - gUnknown_203AB12 = 0x07; - gUnknown_203AB14 = 0x05; - gUnknown_203AB16 = 0x08; - gUnknown_203AB18 = 0x5A; - gUnknown_203AB1A = 0x78; - gUnknown_203AB1E = 0x01; - gUnknown_203AB20 = 0x01; - gUnknown_203AB22 = 0x05; - gUnknown_203AB24 = 0x05; - if (gUnknown_203AB28 == 0) - gUnknown_203AB28 = 354128453; + sLargeStarXSpeed = 0x60; + sLargeStarYSpeed = 0x10; + sTrailingSparklesXmodMask = 0x07; + sUnusedVarRelatedToGameFreakStars = 5; + sTrailingSparklesSpawnRate = 8; + sTrailingSparklesFlickerStartTime = 90; + sTrailingSparklesDestroySpriteTime = 120; + sTrailingSparklesXspeed = 1; + sTrailingSparklesYspeed = 1; + sTrailingSparklesXprecision = 5; + sTrailingSparklesYprecision = 5; + if (sTrailingSparklesRngSeed == 0) + sTrailingSparklesRngSeed = 354128453; spriteId = CreateSprite(&sSpriteTemplate_LargeStar, 0xF8, 0x37, 0); if (spriteId != MAX_SPRITES) { gSprites[spriteId].data[0] = 0xF80; gSprites[spriteId].data[1] = 0x370; - gSprites[spriteId].data[2] = gUnknown_203AB0E; - gSprites[spriteId].data[3] = gUnknown_203AB10; - StoreWordInTwoHalfwords((u16 *)&gSprites[spriteId].data[6], gUnknown_203AB28); + gSprites[spriteId].data[2] = sLargeStarXSpeed; + gSprites[spriteId].data[3] = sLargeStarYSpeed; + StoreWordInTwoHalfwords((u16 *)&gSprites[spriteId].data[6], sTrailingSparklesRngSeed); } } static void GameFreakScene_TrailingSparklesGen(s16 x, s16 y, u16 a2) { - static EWRAM_DATA s16 gUnknown_203AB2C = 0; + static EWRAM_DATA s16 sYmod = 0; u8 spriteId; - s16 r4 = (a2 & gUnknown_203AB12) + 2; - s16 r2 = gUnknown_203AB2C; - gUnknown_203AB2C++; - if (gUnknown_203AB2C > 3) - gUnknown_203AB2C = -3; - x += r4; - y += r2; + s16 xMod = (a2 & sTrailingSparklesXmodMask) + 2; + s16 yMod = sYmod; + sYmod++; + if (sYmod > 3) + sYmod = -3; + x += xMod; + y += yMod; if (x >= 1 && x <= 0xEF) { spriteId = CreateSprite(&sSpriteTemplate_TrailingSparkles, x, y, 1); if (spriteId != MAX_SPRITES) { - gSprites[spriteId].data[0] = x << gUnknown_203AB22; - gSprites[spriteId].data[1] = y << gUnknown_203AB24; - gSprites[spriteId].data[2] = gUnknown_203AB1E * r4; - gSprites[spriteId].data[3] = gUnknown_203AB20 * r2; + gSprites[spriteId].data[0] = x << sTrailingSparklesXprecision; + gSprites[spriteId].data[1] = y << sTrailingSparklesYprecision; + gSprites[spriteId].data[2] = sTrailingSparklesXspeed * xMod; + gSprites[spriteId].data[3] = sTrailingSparklesYspeed * yMod; } } } @@ -1755,7 +2053,7 @@ static void SpriteCB_LargeStar(struct Sprite * sprite) sprite->pos1.y = sprite->data[1] >> 4; sprite->pos2.y = gSineTable[(sprite->data[4] >> 4) + 0x40] >> 5; sprite->data[5]++; - if (sprite->data[5] % gUnknown_203AB16) + if (sprite->data[5] % sTrailingSparklesSpawnRate) { LoadWordFromTwoHalfwords(&sprite->data[6], &v); v = v * 1103515245 + 24691; @@ -1776,14 +2074,14 @@ static void SpriteCB_TrailingSparkles(struct Sprite * sprite) sprite->data[4]++; sprite->data[5] += sprite->data[4]; sprite->data[7]++; - sprite->pos1.x = (u16)sprite->data[0] >> gUnknown_203AB22; - sprite->pos1.y = sprite->data[1] >> gUnknown_203AB24; - if (gUnknown_203AB1C && sprite->data[3] < 0) - sprite->pos2.y = sprite->data[5] >> gUnknown_203AB1C; - if (sprite->data[7] > gUnknown_203AB18) + sprite->pos1.x = (u16)sprite->data[0] >> sTrailingSparklesXprecision; + sprite->pos1.y = sprite->data[1] >> sTrailingSparklesYprecision; + if (sTrailingSparklesGravityShift && sprite->data[3] < 0) + sprite->pos2.y = sprite->data[5] >> sTrailingSparklesGravityShift; + if (sprite->data[7] > sTrailingSparklesFlickerStartTime) { sprite->invisible = !sprite->invisible; - if (sprite->data[7] > gUnknown_203AB1A) + if (sprite->data[7] > sTrailingSparklesDestroySpriteTime) DestroySprite(sprite); } if (sprite->pos1.y + sprite->pos2.y < 0 || sprite->pos1.y + sprite->pos2.y > 160) diff --git a/src/link_rfu_2.c b/src/link_rfu_2.c index 15ffb4813..77153f943 100644 --- a/src/link_rfu_2.c +++ b/src/link_rfu_2.c @@ -47,7 +47,7 @@ static void RfuFunc_SendNextBlock(void); static void RfuFunc_SendLastBlock(void); static void CallRfuFunc(void); static void sub_80FA738(void); -static int sub_80FA788(void); +static s32 sub_80FA788(void); static void sub_80FA834(u8 taskId); static void sub_80FA9D0(u16 a0); static void ValidateAndReceivePokemonSioInfo(void * a0); diff --git a/src/main.c b/src/main.c index 77f668e6f..367b7943d 100644 --- a/src/main.c +++ b/src/main.c @@ -90,7 +90,27 @@ void EnableVCountIntrAtLine150(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); + 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 *(vu16 *)BG_PLTT = RGB_WHITE; InitGpuRegManager(); REG_WAITCNT = WAITCNT_PREFETCH_ENABLE | WAITCNT_WS0_S_1 | WAITCNT_WS0_N_3; diff --git a/src/multiboot.c b/src/multiboot.c index cfc9821d2..b44c421dc 100644 --- a/src/multiboot.c +++ b/src/multiboot.c @@ -1,7 +1,7 @@ #include "global.h" #include "multiboot.h" -static IWRAM_DATA u16 MultiBoot_required_data[MULTIBOOT_NCHILD]; +static u16 MultiBoot_required_data[MULTIBOOT_NCHILD]; static int MultiBootSend(struct MultiBootParam *mp, u16 data); static int MultiBootHandShake(struct MultiBootParam *mp); @@ -390,7 +390,7 @@ static int MultiBootHandShake(struct MultiBootParam *mp) #undef must_data } -static void MultiBootWaitCycles(u32 cycles) +static NOINLINE void MultiBootWaitCycles(u32 cycles) { asm("mov r2, pc"); asm("lsr r2, #24"); diff --git a/src/play_time.c b/src/play_time.c index 04f4b2040..966840505 100644 --- a/src/play_time.c +++ b/src/play_time.c @@ -1,6 +1,6 @@ #include "play_time.h" -static IWRAM_DATA u8 sPlayTimeCounterState; +static u8 sPlayTimeCounterState; enum { |