Paper Mario DX
Paper Mario (N64) modding
 
Loading...
Searching...
No Matches
hud_element.h File Reference

Go to the source code of this file.

Data Structures

struct  HudCacheEntry
 
struct  PopupMenu
 
struct  Shop
 
struct  IconHudScriptPair
 
struct  VtxRect
 
struct  HudTransform
 
struct  HudElement
 
struct  PartnerPopupProperties
 

Macros

#define HUD_ELEMENT_BATTLE_ID_MASK   0x800
 
#define HS_PTR(sym)   (s32)&sym
 
#define hs_End   HUD_ELEMENT_OP_End,
 
#define hs_SetRGBA(time, image)   HUD_ELEMENT_OP_SetRGBA, time, (s32)image,
 
#define hs_SetCI(time, name)   HUD_ELEMENT_OP_SetCI, time, (s32)name##_png, (s32)name##_pal,
 
#define hs_SetCI_Explicit(time, raster, palette)   HUD_ELEMENT_OP_SetCI, time, (s32)raster##_png, (s32)palette##_pal,
 
#define hs_Restart   HUD_ELEMENT_OP_Restart,
 
#define hs_Loop   HUD_ELEMENT_OP_Loop,
 
#define hs_SetTileSize(size)   HUD_ELEMENT_OP_SetTileSize, size,
 
#define hs_SetSizesAutoScale(size1, size2)   HUD_ELEMENT_OP_SetSizesAutoScale, size1, size2,
 
#define hs_SetSizesFixedScale(size1, size2)   HUD_ELEMENT_OP_SetSizesFixedScale, size1, size2,
 
#define hs_SetVisible   HUD_ELEMENT_OP_SetVisible,
 
#define hs_SetHidden   HUD_ELEMENT_OP_SetHidden,
 
#define hs_AddTexelOffsetX(x)   HUD_ELEMENT_OP_AddTexelOffsetX, x,
 
#define hs_AddTexelOffsetY(y)   HUD_ELEMENT_OP_AddTexelOffsetY, y,
 
#define hs_SetTexelOffset(x, y)   HUD_ELEMENT_OP_SetTexelOffset, x, y,
 
#define hs_SetIcon(time, icon)   HUD_ELEMENT_OP_SetImage, time, ICON_##icon##_raster, ICON_##icon##_palette, 0, 0,
 
#define hs_SetScale(scale)   HUD_ELEMENT_OP_SetScale, (s32)(scale * 65536.0f),
 
#define hs_SetAlpha(alpha)   HUD_ELEMENT_OP_SetAlpha, alpha,
 
#define hs_RandomDelay(arg0, arg1)   HUD_ELEMENT_OP_RandomDelay, arg0, arg1,
 
#define hs_Delete   HUD_ELEMENT_OP_Delete,
 
#define hs_UseIA8   HUD_ELEMENT_OP_UseIA8,
 
#define hs_SetCustomSize(arg0, arg1)   HUD_ELEMENT_OP_SetCustomSize, arg0, arg1,
 
#define hs_RandomRestart(max, cutoff)   HUD_ELEMENT_OP_RandomRestart, max, cutoff,
 Restarts the loop if cutoff < rand_int(max)
 
#define hs_SetVariable(arg0)   HUD_ELEMENT_OP_SetVariable, arg0,
 
#define hs_RandomBranch(args...)   HUD_ELEMENT_OP_RandomBranch, (sizeof((s32[]){args})/sizeof(s32)), args,
 
#define hs_SetFlags(arg0)   HUD_ELEMENT_OP_SetFlags, arg0,
 
#define hs_ClearFlags(arg0)   HUD_ELEMENT_OP_ClearFlags, arg0,
 
#define hs_PlaySound(arg0)   HUD_ELEMENT_OP_PlaySound, arg0,
 
#define hs_SetPivot(arg0, arg1)   HUD_ELEMENT_OP_SetPivot, arg0, arg1,
 
#define HES_TEMPLATE_CI_ENUM_SIZE(name, sizeX, sizeY)
 Basic HudScript used for static CI images, setting size with hs_SetTileSize.
 
#define HES_TEMPLATE_CI_CUSTOM_SIZE(name, sizeX, sizeY)
 Basic HudScript used for static CI images, setting size with hs_SetCustomSize.
 
#define HES_TEMPLATE_ITEM(icon)
 
#define HES_TEMPLATE_ITEM_HEART_PIECE()
 
#define HES_TEMPLATE_ITEM_HEART()
 
#define HES_TEMPLATE_ITEM_STAR_POINT()
 
#define HES_TEMPLATE_ITEM_HEART_POINT()
 
#define HES_TEMPLATE_ITEM_FLOWER_POINT()
 
#define HES_TEMPLATE_ITEM_STAR_PIECE()
 
#define HES_TEMPLATE_ITEM_COIN()
 
#define HES_COIN_SPARKLE(dx, dy)
 

Typedefs

typedef s32 HudScript[]
 
typedef HudElementHudElementList[320]
 

Enumerations

enum  {
  HUD_ELEMENT_OP_End , HUD_ELEMENT_OP_SetRGBA , HUD_ELEMENT_OP_SetCI , HUD_ELEMENT_OP_Restart ,
  HUD_ELEMENT_OP_Loop , HUD_ELEMENT_OP_SetTileSize , HUD_ELEMENT_OP_SetSizesAutoScale , HUD_ELEMENT_OP_SetSizesFixedScale ,
  HUD_ELEMENT_OP_SetVisible , HUD_ELEMENT_OP_SetHidden , HUD_ELEMENT_OP_AddTexelOffsetX , HUD_ELEMENT_OP_AddTexelOffsetY ,
  HUD_ELEMENT_OP_SetTexelOffset , HUD_ELEMENT_OP_SetImage , HUD_ELEMENT_OP_SetScale , HUD_ELEMENT_OP_SetAlpha ,
  HUD_ELEMENT_OP_RandomDelay , HUD_ELEMENT_OP_Delete , HUD_ELEMENT_OP_UseIA8 , HUD_ELEMENT_OP_SetCustomSize ,
  HUD_ELEMENT_OP_RandomRestart , HUD_ELEMENT_OP_SetVariable , HUD_ELEMENT_OP_op_16 , HUD_ELEMENT_OP_RandomBranch ,
  HUD_ELEMENT_OP_SetFlags , HUD_ELEMENT_OP_ClearFlags , HUD_ELEMENT_OP_PlaySound , HUD_ELEMENT_OP_SetPivot
}
 
enum  {
  HUD_ELEMENT_SIZE_8x8 , HUD_ELEMENT_SIZE_16x16 , HUD_ELEMENT_SIZE_24x24 , HUD_ELEMENT_SIZE_32x32 ,
  HUD_ELEMENT_SIZE_48x48 , HUD_ELEMENT_SIZE_64x64 , HUD_ELEMENT_SIZE_8x16 , HUD_ELEMENT_SIZE_16x8 ,
  HUD_ELEMENT_SIZE_16x24 , HUD_ELEMENT_SIZE_16x32 , HUD_ELEMENT_SIZE_64x32 , HUD_ELEMENT_SIZE_32x16 ,
  HUD_ELEMENT_SIZE_12x12 , HUD_ELEMENT_SIZE_48x24 , HUD_ELEMENT_SIZE_32x8 , HUD_ELEMENT_SIZE_24x8 ,
  HUD_ELEMENT_SIZE_64x16 , HUD_ELEMENT_SIZE_16x64 , HUD_ELEMENT_SIZE_192x32 , HUD_ELEMENT_SIZE_40x40 ,
  HUD_ELEMENT_SIZE_24x16 , HUD_ELEMENT_SIZE_32x40 , HUD_ELEMENT_SIZE_40x16 , HUD_ELEMENT_SIZE_40x24 ,
  HUD_ELEMENT_SIZE_32x24
}
 
enum  HudElementFlags {
  HUD_ELEMENT_FLAG_INITIALIZED = 0x00000001 , HUD_ELEMENT_FLAG_DISABLED = 0x00000002 , HUD_ELEMENT_FLAG_ANIMATION_FINISHED = 0x00000004 , HUD_ELEMENT_FLAG_8 = 0x00000008 ,
  HUD_ELEMENT_FLAG_SCALED = 0x00000010 , HUD_ELEMENT_FLAG_TRANSPARENT = 0x00000020 , HUD_ELEMENT_FLAG_FRONTUI = 0x00000040 , HUD_ELEMENT_FLAG_MANUAL_RENDER = 0x00000080 ,
  HUD_ELEMENT_FLAG_RESIZING = 0x00000100 , HUD_ELEMENT_FLAG_RESIZE_DIR = 0x00000200 , HUD_ELEMENT_FLAG_BATTLE = 0x00000400 , HUD_ELEMENT_FLAG_REPEATED = 0x00000800 ,
  HUD_ELEMENT_FLAG_FLIPX = 0x00001000 , HUD_ELEMENT_FLAG_FLIPY = 0x00002000 , HUD_ELEMENT_FLAG_FMT_CI4 = 0x00004000 , HUD_ELEMENT_FLAG_FILTER_TEX = 0x00008000 ,
  HUD_ELEMENT_FLAG_TRANSFORM = 0x00010000 , HUD_ELEMENT_FLAG_NO_FOLD = 0x00020000 , HUD_ELEMENT_FLAG_DELETE = 0x00040000 , HUD_ELEMENT_FLAG_FMT_IA8 = 0x00080000 ,
  HUD_ELEMENT_FLAG_CUSTOM_SIZE = 0x00100000 , HUD_ELEMENT_FLAG_INVISIBLE = 0x00200000 , HUD_ELEMENT_FLAG_MEMOFFSET = 0x00400000 , HUD_ELEMENT_FLAG_ANTIALIASING = 0x00800000 ,
  HUD_ELEMENT_VARIABLE_MASK = 0x0F000000 , HUD_ELEMENT_FLAG_HIDDEN = 0x10000000 , HUD_ELEMENT_FLAG_DROP_SHADOW = 0x20000000 , HUD_ELEMENT_FLAG_BATTLE_CAM = 0x40000000
}
 
enum  { HUD_ELEMENT_DRAW_FIRST_WITH_CLIPPING = 0 , HUD_ELEMENT_DRAW_NEXT = 1 , HUD_ELEMENT_DRAW_FIRST_WITHOUT_CLIPPING = 2 }
 

Functions

void hud_element_load_script (HudElement *hudElement, HudScript *anim)
 
void hud_element_draw_rect (HudElement *hudElement, s16 texSizeX, s16 texSizeY, s16 drawSizeX, s16 drawSizeY, s16 offsetX, s16 offsetY, s32 clamp, s32 dropShadow)
 
void hud_element_clear_cache (void)
 
void init_hud_element_list (void)
 
s32 hud_element_create (HudScript *anim)
 Creates a new HUD element and returns its ID.
 
void update_hud_elements (void)
 
s32 hud_element_update (HudElement *hudElement)
 
void render_hud_elements_backUI (void)
 
void render_hud_elements_frontUI (void)
 
void render_transformed_hud_elements (void)
 
void hud_element_draw_complex_hud_first (s32 hid)
 
void hud_element_draw_complex_hud_next (s32 hid)
 
void hud_element_draw_complex_battle_first (s32 hid)
 
void hud_element_draw_complex_battle_next (s32 hid)
 
void hud_element_draw_clipped (s32 id)
 
void hud_element_draw_next (s32 id)
 
void hud_element_draw_without_clipping (s32 id)
 
void hud_element_set_script (s32 id, HudScript *anim)
 
HudScripthud_element_get_script (s32 id)
 
HudElementget_hud_element (s32 id)
 
void hud_element_free (s32 id)
 
void hud_element_set_render_pos (s32 id, s32 x, s32 y)
 
void hud_element_get_render_pos (s32 id, s32 *x, s32 *y)
 
void hud_element_set_render_depth (s32 id, s32 z)
 
void hud_element_set_flags (s32 id, s32 flags)
 Turns on the given flags.
 
void hud_element_clear_flags (s32 id, s32 flags)
 Turns off the given flags.
 
void ALT_clear_hud_element_cache (void)
 
void hud_element_set_scale (s32 index, f32 scale)
 
void hud_element_use_preset_size (s32 id, s8 size)
 
s32 hud_element_get_variable (s32 id)
 
void hud_element_set_variable (s32 id, s32 arg1)
 
void hud_element_set_alpha (s32 id, s32 opacity)
 
void hud_element_set_tint (s32 id, s32 r, s32 g, s32 b)
 
void hud_element_create_transform_A (s32 id)
 
void hud_element_create_transform_B (s32 id)
 
void hud_element_create_transform_C (s32 id)
 
void hud_element_free_transform (s32 id)
 
void hud_element_set_transform_pos (s32 id, f32 x, f32 y, f32 z)
 
void hud_element_set_transform_scale (s32 id, f32 x, f32 y, f32 z)
 
void hud_element_set_transform_rotation (s32 id, f32 x, f32 y, f32 z)
 
void hud_element_set_transform_rotation_pivot (s32 id, s32 dx, s32 dy)
 
void copy_world_hud_element_ref_to_battle (s32 worldID, s32 battleID)
 
void hud_element_set_aux_cache (void *base, s32 size)
 
void create_standard_popup_menu (PopupMenu *)
 

Variables

HudScript HES_AnimatedHandPointer
 
HudScript HES_StatusCoin
 
HudScript HES_Refund
 
HudScript HES_MenuTimes
 
PartnerPopupProperties gPartnerPopupProperties [13]
 
HudScriptwDisabledPartnerHudScripts []
 
HudScriptwPartnerHudScripts []
 

Data Structure Documentation

◆ HudCacheEntry

