Merge pull request #578 from cbt6/event
Document src/event_data.c and src/event_object_movement.c
This commit is contained in:
@@ -260,6 +260,7 @@
|
||||
#define MOVEMENT_ACTION_JUMP_SPECIAL_WITH_EFFECT_RIGHT 0xA9
|
||||
|
||||
#define MOVEMENT_ACTION_STEP_END 0xFE
|
||||
#define MOVEMENT_ACTION_NONE 0xFF
|
||||
|
||||
#define ANIM_STD_FACE_SOUTH 0
|
||||
#define ANIM_STD_FACE_NORTH 1
|
||||
|
||||
+47
-41
@@ -3,37 +3,45 @@
|
||||
|
||||
#include "constants/trainers.h"
|
||||
|
||||
#define FLAG_TEMP_1 0x001
|
||||
#define FLAG_TEMP_2 0x002
|
||||
#define FLAG_TEMP_3 0x003
|
||||
#define FLAG_TEMP_4 0x004
|
||||
#define FLAG_TEMP_5 0x005
|
||||
#define FLAG_TEMP_6 0x006
|
||||
#define FLAG_TEMP_7 0x007
|
||||
#define FLAG_TEMP_8 0x008
|
||||
#define FLAG_TEMP_9 0x009
|
||||
#define FLAG_TEMP_A 0x00A
|
||||
#define FLAG_TEMP_B 0x00B
|
||||
#define FLAG_TEMP_C 0x00C
|
||||
#define FLAG_TEMP_D 0x00D
|
||||
#define FLAG_TEMP_E 0x00E
|
||||
#define FLAG_TEMP_F 0x00F
|
||||
#define FLAG_TEMP_10 0x010
|
||||
#define FLAG_TEMP_11 0x011
|
||||
#define FLAG_TEMP_12 0x012
|
||||
#define FLAG_TEMP_13 0x013
|
||||
#define FLAG_TEMP_14 0x014
|
||||
#define FLAG_TEMP_15 0x015
|
||||
#define FLAG_TEMP_16 0x016
|
||||
#define FLAG_TEMP_17 0x017
|
||||
#define FLAG_TEMP_18 0x018
|
||||
#define FLAG_TEMP_19 0x019
|
||||
#define FLAG_TEMP_1A 0x01A
|
||||
#define FLAG_TEMP_1B 0x01B
|
||||
#define FLAG_TEMP_1C 0x01C
|
||||
#define FLAG_TEMP_1D 0x01D
|
||||
#define FLAG_TEMP_1E 0x01E
|
||||
#define FLAG_TEMP_1F 0x01F
|
||||
// Temporary Flags
|
||||
// These temporary flags are are cleared every time a map is loaded. They are used
|
||||
// for things like shortening an NPCs introduction text if the player already spoke
|
||||
// to them once.
|
||||
#define TEMP_FLAGS_START 0x0
|
||||
#define FLAG_TEMP_1 (TEMP_FLAGS_START + 0x01)
|
||||
#define FLAG_TEMP_2 (TEMP_FLAGS_START + 0x02)
|
||||
#define FLAG_TEMP_3 (TEMP_FLAGS_START + 0x03)
|
||||
#define FLAG_TEMP_4 (TEMP_FLAGS_START + 0x04)
|
||||
#define FLAG_TEMP_5 (TEMP_FLAGS_START + 0x05)
|
||||
#define FLAG_TEMP_6 (TEMP_FLAGS_START + 0x06)
|
||||
#define FLAG_TEMP_7 (TEMP_FLAGS_START + 0x07)
|
||||
#define FLAG_TEMP_8 (TEMP_FLAGS_START + 0x08)
|
||||
#define FLAG_TEMP_9 (TEMP_FLAGS_START + 0x09)
|
||||
#define FLAG_TEMP_A (TEMP_FLAGS_START + 0x0A)
|
||||
#define FLAG_TEMP_B (TEMP_FLAGS_START + 0x0B)
|
||||
#define FLAG_TEMP_C (TEMP_FLAGS_START + 0x0C)
|
||||
#define FLAG_TEMP_D (TEMP_FLAGS_START + 0x0D)
|
||||
#define FLAG_TEMP_E (TEMP_FLAGS_START + 0x0E)
|
||||
#define FLAG_TEMP_F (TEMP_FLAGS_START + 0x0F)
|
||||
#define FLAG_TEMP_10 (TEMP_FLAGS_START + 0x10)
|
||||
|
||||
// Used for obstacles (e.g. cut trees and rock smash rocks)
|
||||
#define FLAG_TEMP_11 (TEMP_FLAGS_START + 0x11)
|
||||
#define FLAG_TEMP_12 (TEMP_FLAGS_START + 0x12)
|
||||
#define FLAG_TEMP_13 (TEMP_FLAGS_START + 0x13)
|
||||
#define FLAG_TEMP_14 (TEMP_FLAGS_START + 0x14)
|
||||
#define FLAG_TEMP_15 (TEMP_FLAGS_START + 0x15)
|
||||
#define FLAG_TEMP_16 (TEMP_FLAGS_START + 0x16)
|
||||
#define FLAG_TEMP_17 (TEMP_FLAGS_START + 0x17)
|
||||
#define FLAG_TEMP_18 (TEMP_FLAGS_START + 0x18)
|
||||
#define FLAG_TEMP_19 (TEMP_FLAGS_START + 0x19)
|
||||
#define FLAG_TEMP_1A (TEMP_FLAGS_START + 0x1A)
|
||||
#define FLAG_TEMP_1B (TEMP_FLAGS_START + 0x1B)
|
||||
#define FLAG_TEMP_1C (TEMP_FLAGS_START + 0x1C)
|
||||
#define FLAG_TEMP_1D (TEMP_FLAGS_START + 0x1D)
|
||||
#define FLAG_TEMP_1E (TEMP_FLAGS_START + 0x1E)
|
||||
#define FLAG_TEMP_1F (TEMP_FLAGS_START + 0x1F)
|
||||
#define TEMP_FLAGS_END FLAG_TEMP_1F
|
||||
|
||||
#define FLAG_0x020 0x020
|
||||
#define FLAG_0x021 0x021
|
||||
@@ -1376,8 +1384,8 @@
|
||||
#define FLAG_SYS_NOT_SOMEONES_PC (SYS_FLAGS + 0x34)
|
||||
#define FLAG_0x835 (SYS_FLAGS + 0x35)
|
||||
#define FLAG_0x836 (SYS_FLAGS + 0x36)
|
||||
#define FLAG_0x837 (SYS_FLAGS + 0x37)
|
||||
#define FLAG_0x838 (SYS_FLAGS + 0x38)
|
||||
#define FLAG_SYS_RESET_RTC_ENABLE (SYS_FLAGS + 0x37)
|
||||
#define FLAG_0x838 (SYS_FLAGS + 0x38) // Set, never read
|
||||
#define FLAG_SYS_MYSTERY_GIFT_ENABLED (SYS_FLAGS + 0x39)
|
||||
#define FLAG_0x83A (SYS_FLAGS + 0x3A)
|
||||
#define FLAG_SYS_RIBBON_GET (SYS_FLAGS + 0x3B)
|
||||
@@ -1515,13 +1523,11 @@
|
||||
|
||||
#define FLAGS_COUNT (FLAG_0x8FF + 1)
|
||||
|
||||
// SPECIAL FLAGS (unknown purpose)
|
||||
#define SPECIAL_FLAGS_START 0x4000
|
||||
#define SPECIAL_FLAGS_COUNT 16
|
||||
#define FLAG_DONT_SHOW_MAP_NAME_POPUP 0x4000
|
||||
#define FLAG_DONT_TRANSITION_MUSIC 0x4001
|
||||
#define FLAG_SPECIAL_FLAG_0x4002 0x4002
|
||||
#define FLAG_SPECIAL_FLAG_0x4003 0x4003
|
||||
#define FLAG_SPECIAL_FLAG_0x4004 0x4004
|
||||
// Special Flags (Stored in EWRAM (sSpecialFlags, not in the SaveBlock)
|
||||
#define SPECIAL_FLAGS_START 0x4000
|
||||
#define FLAG_DONT_SHOW_MAP_NAME_POPUP (SPECIAL_FLAGS_START + 0x0)
|
||||
#define FLAG_DONT_TRANSITION_MUSIC (SPECIAL_FLAGS_START + 0x1)
|
||||
// FLAG_SPECIAL_FLAG_0x4002 - 0x407F also exist and are unused
|
||||
#define SPECIAL_FLAGS_END (SPECIAL_FLAGS_START + 0x7F)
|
||||
|
||||
#endif // GUARD_CONSTANTS_FLAGS_H
|
||||
|
||||
+23
-21
@@ -3,23 +3,25 @@
|
||||
|
||||
#define VARS_START 0x4000
|
||||
|
||||
// Temporary variables. Reset on map load.
|
||||
#define VAR_TEMP_0 0x4000
|
||||
#define VAR_TEMP_1 0x4001
|
||||
#define VAR_TEMP_2 0x4002
|
||||
#define VAR_TEMP_3 0x4003
|
||||
#define VAR_TEMP_4 0x4004
|
||||
#define VAR_TEMP_5 0x4005
|
||||
#define VAR_TEMP_6 0x4006
|
||||
#define VAR_TEMP_7 0x4007
|
||||
#define VAR_TEMP_8 0x4008
|
||||
#define VAR_TEMP_9 0x4009
|
||||
#define VAR_TEMP_A 0x400A
|
||||
#define VAR_TEMP_B 0x400B
|
||||
#define VAR_TEMP_C 0x400C
|
||||
#define VAR_TEMP_D 0x400D
|
||||
#define VAR_TEMP_E 0x400E
|
||||
#define VAR_TEMP_F 0x400F
|
||||
// Temporary variables. Temp vars are cleared every time a map is loaded.
|
||||
#define TEMP_VARS_START 0x4000
|
||||
#define VAR_TEMP_0 (TEMP_VARS_START + 0x0)
|
||||
#define VAR_TEMP_1 (TEMP_VARS_START + 0x1)
|
||||
#define VAR_TEMP_2 (TEMP_VARS_START + 0x2)
|
||||
#define VAR_TEMP_3 (TEMP_VARS_START + 0x3)
|
||||
#define VAR_TEMP_4 (TEMP_VARS_START + 0x4)
|
||||
#define VAR_TEMP_5 (TEMP_VARS_START + 0x5)
|
||||
#define VAR_TEMP_6 (TEMP_VARS_START + 0x6)
|
||||
#define VAR_TEMP_7 (TEMP_VARS_START + 0x7)
|
||||
#define VAR_TEMP_8 (TEMP_VARS_START + 0x8)
|
||||
#define VAR_TEMP_9 (TEMP_VARS_START + 0x9)
|
||||
#define VAR_TEMP_A (TEMP_VARS_START + 0xA)
|
||||
#define VAR_TEMP_B (TEMP_VARS_START + 0xB)
|
||||
#define VAR_TEMP_C (TEMP_VARS_START + 0xC)
|
||||
#define VAR_TEMP_D (TEMP_VARS_START + 0xD)
|
||||
#define VAR_TEMP_E (TEMP_VARS_START + 0xE)
|
||||
#define VAR_TEMP_F (TEMP_VARS_START + 0xF)
|
||||
#define TEMP_VARS_END VAR_TEMP_F
|
||||
|
||||
// Object event graphics IDs which can be changed by
|
||||
// script commands.
|
||||
@@ -86,7 +88,7 @@
|
||||
#define VAR_0x4029 0x4029
|
||||
#define VAR_0x402A 0x402A
|
||||
#define VAR_0x402B 0x402B
|
||||
#define VAR_RESET_RTC_ENABLE 0x402C
|
||||
#define VAR_0x402C 0x402C
|
||||
#define VAR_0x402D 0x402D
|
||||
#define VAR_0x402E 0x402E
|
||||
|
||||
@@ -94,7 +96,7 @@
|
||||
|
||||
#define VAR_ICE_STEP_COUNT 0x4030
|
||||
#define VAR_STARTER_MON 0x4031 // 0: Bulbasaur, 1: Squirtle, 2: Charmander
|
||||
#define VAR_0x4032 0x4032
|
||||
#define VAR_RESET_RTC_ENABLE 0x4032
|
||||
#define VAR_ENIGMA_BERRY_AVAILABLE 0x4033
|
||||
|
||||
#define VAR_0x4034 0x4034
|
||||
@@ -105,7 +107,7 @@
|
||||
#define VAR_FANCLUB_LOSE_FAN_TIMER 0x4039
|
||||
#define VAR_ELEVATOR_FLOOR 0x403A
|
||||
#define VAR_RESORT_GORGEOUS_REWARD 0x403B
|
||||
#define VAR_0x403C 0x403C
|
||||
#define VAR_0x403C 0x403C // Set to 0x0302, never read
|
||||
#define VAR_HERACROSS_SIZE_RECORD 0x403D
|
||||
#define VAR_DEOXYS_INTERACTION_NUM 0x403E
|
||||
#define VAR_0x403F 0x403F
|
||||
@@ -158,7 +160,7 @@
|
||||
#define VAR_MAP_SCENE_PEWTER_CITY 0x406C
|
||||
#define VAR_0x406D 0x406D
|
||||
#define VAR_MAP_SCENE_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE 0x406E
|
||||
#define VAR_CABLE_CLUB_STATE 0x406F
|
||||
#define VAR_CABLE_CLUB_STATE 0x406F
|
||||
#define VAR_MAP_SCENE_PALLET_TOWN_SIGN_LADY 0x4070
|
||||
#define VAR_MAP_SCENE_CINNABAR_ISLAND 0x4071
|
||||
#define VAR_0x4072 0x4072
|
||||
|
||||
@@ -52,7 +52,7 @@ void ResetSpecialVars(void);
|
||||
void ResetMysteryEventFlags(void);
|
||||
void ResetMysteryEventVars(void);
|
||||
bool32 IsNationalPokedexEnabled(void);
|
||||
void sub_806E190(void);
|
||||
void EnableNationalPokedex_RSE(void);
|
||||
void ClearTempFieldEventData(void);
|
||||
|
||||
#endif // GUARD_EVENT_DATA_H
|
||||
|
||||
@@ -1,9 +1,27 @@
|
||||
#ifndef GUARD_EVENT_OBJECT_MOVEMENT_H
|
||||
#define GUARD_EVENT_OBJECT_MOVEMENT_H
|
||||
|
||||
#include "global.h"
|
||||
|
||||
// Exported struct declarations
|
||||
// Palette slots for overworld NPCs.
|
||||
// The same standard set of palettes for overworld objects are normally always loaded at the same
|
||||
// time while walking around the overworld. The only exceptions are the palettes for the player and
|
||||
// the "special" NPC, which can be swapped out. This also means that e.g. two "special" NPCs
|
||||
// with competing palettes cannot be properly loaded at the same time.
|
||||
enum {
|
||||
PALSLOT_PLAYER,
|
||||
PALSLOT_PLAYER_REFLECTION,
|
||||
PALSLOT_NPC_1,
|
||||
PALSLOT_NPC_2,
|
||||
PALSLOT_NPC_3,
|
||||
PALSLOT_NPC_4,
|
||||
PALSLOT_NPC_1_REFLECTION,
|
||||
PALSLOT_NPC_2_REFLECTION,
|
||||
PALSLOT_NPC_3_REFLECTION,
|
||||
PALSLOT_NPC_4_REFLECTION,
|
||||
PALSLOT_NPC_SPECIAL,
|
||||
PALSLOT_NPC_SPECIAL_REFLECTION,
|
||||
OBJ_PALSLOT_COUNT
|
||||
// the remaining sprite palette slots (12-15) are used by field effects, the interface, etc.
|
||||
};
|
||||
|
||||
enum SpinnerRunnerFollowPatterns
|
||||
{
|
||||
@@ -69,15 +87,14 @@ void LoadPlayerObjectReflectionPalette(u16, u8);
|
||||
void LoadSpecialObjectReflectionPalette(u16, u8);
|
||||
void TryMoveObjectEventToMapCoords(u8, u8, u8, s16, s16);
|
||||
void PatchObjectPalette(u16, u8);
|
||||
void ReloadMapObjectsWithOffset(s16 x, s16 y);
|
||||
void SpawnObjectEventsOnReturnToField(s16 x, s16 y);
|
||||
void GetMapCoordsFromSpritePos(s16, s16, s16 *, s16 *);
|
||||
u8 GetFaceDirectionAnimNum(u8);
|
||||
void SetSpritePosToOffsetMapCoords(s16 *, s16 *, s16, s16);
|
||||
void ObjectEventClearHeldMovement(struct ObjectEvent *);
|
||||
void ObjectEventClearHeldMovementIfActive(struct ObjectEvent *);
|
||||
void SpawnObjectEventsInView(s16, s16);
|
||||
u8 CreateVirtualObject(u8, u8, s16, s16, u8, u8);
|
||||
u8 AddPseudoObjectEvent(u16, SpriteCallback, s16, s16, u8);
|
||||
u8 CreateVirtualObject(u8 graphicsId, u8 virtualObjId, s16 x, s16 y, u8 elevation, u8 direction);
|
||||
u8 CreateObjectGraphicsSprite(u16 graphicsId, SpriteCallback callback, s16 x, s16 y, u8 subpriority);
|
||||
u8 TrySpawnObjectEvent(u8 localId, u8 mapNum, u8 mapGroup);
|
||||
int SpawnSpecialObjectEventParameterized(u8, u8, u8, s16, s16, u8);
|
||||
u8 SpawnSpecialObjectEvent(struct ObjectEventTemplate *);
|
||||
@@ -109,7 +126,7 @@ void MoveCoords(u8, s16 *, s16 *);
|
||||
bool8 ObjectEventIsHeldMovementActive(struct ObjectEvent *);
|
||||
u8 ObjectEventClearHeldMovementIfFinished(struct ObjectEvent *);
|
||||
u8 GetObjectEventIdByPosition(u16 x, u16 y, u8 elevation);
|
||||
void sub_8063E28(struct ObjectEvent *, struct Sprite *);
|
||||
void UpdateQuestLogObjectEventCurrentMovement(struct ObjectEvent *, struct Sprite *);
|
||||
bool8 ObjectEventSetHeldMovement(struct ObjectEvent *, u8);
|
||||
void ShiftStillObjectEventCoords(struct ObjectEvent *);
|
||||
void OverrideMovementTypeForObjectEvent(const struct ObjectEvent *, u8);
|
||||
@@ -117,7 +134,7 @@ void SetTrainerMovementType(struct ObjectEvent *, u8);
|
||||
u8 GetFishingDirectionAnimNum(u8 direction);
|
||||
u8 GetFishingNoCatchDirectionAnimNum(u8 a0);
|
||||
void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u8 a1);
|
||||
u8 sub_805EB44(u8, u8, s16, s16);
|
||||
u8 CreateFameCheckerObject(u8 graphicsId, u8 localId, s16 x, s16 y);
|
||||
void InitObjectEventPalettes(u8 mode);
|
||||
bool8 ObjectEventIsMovementOverridden(struct ObjectEvent *objectEvent);
|
||||
u8 ObjectEventCheckHeldMovementStatus(struct ObjectEvent *objectEvent);
|
||||
@@ -138,7 +155,7 @@ bool8 UpdateWalkSlowerAnim(struct Sprite *sprite);
|
||||
void SetJumpSpriteData(struct Sprite *, u8, u8, u8);
|
||||
u8 DoJumpSpriteMovement(struct Sprite *);
|
||||
u8 DoJumpSpecialSpriteMovement(struct Sprite *);
|
||||
void TurnVirtualObject(u8, u8);
|
||||
void TurnVirtualObject(u8 virtualObjId, u8 direction);
|
||||
const u8 *GetObjectEventScriptPointerByObjectEventId(u8 objectEventId);
|
||||
u8 GetFirstInactiveObjectEventId(void);
|
||||
u8 GetCollisionFlagsAtCoords(struct ObjectEvent * objectEvent, s16 x, s16 y, u8 direction);
|
||||
@@ -148,25 +165,25 @@ void FreezeObjectEvents(void);
|
||||
bool8 FreezeObjectEvent(struct ObjectEvent *);
|
||||
void UnfreezeObjectEvent(struct ObjectEvent *);
|
||||
void FreezeObjectEventsExceptOne(u8 objEventId);
|
||||
void RfuUnionObjectSetFacingDirection(u8 objectEventId, u8 direction);
|
||||
void RfuUnionObjectToggleInvisibility(u8 objectEventId, bool32 invisible);
|
||||
bool32 RfuUnionObjectIsInvisible(u8 objectEventId);
|
||||
void RfuUnionObjectStartWarp(u8 objectEventId, u8 animNo);
|
||||
bool32 RfuUnionObjectIsWarping(u8 objectEventId);
|
||||
void SetVirtualObjectGraphics(u8 virtualObjId, u8 direction);
|
||||
void SetVirtualObjectInvisibility(u8 virtualObjId, bool32 invisible);
|
||||
bool32 IsVirtualObjectInvisible(u8 virtualObjId);
|
||||
void SetVirtualObjectSpriteAnim(u8 virtualObjId, u8 animNo);
|
||||
bool32 IsVirtualObjectAnimating(u8 virtualObjId);
|
||||
u8 GetJumpSpecialMovementAction(u32 direction);
|
||||
void EnableObjectGroundEffectsByXY(s16 x, s16 y);
|
||||
void MoveObjectEventToMapCoords(struct ObjectEvent *objectEvent, s16 x, s16 y);
|
||||
u8 CreateCopySpriteAt(struct Sprite *sprite, s16 x, s16 y, u8 subpriority);
|
||||
u16 GetObjectPaletteTag(u8 paletteIndex);
|
||||
void SetSpritePosToMapCoords(s16 x, s16 y, s16 *x2, s16 *y2);
|
||||
void UpdateObjectEventSpriteVisibility(struct Sprite *sprite, bool8 invisible);
|
||||
void UpdateObjectEventSpriteInvisibility(struct Sprite *sprite, bool8 invisible);
|
||||
u8 ElevationToPriority(u8 elevation);
|
||||
void ObjectEventUpdateElevation(struct ObjectEvent *pObject);
|
||||
void SetObjectSubpriorityByElevation(u8 elevation, struct Sprite *sprite, u8 offset);
|
||||
void MakeObjectTemplateFromObjectEventGraphicsInfo(u16 graphicsId, void (*callback)(struct Sprite *), struct SpriteTemplate *spriteTemplate, const struct SubspriteTable **subspriteTables);
|
||||
void CopyObjectGraphicsInfoToSpriteTemplate(u16 graphicsId, void (*callback)(struct Sprite *), struct SpriteTemplate *spriteTemplate, const struct SubspriteTable **subspriteTables);
|
||||
u8 AddCameraObject(u8 trackedSpriteId);
|
||||
void UpdateObjectEventsForCameraUpdate(s16 x, s16 y);
|
||||
void UpdateObjectEventSpriteSubpriorityAndVisibility(struct Sprite *);
|
||||
void SpriteCB_VirtualObject(struct Sprite *);
|
||||
void SetMovementDelay(struct Sprite *, s16);
|
||||
bool8 WaitForMovementDelay(struct Sprite *);
|
||||
void SetSpriteDataForNormalStep(struct Sprite *, u8, u8);
|
||||
|
||||
+2
-2
@@ -183,8 +183,8 @@ struct Pokedex
|
||||
{
|
||||
/*0x00*/ u8 order;
|
||||
/*0x01*/ u8 mode;
|
||||
/*0x02*/ u8 nationalMagic; // must equal 0xDA in order to have National mode
|
||||
/*0x03*/ u8 unknown2; // set to 0xB9 when national dex is first enabled
|
||||
/*0x02*/ u8 unused; // set to 0xDA, never read
|
||||
/*0x03*/ u8 nationalMagic; // set to 0xB9 when national dex is first enabled
|
||||
/*0x04*/ u32 unownPersonality; // set when you first see Unown
|
||||
/*0x08*/ u32 spindaPersonality; // set when you first see Spinda
|
||||
/*0x0C*/ u32 unknown3;
|
||||
|
||||
+44
-33
@@ -5,6 +5,14 @@
|
||||
|
||||
static bool8 IsFlagOrVarStoredInQuestLog(u16 idx, u8 a1);
|
||||
|
||||
#define NUM_SPECIAL_FLAGS (SPECIAL_FLAGS_END - SPECIAL_FLAGS_START + 1)
|
||||
#define NUM_TEMP_FLAGS (TEMP_FLAGS_END - TEMP_FLAGS_START + 1)
|
||||
#define NUM_TEMP_VARS (TEMP_VARS_END - TEMP_VARS_START + 1)
|
||||
|
||||
#define SPECIAL_FLAGS_SIZE (NUM_SPECIAL_FLAGS / 8) // 8 flags per byte
|
||||
#define TEMP_FLAGS_SIZE (NUM_TEMP_FLAGS / 8)
|
||||
#define TEMP_VARS_SIZE (NUM_TEMP_VARS * 2) // 1/2 var per byte
|
||||
|
||||
EWRAM_DATA u16 gSpecialVar_0x8000 = 0;
|
||||
EWRAM_DATA u16 gSpecialVar_0x8001 = 0;
|
||||
EWRAM_DATA u16 gSpecialVar_0x8002 = 0;
|
||||
@@ -25,7 +33,7 @@ EWRAM_DATA u16 gSpecialVar_MonBoxPos = 0;
|
||||
EWRAM_DATA u16 gSpecialVar_TextColor = 0;
|
||||
EWRAM_DATA u16 gSpecialVar_PrevTextColor = 0;
|
||||
EWRAM_DATA u16 gSpecialVar_0x8014 = 0;
|
||||
EWRAM_DATA u8 sSpecialFlags[SPECIAL_FLAGS_COUNT] = {};
|
||||
EWRAM_DATA u8 sSpecialFlags[SPECIAL_FLAGS_SIZE] = {};
|
||||
|
||||
u16 gLastQuestLogStoredFlagOrVarIdx;
|
||||
|
||||
@@ -33,15 +41,15 @@ extern u16 *const gSpecialVars[];
|
||||
|
||||
void InitEventData(void)
|
||||
{
|
||||
memset(gSaveBlock1Ptr->flags, 0, NUM_FLAG_BYTES);
|
||||
memset(gSaveBlock1Ptr->vars, 0, VARS_COUNT * 2);
|
||||
memset(sSpecialFlags, 0, SPECIAL_FLAGS_COUNT);
|
||||
memset(gSaveBlock1Ptr->flags, 0, sizeof(gSaveBlock1Ptr->flags));
|
||||
memset(gSaveBlock1Ptr->vars, 0, sizeof(gSaveBlock1Ptr->vars));
|
||||
memset(sSpecialFlags, 0, sizeof(sSpecialFlags));
|
||||
}
|
||||
|
||||
void ClearTempFieldEventData(void)
|
||||
{
|
||||
memset(gSaveBlock1Ptr->flags, 0, 4);
|
||||
memset(gSaveBlock1Ptr->vars, 0, 16 * 2);
|
||||
memset(gSaveBlock1Ptr->flags + (TEMP_FLAGS_START / 8), 0, TEMP_FLAGS_SIZE);
|
||||
memset(gSaveBlock1Ptr->vars + ((TEMP_VARS_START - VARS_START) * 2), 0, TEMP_VARS_SIZE);
|
||||
FlagClear(FLAG_SYS_WHITE_FLUTE_ACTIVE);
|
||||
FlagClear(FLAG_SYS_BLACK_FLUTE_ACTIVE);
|
||||
FlagClear(FLAG_SYS_USE_STRENGTH);
|
||||
@@ -49,37 +57,41 @@ void ClearTempFieldEventData(void)
|
||||
FlagClear(FLAG_SYS_INFORMED_OF_LOCAL_WIRELESS_PLAYER);
|
||||
}
|
||||
|
||||
void sub_806E168(void) // Unused
|
||||
// Unused
|
||||
static void DisableNationalPokedex_RSE(void)
|
||||
{
|
||||
u16 *ptr = GetVarPointer(VAR_0x403C);
|
||||
gSaveBlock2Ptr->pokedex.nationalMagic = 0;
|
||||
gSaveBlock2Ptr->pokedex.unused = 0;
|
||||
*ptr = 0;
|
||||
FlagClear(FLAG_0x838);
|
||||
}
|
||||
|
||||
void sub_806E190(void)
|
||||
// The magic numbers used here (0xDA and 0x0302) correspond to those
|
||||
// used in RSE for enabling the national Pokedex
|
||||
void EnableNationalPokedex_RSE(void)
|
||||
{
|
||||
// Note: the var, struct member, and flag are never used
|
||||
u16 *ptr = GetVarPointer(VAR_0x403C);
|
||||
gSaveBlock2Ptr->pokedex.nationalMagic = 0xDA;
|
||||
gSaveBlock2Ptr->pokedex.unused = 0xDA;
|
||||
*ptr = 0x0302;
|
||||
FlagSet(FLAG_0x838);
|
||||
}
|
||||
|
||||
bool32 sub_806E1C0(void) // Unused
|
||||
// Unused
|
||||
static bool32 IsNationalPokedexEnabled_RSE(void)
|
||||
{
|
||||
if (gSaveBlock2Ptr->pokedex.nationalMagic != 0xDA)
|
||||
return FALSE;
|
||||
if (VarGet(VAR_0x403C) != 0x0302)
|
||||
return FALSE;
|
||||
if (!FlagGet(FLAG_0x838))
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
if (gSaveBlock2Ptr->pokedex.unused == 0xDA
|
||||
&& VarGet(VAR_0x403C) == 0x0302
|
||||
&& FlagGet(FLAG_0x838))
|
||||
return TRUE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void DisableNationalPokedex(void)
|
||||
{
|
||||
u16 *nationalDexVar = GetVarPointer(VAR_NATIONAL_DEX);
|
||||
gSaveBlock2Ptr->pokedex.unknown2 = 0;
|
||||
gSaveBlock2Ptr->pokedex.nationalMagic = 0;
|
||||
*nationalDexVar = 0;
|
||||
FlagClear(FLAG_SYS_NATIONAL_DEX);
|
||||
}
|
||||
@@ -87,20 +99,19 @@ void DisableNationalPokedex(void)
|
||||
void EnableNationalPokedex(void)
|
||||
{
|
||||
u16 *nationalDexVar = GetVarPointer(VAR_NATIONAL_DEX);
|
||||
gSaveBlock2Ptr->pokedex.unknown2 = 0xB9;
|
||||
gSaveBlock2Ptr->pokedex.nationalMagic = 0xB9;
|
||||
*nationalDexVar = 0x6258;
|
||||
FlagSet(FLAG_SYS_NATIONAL_DEX);
|
||||
}
|
||||
|
||||
bool32 IsNationalPokedexEnabled(void)
|
||||
{
|
||||
if (gSaveBlock2Ptr->pokedex.unknown2 != 0xB9)
|
||||
return FALSE;
|
||||
if (VarGet(VAR_NATIONAL_DEX) != 0x6258)
|
||||
return FALSE;
|
||||
if (!FlagGet(FLAG_SYS_NATIONAL_DEX))
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
if (gSaveBlock2Ptr->pokedex.nationalMagic == 0xB9
|
||||
&& VarGet(VAR_NATIONAL_DEX) == 0x6258
|
||||
&& FlagGet(FLAG_SYS_NATIONAL_DEX))
|
||||
return TRUE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void DisableMysteryGift(void)
|
||||
@@ -153,21 +164,21 @@ void ResetMysteryEventVars(void)
|
||||
|
||||
void DisableResetRTC(void)
|
||||
{
|
||||
VarSet(VAR_0x4032, 0);
|
||||
FlagClear(FLAG_0x837);
|
||||
VarSet(VAR_RESET_RTC_ENABLE, 0);
|
||||
FlagClear(FLAG_SYS_RESET_RTC_ENABLE);
|
||||
}
|
||||
|
||||
void EnableResetRTC(void)
|
||||
{
|
||||
VarSet(VAR_0x4032, 0x0920);
|
||||
FlagSet(FLAG_0x837);
|
||||
VarSet(VAR_RESET_RTC_ENABLE, 0x0920);
|
||||
FlagSet(FLAG_SYS_RESET_RTC_ENABLE);
|
||||
}
|
||||
|
||||
bool32 CanResetRTC(void)
|
||||
{
|
||||
if (!FlagGet(FLAG_0x837))
|
||||
if (!FlagGet(FLAG_SYS_RESET_RTC_ENABLE))
|
||||
return FALSE;
|
||||
if (VarGet(VAR_0x4032) != 0x0920)
|
||||
if (VarGet(VAR_RESET_RTC_ENABLE) != 0x0920)
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
+236
-272
File diff suppressed because it is too large
Load Diff
+1
-1
@@ -1104,7 +1104,7 @@ static bool8 CreateAllFlavorTextIcons(u8 who)
|
||||
{
|
||||
if ((gSaveBlock1Ptr->fameChecker[sFameCheckerData->unlockedPersons[who]].flavorTextFlags >> i) & 1)
|
||||
{
|
||||
sFameCheckerData->spriteIds[i] = sub_805EB44(
|
||||
sFameCheckerData->spriteIds[i] = CreateFameCheckerObject(
|
||||
sFameCheckerArrayNpcGraphicsIds[sFameCheckerData->unlockedPersons[who] * 6 + i],
|
||||
i,
|
||||
47 * (i % 3) + 0x72,
|
||||
|
||||
+13
-13
@@ -331,7 +331,7 @@ void UpdateTallGrassFieldEffect(struct Sprite *sprite)
|
||||
if (sprite->animCmdIndex == 0)
|
||||
metatileBehavior = 4;
|
||||
|
||||
UpdateObjectEventSpriteVisibility(sprite, FALSE);
|
||||
UpdateObjectEventSpriteInvisibility(sprite, FALSE);
|
||||
UpdateGrassFieldEffectSubpriority(sprite, sprite->data[0], metatileBehavior);
|
||||
}
|
||||
}
|
||||
@@ -434,7 +434,7 @@ void UpdateLongGrassFieldEffect(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[7] = TRUE;
|
||||
}
|
||||
UpdateObjectEventSpriteVisibility(sprite, FALSE);
|
||||
UpdateObjectEventSpriteInvisibility(sprite, FALSE);
|
||||
UpdateGrassFieldEffectSubpriority(sprite, sprite->data[0], 0);
|
||||
}
|
||||
}
|
||||
@@ -513,7 +513,7 @@ void UpdateShortGrassFieldEffect(struct Sprite *sprite)
|
||||
sprite->y2 = (graphicsInfo->height >> 1) - 8;
|
||||
sprite->subpriority = linkedSprite->subpriority - 1;
|
||||
sprite->oam.priority = linkedSprite->oam.priority;
|
||||
UpdateObjectEventSpriteVisibility(sprite, linkedSprite->invisible);
|
||||
UpdateObjectEventSpriteInvisibility(sprite, linkedSprite->invisible);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -587,14 +587,14 @@ static void FadeFootprintsTireTracks_Step0(struct Sprite *sprite)
|
||||
if (++sprite->data[1] > 40)
|
||||
sprite->data[0] = 1;
|
||||
|
||||
UpdateObjectEventSpriteVisibility(sprite, FALSE);
|
||||
UpdateObjectEventSpriteInvisibility(sprite, FALSE);
|
||||
}
|
||||
|
||||
static void FadeFootprintsTireTracks_Step1(struct Sprite *sprite)
|
||||
{
|
||||
sprite->invisible ^= 1;
|
||||
sprite->data[1]++;
|
||||
UpdateObjectEventSpriteVisibility(sprite, sprite->invisible);
|
||||
UpdateObjectEventSpriteInvisibility(sprite, sprite->invisible);
|
||||
if (sprite->data[1] > 56)
|
||||
{
|
||||
FieldEffectStop(sprite, sprite->data[7]);
|
||||
@@ -641,7 +641,7 @@ void UpdateSplashFieldEffect(struct Sprite *sprite)
|
||||
{
|
||||
sprite->x = gSprites[gObjectEvents[objectEventId].spriteId].x;
|
||||
sprite->y = gSprites[gObjectEvents[objectEventId].spriteId].y;
|
||||
UpdateObjectEventSpriteVisibility(sprite, FALSE);
|
||||
UpdateObjectEventSpriteInvisibility(sprite, FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -727,7 +727,7 @@ static void UpdateFeetInFlowingWaterFieldEffect(struct Sprite *sprite)
|
||||
sprite->x = linkedSprite->x;
|
||||
sprite->y = linkedSprite->y;
|
||||
sprite->subpriority = linkedSprite->subpriority;
|
||||
UpdateObjectEventSpriteVisibility(sprite, FALSE);
|
||||
UpdateObjectEventSpriteInvisibility(sprite, FALSE);
|
||||
if (objectEvent->currentCoords.x != sprite->data[3] || objectEvent->currentCoords.y != sprite->data[4])
|
||||
{
|
||||
sprite->data[3] = objectEvent->currentCoords.x;
|
||||
@@ -797,7 +797,7 @@ void UpdateHotSpringsWaterFieldEffect(struct Sprite *sprite)
|
||||
sprite->x = linkedSprite->x;
|
||||
sprite->y = (graphicsInfo->height >> 1) + linkedSprite->y - 8;
|
||||
sprite->subpriority = linkedSprite->subpriority - 1;
|
||||
UpdateObjectEventSpriteVisibility(sprite, FALSE);
|
||||
UpdateObjectEventSpriteInvisibility(sprite, FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -935,7 +935,7 @@ static void UpdateAshFieldEffect_Step1(struct Sprite *sprite)
|
||||
|
||||
static void UpdateAshFieldEffect_Step2(struct Sprite *sprite)
|
||||
{
|
||||
UpdateObjectEventSpriteVisibility(sprite, FALSE);
|
||||
UpdateObjectEventSpriteInvisibility(sprite, FALSE);
|
||||
if (sprite->animEnded)
|
||||
FieldEffectStop(sprite, FLDEFF_ASH);
|
||||
}
|
||||
@@ -1187,7 +1187,7 @@ void UpdateSandPileFieldEffect(struct Sprite *sprite)
|
||||
sprite->x = x;
|
||||
sprite->y = y;
|
||||
sprite->subpriority = gSprites[gObjectEvents[objectEventId].spriteId].subpriority;
|
||||
UpdateObjectEventSpriteVisibility(sprite, FALSE);
|
||||
UpdateObjectEventSpriteInvisibility(sprite, FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1212,7 +1212,7 @@ void UpdateBubblesFieldEffect(struct Sprite *sprite)
|
||||
sprite->data[0] += 0x80;
|
||||
sprite->data[0] &= 0x100;
|
||||
sprite->y -= sprite->data[0] >> 8;
|
||||
UpdateObjectEventSpriteVisibility(sprite, FALSE);
|
||||
UpdateObjectEventSpriteInvisibility(sprite, FALSE);
|
||||
if (sprite->invisible || sprite->animEnded)
|
||||
{
|
||||
FieldEffectStop(sprite, FLDEFF_BUBBLES);
|
||||
@@ -1380,7 +1380,7 @@ void UpdateJumpImpactEffect(struct Sprite *sprite)
|
||||
}
|
||||
else
|
||||
{
|
||||
UpdateObjectEventSpriteVisibility(sprite, FALSE);
|
||||
UpdateObjectEventSpriteInvisibility(sprite, FALSE);
|
||||
SetObjectSubpriorityByElevation(sprite->data[0], sprite, 0);
|
||||
}
|
||||
}
|
||||
@@ -1390,7 +1390,7 @@ void WaitFieldEffectSpriteAnim(struct Sprite *sprite)
|
||||
if (sprite->animEnded)
|
||||
FieldEffectStop(sprite, sprite->data[0]);
|
||||
else
|
||||
UpdateObjectEventSpriteVisibility(sprite, FALSE);
|
||||
UpdateObjectEventSpriteInvisibility(sprite, FALSE);
|
||||
}
|
||||
|
||||
static void UpdateGrassFieldEffectSubpriority(struct Sprite *sprite, u8 z, u8 offset)
|
||||
|
||||
+2
-2
@@ -1393,7 +1393,7 @@ static void NamingScreen_CreatePlayerIcon(void)
|
||||
u8 spriteId;
|
||||
|
||||
rivalGfxId = GetRivalAvatarGraphicsIdByStateIdAndGender(PLAYER_AVATAR_STATE_NORMAL, sNamingScreen->monSpecies);
|
||||
spriteId = AddPseudoObjectEvent(rivalGfxId, SpriteCallbackDummy, 56, 37, 0);
|
||||
spriteId = CreateObjectGraphicsSprite(rivalGfxId, SpriteCallbackDummy, 56, 37, 0);
|
||||
gSprites[spriteId].oam.priority = 3;
|
||||
StartSpriteAnim(&gSprites[spriteId], ANIM_STD_GO_SOUTH);
|
||||
}
|
||||
@@ -1440,7 +1440,7 @@ static void NamingScreen_CreateRivalIcon(void)
|
||||
const struct SubspriteTable * tables_p;
|
||||
u8 spriteId;
|
||||
|
||||
MakeObjectTemplateFromObjectEventGraphicsInfo(OBJ_EVENT_GFX_RED_NORMAL, SpriteCallbackDummy, &template, &tables_p);
|
||||
CopyObjectGraphicsInfoToSpriteTemplate(OBJ_EVENT_GFX_RED_NORMAL, SpriteCallbackDummy, &template, &tables_p);
|
||||
|
||||
template.tileTag = sheet.tag;
|
||||
template.paletteTag = palette.tag;
|
||||
|
||||
+1
-1
@@ -130,7 +130,7 @@ void NewGameInitData(void)
|
||||
ClearPlayerLinkBattleRecords();
|
||||
InitHeracrossSizeRecord();
|
||||
InitMagikarpSizeRecord();
|
||||
sub_806E190();
|
||||
EnableNationalPokedex_RSE();
|
||||
gPlayerPartyCount = 0;
|
||||
ZeroPlayerPartyMons();
|
||||
ResetPokemonStorageSystem();
|
||||
|
||||
+4
-4
@@ -2138,7 +2138,7 @@ static void InitObjectEventsLocal(void)
|
||||
|
||||
static void ReloadObjectsAndRunReturnToFieldMapScript(void)
|
||||
{
|
||||
ReloadMapObjectsWithOffset(0, 0);
|
||||
SpawnObjectEventsOnReturnToField(0, 0);
|
||||
RunOnReturnToFieldMapScript();
|
||||
}
|
||||
|
||||
@@ -3515,13 +3515,13 @@ static void CreateLinkPlayerSprite(u8 linkPlayerId, u8 gameVersion)
|
||||
{
|
||||
if (gameVersion == VERSION_FIRE_RED || gameVersion == VERSION_LEAF_GREEN)
|
||||
{
|
||||
objEvent->spriteId = AddPseudoObjectEvent(
|
||||
objEvent->spriteId = CreateObjectGraphicsSprite(
|
||||
GetRivalAvatarGraphicsIdByStateIdAndGender(PLAYER_AVATAR_STATE_NORMAL, linkGender(objEvent)),
|
||||
SpriteCB_LinkPlayer, 0, 0, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
objEvent->spriteId = AddPseudoObjectEvent(GetRSAvatarGraphicsIdByGender(linkGender(objEvent)), SpriteCB_LinkPlayer, 0, 0, 0);
|
||||
objEvent->spriteId = CreateObjectGraphicsSprite(GetRSAvatarGraphicsIdByGender(linkGender(objEvent)), SpriteCB_LinkPlayer, 0, 0, 0);
|
||||
}
|
||||
|
||||
sprite = &gSprites[objEvent->spriteId];
|
||||
@@ -3545,7 +3545,7 @@ static void SpriteCB_LinkPlayer(struct Sprite *sprite)
|
||||
else
|
||||
StartSpriteAnimIfDifferent(sprite, GetMoveDirectionAnimNum(linkDirection(objEvent)));
|
||||
|
||||
UpdateObjectEventSpriteVisibility(sprite, 0);
|
||||
UpdateObjectEventSpriteInvisibility(sprite, FALSE);
|
||||
if (objEvent->triggerGroundEffectsOnMove)
|
||||
{
|
||||
sprite->invisible = ((sprite->data[7] & 4) >> 2);
|
||||
|
||||
+2
-2
@@ -1297,7 +1297,7 @@ void sub_811246C(struct Sprite *sprite)
|
||||
QuestLogUpdatePlayerSprite(sMovementScripts[0][1]);
|
||||
sMovementScripts[0][1] = 0xFF;
|
||||
}
|
||||
sub_8063E28(objectEvent, sprite);
|
||||
UpdateQuestLogObjectEventCurrentMovement(objectEvent, sprite);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1306,7 +1306,7 @@ void sub_811246C(struct Sprite *sprite)
|
||||
ObjectEventSetHeldMovement(objectEvent, sMovementScripts[objectEvent->localId][0]);
|
||||
sMovementScripts[objectEvent->localId][0] = 0xFF;
|
||||
}
|
||||
sub_8063E28(objectEvent, sprite);
|
||||
UpdateQuestLogObjectEventCurrentMovement(objectEvent, sprite);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -441,7 +441,7 @@ void CreateGroupMemberObjectsInvisible(u8 * sprite_ids, s32 group)
|
||||
{
|
||||
s32 obj_id = 5 * group + i;
|
||||
sprite_ids[obj_id] = CreateVirtualObject(OBJ_EVENT_GFX_MAN, obj_id - 0x38, sUnionPartnerCoords[group][0] + sFacingDirectionOffsets[i][0], sUnionPartnerCoords[group][1] + sFacingDirectionOffsets[i][1], 3, 1);
|
||||
RfuUnionObjectToggleInvisibility(obj_id - 0x38, TRUE);
|
||||
SetVirtualObjectInvisibility(obj_id - 0x38, TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -485,7 +485,7 @@ static u8 UnionPartnerObjectGetFacing(u32 member, u32 group, struct GFtgtGname *
|
||||
|
||||
static u32 RfuUnionGroupMemberIsInvisible(u32 group, u32 member)
|
||||
{
|
||||
return RfuUnionObjectIsInvisible(5 * group + member - 0x38);
|
||||
return IsVirtualObjectInvisible(5 * group + member - 0x38);
|
||||
}
|
||||
|
||||
static void SpawnGroupMember(u32 groupNo, u32 memberNo, u8 direction, struct GFtgtGname * gname)
|
||||
@@ -494,10 +494,10 @@ static void SpawnGroupMember(u32 groupNo, u32 memberNo, u8 direction, struct GFt
|
||||
s32 objId = 5 * groupNo + memberNo;
|
||||
if (RfuUnionGroupMemberIsInvisible(groupNo, memberNo) == TRUE)
|
||||
{
|
||||
RfuUnionObjectToggleInvisibility(objId - 0x38, FALSE);
|
||||
RfuUnionObjectStartWarp(objId - 0x38, UNION_ROOM_SPAWN_IN);
|
||||
SetVirtualObjectInvisibility(objId - 0x38, FALSE);
|
||||
SetVirtualObjectSpriteAnim(objId - 0x38, UNION_ROOM_SPAWN_IN);
|
||||
}
|
||||
RfuUnionObjectSetFacingDirection(objId - 0x38, direction);
|
||||
SetVirtualObjectGraphics(objId - 0x38, direction);
|
||||
UnionPartnerObjectSetFacing(memberNo, groupNo, UnionPartnerObjectGetFacing(memberNo, groupNo, gname));
|
||||
GetUnionRoomPlayerFacingCoords(groupNo, memberNo, &x, &y);
|
||||
MapGridSetMetatileImpassabilityAt(x, y, TRUE);
|
||||
@@ -506,7 +506,7 @@ static void SpawnGroupMember(u32 groupNo, u32 memberNo, u8 direction, struct GFt
|
||||
static void DespawnGroupMember(u32 group, u32 member)
|
||||
{
|
||||
s32 x, y;
|
||||
RfuUnionObjectStartWarp(5 * group + member - 0x38, UNION_ROOM_SPAWN_OUT);
|
||||
SetVirtualObjectSpriteAnim(5 * group + member - 0x38, UNION_ROOM_SPAWN_OUT);
|
||||
GetUnionRoomPlayerFacingCoords(group, member, &x, &y);
|
||||
MapGridSetMetatileImpassabilityAt(x, y, FALSE);
|
||||
}
|
||||
@@ -518,7 +518,7 @@ static void AssembleGroup(u32 group, struct GFtgtGname * gname)
|
||||
|
||||
PlayerGetDestCoords(&x, &y);
|
||||
player_get_pos_including_state_based_drift(&x2, &y2);
|
||||
if (RfuUnionObjectIsInvisible(5 * group - 0x38) == TRUE)
|
||||
if (IsVirtualObjectInvisible(5 * group - 0x38) == TRUE)
|
||||
{
|
||||
if (IsUnionRoomPlayerFacingTileAt(group, 0, x, y) == TRUE || IsUnionRoomPlayerFacingTileAt(group, 0, x2, y2) == TRUE)
|
||||
{
|
||||
@@ -631,11 +631,11 @@ bool32 RfuUnionTool_GetGroupAndMemberInFrontOfPlayer(struct UnkStruct_Main0 *mai
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (RfuUnionObjectIsInvisible(objId - 0x38) != 0)
|
||||
if (IsVirtualObjectInvisible(objId - 0x38) != FALSE)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (RfuUnionObjectIsWarping(objId - 0x38) != 0)
|
||||
if (IsVirtualObjectAnimating(objId - 0x38) != FALSE)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
+1
-1
@@ -844,7 +844,7 @@ static void BuyMenuDrawObjectEvents(void)
|
||||
continue;
|
||||
|
||||
graphicsInfo = GetObjectEventGraphicsInfo(gObjectEvents[sViewportObjectEvents[i][OBJECT_EVENT_ID]].graphicsId);
|
||||
spriteId = AddPseudoObjectEvent(
|
||||
spriteId = CreateObjectGraphicsSprite(
|
||||
gObjectEvents[sViewportObjectEvents[i][OBJECT_EVENT_ID]].graphicsId,
|
||||
SpriteCallbackDummy,
|
||||
(u16)sViewportObjectEvents[i][X_COORD] * 16 - 8,
|
||||
|
||||
+2
-1
@@ -26,6 +26,7 @@
|
||||
#include "fieldmap.h"
|
||||
#include "strings.h"
|
||||
#include "constants/field_effects.h"
|
||||
#include "constants/event_objects.h"
|
||||
|
||||
struct TeachyTvCtrlBlk
|
||||
{
|
||||
@@ -602,7 +603,7 @@ static void TeachyTvInitIo(void)
|
||||
|
||||
static u8 TeachyTvSetupObjEventAndOam(void)
|
||||
{
|
||||
u8 objId = AddPseudoObjectEvent(90, SpriteCallbackDummy, 0, 0, 8);
|
||||
u8 objId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_TEACHY_TV_HOST, SpriteCallbackDummy, 0, 0, 8);
|
||||
gSprites[objId].oam.priority = 2;
|
||||
gSprites[objId].invisible = 1;
|
||||
return objId;
|
||||
|
||||
Reference in New Issue
Block a user