10#include "message_ids.h"
14#include "sprite/player.h"
16#define MAX_ITEM_ENTITIES 256
74 {{{ -12, 0, 0 }, 0, { 0x2300, 0x2300 }, { 0, 0, 0, 255 }}},
75 {{{ 11, 0, 0 }, 0, { 0x2000, 0x2300 }, { 0, 0, 0, 255 }}},
76 {{{ 11, 23, 0 }, 0, { 0x2000, 0x2000 }, { 0, 0, 0, 255 }}},
77 {{{ -12, 23, 0 }, 0, { 0x2300, 0x2000 }, { 0, 0, 0, 255 }}},
81 {{{ -16, 0, 0 }, 0, { 0x2400, 0x2400 }, { 0, 0, 0, 255 }}},
82 {{{ 15, 0, 0 }, 0, { 0x2000, 0x2400 }, { 0, 0, 0, 255 }}},
83 {{{ 15, 31, 0 }, 0, { 0x2000, 0x2000 }, { 0, 0, 0, 255 }}},
84 {{{ -16, 31, 0 }, 0, { 0x2400, 0x2000 }, { 0, 0, 0, 255 }}},
133 switch (*readPos++) {
324 if (
entry->id == -1) {
334 *
pos = (u16)(*
pos) | (i << 16);
344 *
pos = (u16)(*
pos) | (i << 16);
358 if (
entry->id == -1) {
367 *
pos = (u16)(*
pos) | (i << 16);
371 }
else if (
entry->id == palette) {
375 *
pos = (u16)(*
pos) | (i << 16);
650 y = item->
pos.
y + 12.0f;
658 shadow->
rot.
y = 0.0f;
755 posY = item->
pos.
y + 12.0f;
759 shadow->
pos.
x = posX;
760 shadow->
pos.
y = posY;
761 shadow->
pos.
z = posZ;
764 shadow->
rot.
y = 0.0f;
781 if (
entity->nextUpdate != 0) {
792 entity->nextUpdate = *args++;
796 entity->lookupRasterIndex = *args++;
797 entity->lookupPaletteIndex = *args++;
799 entity->lookupRasterIndex = *args++ >> 16;
800 entity->lookupPaletteIndex = *args++ >> 16;
808 entity->savedReadPos = args;
887 y = item->
pos.
y + 12.0f;
896 shadow->
rot.
y = 0.0f;
921 alpha = (item->
alpha * alpha) / 255;
927 alpha = (alpha * (255 - a)) / 255;
1079 rtPtr->appendGfxArg = item;
1133 if ((item->
flags != 0)) {
1170 alpha = item->
alpha * alpha / 255;
1174 alpha = alpha * (255 -
a1) / 255;
1193 gDPSetTile(
gMainGfxPos++,
G_IM_FMT_CI,
G_IM_SIZ_8b, 2, 0x0000,
G_TX_LOADTILE, 0,
G_TX_NOMIRROR |
G_TX_CLAMP, 8,
G_TX_NOLOD,
G_TX_NOMIRROR |
G_TX_CLAMP, 8,
G_TX_NOLOD);
1197 gDPSetTile(
gMainGfxPos++,
G_IM_FMT_CI,
G_IM_SIZ_4b, 2, 0x0000, 1, 0,
G_TX_NOMIRROR |
G_TX_CLAMP, 8,
G_TX_NOLOD,
G_TX_NOMIRROR |
G_TX_CLAMP, 8,
G_TX_NOLOD);
1199 gDPSetTile(
gMainGfxPos++,
G_IM_FMT_CI,
G_IM_SIZ_4b, 2, 0x0000,
G_TX_RENDERTILE, 1,
G_TX_NOMIRROR |
G_TX_CLAMP, 8,
G_TX_NOLOD,
G_TX_NOMIRROR |
G_TX_CLAMP, 8,
G_TX_NOLOD);
1200 gDPSetTile(
gMainGfxPos++,
G_IM_FMT_RGBA,
G_IM_SIZ_16b, 4, 0x0100, 2, 0,
G_TX_NOMIRROR |
G_TX_WRAP,
G_TX_NOMASK,
G_TX_NOLOD,
G_TX_NOMIRROR |
G_TX_WRAP,
G_TX_NOMASK,
G_TX_NOLOD);
1209 gDPSetTile(
gMainGfxPos++,
G_IM_FMT_CI,
G_IM_SIZ_8b, 2, 0x0000,
G_TX_LOADTILE, 0,
G_TX_NOMIRROR |
G_TX_CLAMP, 8,
G_TX_NOLOD,
G_TX_NOMIRROR |
G_TX_CLAMP, 8,
G_TX_NOLOD);
1213 gDPSetTile(
gMainGfxPos++,
G_IM_FMT_CI,
G_IM_SIZ_4b, 2, 0x0000,
G_TX_RENDERTILE, 0,
G_TX_NOMIRROR |
G_TX_CLAMP, 8,
G_TX_NOLOD,
G_TX_NOMIRROR |
G_TX_CLAMP, 8,
G_TX_NOLOD);
1221 gDPSetTile(
gMainGfxPos++,
G_IM_FMT_CI,
G_IM_SIZ_8b, 2, 0x0000,
G_TX_LOADTILE, 0,
G_TX_NOMIRROR |
G_TX_CLAMP, 8,
G_TX_NOLOD,
G_TX_NOMIRROR |
G_TX_CLAMP, 8,
G_TX_NOLOD);
1225 gDPSetTile(
gMainGfxPos++,
G_IM_FMT_CI,
G_IM_SIZ_4b, 2, 0x0000, 1, 0,
G_TX_NOMIRROR |
G_TX_CLAMP, 8,
G_TX_NOLOD,
G_TX_NOMIRROR |
G_TX_CLAMP, 8,
G_TX_NOLOD);
1227 gDPSetTile(
gMainGfxPos++,
G_IM_FMT_CI,
G_IM_SIZ_4b, 2, 0x0000,
G_TX_RENDERTILE, 1,
G_TX_NOMIRROR |
G_TX_CLAMP, 8,
G_TX_NOLOD,
G_TX_NOMIRROR |
G_TX_CLAMP, 8,
G_TX_NOLOD);
1228 gDPSetTile(
gMainGfxPos++,
G_IM_FMT_RGBA,
G_IM_SIZ_16b, 4, 0x0100, 2, 0,
G_TX_NOMIRROR |
G_TX_WRAP,
G_TX_NOMASK,
G_TX_NOLOD,
G_TX_NOMIRROR |
G_TX_WRAP,
G_TX_NOMASK,
G_TX_NOLOD);
1237 gDPSetTile(
gMainGfxPos++,
G_IM_FMT_CI,
G_IM_SIZ_8b, 2, 0x0000,
G_TX_LOADTILE, 0,
G_TX_NOMIRROR |
G_TX_CLAMP, 8,
G_TX_NOLOD,
G_TX_NOMIRROR |
G_TX_CLAMP, 8,
G_TX_NOLOD);
1241 gDPSetTile(
gMainGfxPos++,
G_IM_FMT_CI,
G_IM_SIZ_4b, 2, 0x0000,
G_TX_RENDERTILE, 0,
G_TX_NOMIRROR |
G_TX_CLAMP, 8,
G_TX_NOLOD,
G_TX_NOMIRROR |
G_TX_CLAMP, 8,
G_TX_NOLOD);
1270 switch (
entity->spawnType) {
1334 f32 spriteFacingAngle;
1408 if (spriteFacingAngle < 180.0f) {
1500 if (item->
flags == 0) {
1608 switch (item->
state) {
1629 if (item_is_consumable(item->
itemID) || item_is_key(item->
itemID)) {
1789 if (
physData->verticalVel < -16.0) {
1899 if (item_is_badge(item->
itemID)) {
1901 }
else if (item_is_consumable(item->
itemID) || item_is_key(item->
itemID)) {
1935 if (item->
pos.
y < -2000.0f) {
1952 if (item_is_consumable(item->
itemID) || item_is_key(item->
itemID) || item_is_badge(item->
itemID)) {
2114 switch (item->
state) {
2393 menu->numEntries = numEntries;
2394 menu->initialPos = 0;
2489#define HT_VAR1 height
2503 switch (item->
state) {
2533 posX = 160 - width / 2;
2554 posX = 160 - width / 2;
2585 posX = 160 - width / 2;
2596 posX = 160 - width / 2;
2603#define X_PICKUP_ITEM_1 12
2604#define X_PICKUP_ITEM_2 36
2605#define X_PICKUP_THREW 36
2606#define Y_PICKUP_ITEM_1 12
2607#define Y_PICKUP_ITEM_2 12
2608#define Y_PICKUP_THREW 12
2610#define X_PICKUP_ITEM_1 15
2611#define X_PICKUP_ITEM_2 40
2612#define X_PICKUP_THREW 40
2613#define Y_PICKUP_ITEM_1 offsetY
2614#define Y_PICKUP_ITEM_2 offsetY
2615#define Y_PICKUP_THREW 4
2623 switch (item->
state) {
2702 switch (item->
state) {
void create_standard_popup_menu(PopupMenu *popup)
BSS s32 PopupMenu_SelectedIndex
struct ItemEntityPhysicsData * physicsData
Vec3f playerGroundTraceAngles
#define sfx_play_sound_at_position
#define queue_render_task
#define npc_raycast_down_sides
#define mdl_get_shroud_tint_params
EffectInstanceDataPtr data
struct GotItemOutlineFXData * gotItemOutline
#define ASSERT(condition)
@ ITEM_PICKUP_STATE_HIDE_TOO_MANY
@ ITEM_PICKUP_STATE_AWAIT_TUTORIAL
@ ITEM_PICKUP_STATE_SHOW_THREW_AWAY
@ ITEM_PICKUP_STATE_SHOW_GOT_ITEM
@ ITEM_PICKUP_STATE_HIDE_THREW_AWAY
@ ITEM_PICKUP_STATE_CHECK_TUTORIALS
@ ITEM_PICKUP_STATE_SHOW_TOO_MANY
@ ITEM_PICKUP_STATE_THROW_AWAY_DONE
@ ITEM_PICKUP_STATE_AWAIT_THROW_AWAY
@ ITEM_PICKUP_STATE_HIDE_GOT_ITEM
@ ITEM_PICKUP_STATE_SHOW_TUTORIAL
@ ITEM_PICKUP_STATE_AWAIT_VALID_STATE
@ ITEM_ENTITY_FLAG_DONE_FALLING
@ ITEM_ENTITY_FLAG_NO_MOTION
@ ITEM_ENTITY_FLAG_800000
@ ITEM_ENTITY_FLAG_CANT_COLLECT
@ ITEM_ENTITY_FLAG_NO_GRAVITY
@ ITEM_ENTITY_FLAG_SAVE_ON_RECEIPT
@ ITEM_ENTITY_FLAG_HIDING
@ ITEM_ENTITY_FLAG_ODD_SPAWN_PARITY
@ ITEM_ENTITY_FLAG_4000000
@ ITEM_ENTITY_FLAG_ANGLE_RELATIVE_VELOCITY
@ ITEM_ENTITY_FLAG_FULLSIZE
@ ITEM_ENTITY_FLAG_HIDDEN
@ ITEM_ENTITY_FLAG_400000
@ ITEM_ENTITY_FLAG_TRANSPARENT
@ ITEM_ENTITY_FLAG_SAVE_ON_TOUCH
@ ITEM_ENTITY_FLAG_TOSS_LOWER
@ ITEM_ENTITY_FLAG_JUST_SPAWNED
@ ITEM_ENTITY_FLAG_TOSS_HIGHER
@ ITEM_ENTITY_FLAG_SAVE_ON_INIT
@ ITEM_ENTITY_FLAG_2000000
@ ITEM_ENTITY_FLAG_NEVER_VANISH
@ ITEM_ENTITY_FLAG_AUTO_COLLECT
@ ITEM_ENTITY_FLAG_INVISIBLE
@ POPUP_MENU_THROW_AWAY_ITEM
@ ITEM_PHYSICS_STATE_TOUCH
@ ITEM_PHYSICS_STATE_INIT
@ ITEM_PHYSICS_STATE_DEAD
@ ITEM_PHYSICS_STATE_PICKUP
@ ITEM_PHYSICS_STATE_ALIVE
@ ITEM_SPAWN_MODE_TOSS_SPAWN_ALWAYS_SMALL
@ ITEM_SPAWN_MODE_FIXED_NEVER_VANISH
@ ITEM_SPAWN_MODE_FIXED_SPAWN_ALWAYS
@ ITEM_SPAWN_MODE_TOSS_FADE3
@ ITEM_SPAWN_MODE_DECORATION
@ ITEM_SPAWN_MODE_INVISIBLE
@ ITEM_SPAWN_MODE_ITEM_BLOCK_ITEM
@ ITEM_SPAWN_MODE_FALL_SPAWN_ONCE
@ ITEM_SPAWN_MODE_FIXED_SPAWN_ALWAYS_NEVER_VANISH
@ ITEM_SPAWN_MODE_TOSS_FADE1
@ ITEM_SPAWN_MODE_TOSS_SPAWN_ONCE
@ ITEM_SPAWN_MODE_ITEM_BLOCK_SPAWN_ALWAYS
@ ITEM_SPAWN_MODE_BATTLE_REWARD
@ ITEM_SPAWN_MODE_TOSS_SPAWN_ALWAYS
@ ITEM_SPAWN_MODE_TOSS_SPAWN_ALWAYS_NEVER_VANISH
@ ITEM_SPAWN_MODE_TOSS_SPAWN_ONCE_NEVER_VANISH
@ ITEM_SPAWN_MODE_TOSS_NEVER_VANISH
@ ITEM_SPAWN_MODE_TOSS_FADE2
@ ITEM_SPAWN_MODE_TOSS_HIGHER_NEVER_VANISH
@ ITEM_SPAWN_MODE_FALL_NEVER_VANISH
@ ITEM_SPAWN_MODE_UNKNOWN_1B
@ ITEM_SPAWN_MODE_FALL_SPAWN_ALWAYS
@ ITEM_SPAWN_MODE_ITEM_BLOCK_COIN
@ ITEM_SPAWN_MODE_ITEM_BLOCK_BADGE
@ ENCOUNTER_TRIGGER_CONVERSATION
@ ITEM_TYPE_FLAG_CONSUMABLE
@ ITEM_TYPE_FLAG_WORLD_USABLE
@ ITEM_TYPE_FLAG_ENTITY_FULLSIZE
@ WINDOW_FLAG_INITIAL_ANIMATION
@ COLLIDER_FLAG_IGNORE_NPC
@ RENDER_TASK_FLAG_REFLECT_FLOOR
@ ITEM_PICKUP_FLAG_UNKNOWN
@ ITEM_PICKUP_FLAG_NO_ANIMS
@ ITEM_PICKUP_FLAG_3_STAR_PIECES
@ ITEM_PICKUP_FLAG_UNIQUE
@ ITEM_PICKUP_FLAG_NO_SOUND
@ ITEM_PICKUP_FLAG_1_COIN
@ SOUND_STAR_PIECE_BOUNCE
@ RENDER_MODE_SURFACE_XLU_LAYER1
@ ACTION_STATE_USE_MUNCHLESIA
Set by the jan_09 squishy flower entity; throws the player in the air.
@ ACTION_STATE_LAUNCH
Shy Guy Toybox jack-in-the-boxes.
@ ACTION_STATE_USE_TWEESTER
@ ACTION_STATE_USE_SPINNING_FLOWER
@ ENCOUNTER_STATE_NEUTRAL
@ GLOBAL_OVERRIDES_CANT_PICK_UP_ITEMS
@ GLOBAL_OVERRIDES_PREV_400
@ GLOBAL_OVERRIDES_DISABLE_BATTLES
@ GLOBAL_OVERRIDES_PREV_800
s32 evt_get_variable(Evt *script, Bytecode var)
s32 is_player_dismounted(void)
b32 npc_raycast_down_around(s32, f32 *, f32 *, f32 *, f32 *, f32, f32)
void msg_printer_set_origin_pos(MessagePrintState *msgPrintState, s32 x, s32 y)
void hide_popup_menu(void)
void basic_hidden_window_update(s32 windowIndex, s32 *flags, s32 *posX, s32 *posY, s32 *posZ, f32 *scaleX, f32 *scaleY, f32 *rotX, f32 *rotY, f32 *rotZ, s32 *darkening, s32 *opacity)
void set_standard_shadow_scale(Shadow *shadow, f32 scale)
void set_window_update(s32 panelID, s32)
void partner_disable_input(void)
s32 npc_test_move_complex_with_slipping(s32, f32 *, f32 *, f32 *, f32, f32, f32, f32)
void suggest_player_anim_always_forward(AnimID anim)
void sort_consumables(void)
Bubbles up player inventory items such that all ITEM_NONE values are at the bottom.
void decrement_status_bar_disabled(void)
s32 imgfx_appendGfx_component(s32, ImgFXTexture *, u32, Matrix4f)
void func_801491E4(Matrix4f mtx, s32, s32, s32, s32, s32 alpha)
s32 disable_player_input(void)
Shadow * get_shadow_by_index(s32 index)
s32 resume_all_group(s32 groupFlags)
void basic_window_update(s32 windowIndex, s32 *flags, s32 *posX, s32 *posY, s32 *posZ, f32 *scaleX, f32 *scaleY, f32 *rotX, f32 *rotY, f32 *rotZ, s32 *darkening, s32 *opacity)
s32 evt_set_variable(Evt *script, Bytecode var, s32 value)
s32 enable_player_input(void)
void destroy_popup_menu(void)
s32 create_worker_scene(void(*updateFunc)(void), void(*renderFunc)(void))
s32 is_starting_conversation(void)
b32 npc_test_move_simple_with_slipping(s32, f32 *, f32 *, f32 *, f32, f32, f32, f32)
void set_action_state(s32 actionState)
MessagePrintState * msg_get_printer_for_msg(s32 msgID, s32 *a1)
b32 npc_raycast_up(s32, f32 *, f32 *, f32 *, f32 *)
s32 create_shadow_type(s32 type, f32 x, f32 y, f32 z)
void set_message_text_var(s32 msgID, s32 index)
void set_window_properties(s32 panelID, s32 posX, s32 posY, s32 width, s32 height, u8, void *drawContents, void *drawContentsArg, s8 parent)
s32 does_script_exist(s32 id)
s32 get_time_freeze_mode(void)
void set_time_freeze_mode(s32)
Time freeze modes: 0: none 1: NPCs move, can't be interacted with 2: NPCs don't move,...
s32 create_worker_frontUI(void(*updateFunc)(void), void(*drawFunc)(void))
void add_vec2D_polar(f32 *x, f32 *y, f32 r, f32 theta)
f32 get_clamped_angle_diff(f32, f32)
void * heap_malloc(s32 size)
void increment_status_bar_disabled(void)
s32 get_msg_lines(s32 messageID)
void hud_element_set_script(s32 id, HudScript *anim)
void hud_element_draw_next(s32 id)
void hud_element_set_render_pos(s32 id, s32 x, s32 y)
s32 hud_element_create(HudScript *anim)
Creates a new HUD element and returns its ID.
void hud_element_set_flags(s32 id, s32 flags)
Turns on the given flags.
void hud_element_free(s32 id)
s32 add_item(s32 itemID)
Add itemID to player inventory and return inventory slot in which it was placed.
void draw_content_pickup_item_desc(ItemEntity *item, s32 posX, s32 posY)
void reveal_item_entity(ItemEntity *item)
void set_item_entity_flags(s32 index, s32 flags)
void clear_item_entity_data(void)
BSS PopupMenu ItemPickupMenu
void init_item_entity_list(void)
s16 PickupMessageWindowYOffsets[]
u8 * gHudElementCacheBuffer
BSS s16 CoinSparkleCenterY
#define MAX_ITEM_ENTITIES
void update_item_entity_pickup(ItemEntity *)
void item_entity_load(ItemEntity *item)
BSS s16 CoinSparkleCenterZ
HudCacheEntry * gHudElementCacheTablePalette
void update_item_entity_collectable(ItemEntity *)
SparkleScript SparkleScript_Coin
b32 is_picking_up_item(void)
BSS s32 pad_ItemEntity[3]
BSS s32 ItemEntityAlternatingSpawn
void set_current_item_entity_render_group(s32 group)
void clear_item_entity_flags(s32 index, s32 flags)
ItemEntity * get_item_entity(s32 itemEntityIndex)
void appendGfx_item_entity(void *)
s32 * gHudElementCacheSize
s32 make_item_entity_nodelay(s32 itemID, f32 x, f32 y, f32 z, s32 itemSpawnMode, s32 pickupVar)
BSS HudElemID ItemPickupIconHID
HudCacheEntry * gHudElementCacheTableRaster
s32 test_item_player_collision(ItemEntity *)
BSS s16 ItemSpawnWithinPlayerPickupDelay
void draw_item_entities(void)
s32 * gItemEntityScripts[]
s32 test_item_entity_position(f32 x, f32 y, f32 z, f32 dist)
void draw_content_cant_carry_more(ItemEntity *item, s32 posX, s32 posY)
void draw_ui_item_entity_collectable(ItemEntity *)
void draw_content_pickup_item_header(ItemEntity *item, s32 posX, s32 posY)
void draw_ui_item_entity_no_pickup(ItemEntity *)
BSS EffectInstance * ItemPickupGotOutline
void draw_ui_item_entities(void)
BSS ItemEntity ** gCurrentItemEntities
BSS s16 CoinSparkleCenterX
void remove_item_entity_by_index(s32 index)
BSS s32 UnusedItemPhysicsScriptID
void func_801363A0(ItemEntity *)
void update_item_entity_no_pickup(ItemEntity *)
void draw_ui_item_entity_stationary(ItemEntity *)
void item_entity_update(ItemEntity *)
s32 make_item_entity_at_player(s32 itemID, s32 category, s32 pickupMsgFlags)
BSS ItemEntity * BattleItemEntities[256]
void update_item_entities(void)
void func_80133A94(s32 idx, s32 itemID)
BSS s32 ItemPickupStateDelay
void auto_collect_item_entity(s32 index)
void draw_coin_sparkles(ItemEntity *item)
BSS s32 ItemEntityRenderGroup
s32 make_item_entity(s32 itemID, f32 x, f32 y, f32 z, s32 itemSpawnMode, s32 pickupDelay, s32 angle, s32 pickupFlagIndex)
s16 PickupHeaderWindowHeight[]
BSS b32 GotItemTutorialClosed
s32 sparkle_script_step(ItemEntity *item)
s32 make_item_entity_delayed(s32 itemID, f32 x, f32 y, f32 z, s32 itemSpawnMode, s32 pickupDelay, s32 pickupVar)
s32 get_current_item_entity_render_group(void)
BSS MessagePrintState * GotItemTutorialPrinter
void remove_item_entity_by_reference(ItemEntity *entity)
void render_item_entities(void)
void sparkle_script_update(ItemEntity *item)
void sparkle_script_init(ItemEntity *item, SparkleScript *script)
void update_item_entity_stationary(ItemEntity *)
BSS ItemEntity * WorldItemEntities[256]
void set_item_entity_position(s32 itemEntityIndex, f32 x, f32 y, f32 z)
void hide_item_entity(ItemEntity *item)
@ ITEM_SCRIPT_OP_RandomRestart
@ ITEM_SCRIPT_OP_SetImage
EncounterStatus gCurrentEncounter
void partner_enable_input(void)
void sfx_play_sound(s32 soundID)
@ GF_Tutorial_GotStarPiece
#define EVT_GAME_FLAG_CUTOFF
#define EVT_INDEX_OF_GAME_FLAG(v)
PartnerStatus gPartnerStatus
GameStatus * gGameStatusPtr
SpriteShadingProfile * gSpriteShadingProfile
PlayerStatus gPlayerStatus
DisplayContext * gDisplayContext
s32 set_global_flag(s32 index)
s32 get_global_flag(s32 index)