struct HudCacheEntry
Data Fields
s32 id
u8 * data

◆ PopupMenu

struct PopupMenu
Data Fields
HudScript * ptrIcon[32]
char unk_80[0x4]
s32 nameMsg[32]
char unk_104[0x4]
s32 userIndex[32]
char unk_188[0x4]
b32 enabled[32]
char unk_20C[0x4]
s32 value[32]
char unk_290[0x4]
s32 descMsg[32]
char unk_314[0x4]
s32 popupType
s32 dipMode
s32 titleNumber
s32 numEntries
s32 initialPos
s16 result
char unk_32E[0x2]

◆ Shop

struct Shop
Data Fields
s16 flags
s16 numItems
s16 numSpecialPrices
char unk_06[0x2]
s32 curItemSlot
s32 selectedStoreItemSlot
ShopOwner * owner
ShopItemLocation * itemDataPositions
ShopItemData * staticInventory
ShopSellPriceData * staticPriceList
HudElemID costHID
s32 inventoryItemFlags
PopupMenu itemSelectMenu
s32 unk_358

◆ IconHudScriptPair

struct IconHudScriptPair
Data Fields
HudScript * enabled
HudScript * disabled

◆ VtxRect

struct VtxRect
Data Fields
Vtx vtx[4]

◆ HudTransform

struct HudTransform
Data Fields
s32 imgfxIdx
Vec3f pos
Vec3f rot
Vec3f scale
Vec2s pivot
VtxRect quadBuffers[3]

◆ HudElement

struct HudElement
Data Fields
u32 flags
HudScript * readPos
HudScript * anim
HudScript * loopStartPos
IMG_PTR imageAddr
PAL_PTR paletteAddr
s32 memOffset
HudTransform * hudTransform
Vec2f deltaSize
Vec2f dynamicSize
f32 uniformScale
s32 widthScale X10.
s32 heightScale X10.
s16 renderPosX
s16 renderPosY
Vec2b screenPosOffset
Vec3b worldPosOffset
s8 drawSizePreset
s8 tileSizePreset
s8 updateTimer
u8 sizeX
u8 sizeY
u8 opacity
Color_RGB8 tint
Vec2bu customImageSize
Vec2bu customDrawSize

◆ PartnerPopupProperties

struct PartnerPopupProperties
Data Fields
s32 nameMsg
s32 unk_04
s32 worldDescMsg
s32 battleDescMsg

Macro Definition Documentation

◆ HUD_ELEMENT_BATTLE_ID_MASK

#define HUD_ELEMENT_BATTLE_ID_MASK   0x800

Definition at line 7 of file hud_element.h.

Referenced by hud_element_create(), hud_element_free(), and hud_element_get_variable().

◆ HS_PTR

#define HS_PTR ( sym)    (s32)&sym

Definition at line 228 of file hud_element.h.

◆ hs_End

#define hs_End   HUD_ELEMENT_OP_End,

Definition at line 230 of file hud_element.h.

◆ hs_SetRGBA

#define hs_SetRGBA ( time,
image )   HUD_ELEMENT_OP_SetRGBA, time, (s32)image,

Definition at line 231 of file hud_element.h.

◆ hs_SetCI

#define hs_SetCI ( time,
name )   HUD_ELEMENT_OP_SetCI, time, (s32)name##_png, (s32)name##_pal,

Definition at line 232 of file hud_element.h.

◆ hs_SetCI_Explicit

#define hs_SetCI_Explicit ( time,
raster,
palette )   HUD_ELEMENT_OP_SetCI, time, (s32)raster##_png, (s32)palette##_pal,

Definition at line 233 of file hud_element.h.

◆ hs_Restart

#define hs_Restart   HUD_ELEMENT_OP_Restart,

Definition at line 234 of file hud_element.h.

◆ hs_Loop

#define hs_Loop   HUD_ELEMENT_OP_Loop,

Definition at line 235 of file hud_element.h.

◆ hs_SetTileSize

#define hs_SetTileSize ( size)    HUD_ELEMENT_OP_SetTileSize, size,

Definition at line 236 of file hud_element.h.

◆ hs_SetSizesAutoScale

#define hs_SetSizesAutoScale ( size1,
size2 )   HUD_ELEMENT_OP_SetSizesAutoScale, size1, size2,

Definition at line 237 of file hud_element.h.

◆ hs_SetSizesFixedScale

#define hs_SetSizesFixedScale ( size1,
size2 )   HUD_ELEMENT_OP_SetSizesFixedScale, size1, size2,

Definition at line 238 of file hud_element.h.

◆ hs_SetVisible

#define hs_SetVisible   HUD_ELEMENT_OP_SetVisible,

Definition at line 239 of file hud_element.h.

◆ hs_SetHidden

#define hs_SetHidden   HUD_ELEMENT_OP_SetHidden,

Definition at line 240 of file hud_element.h.

◆ hs_AddTexelOffsetX

#define hs_AddTexelOffsetX ( x)    HUD_ELEMENT_OP_AddTexelOffsetX, x,

Definition at line 241 of file hud_element.h.

◆ hs_AddTexelOffsetY

#define hs_AddTexelOffsetY ( y)    HUD_ELEMENT_OP_AddTexelOffsetY, y,

Definition at line 242 of file hud_element.h.

◆ hs_SetTexelOffset

#define hs_SetTexelOffset ( x,
y )   HUD_ELEMENT_OP_SetTexelOffset, x, y,

Definition at line 243 of file hud_element.h.

◆ hs_SetIcon

#define hs_SetIcon ( time,
icon )   HUD_ELEMENT_OP_SetImage, time, ICON_##icon##_raster, ICON_##icon##_palette, 0, 0,

Definition at line 244 of file hud_element.h.

◆ hs_SetScale

#define hs_SetScale ( scale)    HUD_ELEMENT_OP_SetScale, (s32)(scale * 65536.0f),

Definition at line 245 of file hud_element.h.

◆ hs_SetAlpha

#define hs_SetAlpha ( alpha)    HUD_ELEMENT_OP_SetAlpha, alpha,

Definition at line 246 of file hud_element.h.

◆ hs_RandomDelay

#define hs_RandomDelay ( arg0,
arg1 )   HUD_ELEMENT_OP_RandomDelay, arg0, arg1,

Definition at line 247 of file hud_element.h.

◆ hs_Delete

#define hs_Delete   HUD_ELEMENT_OP_Delete,

Definition at line 248 of file hud_element.h.

◆ hs_UseIA8

#define hs_UseIA8   HUD_ELEMENT_OP_UseIA8,

Definition at line 249 of file hud_element.h.

◆ hs_SetCustomSize

#define hs_SetCustomSize ( arg0,
arg1 )   HUD_ELEMENT_OP_SetCustomSize, arg0, arg1,

Definition at line 250 of file hud_element.h.

◆ hs_RandomRestart

#define hs_RandomRestart ( max,
cutoff )   HUD_ELEMENT_OP_RandomRestart, max, cutoff,

Restarts the loop if cutoff < rand_int(max)

Definition at line 253 of file hud_element.h.

◆ hs_SetVariable

#define hs_SetVariable ( arg0)    HUD_ELEMENT_OP_SetVariable, arg0,

Definition at line 255 of file hud_element.h.

◆ hs_RandomBranch

#define hs_RandomBranch ( args...)    HUD_ELEMENT_OP_RandomBranch, (sizeof((s32[]){args})/sizeof(s32)), args,

Definition at line 256 of file hud_element.h.

◆ hs_SetFlags

#define hs_SetFlags ( arg0)    HUD_ELEMENT_OP_SetFlags, arg0,

Definition at line 257 of file hud_element.h.

◆ hs_ClearFlags

#define hs_ClearFlags ( arg0)    HUD_ELEMENT_OP_ClearFlags, arg0,

Definition at line 258 of file hud_element.h.

◆ hs_PlaySound

#define hs_PlaySound ( arg0)    HUD_ELEMENT_OP_PlaySound, arg0,

Definition at line 259 of file hud_element.h.

◆ hs_SetPivot

#define hs_SetPivot ( arg0,
arg1 )   HUD_ELEMENT_OP_SetPivot, arg0, arg1,

Definition at line 260 of file hud_element.h.

◆ HES_TEMPLATE_CI_ENUM_SIZE

#define HES_TEMPLATE_CI_ENUM_SIZE ( name,
sizeX,
sizeY )
Value:

Basic HudScript used for static CI images, setting size with hs_SetTileSize.

Definition at line 263 of file hud_element.h.

263#define HES_TEMPLATE_CI_ENUM_SIZE(name, sizeX, sizeY) \
264 { \
265 hs_SetVisible \
266 hs_SetTileSize(HUD_ELEMENT_SIZE_##sizeX##x##sizeY) \
267 hs_Loop \
268 hs_SetCI(60, name) \
269 hs_Restart \
270 hs_End \
271 }

◆ HES_TEMPLATE_CI_CUSTOM_SIZE

#define HES_TEMPLATE_CI_CUSTOM_SIZE ( name,
sizeX,
sizeY )
Value:

Basic HudScript used for static CI images, setting size with hs_SetCustomSize.

Definition at line 274 of file hud_element.h.

274#define HES_TEMPLATE_CI_CUSTOM_SIZE(name, sizeX, sizeY) \
275 { \
276 hs_SetVisible \
277 hs_SetCustomSize(sizeX, sizeY) \
278 hs_Loop \
279 hs_SetCI(60, name) \
280 hs_Restart \
281 hs_End \
282 }

◆ HES_TEMPLATE_ITEM

#define HES_TEMPLATE_ITEM ( icon)
Value:

Definition at line 286 of file hud_element.h.

286#define HES_TEMPLATE_ITEM(icon) \
287 { \
288 hs_SetVisible \
289 hs_SetTileSize(HUD_ELEMENT_SIZE_32x32) \
290 hs_Loop \
291 hs_SetIcon(60, icon) \
292 hs_Restart \
293 hs_End \
294 }

◆ HES_TEMPLATE_ITEM_HEART_PIECE

#define HES_TEMPLATE_ITEM_HEART_PIECE ( )
Value:

Definition at line 296 of file hud_element.h.

296#define HES_TEMPLATE_ITEM_HEART_PIECE() \
297 { \
298 hs_SetVisible \
299 hs_SetTileSize(HUD_ELEMENT_SIZE_24x24) \
300 hs_Loop \
301 hs_SetIcon(60, anim_heart_piece) \
302 hs_Restart \
303 hs_End \
304 }

◆ HES_TEMPLATE_ITEM_HEART

#define HES_TEMPLATE_ITEM_HEART ( )
Value:

Definition at line 306 of file hud_element.h.

306#define HES_TEMPLATE_ITEM_HEART() \
307 { \
308 hs_SetVisible \
309 hs_SetTileSize(HUD_ELEMENT_SIZE_24x24) \
310 hs_Loop \
311 hs_SetIcon(10, anim_heart_0) \
312 hs_SetIcon(6, anim_heart_1) \
313 hs_Restart \
314 hs_End \
315 }

◆ HES_TEMPLATE_ITEM_STAR_POINT

#define HES_TEMPLATE_ITEM_STAR_POINT ( )
Value:

Definition at line 317 of file hud_element.h.

317#define HES_TEMPLATE_ITEM_STAR_POINT() \
318 { \
319 hs_SetVisible \
320 hs_SetTileSize(HUD_ELEMENT_SIZE_24x24) \
321 hs_Loop \
322 hs_SetIcon(2, anim_sp_0) \
323 hs_SetIcon(2, anim_sp_1) \
324 hs_SetIcon(2, anim_sp_2) \
325 hs_SetIcon(2, anim_sp_3) \
326 hs_SetIcon(2, anim_sp_4) \
327 hs_SetIcon(2, anim_sp_5) \
328 hs_SetIcon(2, anim_sp_6) \
329 hs_SetIcon(2, anim_sp_7) \
330 hs_Restart \
331 hs_End \
332 }

◆ HES_TEMPLATE_ITEM_HEART_POINT

#define HES_TEMPLATE_ITEM_HEART_POINT ( )
Value:

Definition at line 334 of file hud_element.h.

334#define HES_TEMPLATE_ITEM_HEART_POINT() \
335 { \
336 hs_SetVisible \
337 hs_SetTileSize(HUD_ELEMENT_SIZE_32x32) \
338 hs_Loop \
339 hs_SetIcon(8, anim_hp_0) \
340 hs_SetIcon(5, anim_hp_1) \
341 hs_SetIcon(8, anim_hp_2) \
342 hs_Restart \
343 hs_End \
344 }

◆ HES_TEMPLATE_ITEM_FLOWER_POINT

#define HES_TEMPLATE_ITEM_FLOWER_POINT ( )
Value:

Definition at line 346 of file hud_element.h.

346#define HES_TEMPLATE_ITEM_FLOWER_POINT() \
347 { \
348 hs_SetVisible \
349 hs_SetTileSize(HUD_ELEMENT_SIZE_32x32) \
350 hs_Loop \
351 hs_SetIcon(8, anim_fp_0) \
352 hs_SetIcon(5, anim_fp_1) \
353 hs_SetIcon(8, anim_fp_2) \
354 hs_Restart \
355 hs_End \
356 }

◆ HES_TEMPLATE_ITEM_STAR_PIECE

#define HES_TEMPLATE_ITEM_STAR_PIECE ( )
Value:

Definition at line 358 of file hud_element.h.

358#define HES_TEMPLATE_ITEM_STAR_PIECE() \
359 { \
360 hs_SetVisible \
361 hs_SetTileSize(HUD_ELEMENT_SIZE_32x32) \
362 hs_Loop \
363 hs_SetIcon(12, anim_star_piece_0) \
364 hs_SetIcon(4, anim_star_piece_1) \
365 hs_SetIcon(12, anim_star_piece_2) \
366 hs_SetIcon(4, anim_star_piece_1) \
367 hs_Restart \
368 hs_End \
369 }

