Merge remote-tracking branch 'pret/master' into pret-merge
Conflicts: asm/macros/event.inc data/maps/BattleFrontier_BattlePyramidFloor/scripts.inc data/maps/MossdeepCity_SpaceCenter_2F/scripts.inc data/scripts/trainer_hill.inc include/graphics.h
This commit is contained in:
commit
726f18f360
11
Makefile
11
Makefile
@ -377,6 +377,9 @@ $(C_BUILDDIR)/pokedex_plus_hgss.o: CFLAGS := -mthumb -mthumb-interwork -O2 -mabi
|
||||
# Annoyingly we can't turn this on just for src/data/trainers.h
|
||||
$(C_BUILDDIR)/data.o: CFLAGS += -fno-show-column -fno-diagnostics-show-caret
|
||||
|
||||
# Needed for parity with pret
|
||||
$(C_BUILDDIR)/graphics.o: override CFLAGS += -Wno-missing-braces
|
||||
|
||||
$(TEST_BUILDDIR)/%.o: CFLAGS := -mthumb -mthumb-interwork -O2 -mabi=apcs-gnu -mtune=arm7tdmi -march=armv4t -Wno-pointer-to-int-cast -Werror -Wall -Wno-strict-aliasing -Wno-attribute-alias -Woverride-init
|
||||
|
||||
# Dependency rules (for the *.c & *.s sources to .o files)
|
||||
@ -390,10 +393,10 @@ ifneq ($(KEEP_TEMPS),1)
|
||||
@echo "$(CC1) <flags> -o $@ $<"
|
||||
@$(CPP) $(CPPFLAGS) $< | $(PREPROC) -i $< charmap.txt | $(CC1) $(CFLAGS) -o - - | cat - <(echo -e ".text\n\t.align\t2, 0") | $(AS) $(ASFLAGS) -o $@ -
|
||||
else
|
||||
@$(CPP) $(CPPFLAGS) $< -o $*.i
|
||||
@$(PREPROC) $*.i charmap.txt | $(CC1) $(CFLAGS) -o $*.s
|
||||
@echo -e ".text\n\t.align\t2, 0\n" >> $*.s
|
||||
$(AS) $(ASFLAGS) -o $@ $*.s
|
||||
@$(CPP) $(CPPFLAGS) $< -o $(C_BUILDDIR)/$*.i
|
||||
@$(PREPROC) $(C_BUILDDIR)/$*.i charmap.txt | $(CC1) $(CFLAGS) -o $(C_BUILDDIR)/$*.s
|
||||
@echo -e ".text\n\t.align\t2, 0\n" >> $(C_BUILDDIR)/$*.s
|
||||
$(AS) $(ASFLAGS) -o $@ $(C_BUILDDIR)/$*.s
|
||||
endif
|
||||
|
||||
$(C_BUILDDIR)/%.d: $(C_SUBDIR)/%.c
|
||||
|
||||
@ -736,11 +736,11 @@
|
||||
@ When used with an event script, you can also pass in an optional flag to disable music
|
||||
.macro trainerbattle_single trainer:req, intro_text:req, lose_text:req, event_script=FALSE, music=TRUE
|
||||
.if \event_script == FALSE
|
||||
trainerbattle TRAINER_BATTLE_SINGLE, OBJ_ID_NONE, \trainer, \intro_text, \lose_text, NULL, OBJ_ID_NONE, TRAINER_NONE, NULL, NULL, NULL, NULL, NULL, FALSE, TRUE, FALSE, FALSE
|
||||
trainerbattle TRAINER_BATTLE_SINGLE, LOCALID_NONE, \trainer, \intro_text, \lose_text, NULL, LOCALID_NONE, TRAINER_NONE, NULL, NULL, NULL, NULL, NULL, FALSE, TRUE, FALSE, FALSE
|
||||
.elseif \music == TRUE
|
||||
trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, OBJ_ID_NONE, \trainer, \intro_text, \lose_text, \event_script, OBJ_ID_NONE, TRAINER_NONE, NULL, NULL, NULL, NULL, NULL, FALSE, TRUE, FALSE, FALSE
|
||||
trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, LOCALID_NONE, \trainer, \intro_text, \lose_text, \event_script, LOCALID_NONE, TRAINER_NONE, NULL, NULL, NULL, NULL, NULL, FALSE, TRUE, FALSE, FALSE
|
||||
.else
|
||||
trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT_NO_MUSIC, OBJ_ID_NONE, \trainer, \intro_text, \lose_text, \event_script, OBJ_ID_NONE, TRAINER_NONE, NULL, NULL, NULL, NULL, NULL, FALSE, TRUE, FALSE, FALSE
|
||||
trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT_NO_MUSIC, LOCALID_NONE, \trainer, \intro_text, \lose_text, \event_script, LOCALID_NONE, TRAINER_NONE, NULL, NULL, NULL, NULL, NULL, FALSE, TRUE, FALSE, FALSE
|
||||
.endif
|
||||
.endm
|
||||
|
||||
@ -748,27 +748,27 @@
|
||||
@ and an optional event script. When used with an event script you can pass in an optional flag to disable music
|
||||
.macro trainerbattle_double trainer:req, intro_text:req, lose_text:req, not_enough_pkmn_text:req, event_script=FALSE, music=TRUE
|
||||
.if \event_script == FALSE
|
||||
trainerbattle TRAINER_BATTLE_DOUBLE, OBJ_ID_NONE, \trainer, \intro_text, \lose_text, NULL, OBJ_ID_NONE, TRAINER_NONE, NULL, NULL, NULL, NULL, \not_enough_pkmn_text, TRUE, TRUE, FALSE, FALSE
|
||||
trainerbattle TRAINER_BATTLE_DOUBLE, LOCALID_NONE, \trainer, \intro_text, \lose_text, NULL, LOCALID_NONE, TRAINER_NONE, NULL, NULL, NULL, NULL, \not_enough_pkmn_text, TRUE, TRUE, FALSE, FALSE
|
||||
.elseif \music == TRUE
|
||||
trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT_DOUBLE, OBJ_ID_NONE, \trainer, \intro_text, \lose_text, \event_script, OBJ_ID_NONE, TRAINER_NONE, NULL, NULL, NULL, NULL, \not_enough_pkmn_text, TRUE, TRUE, FALSE, FALSE
|
||||
trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT_DOUBLE, LOCALID_NONE, \trainer, \intro_text, \lose_text, \event_script, LOCALID_NONE, TRAINER_NONE, NULL, NULL, NULL, NULL, \not_enough_pkmn_text, TRUE, TRUE, FALSE, FALSE
|
||||
.else
|
||||
trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT_DOUBLE_NO_MUSIC, OBJ_ID_NONE, \trainer, \intro_text, \lose_text, \event_script, OBJ_ID_NONE, TRAINER_NONE, NULL, NULL, NULL, NULL, \not_enough_pkmn_text, TRUE, FALSE, FALSE, FALSE
|
||||
trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT_DOUBLE_NO_MUSIC, LOCALID_NONE, \trainer, \intro_text, \lose_text, \event_script, LOCALID_NONE, TRAINER_NONE, NULL, NULL, NULL, NULL, \not_enough_pkmn_text, TRUE, FALSE, FALSE, FALSE
|
||||
.endif
|
||||
.endm
|
||||
|
||||
@ Starts a rematch battle. Takes a trainer, intro text and loss text
|
||||
.macro trainerbattle_rematch trainer:req, intro_text:req, lose_text:req
|
||||
trainerbattle TRAINER_BATTLE_REMATCH, OBJ_ID_NONE, \trainer, \intro_text, \lose_text, NULL, OBJ_ID_NONE, TRAINER_NONE, NULL, NULL, NULL, NULL, NULL, FALSE, TRUE, FALSE, TRUE
|
||||
trainerbattle TRAINER_BATTLE_REMATCH, LOCALID_NONE, \trainer, \intro_text, \lose_text, NULL, LOCALID_NONE, TRAINER_NONE, NULL, NULL, NULL, NULL, NULL, FALSE, TRUE, FALSE, TRUE
|
||||
.endm
|
||||
|
||||
@ Starts a rematch double battle. Takes a trainer, intro text, loss text, and text for when you have too few pokemon
|
||||
.macro trainerbattle_rematch_double trainer:req, intro_text:req, lose_text:req, not_enough_pkmn_text:req
|
||||
trainerbattle TRAINER_BATTLE_REMATCH_DOUBLE, OBJ_ID_NONE, \trainer, \intro_text, \lose_text, NULL, OBJ_ID_NONE, TRAINER_NONE, NULL, NULL, NULL, NULL, \not_enough_pkmn_text, FALSE, TRUE, FALSE, TRUE
|
||||
trainerbattle TRAINER_BATTLE_REMATCH_DOUBLE, LOCALID_NONE, \trainer, \intro_text, \lose_text, NULL, LOCALID_NONE, TRAINER_NONE, NULL, NULL, NULL, NULL, \not_enough_pkmn_text, FALSE, TRUE, FALSE, TRUE
|
||||
.endm
|
||||
|
||||
@ Starts a trainer battle, skipping intro text. Takes a trainer and loss text
|
||||
.macro trainerbattle_no_intro trainer:req, lose_text:req
|
||||
trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, OBJ_ID_NONE, \trainer, NULL, \lose_text, NULL, OBJ_ID_NONE, TRAINER_NONE, NULL, NULL, NULL, NULL, NULL, FALSE, TRUE, FALSE, FALSE
|
||||
trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, LOCALID_NONE, \trainer, NULL, \lose_text, NULL, LOCALID_NONE, TRAINER_NONE, NULL, NULL, NULL, NULL, NULL, FALSE, TRUE, FALSE, FALSE
|
||||
.endm
|
||||
|
||||
@ Starts a double battle with the player against two trainers
|
||||
|
||||
@ -105,7 +105,7 @@ BattlePyramid_WarpToTop::
|
||||
|
||||
@ TRAINER_PHILLIP is used as a placeholder
|
||||
BattlePyramid_TrainerBattle::
|
||||
trainerbattle TRAINER_BATTLE_HILL, OBJ_ID_NONE, TRAINER_PHILLIP, BattleFacility_TrainerBattle_PlaceholderText, BattleFacility_TrainerBattle_PlaceholderText, NULL, OBJ_ID_NONE, TRAINER_NONE, NULL, NULL, NULL, NULL, NULL, FALSE, FALSE, FALSE, FALSE
|
||||
trainerbattle TRAINER_BATTLE_HILL, LOCALID_NONE, TRAINER_PHILLIP, BattleFacility_TrainerBattle_PlaceholderText, BattleFacility_TrainerBattle_PlaceholderText, NULL, LOCALID_NONE, TRAINER_NONE, NULL, NULL, NULL, NULL, NULL, FALSE, FALSE, FALSE, FALSE
|
||||
pyramid_showhint
|
||||
waitmessage
|
||||
waitbuttonpress
|
||||
|
||||
@ -60,7 +60,7 @@ TrainerHill_1F_Movement_SetInvisible::
|
||||
|
||||
@ TRAINER_PHILLIP is an actual Trainer on the SS Tidal, but is used as a placeholder here
|
||||
TrainerHill_EventScript_TrainerBattle::
|
||||
trainerbattle TRAINER_BATTLE_HILL, OBJ_ID_NONE, TRAINER_PHILLIP, BattleFacility_TrainerBattle_PlaceholderText, BattleFacility_TrainerBattle_PlaceholderText, NULL, OBJ_ID_NONE, TRAINER_NONE, NULL, NULL, NULL, NULL, NULL, FALSE, FALSE, FALSE, FALSE
|
||||
trainerbattle TRAINER_BATTLE_HILL, LOCALID_NONE, TRAINER_PHILLIP, BattleFacility_TrainerBattle_PlaceholderText, BattleFacility_TrainerBattle_PlaceholderText, NULL, LOCALID_NONE, TRAINER_NONE, NULL, NULL, NULL, NULL, NULL, FALSE, FALSE, FALSE, FALSE
|
||||
trainerhill_postbattletext
|
||||
waitmessage
|
||||
waitbuttonpress
|
||||
|
||||
@ -2,8 +2,8 @@
|
||||
#define GUARD_GRAPHICS_H
|
||||
|
||||
// overworld
|
||||
extern const u32 gSignpostWindow_Gfx[];
|
||||
extern const u32 gMessageBox_Gfx[];
|
||||
extern const u8 gSignpostWindow_Gfx[];
|
||||
extern const u8 gMessageBox_Gfx[];
|
||||
extern const u16 gMessageBox_Pal[];
|
||||
|
||||
// pokeballs
|
||||
@ -285,17 +285,17 @@ extern const u16 gBattleEnvironmentPalette_StadiumWallace[];
|
||||
extern const u32 gPokedexInterface_Gfx[];
|
||||
extern const u16 gPokedexBgHoenn_Pal[];
|
||||
extern const u32 gPokedexMenu_Gfx[];
|
||||
extern const u8 gPokedexList_Tilemap[];
|
||||
extern const u8 gPokedexListUnderlay_Tilemap[];
|
||||
extern const u8 gPokedexStartMenuMain_Tilemap[];
|
||||
extern const u8 gPokedexStartMenuSearchResults_Tilemap[];
|
||||
extern const u32 gPokedexList_Tilemap[];
|
||||
extern const u32 gPokedexListUnderlay_Tilemap[];
|
||||
extern const u32 gPokedexStartMenuMain_Tilemap[];
|
||||
extern const u32 gPokedexStartMenuSearchResults_Tilemap[];
|
||||
extern const u16 gPokedexSearchResults_Pal[];
|
||||
extern const u16 gPokedexBgNational_Pal[];
|
||||
extern const u8 gPokedexInfoScreen_Tilemap[];
|
||||
extern const u8 gPokedexCryScreen_Tilemap[];
|
||||
extern const u8 gPokedexSizeScreen_Tilemap[];
|
||||
extern const u8 gPokedexScreenSelectBarMain_Tilemap[];
|
||||
extern const u8 gPokedexScreenSelectBarSubmenu_Tilemap[];
|
||||
extern const u32 gPokedexInfoScreen_Tilemap[];
|
||||
extern const u32 gPokedexCryScreen_Tilemap[];
|
||||
extern const u32 gPokedexSizeScreen_Tilemap[];
|
||||
extern const u32 gPokedexScreenSelectBarMain_Tilemap[];
|
||||
extern const u32 gPokedexScreenSelectBarSubmenu_Tilemap[];
|
||||
extern const u16 gPokedexCaughtScreen_Pal[];
|
||||
extern const u32 gPokedexSearchMenu_Gfx[];
|
||||
extern const u32 gPokedexSearchMenuHoenn_Tilemap[];
|
||||
@ -1782,7 +1782,7 @@ extern const u32 gIntroGroudon_Gfx[];
|
||||
extern const u32 gIntroGroudon_Tilemap[];
|
||||
extern const u32 gIntroLegendBg_Gfx[];
|
||||
extern const u32 gIntroGroudonBg_Tilemap[];
|
||||
extern const u8 ALIGNED(2) gIntro3Bg_Pal[0x200];
|
||||
extern const u16 gIntro3Bg_Pal[16][16];
|
||||
extern const u32 gIntroKyogre_Gfx[];
|
||||
extern const u32 gIntroKyogre_Tilemap[];
|
||||
extern const u32 gIntroKyogreBg_Tilemap[];
|
||||
@ -2005,9 +2005,9 @@ extern const u8 gHealthboxElementsGfxTable[][32];
|
||||
extern const u16 gNamingScreenMenu_Pal[6][16];
|
||||
extern const u32 gNamingScreenMenu_Gfx[];
|
||||
extern const u32 gNamingScreenBackground_Tilemap[];
|
||||
extern const u8 gNamingScreenKeyboardUpper_Tilemap[];
|
||||
extern const u8 gNamingScreenKeyboardLower_Tilemap[];
|
||||
extern const u8 gNamingScreenKeyboardSymbols_Tilemap[];
|
||||
extern const u32 gNamingScreenKeyboardUpper_Tilemap[];
|
||||
extern const u32 gNamingScreenKeyboardLower_Tilemap[];
|
||||
extern const u32 gNamingScreenKeyboardSymbols_Tilemap[];
|
||||
extern const u32 gNamingScreenPageSwapFrame_Gfx[];
|
||||
extern const u32 gNamingScreenBackButton_Gfx[];
|
||||
extern const u32 gNamingScreenOKButton_Gfx[];
|
||||
@ -3098,7 +3098,7 @@ extern const u32 gContestAudienceTilemap[];
|
||||
extern const u16 gContestInterfaceAudiencePalette[];
|
||||
extern const u32 gContestInterfaceTilemap[];
|
||||
extern const u32 gContestCurtainTilemap[];
|
||||
extern const u32 gContestSliderHeart_Gfx[];
|
||||
extern const u8 gContestSliderHeart_Gfx[];
|
||||
extern const u32 gContestNextTurnGfx[];
|
||||
extern const u16 gContestPal[];
|
||||
extern const u32 gContestFaces_Gfx[];
|
||||
@ -3125,11 +3125,11 @@ extern const u16 gUsePokeblockGraph_Pal[];
|
||||
extern const u16 gUsePokeblockNatureWin_Pal[];
|
||||
|
||||
// Berry blender
|
||||
extern const u32 gBerryBlenderPlayerArrow_Gfx[];
|
||||
extern const u32 gBerryBlenderStart_Gfx[];
|
||||
extern const u32 gBerryBlenderScoreSymbols_Gfx[];
|
||||
extern const u32 gBerryBlenderParticles_Gfx[];
|
||||
extern const u32 gBerryBlenderCountdownNumbers_Gfx[];
|
||||
extern const u8 gBerryBlenderPlayerArrow_Gfx[];
|
||||
extern const u8 gBerryBlenderStart_Gfx[];
|
||||
extern const u8 gBerryBlenderScoreSymbols_Gfx[];
|
||||
extern const u8 gBerryBlenderParticles_Gfx[];
|
||||
extern const u8 gBerryBlenderCountdownNumbers_Gfx[];
|
||||
extern const u16 gBerryBlenderMiscPalette[];
|
||||
extern const u16 gBerryBlenderArrowPalette[];
|
||||
extern const u32 gBerryBlenderCenter_Gfx[];
|
||||
@ -3360,30 +3360,30 @@ extern const u16 gMailPalette_Tropic[];
|
||||
extern const u16 gMailPalette_Dream[];
|
||||
extern const u16 gMailPalette_Fab[];
|
||||
extern const u16 gMailPalette_Retro[];
|
||||
extern const u8 gMailTiles_Orange[];
|
||||
extern const u8 gMailTilemap_Orange[];
|
||||
extern const u8 gMailTiles_Harbor[];
|
||||
extern const u8 gMailTilemap_Harbor[];
|
||||
extern const u8 gMailTiles_Glitter[];
|
||||
extern const u8 gMailTilemap_Glitter[];
|
||||
extern const u8 gMailTiles_Mech[];
|
||||
extern const u8 gMailTilemap_Mech[];
|
||||
extern const u8 gMailTiles_Wood[];
|
||||
extern const u8 gMailTilemap_Wood[];
|
||||
extern const u8 gMailTiles_Wave[];
|
||||
extern const u8 gMailTilemap_Wave[];
|
||||
extern const u8 gMailTiles_Bead[];
|
||||
extern const u8 gMailTilemap_Bead[];
|
||||
extern const u8 gMailTiles_Shadow[];
|
||||
extern const u8 gMailTilemap_Shadow[];
|
||||
extern const u8 gMailTiles_Tropic[];
|
||||
extern const u8 gMailTilemap_Tropic[];
|
||||
extern const u8 gMailTiles_Dream[];
|
||||
extern const u8 gMailTilemap_Dream[];
|
||||
extern const u8 gMailTiles_Fab[];
|
||||
extern const u8 gMailTilemap_Fab[];
|
||||
extern const u8 gMailTiles_Retro[];
|
||||
extern const u8 gMailTilemap_Retro[];
|
||||
extern const u32 gMailTiles_Orange[];
|
||||
extern const u32 gMailTilemap_Orange[];
|
||||
extern const u32 gMailTiles_Harbor[];
|
||||
extern const u32 gMailTilemap_Harbor[];
|
||||
extern const u32 gMailTiles_Glitter[];
|
||||
extern const u32 gMailTilemap_Glitter[];
|
||||
extern const u32 gMailTiles_Mech[];
|
||||
extern const u32 gMailTilemap_Mech[];
|
||||
extern const u32 gMailTiles_Wood[];
|
||||
extern const u32 gMailTilemap_Wood[];
|
||||
extern const u32 gMailTiles_Wave[];
|
||||
extern const u32 gMailTilemap_Wave[];
|
||||
extern const u32 gMailTiles_Bead[];
|
||||
extern const u32 gMailTilemap_Bead[];
|
||||
extern const u32 gMailTiles_Shadow[];
|
||||
extern const u32 gMailTilemap_Shadow[];
|
||||
extern const u32 gMailTiles_Tropic[];
|
||||
extern const u32 gMailTilemap_Tropic[];
|
||||
extern const u32 gMailTiles_Dream[];
|
||||
extern const u32 gMailTilemap_Dream[];
|
||||
extern const u32 gMailTiles_Fab[];
|
||||
extern const u32 gMailTilemap_Fab[];
|
||||
extern const u32 gMailTiles_Retro[];
|
||||
extern const u32 gMailTilemap_Retro[];
|
||||
|
||||
extern const u8 gMonMarkingsMenu_Gfx[];
|
||||
extern const u16 gMonMarkingsMenu_Pal[];
|
||||
|
||||
@ -7,6 +7,7 @@
|
||||
extern struct Mail gTradeMail[PARTY_SIZE];
|
||||
extern u8 gSelectedTradeMonPositions[2];
|
||||
|
||||
extern const u16 gTradePlatform_Tilemap[];
|
||||
extern const struct WindowTemplate gTradeEvolutionSceneYesNoWindowTemplate;
|
||||
|
||||
s32 GetGameProgressForLinkTrade(void);
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
const u16 gIntroGameFreakTextFade_Pal[] = INCBIN_U16("graphics/intro/scene_1/text.gbapal"); // game freak text blue fade
|
||||
const u16 gIntroPlayer_Pal[] = INCBIN_U16("graphics/intro/scene_2/player.gbapal");
|
||||
const u16 gIntro3Bg_Pal[] = INCBIN_U16("graphics/intro/scene_3/bg.gbapal");
|
||||
const u16 gIntro3Bg_Pal[16][16] = INCBIN_U16("graphics/intro/scene_3/bg.gbapal");
|
||||
const u16 gIntroVolbeat_Pal[] = INCBIN_U16("graphics/intro/scene_2/volbeat.gbapal");
|
||||
const u16 gIntroTorchic_Pal[] = INCBIN_U16("graphics/intro/scene_2/torchic.gbapal");
|
||||
const u16 gIntroManectric_Pal[] = INCBIN_U16("graphics/intro/scene_2/manectric.gbapal");
|
||||
|
||||
@ -33,6 +33,7 @@
|
||||
#include "naming_screen.h"
|
||||
#include "pokemon_storage_system.h"
|
||||
#include "field_screen_effect.h"
|
||||
#include "trade.h"
|
||||
#include "data.h"
|
||||
#include "battle.h" // to get rid of later
|
||||
#include "constants/rgb.h"
|
||||
@ -63,7 +64,6 @@ struct EggHatchData
|
||||
u8 textColor[3];
|
||||
};
|
||||
|
||||
extern const u32 gTradePlatform_Tilemap[];
|
||||
extern const u8 gText_HatchedFromEgg[];
|
||||
extern const u8 gText_NicknameHatchPrompt[];
|
||||
|
||||
|
||||
@ -805,9 +805,27 @@ static void PlayerNotOnBikeMoving(u8 direction, u16 heldKeys)
|
||||
}
|
||||
else
|
||||
{
|
||||
u8 adjustedCollision = collision - COLLISION_STOP_SURFING;
|
||||
if (adjustedCollision > 3)
|
||||
// Player collided with something. Certain collisions have special handling that precludes the normal collision effect.
|
||||
// COLLISION_STOP_SURFING and COLLISION_PUSHED_BOULDER's effects are started by CheckForObjectEventCollision.
|
||||
// COLLISION_LEDGE_JUMP's effect is handled further up in this function, so it will never reach this point.
|
||||
// COLLISION_ROTATING_GATE is unusual however, this was probably included by mistake. When the player walks into a
|
||||
// rotating gate that cannot rotate there is no additional handling, it's just a regular collision. Its exclusion here
|
||||
// means that the player avatar won't update if they encounter this kind of collision. This has two noticeable effects:
|
||||
// - Colliding with it head-on stops the player dead, rather than playing the walking animation and playing a bump sound effect
|
||||
// - Colliding with it by changing direction won't turn the player avatar, their walking animation will just speed up.
|
||||
#ifdef BUGFIX
|
||||
if (collision != COLLISION_STOP_SURFING
|
||||
&& collision != COLLISION_LEDGE_JUMP
|
||||
&& collision != COLLISION_PUSHED_BOULDER)
|
||||
#else
|
||||
if (collision != COLLISION_STOP_SURFING
|
||||
&& collision != COLLISION_LEDGE_JUMP
|
||||
&& collision != COLLISION_PUSHED_BOULDER
|
||||
&& collision != COLLISION_ROTATING_GATE)
|
||||
#endif
|
||||
{
|
||||
PlayerNotOnBikeCollide(direction);
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
#include "global.h"
|
||||
#include "graphics.h"
|
||||
|
||||
const u32 gBattleTextboxTiles[] = INCBIN_U32("graphics/battle_interface/textbox.4bpp.lz");
|
||||
const u16 gBattleTextboxPalette[] = INCBIN_U16("graphics/battle_interface/textbox.gbapal");
|
||||
@ -707,7 +708,7 @@ const u16 gBattleInterface_BallStatusBarPal[] = INCBIN_U16("graphics/battle_inte
|
||||
|
||||
const u16 gBattleInterface_BallDisplayPal[] = INCBIN_U16("graphics/battle_interface/ball_display.gbapal");
|
||||
|
||||
const u8 gHealthboxElementsGfxTable[] = INCBIN_U8("graphics/battle_interface/hpbar.4bpp",
|
||||
const u8 gHealthboxElementsGfxTable[][32] = INCBIN_U8("graphics/battle_interface/hpbar.4bpp",
|
||||
"graphics/battle_interface/expbar.4bpp",
|
||||
"graphics/battle_interface/status.4bpp",
|
||||
"graphics/battle_interface/misc.4bpp",
|
||||
@ -1332,7 +1333,7 @@ const u16 gTilesetAnims_BattleDomePals0_3[] = INCBIN_U16("graphics/battle_fronti
|
||||
|
||||
static const u16 sUnused0[] = {0x13F, 0x119, 0x113, 0x10E};
|
||||
|
||||
const u16 gBattlePyramidFloor_Pal[] = INCBIN_U16("graphics/battle_frontier/pyramid_floor.gbapal");
|
||||
const u16 gBattlePyramidFloor_Pal[][16] = INCBIN_U16("graphics/battle_frontier/pyramid_floor.gbapal");
|
||||
|
||||
const u32 gMultiBattleIntroBg_Opponent_Tilemap[] = INCBIN_U32("graphics/battle_frontier/multi_battle_intro_bg_opponent.bin.lz");
|
||||
const u32 gMultiBattleIntroBg_Player_Tilemap[] = INCBIN_U32("graphics/battle_frontier/multi_battle_intro_bg_player.bin.lz");
|
||||
@ -2087,12 +2088,12 @@ const u16 gTitleScreenPressStartPal[] = INCBIN_U16("graphics/title_screen/p
|
||||
const u32 gTitleScreenPressStartGfx[] = INCBIN_U32("graphics/title_screen/press_start.4bpp.lz");
|
||||
const u32 gTitleScreenPokemonLogoTilemap[] = INCBIN_U32("graphics/title_screen/pokemon_logo.bin.lz");
|
||||
|
||||
const u16 gFrontierPassBg_Pal[] = INCBIN_U16("graphics/frontier_pass/bg.gbapal"); // 8 x 16
|
||||
const u16 gFrontierPassBg_Pal[][16] = INCBIN_U16("graphics/frontier_pass/bg.gbapal"); // 8 x 16
|
||||
const u32 gFrontierPassBg_Gfx[] = INCBIN_U32("graphics/frontier_pass/bg.4bpp.lz");
|
||||
const u32 gFrontierPassMapAndCard_Gfx[] = INCBIN_U32("graphics/frontier_pass/map_and_card.8bpp.lz");
|
||||
const u32 gFrontierPassBg_Tilemap[] = INCBIN_U32("graphics/frontier_pass/bg.bin.lz");
|
||||
const u16 gFrontierPassCancelButton_Tilemap[] = INCBIN_U16("graphics/frontier_pass/cancel.bin");
|
||||
const u16 gFrontierPassCancelButtonHighlighted_Tilemap[] = INCBIN_U16("graphics/frontier_pass/cancel_highlighted.bin");
|
||||
const u32 gFrontierPassCancelButton_Tilemap[] = INCBIN_U32("graphics/frontier_pass/cancel.bin");
|
||||
const u32 gFrontierPassCancelButtonHighlighted_Tilemap[] = INCBIN_U32("graphics/frontier_pass/cancel_highlighted.bin");
|
||||
|
||||
// Berry Crush
|
||||
const u16 gBerryCrush_Crusher_Pal[] = INCBIN_U16("graphics/berry_crush/crusher.gbapal");
|
||||
|
||||
29
src/intro.c
29
src/intro.c
@ -1875,12 +1875,15 @@ static void Task_Scene3_StartGroudon(u8 taskId)
|
||||
#define tTrigIdx data[6] // Re-used
|
||||
#define tPalIdx data[7]
|
||||
|
||||
// Treats gIntro3Bg_Pal as u8* and iterates by 1
|
||||
#define INTRO3_RAW_PTR(palId)(((void *) &gIntro3Bg_Pal) + palId)
|
||||
|
||||
static void Task_Scene3_Groudon(u8 taskId)
|
||||
{
|
||||
s16 *data = gTasks[taskId].data;
|
||||
|
||||
tTimer++;
|
||||
if ((u16)(tState - 1) < 7 && tTimer % 2 == 0)
|
||||
if ((tState >= 1 && tState <= 7) && tTimer % 2 == 0)
|
||||
tYShake ^= 3;
|
||||
PanFadeAndZoomScreen(tScreenX, tScreenY + tYShake, tZoom, 0);
|
||||
switch (tState)
|
||||
@ -1899,7 +1902,7 @@ static void Task_Scene3_Groudon(u8 taskId)
|
||||
if (--tDelay == 0)
|
||||
{
|
||||
tDelay = 2;
|
||||
CpuCopy16(&gIntro3Bg_Pal[tPalIdx], &gPlttBufferFaded[BG_PLTT_ID(1) + 15], PLTT_SIZEOF(1));
|
||||
CpuCopy16(INTRO3_RAW_PTR(tPalIdx), &gPlttBufferFaded[BG_PLTT_ID(1) + 15], PLTT_SIZEOF(1));
|
||||
tPalIdx += 2;
|
||||
if (tPalIdx == 0x1EC)
|
||||
tState++;
|
||||
@ -1916,7 +1919,7 @@ static void Task_Scene3_Groudon(u8 taskId)
|
||||
if (--tDelay == 0)
|
||||
{
|
||||
tDelay = 2;
|
||||
CpuCopy16(&gIntro3Bg_Pal[tPalIdx], &gPlttBufferFaded[BG_PLTT_ID(1) + 15], PLTT_SIZEOF(1));
|
||||
CpuCopy16(INTRO3_RAW_PTR(tPalIdx), &gPlttBufferFaded[BG_PLTT_ID(1) + 15], PLTT_SIZEOF(1));
|
||||
tPalIdx -= 2;
|
||||
if (tPalIdx == 0x1E0)
|
||||
{
|
||||
@ -2158,7 +2161,7 @@ static void Task_Scene3_Kyogre(u8 taskId)
|
||||
if (--tDelay == 0)
|
||||
{
|
||||
tDelay = 4;
|
||||
CpuCopy16(&gIntro3Bg_Pal[tPalIdx], &gPlttBufferFaded[BG_PLTT_ID(2) + 15], PLTT_SIZEOF(1));
|
||||
CpuCopy16(INTRO3_RAW_PTR(tPalIdx), &gPlttBufferFaded[BG_PLTT_ID(2) + 15], PLTT_SIZEOF(1));
|
||||
tPalIdx -= 2;
|
||||
if (tPalIdx == 0x1E0)
|
||||
tState++;
|
||||
@ -2176,7 +2179,7 @@ static void Task_Scene3_Kyogre(u8 taskId)
|
||||
if (--tDelay == 0)
|
||||
{
|
||||
tDelay = 4;
|
||||
CpuCopy16(&gIntro3Bg_Pal[tPalIdx], &gPlttBufferFaded[BG_PLTT_ID(2) + 15], PLTT_SIZEOF(1));
|
||||
CpuCopy16(INTRO3_RAW_PTR(tPalIdx), &gPlttBufferFaded[BG_PLTT_ID(2) + 15], PLTT_SIZEOF(1));
|
||||
tPalIdx += 2;
|
||||
if (tPalIdx == 0x1EE)
|
||||
{
|
||||
@ -2507,7 +2510,7 @@ static void SpriteCB_Lightning(struct Sprite *sprite)
|
||||
sprite->sPalIdx = 0x1C2;
|
||||
sprite->sState++;
|
||||
case 1:
|
||||
CpuCopy16(&gIntro3Bg_Pal[sprite->sPalIdx], &gPlttBufferFaded[BG_PLTT_ID(5) + 13], PLTT_SIZEOF(1));
|
||||
CpuCopy16(INTRO3_RAW_PTR(sprite->sPalIdx), &gPlttBufferFaded[BG_PLTT_ID(5) + 13], PLTT_SIZEOF(1));
|
||||
sprite->sPalIdx += 2;
|
||||
if (sprite->sPalIdx != 0x1CE)
|
||||
break;
|
||||
@ -2518,7 +2521,7 @@ static void SpriteCB_Lightning(struct Sprite *sprite)
|
||||
if (--sprite->sDelay == 0)
|
||||
{
|
||||
sprite->sDelay = 4;
|
||||
CpuCopy16(&gIntro3Bg_Pal[sprite->sPalIdx], &gPlttBufferFaded[BG_PLTT_ID(5) + 13], PLTT_SIZEOF(1));
|
||||
CpuCopy16(INTRO3_RAW_PTR(sprite->sPalIdx), &gPlttBufferFaded[BG_PLTT_ID(5) + 13], PLTT_SIZEOF(1));
|
||||
sprite->sPalIdx -= 2;
|
||||
if (sprite->sPalIdx == 0x1C0)
|
||||
DestroySprite(sprite);
|
||||
@ -2621,7 +2624,7 @@ static void Task_RayquazaAttack(u8 taskId)
|
||||
case 0:
|
||||
if ((data[2] & 1) != 0)
|
||||
{
|
||||
CpuCopy16(&gIntro3Bg_Pal[0x1A2 + data[1] * 2], &gPlttBufferFaded[BG_PLTT_ID(5) + 14], PLTT_SIZEOF(1));
|
||||
CpuCopy16(INTRO3_RAW_PTR(0x1A2 + data[1] * 2), &gPlttBufferFaded[BG_PLTT_ID(5) + 14], PLTT_SIZEOF(1));
|
||||
data[1]++;
|
||||
}
|
||||
if (data[1] == 6)
|
||||
@ -2636,7 +2639,7 @@ static void Task_RayquazaAttack(u8 taskId)
|
||||
{
|
||||
if ((data[2] & 1) != 0)
|
||||
{
|
||||
CpuCopy16(&gIntro3Bg_Pal[0x1A2 + data[1] * 2], &gPlttBufferFaded[BG_PLTT_ID(5) + 8], PLTT_SIZEOF(1));
|
||||
CpuCopy16(INTRO3_RAW_PTR(0x1A2 + data[1] * 2), &gPlttBufferFaded[BG_PLTT_ID(5) + 8], PLTT_SIZEOF(1));
|
||||
data[1]++;
|
||||
}
|
||||
if (data[1] == 6)
|
||||
@ -2655,7 +2658,7 @@ static void Task_RayquazaAttack(u8 taskId)
|
||||
{
|
||||
if ((data[2] & 1) != 0)
|
||||
{
|
||||
CpuCopy16(&gIntro3Bg_Pal[0x182 + data[1] * 2], &gPlttBufferFaded[BG_PLTT_ID(5) + 12], PLTT_SIZEOF(1));
|
||||
CpuCopy16(INTRO3_RAW_PTR(0x182 + data[1] * 2), &gPlttBufferFaded[BG_PLTT_ID(5) + 12], PLTT_SIZEOF(1));
|
||||
data[1]++;
|
||||
}
|
||||
if (data[1] == 6)
|
||||
@ -2679,9 +2682,9 @@ static void Task_RayquazaAttack(u8 taskId)
|
||||
if (--data[3] != 0)
|
||||
{
|
||||
BlendPalette(BG_PLTT_ID(5), 16, data[3], RGB(9, 10, 10));
|
||||
CpuCopy16(&gIntro3Bg_Pal[428], &gPlttBufferFaded[BG_PLTT_ID(5) + 14], PLTT_SIZEOF(1));
|
||||
CpuCopy16(&gIntro3Bg_Pal[428], &gPlttBufferFaded[BG_PLTT_ID(5) + 8], PLTT_SIZEOF(1));
|
||||
CpuCopy16(&gIntro3Bg_Pal[396], &gPlttBufferFaded[BG_PLTT_ID(5) + 12], PLTT_SIZEOF(1));
|
||||
CpuCopy16(INTRO3_RAW_PTR(428), &gPlttBufferFaded[BG_PLTT_ID(5) + 14], PLTT_SIZEOF(1));
|
||||
CpuCopy16(INTRO3_RAW_PTR(428), &gPlttBufferFaded[BG_PLTT_ID(5) + 8], PLTT_SIZEOF(1));
|
||||
CpuCopy16(INTRO3_RAW_PTR(396), &gPlttBufferFaded[BG_PLTT_ID(5) + 12], PLTT_SIZEOF(1));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@ -48,8 +48,8 @@ struct MailLayout
|
||||
struct MailGraphics
|
||||
{
|
||||
const u16 *palette;
|
||||
const u8 *tiles;
|
||||
const u8 *tileMap;
|
||||
const u32 *tiles;
|
||||
const u32 *tileMap;
|
||||
u32 unused;
|
||||
u16 textColor;
|
||||
u16 textShadow;
|
||||
|
||||
@ -1981,7 +1981,7 @@ static void PrintKeyboardKeys(u8 window, u8 page)
|
||||
PutWindowTilemap(window);
|
||||
}
|
||||
|
||||
static const u8 *const sNextKeyboardPageTilemaps[] =
|
||||
static const u32 *const sNextKeyboardPageTilemaps[] =
|
||||
{
|
||||
[KBPAGE_SYMBOLS] = gNamingScreenKeyboardUpper_Tilemap,
|
||||
[KBPAGE_LETTERS_UPPER] = gNamingScreenKeyboardLower_Tilemap, // lower
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user