1
0
mirror of https://github.com/zeldaret/oot.git synced 2024-09-21 12:54:51 +00:00
oot/include/z64interface.h
Dragorn421 880e7c937c
Some cleanup/doc on the item icons (#1263)
* Some cleanup/doc on the item enum and icons

* `gItemIconBigBottlePoeTex` -> `gItemIconBottleBigPoeTex`

* Biggoron sword / giant knife items (?)

* `SPSTONE_` -> `SPIRITUAL_` ?

* `gItemIconBrokenBiggoronSwordTex` -> `gItemIconBrokenGoronsSwordTex`

* `gQuestIcon...MedallionTex` -> `gQuestIconMedallion...Tex`

* `ITEM_MAGIC_` -> `ITEM_MAGIC_JAR_`small/big

* `ITEM_BOW_ARROW_` -> `ITEM_BOW_`

* `MASK_BUNNY` -> `MASK_BUNNY_HOOD`

* Update `GID_` enum from `ITEM_` enum

* ITEM/GID`_ARROW_`small/medium/large -> 5/10/30

* Run formatter

* .

* fix regressions and revert bad ideas

* chicken

* obey the newline police and also prevent the range police from intervening

* fixups

* dimensions -> dimension (singular)

* Note on inconsequential oddities about the `gItemIcons` mapping
2022-12-12 21:45:54 -05:00

100 lines
2.9 KiB
C

#ifndef Z64INTERFACE_H
#define Z64INTERFACE_H
extern u8 _icon_item_staticSegmentRomStart[];
extern u8 _icon_item_24_staticSegmentRomStart[];
// An "item icon" (gItemIcon*Tex) is 32x32 rgba32
#define ITEM_ICON_WIDTH 32
#define ITEM_ICON_HEIGHT 32
#define ITEM_ICON_SIZE (ITEM_ICON_WIDTH * ITEM_ICON_HEIGHT * 4) // The size in bytes of an item icon
/**
* Get the VROM address of the item icon for the specified item.
*
* @param itemId An ItemId value in the range `ITEM_DEKU_STICK`..`ITEM_FISHING_POLE`
*/
#define GET_ITEM_ICON_VROM(itemId) ((uintptr_t)_icon_item_staticSegmentRomStart + ((itemId)*ITEM_ICON_SIZE))
// A "quest icon" (gQuestIcon*Tex) is 24x24 rgba32
#define QUEST_ICON_WIDTH 24
#define QUEST_ICON_HEIGHT 24
#define QUEST_ICON_SIZE (QUEST_ICON_WIDTH * QUEST_ICON_HEIGHT * 4) // The size in bytes of a quest icon
/**
* Get the VROM address of the quest icon for the specified item.
*
* @param itemId An ItemId value in the range `ITEM_MEDALLION_FOREST`..`ITEM_MAGIC_JAR_BIG`
*/
#define GET_QUEST_ICON_VROM(itemId) \
((uintptr_t)_icon_item_24_staticSegmentRomStart + (((itemId)-ITEM_MEDALLION_FOREST) * QUEST_ICON_SIZE))
/**
* Button HUD Positions (Upper Left)
*/
#define A_BUTTON_X 186
#define A_BUTTON_Y 9
#define B_BUTTON_X 160
#define B_BUTTON_Y 17
#define C_LEFT_BUTTON_X 227
#define C_LEFT_BUTTON_Y 18
#define C_DOWN_BUTTON_X 249
#define C_DOWN_BUTTON_Y 34
#define C_RIGHT_BUTTON_X 271
#define C_RIGHT_BUTTON_Y 18
#define C_UP_BUTTON_X 254
#define C_UP_BUTTON_Y 16
/**
* These are the colors for the hearts in the interface. The prim color is the red color of the heart
* for the base hearts, while the prim color for the double defense hearts is the white outline. The
* env color for the base hearts is the purple-ish outline, while the env color for the double defense
* hearts is the red color of the hearts.
*/
#define HEARTS_PRIM_R 255
#define HEARTS_PRIM_G 70
#define HEARTS_PRIM_B 50
#define HEARTS_ENV_R 50
#define HEARTS_ENV_G 40
#define HEARTS_ENV_B 60
#define HEARTS_DD_PRIM_R 255
#define HEARTS_DD_PRIM_G 255
#define HEARTS_DD_PRIM_B 255
#define HEARTS_DD_ENV_R 200
#define HEARTS_DD_ENV_G 0
#define HEARTS_DD_ENV_B 0
/**
* The burn and drown colors listed here are unused. Prerelease footage of the game confirms that at one
* point in development the orange color was to be used while taking damage from hot environments.
* Based on this, we can assume that the blue heart color was to be used while drowning.
* In the final game these environments only have a timer and do not damage you continuously.
*/
#define HEARTS_BURN_PRIM_R 255
#define HEARTS_BURN_PRIM_G 190
#define HEARTS_BURN_PRIM_B 0
#define HEARTS_BURN_ENV_R 255
#define HEARTS_BURN_ENV_G 0
#define HEARTS_BURN_ENV_B 0
#define HEARTS_DROWN_PRIM_R 100
#define HEARTS_DROWN_PRIM_G 100
#define HEARTS_DROWN_PRIM_B 255
#define HEARTS_DROWN_ENV_R 0
#define HEARTS_DROWN_ENV_G 0
#define HEARTS_DROWN_ENV_B 255
#endif