◆ HES_TEMPLATE_ITEM_COIN

#define HES_TEMPLATE_ITEM_COIN ( )
Value:

Definition at line 371 of file hud_element.h.

371#define HES_TEMPLATE_ITEM_COIN() \
372 { \
373 hs_SetVisible \
374 hs_SetTileSize(HUD_ELEMENT_SIZE_24x24) \
375 hs_Loop \
376 hs_SetVariable(0) \
377 hs_SetIcon(3, anim_coin_0) \
378 hs_SetIcon(3, anim_coin_1) \
379 hs_SetIcon(3, anim_coin_4) \
380 hs_SetIcon(3, anim_coin_5) \
381 hs_SetIcon(3, anim_coin_6) \
382 hs_SetIcon(3, anim_coin_7) \
383 hs_SetIcon(3, anim_coin_8) \
384 hs_SetIcon(3, anim_coin_9) \
385 hs_RandomRestart(100, 70) \
386 hs_SetVariable(1) \
387 hs_SetIcon(3, anim_coin_0) \
388 hs_SetIcon(2, anim_coin_1) \
389 hs_SetIcon(1, anim_coin_2) \
390 hs_SetIcon(1, anim_coin_3) \
391 hs_SetIcon(2, anim_coin_4) \
392 hs_SetIcon(3, anim_coin_5) \
393 hs_SetIcon(3, anim_coin_6) \
394 hs_SetIcon(3, anim_coin_7) \
395 hs_SetIcon(3, anim_coin_8) \
396 hs_SetIcon(3, anim_coin_9) \
397 hs_Restart \
398 hs_End \
399 }

◆ HES_COIN_SPARKLE

#define HES_COIN_SPARKLE ( dx,
dy )
Value:

Definition at line 401 of file hud_element.h.

401#define HES_COIN_SPARKLE(dx, dy) \
402 { \
403 hs_SetTexelOffset(dx, dy) \
404 hs_SetIcon(1, anim_shimmer_0) \
405 hs_SetIcon(1, anim_shimmer_1) \
406 hs_SetIcon(1, anim_shimmer_2) \
407 hs_SetIcon(2, anim_shimmer_6) \
408 hs_SetIcon(1, anim_shimmer_2) \
409 hs_SetIcon(1, anim_shimmer_3) \
410 hs_SetIcon(1, anim_shimmer_6) \
411 hs_SetIcon(1, anim_shimmer_4) \
412 hs_SetIcon(1, anim_shimmer_6) \
413 hs_SetIcon(1, anim_shimmer_5) \
414 hs_SetIcon(16, anim_shimmer_6) \
415 hs_End \
416 }

Typedef Documentation

◆ HudScript

typedef s32 HudScript[]

Definition at line 9 of file hud_element.h.

◆ HudElementList

typedef HudElement* HudElementList[320]

Definition at line 205 of file hud_element.h.

Enumeration Type Documentation

◆ anonymous enum

Enumerator
HUD_ELEMENT_OP_End 
HUD_ELEMENT_OP_SetRGBA 
HUD_ELEMENT_OP_SetCI 
HUD_ELEMENT_OP_Restart 
HUD_ELEMENT_OP_Loop 
HUD_ELEMENT_OP_SetTileSize 
HUD_ELEMENT_OP_SetSizesAutoScale 
HUD_ELEMENT_OP_SetSizesFixedScale 
HUD_ELEMENT_OP_SetVisible 
HUD_ELEMENT_OP_SetHidden 
HUD_ELEMENT_OP_AddTexelOffsetX 
HUD_ELEMENT_OP_AddTexelOffsetY 
HUD_ELEMENT_OP_SetTexelOffset 
HUD_ELEMENT_OP_SetImage 
HUD_ELEMENT_OP_SetScale 
HUD_ELEMENT_OP_SetAlpha 
HUD_ELEMENT_OP_RandomDelay 
HUD_ELEMENT_OP_Delete 
HUD_ELEMENT_OP_UseIA8 
HUD_ELEMENT_OP_SetCustomSize 
HUD_ELEMENT_OP_RandomRestart 
HUD_ELEMENT_OP_SetVariable 
HUD_ELEMENT_OP_op_16 
HUD_ELEMENT_OP_RandomBranch 
HUD_ELEMENT_OP_SetFlags 
HUD_ELEMENT_OP_ClearFlags 
HUD_ELEMENT_OP_PlaySound 
HUD_ELEMENT_OP_SetPivot 

Definition at line 11 of file hud_element.h.

11 {
40};
@ HUD_ELEMENT_OP_SetCI
Definition hud_element.h:14
@ HUD_ELEMENT_OP_Restart
Definition hud_element.h:15
@ HUD_ELEMENT_OP_End
Definition hud_element.h:12
@ HUD_ELEMENT_OP_SetPivot
Definition hud_element.h:39
@ HUD_ELEMENT_OP_op_16
Definition hud_element.h:34
@ HUD_ELEMENT_OP_SetVisible
Definition hud_element.h:20
@ HUD_ELEMENT_OP_AddTexelOffsetY
Definition hud_element.h:23
@ HUD_ELEMENT_OP_SetScale
Definition hud_element.h:26
@ HUD_ELEMENT_OP_SetImage
Definition hud_element.h:25
@ HUD_ELEMENT_OP_RandomBranch
Definition hud_element.h:35
@ HUD_ELEMENT_OP_PlaySound
Definition hud_element.h:38
@ HUD_ELEMENT_OP_SetSizesAutoScale
Definition hud_element.h:18
@ HUD_ELEMENT_OP_SetTexelOffset
Definition hud_element.h:24
@ HUD_ELEMENT_OP_RandomDelay
Definition hud_element.h:28
@ HUD_ELEMENT_OP_Loop
Definition hud_element.h:16
@ HUD_ELEMENT_OP_SetFlags
Definition hud_element.h:36
@ HUD_ELEMENT_OP_SetAlpha
Definition hud_element.h:27
@ HUD_ELEMENT_OP_SetTileSize
Definition hud_element.h:17
@ HUD_ELEMENT_OP_SetSizesFixedScale
Definition hud_element.h:19
@ HUD_ELEMENT_OP_RandomRestart
Definition hud_element.h:32
@ HUD_ELEMENT_OP_SetCustomSize
Definition hud_element.h:31
@ HUD_ELEMENT_OP_AddTexelOffsetX
Definition hud_element.h:22
@ HUD_ELEMENT_OP_SetRGBA
Definition hud_element.h:13
@ HUD_ELEMENT_OP_SetVariable
Definition hud_element.h:33
@ HUD_ELEMENT_OP_UseIA8
Definition hud_element.h:30
@ HUD_ELEMENT_OP_ClearFlags
Definition hud_element.h:37
@ HUD_ELEMENT_OP_SetHidden
Definition hud_element.h:21
@ HUD_ELEMENT_OP_Delete
Definition hud_element.h:29

◆ anonymous enum

Enumerator
HUD_ELEMENT_SIZE_8x8 
HUD_ELEMENT_SIZE_16x16 
HUD_ELEMENT_SIZE_24x24 
HUD_ELEMENT_SIZE_32x32 
HUD_ELEMENT_SIZE_48x48 
HUD_ELEMENT_SIZE_64x64 
HUD_ELEMENT_SIZE_8x16 
HUD_ELEMENT_SIZE_16x8 
HUD_ELEMENT_SIZE_16x24 
HUD_ELEMENT_SIZE_16x32 
HUD_ELEMENT_SIZE_64x32 
HUD_ELEMENT_SIZE_32x16 
HUD_ELEMENT_SIZE_12x12 
HUD_ELEMENT_SIZE_48x24 
HUD_ELEMENT_SIZE_32x8 
HUD_ELEMENT_SIZE_24x8 
HUD_ELEMENT_SIZE_64x16 
HUD_ELEMENT_SIZE_16x64 
HUD_ELEMENT_SIZE_192x32 
HUD_ELEMENT_SIZE_40x40 
HUD_ELEMENT_SIZE_24x16 
HUD_ELEMENT_SIZE_32x40 
HUD_ELEMENT_SIZE_40x16 
HUD_ELEMENT_SIZE_40x24 
HUD_ELEMENT_SIZE_32x24 

Definition at line 42 of file hud_element.h.

42 {
68};
@ HUD_ELEMENT_SIZE_192x32
Definition hud_element.h:61
@ HUD_ELEMENT_SIZE_32x16
Definition hud_element.h:54
@ HUD_ELEMENT_SIZE_64x64
Definition hud_element.h:48
@ HUD_ELEMENT_SIZE_40x40
Definition hud_element.h:62
@ HUD_ELEMENT_SIZE_40x24
Definition hud_element.h:66
@ HUD_ELEMENT_SIZE_32x24
Definition hud_element.h:67
@ HUD_ELEMENT_SIZE_12x12
Definition hud_element.h:55
@ HUD_ELEMENT_SIZE_64x16
Definition hud_element.h:59
@ HUD_ELEMENT_SIZE_24x8
Definition hud_element.h:58
@ HUD_ELEMENT_SIZE_40x16
Definition hud_element.h:65
@ HUD_ELEMENT_SIZE_32x40
Definition hud_element.h:64
@ HUD_ELEMENT_SIZE_16x24
Definition hud_element.h:51
@ HUD_ELEMENT_SIZE_16x16
Definition hud_element.h:44
@ HUD_ELEMENT_SIZE_64x32
Definition hud_element.h:53
@ HUD_ELEMENT_SIZE_8x16
Definition hud_element.h:49
@ HUD_ELEMENT_SIZE_32x8
Definition hud_element.h:57
@ HUD_ELEMENT_SIZE_48x24
Definition hud_element.h:56
@ HUD_ELEMENT_SIZE_16x32
Definition hud_element.h:52
@ HUD_ELEMENT_SIZE_48x48
Definition hud_element.h:47
@ HUD_ELEMENT_SIZE_16x8
Definition hud_element.h:50
@ HUD_ELEMENT_SIZE_16x64
Definition hud_element.h:60
@ HUD_ELEMENT_SIZE_8x8
Definition hud_element.h:43
@ HUD_ELEMENT_SIZE_24x16
Definition hud_element.h:63

◆ HudElementFlags

Enumerator
HUD_ELEMENT_FLAG_INITIALIZED 
HUD_ELEMENT_FLAG_DISABLED 
HUD_ELEMENT_FLAG_ANIMATION_FINISHED 
HUD_ELEMENT_FLAG_8 
HUD_ELEMENT_FLAG_SCALED 
HUD_ELEMENT_FLAG_TRANSPARENT 
HUD_ELEMENT_FLAG_FRONTUI 
HUD_ELEMENT_FLAG_MANUAL_RENDER 
HUD_ELEMENT_FLAG_RESIZING 
HUD_ELEMENT_FLAG_RESIZE_DIR 
HUD_ELEMENT_FLAG_BATTLE 
HUD_ELEMENT_FLAG_REPEATED 
HUD_ELEMENT_FLAG_FLIPX 
HUD_ELEMENT_FLAG_FLIPY 
HUD_ELEMENT_FLAG_FMT_CI4 
HUD_ELEMENT_FLAG_FILTER_TEX 
HUD_ELEMENT_FLAG_TRANSFORM 
HUD_ELEMENT_FLAG_NO_FOLD 
HUD_ELEMENT_FLAG_DELETE 
HUD_ELEMENT_FLAG_FMT_IA8 
HUD_ELEMENT_FLAG_CUSTOM_SIZE 
HUD_ELEMENT_FLAG_INVISIBLE 
HUD_ELEMENT_FLAG_MEMOFFSET 
HUD_ELEMENT_FLAG_ANTIALIASING 
HUD_ELEMENT_VARIABLE_MASK 
HUD_ELEMENT_FLAG_HIDDEN 
HUD_ELEMENT_FLAG_DROP_SHADOW 
HUD_ELEMENT_FLAG_BATTLE_CAM 

Definition at line 70 of file hud_element.h.

70 {
72 HUD_ELEMENT_FLAG_DISABLED = 0x00000002,
74 HUD_ELEMENT_FLAG_8 = 0x00000008, // unused
75 HUD_ELEMENT_FLAG_SCALED = 0x00000010,
77 HUD_ELEMENT_FLAG_FRONTUI = 0x00000040,
78 HUD_ELEMENT_FLAG_MANUAL_RENDER = 0x00000080, // user has responsibility for rendering
79 HUD_ELEMENT_FLAG_RESIZING = 0x00000100,
80 HUD_ELEMENT_FLAG_RESIZE_DIR = 0x00000200,
81 HUD_ELEMENT_FLAG_BATTLE = 0x00000400,
82 HUD_ELEMENT_FLAG_REPEATED = 0x00000800,
83 HUD_ELEMENT_FLAG_FLIPX = 0x00001000,
84 HUD_ELEMENT_FLAG_FLIPY = 0x00002000,
85 HUD_ELEMENT_FLAG_FMT_CI4 = 0x00004000,
86 HUD_ELEMENT_FLAG_FILTER_TEX = 0x00008000,
87 HUD_ELEMENT_FLAG_TRANSFORM = 0x00010000,
88 HUD_ELEMENT_FLAG_NO_FOLD = 0x00020000,
89 HUD_ELEMENT_FLAG_DELETE = 0x00040000,
90 HUD_ELEMENT_FLAG_FMT_IA8 = 0x00080000,
92 HUD_ELEMENT_FLAG_INVISIBLE = 0x00200000, // do not render
93 HUD_ELEMENT_FLAG_MEMOFFSET = 0x00400000,
95 HUD_ELEMENT_VARIABLE_MASK = 0x0F000000, // users and scripts can read/write a value at this nibble
96 HUD_ELEMENT_FLAG_HIDDEN = 0x10000000, // same effect as HUD_ELEMENT_FLAG_INVISIBLE, allows two independent controls over visiblity
98 HUD_ELEMENT_FLAG_BATTLE_CAM = 0x40000000,
99};
@ HUD_ELEMENT_FLAG_ANTIALIASING
Definition hud_element.h:94
@ HUD_ELEMENT_FLAG_DELETE
Definition hud_element.h:89
@ HUD_ELEMENT_FLAG_DISABLED
Definition hud_element.h:72
@ HUD_ELEMENT_FLAG_INVISIBLE
Definition hud_element.h:92
@ HUD_ELEMENT_FLAG_SCALED
Definition hud_element.h:75
@ HUD_ELEMENT_FLAG_FLIPX
Definition hud_element.h:83
@ HUD_ELEMENT_FLAG_MEMOFFSET
Definition hud_element.h:93
@ HUD_ELEMENT_FLAG_FMT_IA8
Definition hud_element.h:90
@ HUD_ELEMENT_FLAG_BATTLE_CAM
Definition hud_element.h:98
@ HUD_ELEMENT_FLAG_CUSTOM_SIZE
Definition hud_element.h:91
@ HUD_ELEMENT_VARIABLE_MASK
Definition hud_element.h:95
@ HUD_ELEMENT_FLAG_8
Definition hud_element.h:74
@ HUD_ELEMENT_FLAG_REPEATED
Definition hud_element.h:82
@ HUD_ELEMENT_FLAG_INITIALIZED
Definition hud_element.h:71
@ HUD_ELEMENT_FLAG_FLIPY
Definition hud_element.h:84
@ HUD_ELEMENT_FLAG_HIDDEN
Definition hud_element.h:96
@ HUD_ELEMENT_FLAG_DROP_SHADOW
Definition hud_element.h:97
@ HUD_ELEMENT_FLAG_RESIZING
Definition hud_element.h:79
@ HUD_ELEMENT_FLAG_MANUAL_RENDER
Definition hud_element.h:78
@ HUD_ELEMENT_FLAG_NO_FOLD
Definition hud_element.h:88
@ HUD_ELEMENT_FLAG_RESIZE_DIR
Definition hud_element.h:80
@ HUD_ELEMENT_FLAG_ANIMATION_FINISHED
Definition hud_element.h:73
@ HUD_ELEMENT_FLAG_BATTLE
Definition hud_element.h:81
@ HUD_ELEMENT_FLAG_FRONTUI
Definition hud_element.h:77
@ HUD_ELEMENT_FLAG_FMT_CI4
Definition hud_element.h:85
@ HUD_ELEMENT_FLAG_TRANSFORM
Definition hud_element.h:87
@ HUD_ELEMENT_FLAG_FILTER_TEX
Definition hud_element.h:86
@ HUD_ELEMENT_FLAG_TRANSPARENT
Definition hud_element.h:76

◆ anonymous enum

Enumerator
HUD_ELEMENT_DRAW_FIRST_WITH_CLIPPING 
HUD_ELEMENT_DRAW_NEXT 
HUD_ELEMENT_DRAW_FIRST_WITHOUT_CLIPPING 

Definition at line 101 of file hud_element.h.

101 {
105};
@ HUD_ELEMENT_DRAW_NEXT
@ HUD_ELEMENT_DRAW_FIRST_WITH_CLIPPING
@ HUD_ELEMENT_DRAW_FIRST_WITHOUT_CLIPPING

Function Documentation

◆ hud_element_load_script()

void hud_element_load_script ( HudElement * hudElement,
HudScript * anim )

Definition at line 123 of file hud_element.c.

123 {
124 s32* pos = (s32*)anim;
125 s32 raster;
126 s32 palette;
127 s32 preset;
129 s32 i;
130 s32 capacity;
131
132 if (pos == NULL) {
133 return;
134 }
135
136 preset = 0;
137
138 while (TRUE) {
139 switch (*pos++) {
141 return;
143 pos += 3;
144 break;
146 preset = *pos++;
147 hudElement->drawSizePreset = hudElement->tileSizePreset = preset;
148 break;
151 preset = *pos;
152 pos += 2;
153 hudElement->drawSizePreset = hudElement->tileSizePreset = preset;
154 break;
156 hudElement->customDrawSize.x = hudElement->customImageSize.x = *pos++;
157 hudElement->customDrawSize.y = hudElement->customImageSize.y = *pos++;
159 break;
169 pos++;
170 break;
176 pos += 2;
177 break;
179 pos++;
180 raster = *pos++;
181 palette = *pos++;
182
183 i = 0;
185 while (TRUE) {
186 if (entry->id == -1) {
187 entry->id = raster;
190 capacity = HudElemCacheCapacity;
191 } else {
192 capacity = HudElemCacheCapacity / 2;
193 }
194 ASSERT(capacity > *gHudElementCacheSize + HudElemSizes[preset].size);
198 *pos = i;
199 } else {
200 *pos = (u16)(*pos) | (i << 16);
201 }
202 i++;
203 break;
204 } else if (entry->id == raster) {
206 *pos = i;
207 } else {
208 *pos = (u16)(*pos) | (i << 16);
209 }
210 break;
211 }
212 entry++;
213 i++;
214 }
215
216 pos++;
218
220 i = 0;
221 while (TRUE) {
222 if (entry->id == -1) {
223 entry->id = palette;
226 capacity = HudElemCacheCapacity;
227 } else {
228 capacity = HudElemCacheCapacity / 2;
229 }
230 ASSERT(capacity > *gHudElementCacheSize + 32);
231 nuPiReadRom((s32)icon_ROM_START + palette, entry->data, 32);
234 *pos = i;
235 } else {
236 *pos = (u16)(*pos) | (i << 16);
237 }
238 i++;
239 break;
240 } else if (entry->id == palette) {
242 *pos = i;
243 } else {
244 *pos = (u16)(*pos) | (i << 16);
245 }
246 break;
247 }
248 entry++;
249 i++;
250 }
251
252 pos++;
254 break;
255 }
256 }
257}
Vec3s pos
Definition demo_api.c:17
#define ASSERT(condition)
@ CONTEXT_WORLD
Definition enums.h:3562
u8 * gHudElementCacheBuffer
HudCacheEntry * gHudElementCacheTablePalette
HudElementSize HudElemSizes[]
Definition hud_element.c:21
s32 * gHudElementCacheSize
HudCacheEntry * gHudElementCacheTableRaster
#define MAX_HUD_CACHE_ENTRIES
Definition hud_element.c:6
s32 HudElemCacheCapacity
Definition hud_element.c:15
GameStatus * gGameStatusPtr
Definition main_loop.c:31

Referenced by hud_element_create(), hud_element_set_script(), and hud_element_update().

◆ hud_element_draw_rect()

void hud_element_draw_rect ( HudElement * hudElement,
s16 texSizeX,
s16 texSizeY,
s16 drawSizeX,
s16 drawSizeY,
s16 offsetX,
s16 offsetY,
s32 clamp,
s32 dropShadow )
Parameters
clamp0 = repeat; 1 = clamp
dropShadowWhether to render a drop shadow or not

Definition at line 260 of file hud_element.c.

261 {
262 s32 flipX, flipY;
263 s32 fmt;
264 s32 widthScale, heightScale;
267 s32 uls, ult, lrs, lrt;
268 s32 uly, lry, ulx, lrx;
269 s32 masks, maskt;
271 IMG_PTR imageAddr;
272 PAL_PTR paletteAddr;
273 s16 baseX, baseY;
275 u16 renderPosX, renderPosY;
276
277 imageAddr = hudElement->imageAddr;
278 paletteAddr = hudElement->paletteAddr;
279
280 screenPosOffsetScaledX = hudElement->screenPosOffset.x * 1024;
281 screenPosOffsetScaledY = hudElement->screenPosOffset.y * 1024;
282 widthScale = hudElement->widthScale;
283 screenPosOffsetScaledX /= widthScale;
284 heightScale = hudElement->heightScale;
285 screenPosOffsetScaledY /= heightScale;
286
287 renderPosX = hudElement->worldPosOffset.x;
288 renderPosY = hudElement->worldPosOffset.y;
289 renderPosX += hudElement->renderPosX + screenPosOffsetScaledX;
290 renderPosY += hudElement->renderPosY + screenPosOffsetScaledY;
291
292 baseX = offsetX + renderPosX;
293 baseY = offsetY + renderPosY;
294
295 if (dropShadow) {
296 baseX += 2;
297 baseY += 2;
298 }
299
300 flipX = (hudElement->flags & HUD_ELEMENT_FLAG_FLIPX) != 0;
301 flipY = (hudElement->flags & HUD_ELEMENT_FLAG_FLIPY) != 0;
302
303 fmt = 0; // RGBA
305 fmt = 1; // CI
306 }
308 fmt = 2; // IA
309 }
310
311 masks = 6;
312 maskt = 5;
313 if (!(hudElement->flags & HUD_ELEMENT_FLAG_SCALED)) {
314 switch (drawSizeX) {
315 case 8:
316 masks = 3;
317 break;
318 case 16:
319 masks = 4;
320 break;
321 case 32:
322 masks = 5;
323 break;
324 }
325
326 switch (drawSizeY) {
327 case 8:
328 maskt = 3;
329 break;
330 case 16:
331 maskt = 4;
332 break;
333 case 32:
334 maskt = 5;
335 break;
336 }
337 }
338
339 switch (fmt) {
340 case 0:
343 break;
344 case 1:
348 } else {
350 }
351 } else {
354 } else {
356 }
357 }
359 gDPLoadTLUT_pal16(gMainGfxPos++, 0, paletteAddr);
360 break;
361 case 2:
364 break;
365 }
366
369 } else {
371 }
372
373 ult = 0;
375 uly = baseY;
376 while (TRUE) {
377 lry = uly + 1024.0 / heightScale * 32.0;
378 lrt = ult + 31;
379 if (flipY) {
381 } else {
382 texStartY = 0;
383 }
384
386 break;
387 }
388
389 if (lry >= SCREEN_HEIGHT) {
390 lrt = SCREEN_HEIGHT - baseY - 1;
391 lry = SCREEN_HEIGHT;
393 }
394
395 if (lrt + 1 >= texSizeY) {
396 lrt = texSizeY - 1;
397 if (texSizeY > 16) {
398 lry = baseY + drawSizeY - 1;
399 } else {
400 lry = baseY + drawSizeY;
401 }
403 }
404
406 uls = 0;
407 ulx = baseX;
408 while (TRUE) {
409 lrx = ulx + 1024.0 / widthScale * 64.0;
410 lrs = uls + 63;
411 if (flipX) {
413 } else {
414 texStartX = 0;
415 }
416
418 break;
419 }
420
421 if (lrx >= SCREEN_WIDTH) {
422 lrs = SCREEN_WIDTH - baseX - 1;
423 lrx = SCREEN_WIDTH;
425 }
426
427 if (lrs + 1 >= texSizeX) {
428 lrs = texSizeX - 1;
429 if (texSizeX > 16) {
430 lrx = baseX + drawSizeX - 1;
431 } else {
432 lrx = baseX + drawSizeX;
433 }
435 }
436
438
439 if (!isLastTileX && !isLastTileY) {
440 tileMode = 0; // middle tile
441 }
442 if (isLastTileX && !isLastTileY) {
443 tileMode = 1; // horizontal edge tile
444 }
445 if (!isLastTileX && isLastTileY) {
446 tileMode = 2; // vertical edge tile
447 }
448 if (isLastTileX && isLastTileY) {
449 tileMode = 3; // corner tile
450 }
451
452 switch (fmt) {
453 case 0:
456 } else {
458 }
459
461 gDPSetPrimColor(gMainGfxPos++, 0, 0, 0, 0, 0, hudElement->opacity);
462 }
463
464 if (!flipX && !flipY) {
467 } else {
470 }
471 break;
472 case 1:
473 if (!dropShadow) {
476 } else {
478 }
479
481 gDPSetPrimColor(gMainGfxPos++, 0, 0, hudElement->tint.r, hudElement->tint.g, hudElement->tint.b, hudElement->opacity);
482 } else {
483 gDPSetPrimColor(gMainGfxPos++, 0, 0, hudElement->tint.r, hudElement->tint.g, hudElement->tint.b, 255);
484 }
485 } else {
488 gDPSetPrimColor(gMainGfxPos++, 0, 0, 40, 40, 40, 72);
489 }
490
491 if (!flipX && !flipY) {
492 if (!clamp) {
495 } else {
496 switch (tileMode) {
497 case 0:
500 break;
501 case 1:
504 break;
505 case 2:
508 break;
509 case 3:
512 break;
513 }
514 }
515 } else {
518 }
519 break;
520 case 2:
522 gDPSetPrimColor(gMainGfxPos++, 0, 0, hudElement->tint.r, hudElement->tint.g, hudElement->tint.b, hudElement->opacity);
523
524 if (!flipX && !flipY) {
525 if (!clamp) {
526 switch (tileMode) {
527 case 0:
530 break;
531 case 1:
534 break;
535 case 2:
538 break;
539 case 3:
542 break;
543 }
544 } else {
547 }
548 } else {
551 }
552 break;
553 }
554
556 gSPScisTextureRectangle(gMainGfxPos++, ulx * 4, uly * 4, lrx * 4, lry * 4, 0, texStartX * 32 + 16, texStartY * 32 + 16, widthScale, heightScale);
557 } else {
558 gSPScisTextureRectangle(gMainGfxPos++, ulx * 4, uly * 4, lrx * 4, lry * 4, 0, texStartX * 32, texStartY * 32, widthScale, heightScale);
559 }
560 if (isLastTileX) {
561 break;
562 }
563 ulx += 1024.0 / widthScale * 64.0;
564 uls += 64;
565 }
566
567 if (isLastTileY) {
568 break;
569 }
570
571 ult += 32;
572 uly += 1024.0 / heightScale * 32.0;
573 }
574
576}
#define PAL_PTR
#define IMG_PTR
s32 b32
#define PM_CC_07
Definition macros.h:295
#define SCREEN_WIDTH
Definition macros.h:109
#define PM_CC_01
Definition macros.h:288
#define SCREEN_HEIGHT
Definition macros.h:110
#define PM_CC_32
Definition macros.h:398
#define PM_CC_2F
Definition macros.h:397
#define PM_CC_47
Definition macros.h:487
#define PM_CC_02
Definition macros.h:289
Gfx * gMainGfxPos
Definition cam_main.c:14

Referenced by draw_hud_element_internal(), render_hud_elements_backUI(), and render_hud_elements_frontUI().

◆ hud_element_clear_cache()

void hud_element_clear_cache ( void )

Definition at line 578 of file hud_element.c.

578 {
581 s32 i;
582
588 } else {
593 }
594
602 for (i = 0; i < MAX_HUD_CACHE_ENTRIES; i++) {
603 entryRaster[i].id = -1;
604 entryPalette[i].id = -1;
605 }
606 } else {
607 if (HudElemAuxCache == NULL) {
610 } else {
612 }
617 for (i = 0; i < MAX_HUD_CACHE_ENTRIES; i++) {
618 entryRaster[i].id = -1;
619 entryPalette[i].id = -1;
620 }
621 }
622
623 for (i = 0; i < ARRAY_COUNT(*gHudElements); i++) {
624 (*gHudElements)[i] = NULL;
625 }
626
627 HudElemCount = 0;
628 FrameQuadIndex = 0;
630}
#define general_heap_malloc
BSS HudCacheEntry gHudElementCacheTablePaletteWorld[192]
void hud_element_setup_cam(void)
BSS HudCacheEntry gHudElementCacheTableRasterWorld[192]
BSS HudElementList * gHudElements
BSS u8 * gHudElementCacheBufferWorld
BSS HudElementList gHudElementsWorld
s32 HudElemCount
BSS s32 gHudElementCacheSizeBattle
BSS HudElementList gHudElementsBattle
BSS s32 gHudElementCacheSizeWorld
BSS HudCacheEntry gHudElementCacheTableRasterBattle[192]
BSS u8 * gHudElementCacheBufferBattle
BSS HudCacheEntry gHudElementCacheTablePaletteBattle[192]
BSS s32 FrameQuadIndex
u8 * HudElemAuxCache
Definition hud_element.c:14
#define ARRAY_COUNT(arr)
Definition macros.h:40

Referenced by load_demo_battle(), load_engine_data(), load_map_by_IDs(), state_init_file_select(), state_init_logos(), state_init_title_screen(), state_step_battle(), state_step_demo(), state_step_intro(), state_step_pause(), state_step_startup(), and state_step_title_screen().

◆ init_hud_element_list()

◆ hud_element_create()

s32 hud_element_create ( HudScript * anim)

Creates a new HUD element and returns its ID.

Definition at line 690 of file hud_element.c.

690 {
692 s32 id;
693
694 for (id = 0; id < ARRAY_COUNT(*gHudElements); id++) {
695 if ((*gHudElements)[id] == NULL) {
696 break;
697 }
698 }
699
701
702 (*gHudElements)[id] = hudElement = heap_malloc(sizeof(*hudElement));
703 HudElemCount++;
704
706
708 hudElement->readPos = anim;
709 if (anim == NULL) {
710 hudElement->readPos = &HES_Empty;
711 }
712 hudElement->updateTimer = 1;
713 hudElement->drawSizePreset = -1;
714 hudElement->tileSizePreset = -1;
715 hudElement->renderPosX = 0;
716 hudElement->renderPosY = 0;
717 hudElement->loopStartPos = anim;
718 hudElement->widthScale = X10(1.0f);
719 hudElement->heightScale = X10(1.0f);
720 hudElement->anim = hudElement->readPos;
721 hudElement->uniformScale = 1.0f;
722 hudElement->screenPosOffset.x = 0;
723 hudElement->screenPosOffset.y = 0;
724 hudElement->worldPosOffset.x = 0;
725 hudElement->worldPosOffset.y = 0;
726 hudElement->worldPosOffset.z = 0;
727 hudElement->opacity = 255;
728 hudElement->tint.r = 255;
729 hudElement->tint.g = 255;
730 hudElement->tint.b = 255;
731
735 }
736
738 while (hud_element_update(hudElement) != 0);
739
740 return id;
741}
void * heap_malloc(s32 size)
Definition heap.c:34
s32 hud_element_update(HudElement *hudElement)
void hud_element_load_script(HudElement *hudElement, HudScript *anim)
HudScript HES_Empty
Definition hud_element.c:17
#define HUD_ELEMENT_BATTLE_ID_MASK
Definition hud_element.h:7
#define X10(f)
X.10 fixed-point literal.
Definition macros.h:186

Referenced by btl_main_menu_update(), btl_state_update_celebration(), btl_state_update_select_target(), btl_submenu_moves_update(), btl_submenu_strats_update(), btl_update_message_popup(), create_status_icon_boost_hammer(), create_status_icon_boost_jump(), create_status_icon_boost_partner(), create_status_icon_danger(), create_status_icon_peril(), create_status_icon_surprise(), filemenu_choose_name_init(), filemenu_init(), filemenu_main_init(), initialize_battle(), initialize_status_bar(), pause_badges_init(), pause_init(), pause_items_init(), pause_map_init(), pause_partners_init(), pause_stats_init(), pause_tabs_init(), popup_menu_update(), show_coin_counter(), update_all_status_icons(), and update_item_entity_pickup().

◆ update_hud_elements()

void update_hud_elements ( void )

Definition at line 743 of file hud_element.c.

743 {
744 s32 i;
745
746 for (i = 0; i < ARRAY_COUNT(*gHudElements); i++) {
747 HudElement* elem = (*gHudElements)[i];
748
749 if (elem == NULL || elem->flags == 0 || elem->flags & HUD_ELEMENT_FLAG_DISABLED) {
750 continue;
751 }
752
753 if (elem->flags & HUD_ELEMENT_FLAG_DELETE) {
755 continue;
756 }
757
758 if (elem->readPos == NULL) {
759 // bail out and skip updating any subsequent elements
760 break;
761 }
762
763 // update the current element
764 elem->updateTimer--;
765 if (elem->updateTimer == 0) {
766 while (hud_element_update(elem) != 0);
767 }
768 if (elem->flags & HUD_ELEMENT_FLAG_RESIZING) {
769 elem->dynamicSize.x += elem->deltaSize.x;
770 elem->dynamicSize.y += elem->deltaSize.y;
771 }
772 }
773}
void hud_element_free(s32 id)

Referenced by step_game_loop().

◆ hud_element_update()

s32 hud_element_update ( HudElement * hudElement)
Returns
0 if frame is completed

Definition at line 775 of file hud_element.c.

775 {
778 s32 i;
779 s32 drawSizePreset;
780 s32 tileSizePreset;
784 u32 flags;
785 s32 s1, s2;
786 s32 arg1, arg2;
787 f32 uniformScale;
789
790 HudTransform* hudTransform = hudElement->hudTransform;
791 s32* nextPos = (s32*)hudElement->readPos;
792
793 switch (*nextPos++) {
795 hudElement->updateTimer = 60;
796 flags = hudElement->flags;
798 break;
800 hudElement->updateTimer = 60;
802 break;
804 hudElement->readPos = (HudScript*)nextPos;
806 return TRUE;
808 hudElement->readPos = (HudScript*)nextPos;
810 return TRUE;
812 hudElement->readPos = (HudScript*)nextPos;
814 return TRUE;
816 s1 = *nextPos++;
817 hudElement->readPos = (HudScript*)nextPos;
818 hudElement->flags |= s1;
819 return TRUE;
821 s1 = *nextPos++;
822 hudElement->readPos = (HudScript*)nextPos;
823 hudElement->flags &= ~s1;
824 return TRUE;
826 hudElement->updateTimer = *nextPos++;
827 hudElement->imageAddr = (u8*)*nextPos++;
828 hudElement->readPos = (HudScript*)nextPos;
829
831 hudElement->imageAddr += hudElement->memOffset;
832 }
833
836 imageWidth = hudElement->customImageSize.x;
837 imageHeight = hudElement->customImageSize.y;
838 drawWidth = hudElement->customDrawSize.x;
839 drawHeight = hudElement->customDrawSize.y;
840 } else {
841 tileSizePreset = hudElement->tileSizePreset;
842 drawSizePreset = hudElement->drawSizePreset;
843 imageWidth = HudElemSizes[tileSizePreset].width;
844 imageHeight = HudElemSizes[tileSizePreset].height;
845 drawWidth = HudElemSizes[drawSizePreset].width;
846 drawHeight = HudElemSizes[drawSizePreset].height;
847 }
848
851 hudElement->dynamicSize.x = drawWidth;
852 hudElement->dynamicSize.y = drawHeight;
853 hudElement->deltaSize.x = ((f32)imageWidth - (f32)drawWidth) / (f32)hudElement->updateTimer;
854 hudElement->deltaSize.y = ((f32)imageHeight - (f32)drawHeight) / (f32)hudElement->updateTimer;
855 } else {
857 hudElement->dynamicSize.x = imageWidth;
858 hudElement->dynamicSize.y = imageHeight;
859 hudElement->deltaSize.x = ((f32)drawWidth - (f32)imageWidth) / (f32)hudElement->updateTimer;
860 hudElement->deltaSize.y = ((f32)drawHeight - (f32)imageHeight) / (f32)hudElement->updateTimer;
861 }
862 }
863 break;
865 hudElement->updateTimer = *nextPos++;
866 hudElement->imageAddr = (IMG_PTR)*nextPos++;
867 hudElement->paletteAddr = (PAL_PTR)*nextPos++;
868 hudElement->readPos = (HudScript*)nextPos;
869
871 hudElement->imageAddr += hudElement->memOffset;
872 hudElement->paletteAddr += hudElement->memOffset;
873 }
874
877 imageWidth = hudElement->customImageSize.x;
878 imageHeight = hudElement->customImageSize.y;
879 drawWidth = hudElement->customDrawSize.x;
880 drawHeight = hudElement->customDrawSize.y;
881 } else {
882 tileSizePreset = hudElement->tileSizePreset;
883 drawSizePreset = hudElement->drawSizePreset;
884 imageWidth = HudElemSizes[tileSizePreset].width;
885 imageHeight = HudElemSizes[tileSizePreset].height;
886 drawWidth = HudElemSizes[drawSizePreset].width;
887 drawHeight = HudElemSizes[drawSizePreset].height;
888 }
889
892 hudElement->dynamicSize.x = drawWidth;
893 hudElement->dynamicSize.y = drawHeight;
894 hudElement->deltaSize.x = ((f32)imageWidth - (f32)drawWidth) / (f32)hudElement->updateTimer;
895 hudElement->deltaSize.y = ((f32)imageHeight - (f32)drawHeight) / (f32)hudElement->updateTimer;
896 } else {
898 hudElement->dynamicSize.x = imageWidth;
899 hudElement->dynamicSize.y = imageHeight;
900 hudElement->deltaSize.x = ((f32)drawWidth - (f32)imageWidth) / (f32)hudElement->updateTimer;
901 hudElement->deltaSize.y = ((f32)drawHeight - (f32)imageHeight) / (f32)hudElement->updateTimer;
902 }
903 }
904 break;
906 hudElement->updateTimer = *nextPos++;
907
908 if (hudElement->flags & HUD_ELEMENT_FLAG_BATTLE) {
911 } else {
914 }
915
916 i = 0;
917 while (TRUE) {
918 if (entryRaster[i].id == *nextPos) {
919 break;
920 }
922 }
923
924 nextPos++;
925 hudElement->imageAddr = entryRaster[i].data;
926
927 i = 0;
928 while (TRUE) {
929 if (entryPalette[i].id == *nextPos) {
930 break;
931 }
933 }
934 hudElement->paletteAddr = entryPalette[i].data;
935 nextPos += 3;
936 hudElement->readPos = (HudScript*)nextPos;
937
940 imageWidth = hudElement->customImageSize.x;
941 imageHeight = hudElement->customImageSize.y;
942 drawWidth = hudElement->customDrawSize.x;
943 drawHeight = hudElement->customDrawSize.y;
944 } else {
945 tileSizePreset = hudElement->tileSizePreset;
946 drawSizePreset = hudElement->drawSizePreset;
947 imageWidth = HudElemSizes[tileSizePreset].width;
948 imageHeight = HudElemSizes[tileSizePreset].height;
949 drawWidth = HudElemSizes[drawSizePreset].width;
950 drawHeight = HudElemSizes[drawSizePreset].height;
951 }
952
955 hudElement->dynamicSize.x = drawWidth;
956 hudElement->dynamicSize.y = drawHeight;
957 hudElement->deltaSize.x = ((f32)imageWidth - (f32)drawWidth) / (f32)hudElement->updateTimer;
958 hudElement->deltaSize.y = ((f32)imageHeight - (f32)drawHeight) / (f32)hudElement->updateTimer;
959 } else {
961 hudElement->dynamicSize.x = imageWidth;
962 hudElement->dynamicSize.y = imageHeight;
963 hudElement->deltaSize.x = ((f32)drawWidth - (f32)imageWidth) / (f32)hudElement->updateTimer;
964 hudElement->deltaSize.y = ((f32)drawHeight - (f32)imageHeight) / (f32)hudElement->updateTimer;
965 }
966 }
967 break;
969 hudElement->readPos = hudElement->loopStartPos;
970 return TRUE;
972 hudElement->loopStartPos = (HudScript*)nextPos;
973 hudElement->readPos = (HudScript*)nextPos;
974 return TRUE;
976 s1 = *nextPos++;
977 s2 = *nextPos++;
978 if (rand_int(s1) < s2) {
979 hudElement->readPos = hudElement->loopStartPos;
980 } else {
981 hudElement->readPos = (HudScript*)nextPos;
982 }
983 return TRUE;
985 sizePreset = *nextPos++;
986 hudElement->widthScale = X10(1);
987 hudElement->heightScale = X10(1);
988 hudElement->readPos = (HudScript*)nextPos;
989 hudElement->drawSizePreset = sizePreset;
990 hudElement->tileSizePreset = sizePreset;
993 return TRUE;
995 tileSizePreset = *nextPos++;
996 drawSizePreset = *nextPos++;
997
998 hudElement->readPos = (HudScript*)nextPos;
999 hudElement->tileSizePreset = tileSizePreset;
1000 hudElement->drawSizePreset = drawSizePreset;
1001
1002 imageWidth = HudElemSizes[tileSizePreset].width;
1003 imageHeight = HudElemSizes[tileSizePreset].height;
1004 drawWidth = HudElemSizes[drawSizePreset].width;
1005 drawHeight = HudElemSizes[drawSizePreset].height;
1006
1009
1010 xScaled = 1.0f / xScaled;
1011 yScaled = 1.0f / yScaled;
1012
1013 hudElement->widthScale = X10(xScaled);
1014 hudElement->heightScale = X10(yScaled);
1015
1018 return TRUE;
1020 tileSizePreset = *nextPos++;
1021 drawSizePreset = *nextPos++;
1022
1023 hudElement->widthScale = X10(1);
1024 hudElement->heightScale = X10(1);
1025 hudElement->readPos = (HudScript*)nextPos;
1026 hudElement->tileSizePreset = tileSizePreset;
1027 hudElement->drawSizePreset = drawSizePreset;
1031 return TRUE;
1033 s1 = *nextPos++;
1034 hudElement->readPos = (HudScript*)nextPos;
1035 hudElement->screenPosOffset.x += s1;
1036 return TRUE;
1038 s2 = *nextPos++;
1039 if (hudElement->flags & HUD_ELEMENT_FLAG_FLIPY) {
1040 hudElement->screenPosOffset.y -= s2;
1041 } else {
1042 hudElement->screenPosOffset.y += s2;
1043 }
1044 hudElement->readPos = (HudScript*)nextPos;
1045 return TRUE;
1047 s1 = *nextPos++;
1048 s2 = *nextPos++;
1049 hudElement->screenPosOffset.x = s1;
1050 if (hudElement->flags & HUD_ELEMENT_FLAG_FLIPY) {
1051 hudElement->screenPosOffset.y = -s2;
1052 } else {
1053 hudElement->screenPosOffset.y = s2;
1054 }
1055 hudElement->readPos = (HudScript*)nextPos;
1056 return TRUE;
1058 uniformScale = (f32)*nextPos++;
1059 uniformScale /= 65536;
1060 hudElement->uniformScale = uniformScale;
1062 imageWidth = hudElement->customImageSize.x;
1063 imageHeight = hudElement->customImageSize.y;
1064 drawWidth = hudElement->customDrawSize.x;
1065 drawHeight = hudElement->customDrawSize.y;
1066 } else {
1067 imageWidth = HudElemSizes[hudElement->tileSizePreset].width;
1068 imageHeight = HudElemSizes[hudElement->tileSizePreset].height;
1069 drawWidth = HudElemSizes[hudElement->drawSizePreset].width;
1070 drawHeight = HudElemSizes[hudElement->drawSizePreset].height;
1071 }
1072
1073 hudElement->sizeX = drawWidth * uniformScale;
1074 hudElement->sizeY = drawHeight * uniformScale;
1075
1076 xScaled = (f32) drawWidth / (f32) imageWidth * uniformScale;
1077 yScaled = (f32) drawHeight / (f32) imageHeight * uniformScale;
1078
1079 xScaled = 1.0f / xScaled;
1080 yScaled = 1.0f / yScaled;
1081
1082 hudElement->widthScale = X10(xScaled);
1083 hudElement->heightScale = X10(yScaled);
1084
1085 hudElement->readPos = (HudScript*)nextPos;
1088 return TRUE;
1090 s1 = *nextPos++;
1091 hudElement->opacity = s1;
1093 if (hudElement->opacity == 255) {
1095 }
1096 hudElement->readPos = (HudScript*)nextPos;
1097 return TRUE;
1099 s1 = *nextPos++;
1100 s2 = *nextPos++;
1101 hudElement->updateTimer = rand_int(s2 - s1) + s1;
1102 hudElement->readPos = (HudScript*)nextPos;
1103 break;
1105 hudElement->customDrawSize.x = hudElement->customImageSize.x = *nextPos++;
1106 hudElement->customDrawSize.y = hudElement->customImageSize.y = *nextPos++;
1107 hudElement->readPos = (HudScript*)nextPos;
1108 hudElement->widthScale = X10(1);
1109 hudElement->heightScale = X10(1);
1110 hudElement->drawSizePreset = 0;
1111 hudElement->tileSizePreset = 0;
1115 return TRUE;
1117 s1 = *nextPos++;
1118 hudElement->readPos = (HudScript*)nextPos;
1120 hudElement->flags |= s1 << 24;
1121 return TRUE;
1123 s1 = *nextPos++;
1124 newReadPos = (HudScript*)nextPos[rand_int(s1 - 1)];
1125 hudElement->readPos = newReadPos;
1127 return TRUE;
1129 arg2 = *nextPos++;
1130 sfx_play_sound(arg2);
1131 hudElement->readPos = (HudScript*)nextPos;
1132 return TRUE;
1134 arg1 = *nextPos++;
1135 arg2 = *nextPos++;
1136 hudElement->readPos = (HudScript*)nextPos;
1138 hudTransform->pivot.x = arg1;
1139 hudTransform->pivot.y = arg2;
1140 }
1141 return TRUE;
1143 break;
1144 }
1145
1146 return FALSE;
1147}
s8 flags
Definition demo_api.c:15
#define rand_int
s32 HudScript[]
Definition hud_element.h:9
void sfx_play_sound(s32 soundID)

Referenced by hud_element_create(), hud_element_set_script(), and update_hud_elements().

◆ render_hud_elements_backUI()

void render_hud_elements_backUI ( void )

Definition at line 1149 of file hud_element.c.

1149 {
1150 s32 i, count, j;
1152 s32 el1, el2;
1154 s32 drawSizeX, drawSizeY, offsetX, offsetY;
1156
1158 if (FrameQuadIndex >= ARRAY_COUNT(elem->hudTransform->quadBuffers)) {
1159 FrameQuadIndex = 0;
1160 }
1162
1163 // gather appropriate hud elements
1164 count = 0;
1165 for (i = 0; i < ARRAY_COUNT(*gHudElements); i++) {
1166 elem = (*gHudElements)[i];
1167 if (elem == NULL) {
1168 continue;
1169 }
1170
1171 if (elem->flags == 0 || elem->flags & HUD_ELEMENT_FLAG_DISABLED) {
1172 continue;
1173 }
1174
1176 continue;
1177 }
1178
1179 if (elem->flags & HUD_ELEMENT_FLAG_MANUAL_RENDER) {
1180 continue;
1181 }
1182
1183 if (elem->flags & HUD_ELEMENT_FLAG_TRANSFORM) {
1184 continue;
1185 }
1186
1187 if (elem->flags & (HUD_ELEMENT_FLAG_BATTLE_CAM)) {
1188 continue;
1189 }
1190
1191 if (elem->flags & HUD_ELEMENT_FLAG_FRONTUI || elem->drawSizePreset < 0) {
1192 continue;
1193 }
1194
1195 // add element to list
1196 sortedElements[count++] = i;
1197 }
1198
1199 // sort elements by depth
1200 for (i = 0; i < count - 1; i++) {
1201 for (j = i + 1; j < count; j++) {
1202 el1 = sortedElements[i];
1203 el2 = sortedElements[j];
1204 if ((*gHudElements)[el1]->worldPosOffset.z < (*gHudElements)[el2]->worldPosOffset.z) {
1205 sortedElements[i] = el2;
1206 sortedElements[j] = el1;
1207 }
1208 }
1209 }
1210
1211 // render the sorted elements
1212 for (i = 0; i < count; i++) {
1213 elem = (*gHudElements)[sortedElements[i]];
1214
1215 if (elem->readPos == NULL) {
1216 break;
1217 }
1218
1219 if (!(elem->flags & HUD_ELEMENT_FLAG_RESIZING)) {
1220 if (elem->flags & HUD_ELEMENT_FLAG_CUSTOM_SIZE) {
1221 texSizeX = elem->customImageSize.x;
1222 texSizeY = elem->customImageSize.y;
1223 } else {
1224 texSizeX = HudElemSizes[elem->tileSizePreset].width;
1225 texSizeY = HudElemSizes[elem->tileSizePreset].height;
1226 }
1227
1228 if (elem->flags & HUD_ELEMENT_FLAG_SCALED) {
1229 drawSizeX = elem->sizeX;
1230 drawSizeY = elem->sizeY;
1231 } else if (elem->flags & HUD_ELEMENT_FLAG_CUSTOM_SIZE) {
1232 drawSizeX = elem->customDrawSize.x;
1233 drawSizeY = elem->customDrawSize.y;
1234 } else {
1235 drawSizeX = HudElemSizes[elem->drawSizePreset].width;
1236 drawSizeY = HudElemSizes[elem->drawSizePreset].height;
1237 }
1238
1239 offsetX = -drawSizeX / 2;
1240 offsetY = -drawSizeY / 2;
1241
1242 if (elem->flags & HUD_ELEMENT_FLAG_REPEATED) {
1243 if (elem->flags & HUD_ELEMENT_FLAG_DROP_SHADOW) {
1245 }
1247 } else {
1248 if (elem->flags & HUD_ELEMENT_FLAG_DROP_SHADOW) {
1250 }
1252 }
1253 } else {
1255
1256 if (elem->flags & HUD_ELEMENT_FLAG_CUSTOM_SIZE) {
1257 texSizeX = elem->customImageSize.x;
1258 texSizeY = elem->customImageSize.y;
1259 } else {
1260 texSizeX = HudElemSizes[elem->tileSizePreset].width;
1261 texSizeY = HudElemSizes[elem->tileSizePreset].height;
1262 }
1263
1264 drawSizeX = elem->dynamicSize.x;
1265 drawSizeY = elem->dynamicSize.y;
1266
1267 offsetX = -elem->dynamicSize.x / 2;
1268 offsetY = -elem->dynamicSize.y / 2;
1269
1272
1273 xScaled = 1.0f / xScaled;
1274 yScaled = 1.0f / yScaled;
1275
1276 elem->widthScale = X10(xScaled);
1277 elem->heightScale = X10(yScaled);
1278
1279 if (elem->flags & HUD_ELEMENT_FLAG_DROP_SHADOW) {
1281 }
1283 }
1284 }
1285}
void hud_element_draw_rect(HudElement *hudElement, s16 texSizeX, s16 texSizeY, s16 drawSizeX, s16 drawSizeY, s16 offsetX, s16 offsetY, s32 clamp, s32 dropShadow)
Gfx HudElemBackInitGfx[]
Definition hud_element.c:50
#define VIRTUAL_TO_PHYSICAL(addr)
Definition macros.h:47

Referenced by gfx_draw_frame().

◆ render_hud_elements_frontUI()

void render_hud_elements_frontUI ( void )

Definition at line 1287 of file hud_element.c.

1287 {
1288 s32 i, count, j;
1290 s32 el1, el2;
1292 s32 drawSizeX, drawSizeY, offsetX, offsetY;
1294
1296
1297 // gather appropriate hud elements
1298 count = 0;
1299 for (i = 0; i < ARRAY_COUNT(*gHudElements); i++) {
1300 elem = (*gHudElements)[i];
1301 if (elem == NULL) {
1302 continue;
1303 }
1304
1305 if (elem->flags == 0 || elem->flags & HUD_ELEMENT_FLAG_DISABLED) {
1306 continue;
1307 }
1308
1310 continue;
1311 }
1312
1313 if (elem->flags & HUD_ELEMENT_FLAG_MANUAL_RENDER) {
1314 continue;
1315 }
1316
1317 if (elem->flags & HUD_ELEMENT_FLAG_TRANSFORM) {
1318 continue;
1319 }
1320
1321 if (!(elem->flags & HUD_ELEMENT_FLAG_FRONTUI) || elem->drawSizePreset < 0) {
1322 continue;
1323 }
1324
1325 // add element to list
1326 sortedElements[count++] = i;
1327 }
1328
1329 // sort elements by depth
1330 for (i = 0; i < count - 1; i++) {
1331 for (j = i + 1; j < count; j++) {
1332 el1 = sortedElements[i];
1333 el2 = sortedElements[j];
1334 if ((*gHudElements)[el1]->worldPosOffset.z < (*gHudElements)[el2]->worldPosOffset.z) {
1335 sortedElements[i] = el2;
1336 sortedElements[j] = el1;
1337 }
1338 }
1339 }
1340
1341 // render the sorted elements
1342 for (i = 0; i < count; i++) {
1343 elem = (*gHudElements)[sortedElements[i]];
1344 if (!(elem->flags & HUD_ELEMENT_FLAG_RESIZING)) {
1345 if (elem->flags & HUD_ELEMENT_FLAG_CUSTOM_SIZE) {
1346 texSizeX = elem->customImageSize.x;
1347 texSizeY = elem->customImageSize.y;
1348 } else {
1349 texSizeX = HudElemSizes[elem->tileSizePreset].width;
1350 texSizeY = HudElemSizes[elem->tileSizePreset].height;
1351 }
1352
1353 if (elem->flags & HUD_ELEMENT_FLAG_SCALED) {
1354 drawSizeX = elem->sizeX;
1355 drawSizeY = elem->sizeY;
1356 offsetX = -drawSizeX / 2;
1357 offsetY = -drawSizeY / 2;
1358 } else if (elem->flags & HUD_ELEMENT_FLAG_CUSTOM_SIZE) {
1359 drawSizeX = elem->customDrawSize.x;
1360 drawSizeY = elem->customDrawSize.y;
1361 offsetX = -drawSizeX / 2;
1362 offsetY = -drawSizeY / 2;
1363 } else {
1364 drawSizeX = HudElemSizes[elem->drawSizePreset].width;
1365 drawSizeY = HudElemSizes[elem->drawSizePreset].height;
1366 offsetX = -drawSizeX / 2;
1367 offsetY = -drawSizeY / 2;
1368 }
1369
1370 if (elem->flags & HUD_ELEMENT_FLAG_REPEATED) {
1371 if (elem->flags & HUD_ELEMENT_FLAG_DROP_SHADOW) {
1373 }
1375 } else {
1376 if (elem->flags & HUD_ELEMENT_FLAG_DROP_SHADOW) {
1378 }
1380 }
1381 } else {
1383
1384 if (elem->flags & HUD_ELEMENT_FLAG_CUSTOM_SIZE) {
1385 texSizeX = elem->customImageSize.x;
1386 texSizeY = elem->customImageSize.y;
1387 } else {
1388 texSizeX = HudElemSizes[elem->drawSizePreset].width;
1389 texSizeY = HudElemSizes[elem->drawSizePreset].height;
1390 }
1391
1392 drawSizeX = elem->dynamicSize.x;
1393 drawSizeY = elem->dynamicSize.y;
1394
1395 offsetX = -elem->dynamicSize.x / 2;
1396 offsetY = -elem->dynamicSize.y / 2;
1397
1400
1401 xScaled = 1.0f / xScaled;
1402 yScaled = 1.0f / yScaled;
1403
1404 elem->widthScale = X10(xScaled);
1405 elem->heightScale = X10(yScaled);
1406
1407 if (elem->flags & HUD_ELEMENT_FLAG_DROP_SHADOW) {
1409 }
1411 }
1412 }
1413}
Gfx HudElemFrontInitGfx[]
Definition hud_element.c:57

Referenced by gfx_draw_frame().

◆ render_transformed_hud_elements()

void render_transformed_hud_elements ( void )

Definition at line 1665 of file hud_element.c.

1665 {
1668 s32 flags;
1669 s32 count, i;
1670
1671 if (gCurrentCamID == CAM_HUD) {
1673
1674 if (count != 0) {
1683
1684 for (i = 0; i < count; i++) {
1686 }
1687 }
1688 }
1689
1690 if (gCurrentCamID == CAM_BATTLE) {
1692
1693 if (count != 0) {
1702
1703 for (i = 0; i < count; i++) {
1705 }
1706 }
1707 }
1708}
@ CAM_HUD
Definition enums.h:1829
@ CAM_BATTLE
Definition enums.h:1827
void render_complex_hud_element(HudElement *elem)
Lights1 HudElemLights
s32 gather_and_sort_hud_elements(s32 *sortedElements, b32 isBattle)
#define SCREEN_YMAX
Definition macros.h:118
#define SCREEN_YMIN
Definition macros.h:117
#define SCREEN_XMIN
Definition macros.h:115
#define SCREEN_XMAX
Definition macros.h:116
s16 gCurrentCamID
Definition cam_main.c:12

Referenced by render_frame().

◆ hud_element_draw_complex_hud_first()

void hud_element_draw_complex_hud_first ( s32 hid)

Definition at line 1800 of file hud_element.c.

1800 {
1802}
void immediately_render_complex_hud_element(s32 elemID, b32 includeSetup, s32 camID)

Referenced by btl_main_menu_draw(), btl_message_popup_draw_content(), and btl_state_draw_celebration().

◆ hud_element_draw_complex_hud_next()

void hud_element_draw_complex_hud_next ( s32 hid)

Definition at line 1804 of file hud_element.c.

Referenced by btl_main_menu_draw(), and btl_state_draw_celebration().

◆ hud_element_draw_complex_battle_first()

void hud_element_draw_complex_battle_first ( s32 hid)

Definition at line 1808 of file hud_element.c.

◆ hud_element_draw_complex_battle_next()

void hud_element_draw_complex_battle_next ( s32 hid)

Definition at line 1812 of file hud_element.c.

◆ hud_element_draw_clipped()

◆ hud_element_draw_next()

◆ hud_element_draw_without_clipping()

◆ hud_element_set_script()

void hud_element_set_script ( s32 id,
HudScript * anim )

Definition at line 1929 of file hud_element.c.

1929 {
1930 HudElement* hudElement = (*gHudElements)[id & ~HUD_ELEMENT_BATTLE_ID_MASK];
1931
1932 if (anim == NULL) {
1933 anim = &HES_Empty;
1934 }
1935
1937 hudElement->widthScale = X10(1.0f);
1938 hudElement->heightScale = X10(1.0f);
1939 hudElement->readPos = anim;
1940 hudElement->anim = anim;
1941 hudElement->loopStartPos = anim;
1942 hudElement->screenPosOffset.x = 0;
1943 hudElement->screenPosOffset.y = 0;
1944 hudElement->worldPosOffset.x = 0;
1945 hudElement->worldPosOffset.y = 0;
1947 hudElement->uniformScale = 1.0f;
1950
1951 while (hud_element_update(hudElement) != 0) {}
1952}

Referenced by btl_draw_enemy_health_bars(), btl_menu_moves_draw_content(), btl_state_draw_celebration(), btl_state_draw_select_target(), btl_state_update_celebration(), btl_state_update_select_target(), btl_submenu_moves_restore_choose(), btl_submenu_moves_resume_choose(), btl_submenu_moves_update(), btl_submenu_strats_restore_choose(), btl_submenu_strats_resume_choose(), btl_submenu_strats_update(), btl_update_message_popup(), btl_update_starpoints_display(), draw(), pause_badges_draw_contents(), pause_items_draw_contents(), pause_stats_draw_contents(), pause_textbox_draw_contents(), popup_draw_menu_content(), popup_menu_update(), remove_status_icon_boost_hammer(), remove_status_icon_boost_jump(), show_popup_menu(), status_bar_draw_number(), status_bar_draw_stat(), update(), update_all_status_icons(), update_item_entity_pickup(), and update_status_bar().

◆ hud_element_get_script()

HudScript * hud_element_get_script ( s32 id)

◆ get_hud_element()

HudElement * get_hud_element ( s32 id)

Definition at line 1958 of file hud_element.c.

1958 {
1960}

Referenced by update_all_status_icons().

◆ hud_element_free()

◆ hud_element_set_render_pos()

void hud_element_set_render_pos ( s32 id,
s32 x,
s32 y )

Definition at line 1972 of file hud_element.c.

1972 {
1973 HudElement* hudElement = (*gHudElements)[id & ~HUD_ELEMENT_BATTLE_ID_MASK];
1974
1976 hudElement->renderPosY = y;
1977}

Referenced by btl_draw_enemy_health_bars(), btl_main_menu_draw(), btl_main_menu_update(), btl_menu_moves_draw_content(), btl_menu_moves_show_icon(), btl_menu_strats_draw_content(), btl_message_popup_draw_content(), btl_state_draw_celebration(), btl_state_draw_select_target(), btl_state_update_celebration(), btl_state_update_select_target(), btl_submenu_moves_update(), btl_submenu_strats_update(), btl_update_message_popup(), btl_update_starpoints_display(), coin_counter_draw_content(), draw(), draw_all_status_icons(), draw_content_pickup_item_header(), draw_shop_items(), filemenu_draw_contents_choose_name(), filemenu_draw_contents_file_create_header(), filemenu_draw_contents_file_info(), filemenu_draw_contents_mono(), filemenu_draw_contents_stereo(), filemenu_draw_cursor(), pause_badges_draw_contents(), pause_draw_cursor(), pause_items_draw_contents(), pause_map_draw_contents(), pause_partners_draw_movelist(), pause_partners_draw_movelist_flower(), pause_partners_draw_title(), pause_stats_draw_contents(), pause_tabs_draw_badges(), pause_tabs_draw_items(), pause_tabs_draw_map(), pause_tabs_draw_party(), pause_tabs_draw_spirits(), pause_tabs_draw_stats(), pause_textbox_draw_contents(), pause_tutorial_draw_contents(), popup_draw_cost_icon(), popup_draw_menu_content(), popup_draw_star_pieces_content(), status_bar_draw_number(), status_bar_draw_stat(), update(), update_item_entity_pickup(), and update_status_bar().

◆ hud_element_get_render_pos()

void hud_element_get_render_pos ( s32 id,
s32 * x,
s32 * y )

Definition at line 1979 of file hud_element.c.

1979 {
1980 HudElement* hudElement = (*gHudElements)[id & ~HUD_ELEMENT_BATTLE_ID_MASK];
1981
1982 *x = hudElement->renderPosX;
1983 *y = hudElement->renderPosY;
1984}

Referenced by btl_draw_upgrade_windows(), btl_state_update_celebration(), and draw().

◆ hud_element_set_render_depth()

void hud_element_set_render_depth ( s32 id,
s32 z )

Definition at line 1986 of file hud_element.c.

1986 {
1987 (*gHudElements)[id & ~HUD_ELEMENT_BATTLE_ID_MASK]->worldPosOffset.z = z;
1988}

Referenced by btl_draw_enemy_health_bars(), btl_main_menu_update(), btl_state_update_select_target(), and initialize_battle().

◆ hud_element_set_flags()

◆ hud_element_clear_flags()

◆ ALT_clear_hud_element_cache()

void ALT_clear_hud_element_cache ( void )
See also
hud_element_clear_cache

Definition at line 1998 of file hud_element.c.

1998 {
1999 s32 i;
2000
2011
2012 for (i = 0; i < MAX_HUD_CACHE_ENTRIES; i++) {
2015 }
2016 } else {
2017 if (HudElemAuxCache == NULL) {
2021 } else {
2023 }
2030
2031 for (i = 0; i < MAX_HUD_CACHE_ENTRIES; i++) {
2034 }
2035 }
2036}

◆ hud_element_set_scale()

void hud_element_set_scale ( s32 index,
f32 scale )

Definition at line 2038 of file hud_element.c.

2038 {
2039 HudElement* elem = (*gHudElements)[index & ~HUD_ELEMENT_BATTLE_ID_MASK];
2040 s32 drawSizeX;
2041 s32 drawSizeY;
2042 s32 imgSizeX;
2043 s32 imgSizeY;
2045
2046 elem->uniformScale = scale;
2047 if (elem->flags & HUD_ELEMENT_FLAG_CUSTOM_SIZE) {
2048 imgSizeX = elem->customImageSize.x;
2049 imgSizeY = elem->customImageSize.y;
2050 drawSizeX = elem->customDrawSize.x;
2051 drawSizeY = elem->customDrawSize.y;
2052 } else {
2053 imgSizeX = HudElemSizes[elem->tileSizePreset].width;
2054 imgSizeY = HudElemSizes[elem->tileSizePreset].height;
2055 drawSizeX = HudElemSizes[elem->drawSizePreset].width;
2056 drawSizeY = HudElemSizes[elem->drawSizePreset].height;
2057 }
2058 elem->sizeX = drawSizeX * scale;
2059 elem->sizeY = drawSizeY * scale;
2062
2063 xScaled = ((f32) drawSizeX / (f32) imgSizeX) * scale;
2064 yScaled = ((f32) drawSizeY / (f32) imgSizeY) * scale;
2065
2066 xScaled = 1.0f / xScaled;
2067 yScaled = 1.0f / yScaled;
2068
2069 elem->widthScale = X10(xScaled);
2070 elem->heightScale = X10(yScaled);
2071}

Referenced by btl_main_menu_draw(), btl_main_menu_update(), btl_message_popup_draw_content(), btl_state_update_celebration(), btl_submenu_moves_update(), btl_submenu_strats_update(), draw_shop_items(), pause_badges_draw_contents(), pause_items_draw_contents(), pause_partners_draw_movelist(), pause_textbox_draw_contents(), pause_tutorial_draw_contents(), popup_draw_menu_content(), popup_menu_update(), and update().

◆ hud_element_use_preset_size()

void hud_element_use_preset_size ( s32 id,
s8 size )

Definition at line 2073 of file hud_element.c.

2073 {
2074 HudElement* hudElement = (*gHudElements)[id & ~HUD_ELEMENT_BATTLE_ID_MASK];
2075
2076 hudElement->widthScale = X10(1.0f);
2077 hudElement->heightScale = X10(1.0f);
2078 hudElement->tileSizePreset = sizePreset;
2079 hudElement->drawSizePreset = sizePreset;
2080 hudElement->uniformScale = 1.0f;
2083}
s32 widthScale
X10.

◆ hud_element_get_variable()

s32 hud_element_get_variable ( s32 id)

Definition at line 2085 of file hud_element.c.

2085 {
2086 return ((*gHudElements)[id & ~HUD_ELEMENT_BATTLE_ID_MASK]->flags >> 24) & 0xF;
2087}

◆ hud_element_set_variable()

void hud_element_set_variable ( s32 id,
s32 arg1 )

Definition at line 2089 of file hud_element.c.

2089 {
2090 HudElement* hudElement = (*gHudElements)[id & ~HUD_ELEMENT_BATTLE_ID_MASK];
2091
2093 hudElement->flags |= value << 24;
2094}

◆ hud_element_set_alpha()

◆ hud_element_set_tint()

◆ hud_element_create_transform_A()

void hud_element_create_transform_A ( s32 id)

Definition at line 2115 of file hud_element.c.

2115 {
2116 HudElement* element = (*gHudElements)[id & ~HUD_ELEMENT_BATTLE_ID_MASK];
2117 HudTransform* transform = general_heap_malloc(sizeof(*transform));
2118
2119 element->hudTransform = transform;
2120 ASSERT(transform != NULL);
2122 transform->imgfxIdx = imgfx_get_free_instances(1);
2123 transform->pos.x = 0.0f;
2124 transform->pos.y = 0.0f;
2125 transform->pos.z = 0.0f;
2126 transform->rot.x = 0.0f;
2127 transform->rot.y = 0.0f;
2128 transform->rot.z = 0.0f;
2129 transform->scale.x = 1.0f;
2130 transform->scale.y = 1.0f;
2131 transform->scale.z = 1.0f;
2132 transform->pivot.x = 0;
2133 transform->pivot.y = 0;
2135}
s32 imgfx_get_free_instances(s32)
Definition imgfx.c:337

◆ hud_element_create_transform_B()

void hud_element_create_transform_B ( s32 id)

Definition at line 2137 of file hud_element.c.

2137 {
2138 HudElement* element = (*gHudElements)[id & ~HUD_ELEMENT_BATTLE_ID_MASK];
2139 HudTransform* transform = general_heap_malloc(sizeof(*transform));
2140
2141 element->hudTransform = transform;
2142 ASSERT(transform != NULL);
2144 transform->imgfxIdx = 0;
2145 transform->pos.x = 0.0f;
2146 transform->pos.y = 0.0f;
2147 transform->pos.z = 0.0f;
2148 transform->rot.x = 0.0f;
2149 transform->rot.y = 0.0f;
2150 transform->rot.z = 0.0f;
2151 transform->scale.x = 1.0f;
2152 transform->scale.y = 1.0f;
2153 transform->scale.z = 1.0f;
2155}

Referenced by btl_main_menu_update(), btl_state_update_celebration(), and btl_update_message_popup().

◆ hud_element_create_transform_C()

void hud_element_create_transform_C ( s32 id)

Definition at line 2157 of file hud_element.c.

2157 {
2158 HudElement* element = (*gHudElements)[id & ~HUD_ELEMENT_BATTLE_ID_MASK];
2159 HudTransform* transform = general_heap_malloc(sizeof(*transform));
2160
2161 element->hudTransform = transform;
2162 ASSERT(transform != NULL);
2164 transform->imgfxIdx = 0;
2165 transform->pos.x = 0.0f;
2166 transform->pos.y = 0.0f;
2167 transform->pos.z = 0.0f;
2168 transform->rot.x = 0.0f;
2169 transform->rot.y = 0.0f;
2170 transform->rot.z = 0.0f;
2171 transform->scale.x = 1.0f;
2172 transform->scale.y = 1.0f;
2173 transform->scale.z = 1.0f;
2175}

◆ hud_element_free_transform()

void hud_element_free_transform ( s32 id)

Definition at line 2177 of file hud_element.c.

2177 {
2178 HudElement* hudElement = (*gHudElements)[id & ~HUD_ELEMENT_BATTLE_ID_MASK];
2179 HudTransform* hudTransform = hudElement->hudTransform;
2180
2181 if (!(hudElement->flags & HUD_ELEMENT_FLAG_NO_FOLD)) {
2182 imgfx_release_instance(hudTransform->imgfxIdx);
2183 }
2184
2185 heap_free(hudElement->hudTransform);
2186 hudElement->hudTransform = NULL;
2188}
void imgfx_release_instance(u32)
Definition imgfx.c:385

Referenced by hud_element_free().

◆ hud_element_set_transform_pos()

void hud_element_set_transform_pos ( s32 id,
f32 x,
f32 y,
f32 z )

Definition at line 2190 of file hud_element.c.

2190 {
2191 HudElement* element = (*gHudElements)[id & ~HUD_ELEMENT_BATTLE_ID_MASK];
2192 HudTransform* transform = element->hudTransform;
2193
2194 if (element->flags & HUD_ELEMENT_FLAG_TRANSFORM) {
2195 transform->pos.x = x;
2196 transform->pos.y = y;
2197 transform->pos.z = z;
2198 }
2199}

Referenced by btl_main_menu_draw().

◆ hud_element_set_transform_scale()

void hud_element_set_transform_scale ( s32 id,
f32 x,
f32 y,
f32 z )

Definition at line 2201 of file hud_element.c.

2201 {
2202 HudElement* element = (*gHudElements)[id & ~HUD_ELEMENT_BATTLE_ID_MASK];
2203 HudTransform* transform = element->hudTransform;
2204
2205 if (element->flags & HUD_ELEMENT_FLAG_TRANSFORM) {
2206 transform->scale.x = x;
2207 transform->scale.y = y;
2208 transform->scale.z = z;
2209 }
2210}

Referenced by btl_main_menu_draw(), and btl_state_update_celebration().

◆ hud_element_set_transform_rotation()

void hud_element_set_transform_rotation ( s32 id,
f32 x,
f32 y,
f32 z )

Definition at line 2212 of file hud_element.c.

2212 {
2213 HudElement* element = (*gHudElements)[id & ~HUD_ELEMENT_BATTLE_ID_MASK];
2214 HudTransform* transform = element->hudTransform;
2215
2216 if (element->flags & HUD_ELEMENT_FLAG_TRANSFORM) {
2217 transform->rot.x = x;
2218 transform->rot.y = y;
2219 transform->rot.z = z;
2220 }
2221}

Referenced by btl_main_menu_draw(), btl_main_menu_update(), btl_state_draw_celebration(), and btl_state_update_celebration().

◆ hud_element_set_transform_rotation_pivot()

void hud_element_set_transform_rotation_pivot ( s32 id,
s32 dx,
s32 dy )

Definition at line 2223 of file hud_element.c.

2223 {
2224 HudElement* element = (*gHudElements)[id & ~HUD_ELEMENT_BATTLE_ID_MASK];
2225 HudTransform* transform = element->hudTransform;
2226
2227 if (element->flags & HUD_ELEMENT_FLAG_TRANSFORM) {
2228 transform->pivot.x = dx;
2229 transform->pivot.y = dy;
2230 }
2231}

Referenced by btl_main_menu_draw(), btl_main_menu_update(), and btl_state_update_celebration().

◆ copy_world_hud_element_ref_to_battle()

void copy_world_hud_element_ref_to_battle ( s32 worldID,
s32 battleID )

◆ hud_element_set_aux_cache()

void hud_element_set_aux_cache ( void * base,
s32 size )

Definition at line 2237 of file hud_element.c.

2237 {
2238 HudElemAuxCache = (u8*)base;
2239 if (base == NULL) {
2240 HudElemCacheCapacity = 0x11000;
2241 } else {
2242 HudElemCacheCapacity = size;
2243 }
2244}

Referenced by state_init_file_select(), state_step_battle(), state_step_end_battle(), state_step_pause(), state_step_startup(), and state_step_unpause().

◆ create_standard_popup_menu()

void create_standard_popup_menu ( PopupMenu * popup)

Definition at line 2222 of file 8a860_len_3f30.c.

2222 {
2224 s8 entryCount;
2225 s32 initialPos;
2226 s32 numEntries;
2227
2231 gPopupMenu = popup;
2233 popup->dipMode = 0;
2234 popup->titleNumber = 0;
2235 PopupDipMode = 0;
2237 if (popup->popupType >= POPUP_MENU_DOUBLE_DIP) {
2238 popup->popupType -= POPUP_MENU_DOUBLE_DIP;
2239 PopupDipMode = 1;
2240 if (popup->popupType >= POPUP_MENU_DOUBLE_DIP) {
2241 popup->popupType -= POPUP_MENU_DOUBLE_DIP;
2242 PopupDipMode = 2;
2243 }
2245 }
2246
2250
2251 initialPos = gPopupMenu->initialPos;
2252 numEntries = gPopupMenu->numEntries;
2253 PopupMenu_SelectedIndex = initialPos;
2254 if (initialPos >= numEntries) {
2255 PopupMenu_SelectedIndex = numEntries - 1;
2256 }
2259
2260 entryCount = gPopupMenu->numEntries;
2261 PopupMenu_DisplayedEntryCount = entryCount;
2262 if (PopupMenu_MaxDisplayableEntryCount < entryCount) {
2264 }
2265
2269 }
2270
2271 PopupMenu_Alpha = 255;
2272 D_8010D691 = 4;
2273 PopupDelayLength = 6;
2275}
BSS s32 PopupMenu_PrevSelectedIndex
BSS s8 PopupNotBattle
BSS s32 PopupMenu_Alpha
BSS s8 PopupMenu_FirstDisplayIndex
BSS s8 PopupMenu_DisplayedEntryCount
s32 popup_menu_update(void)
BSS s8 PopupDipMode
BSS s8 PopupDelayLength
BSS s8 PopupNotDipping
BSS s32 gPopupWorker
BSS s8 PopupMenu_LastDisplayIndex
s8 status_bar_is_ignoring_changes(void)
Definition inventory.c:1522
BSS s8 D_8010D691
BSS s32 gPopupState
BSS s8 PopupMenu_WasStatusBarIgnoringChanges
BSS PopupMenu * gPopupMenu
BSS s8 PopupMenu_MaxDisplayableEntryCount
@ POPUP_MENU_DOUBLE_DIP
Definition enums.h:3179
@ POPUP_RESULT_CHOOSING
Definition enums.h:3211
@ POPUP_STATE_INIT
Definition enums.h:3184
void status_bar_ignore_changes(void)
Definition inventory.c:1507
void open_status_bar_quickly(void)
Definition inventory.c:1440
s32 create_worker_frontUI(void(*updateFunc)(void), void(*drawFunc)(void))
Definition worker.c:63

Referenced by check_input_open_menus(), and update_item_entity_pickup().

Variable Documentation

◆ HES_AnimatedHandPointer

◆ HES_StatusCoin

HudScript HES_StatusCoin
extern

◆ HES_Refund

HudScript HES_Refund
extern

◆ HES_MenuTimes

HudScript HES_MenuTimes
extern

Definition at line 2581 of file global_hud_scripts.c.

Referenced by popup_menu_update(), and show_coin_counter().

◆ gPartnerPopupProperties

PartnerPopupProperties gPartnerPopupProperties[13]
extern

Definition at line 331 of file 5B320.c.

331 {
332 [PARTNER_NONE] {
333 (s32) "ăȘし",
334 0,
335 MSG_NONE,
336 MSG_NONE,
337 },
340 2,
343 },
346 3,
349 },
352 4,
355 },
358 5,
361 },
364 1,
367 },
368 [PARTNER_WATT] {
370 7,
373 },
376 8,
379 },
382 9,
385 },
386 [PARTNER_BOW] {
388 6,
391 },
394 1,
397 },
398 [PARTNER_TWINK] {
400 1,
403 }
404};
#define MSG_PartnerDesc_Goombaria_Battle
Definition 5B320.c:138
#define MSG_PartnerDesc_Goombaria_World
Definition 5B320.c:139
#define MSG_PartnerDesc_Twink_Battle
Definition 5B320.c:142
#define MSG_PartnerDesc_Goompa_Battle
Definition 5B320.c:140
#define MSG_PartnerDesc_Twink_World
Definition 5B320.c:143
#define MSG_PartnerDesc_Goompa_World
Definition 5B320.c:141
@ PARTNER_NONE
Definition enums.h:2919
@ PARTNER_BOMBETTE
Definition enums.h:2922
@ PARTNER_LAKILESTER
Definition enums.h:2927
@ PARTNER_WATT
Definition enums.h:2925
@ PARTNER_BOW
Definition enums.h:2928
@ PARTNER_SUSHIE
Definition enums.h:2926
@ PARTNER_TWINK
Definition enums.h:2930
@ PARTNER_PARAKARRY
Definition enums.h:2923
@ PARTNER_GOOMBARIA
Definition enums.h:2929
@ PARTNER_GOOMPA
Definition enums.h:2924
@ PARTNER_KOOPER
Definition enums.h:2921
@ PARTNER_GOOMBARIO
Definition enums.h:2920

Referenced by btl_state_update_partner_menu(), btl_state_update_player_menu(), pause_partners_draw_title(), and setup_partner_popup().

◆ wDisabledPartnerHudScripts

HudScript* wDisabledPartnerHudScripts[]
extern

Definition at line 136 of file partners.c.

Referenced by setup_partner_popup().

◆ wPartnerHudScripts

HudScript* wPartnerHudScripts[]
extern

Definition at line 130 of file partners.c.

130 {
135};
HudScript HES_Parakarry
HudScript HES_Sushie
HudScript HES_Partner0
HudScript HES_PartnerA
HudScript HES_Kooper
HudScript HES_Watt
HudScript HES_Lakilester
HudScript HES_Bow
HudScript HES_Bombette
HudScript HES_Goombario

Referenced by setup_partner_popup().