z_draw OK and Documented (#900)

* Import data for z_draw

* Match z_draw

* cleanup

* rupees

* Some object gi docs

* More documents

* Add explanation on function names

* more cleanup

* Fixed some things

* More docs

* Object docs WIP, still not done. I'll continue tomorrow

* More WIP, should just be mask gi objects left now

* Some masks done, many more to go

* cleanup

* Last masks finish

* Shield Stolen

* cleanup

* Apply various dicussions

* remove casts

* PR Suggestions

* Sync PowderKeg
This commit is contained in:
engineer124
2022-07-23 15:25:20 -04:00
committed by GitHub
parent fbb38416ca
commit f3f147cc3d
125 changed files with 2204 additions and 805 deletions
+6 -6
View File
@@ -133,7 +133,7 @@ void* gItemIcons[] = {
0x08021000, // ITEM_ZORA_EGG
0x08022000, // ITEM_GOLD_DUST
0x08023000, // ITEM_MUSHROOM
0x08024000, // ITEM_SEA_HORSE
0x08024000, // ITEM_SEAHORSE
0x08025000, // ITEM_CHATEAU
0x08026000, // ITEM_HYLIAN_LOACH
0x08027000, // ITEM_OBABA_DRINK
@@ -145,7 +145,7 @@ void* gItemIcons[] = {
0x0802D000, // ITEM_ROOM_KEY
0x0802E000, // ITEM_LETTER_MAMA
0x0802F000, // ITEM_LETTER_TO_KAFEI
0x08030000, // ITEM_PENDANT_MEMORIES
0x08030000, // ITEM_PENDANT_OF_MEMORIES
0x08031000, // ITEM_TINGLE_MAP
0x08032000, // ITEM_MASK_DEKU
0x08033000, // ITEM_MASK_GORON
@@ -268,7 +268,7 @@ u8 gItemSlots[] = {
SLOT_BOTTLE_1, // ITEM_ZORA_EGG
SLOT_BOTTLE_1, // ITEM_GOLD_DUST
SLOT_BOTTLE_1, // ITEM_MUSHROOM
SLOT_BOTTLE_1, // ITEM_SEA_HORSE
SLOT_BOTTLE_1, // ITEM_SEAHORSE
SLOT_BOTTLE_1, // ITEM_CHATEAU
SLOT_BOTTLE_1, // ITEM_HYLIAN_LOACH
SLOT_BOTTLE_1, // ITEM_OBABA_DRINK
@@ -280,7 +280,7 @@ u8 gItemSlots[] = {
SLOT_TRADE_KEY_MAMA, // ITEM_ROOM_KEY
SLOT_TRADE_KEY_MAMA, // ITEM_LETTER_MAMA
SLOT_TRADE_COUPLE, // ITEM_LETTER_TO_KAFEI
SLOT_TRADE_COUPLE, // ITEM_PENDANT_MEMORIES
SLOT_TRADE_COUPLE, // ITEM_PENDANT_OF_MEMORIES
SLOT_TRADE_COUPLE, // ITEM_TINGLE_MAP
SLOT_MASK_DEKU, // ITEM_MASK_DEKU
SLOT_MASK_GORON, // ITEM_MASK_GORON
@@ -348,7 +348,7 @@ s16 gItemPrices[] = {
20, // ITEM_ZORA_EGG
200, // ITEM_GOLD_DUST
5, // ITEM_MUSHROOM
0, // ITEM_SEA_HORSE
0, // ITEM_SEAHORSE
200, // ITEM_CHATEAU
20, // ITEM_HYLIAN_LOACH
0, // ITEM_OBABA_DRINK
@@ -360,7 +360,7 @@ s16 gItemPrices[] = {
0, // ITEM_ROOM_KEY
0, // ITEM_LETTER_MAMA
0, // ITEM_LETTER_KAFEI
0, // ITEM_PENDANT_MEMORIES
0, // ITEM_PENDANT_OF_MEMORIES
0, // ITEM_TINGLE_MAP
};
+818 -24
View File
@@ -1,49 +1,843 @@
/**
* @file z_draw.c
* @brief Draw get-item models
*/
#include "global.h"
#include "assets/objects/object_gi_arrow/object_gi_arrow.h"
#include "assets/objects/object_gi_arrowcase/object_gi_arrowcase.h"
#include "assets/objects/object_gi_bean/object_gi_bean.h"
#include "assets/objects/object_gi_bigbomb/object_gi_bigbomb.h"
#include "assets/objects/object_gi_bomb_1/object_gi_bomb_1.h"
#include "assets/objects/object_gi_bomb_2/object_gi_bomb_2.h"
#include "assets/objects/object_gi_bombpouch/object_gi_bombpouch.h"
#include "assets/objects/object_gi_bosskey/object_gi_bosskey.h"
#include "assets/objects/object_gi_bottle_04/object_gi_bottle_04.h"
#include "assets/objects/object_gi_bottle_15/object_gi_bottle_15.h"
#include "assets/objects/object_gi_bottle_16/object_gi_bottle_16.h"
#include "assets/objects/object_gi_bottle_21/object_gi_bottle_21.h"
#include "assets/objects/object_gi_bottle_22/object_gi_bottle_22.h"
#include "assets/objects/object_gi_bottle_red/object_gi_bottle_red.h"
#include "assets/objects/object_gi_bottle/object_gi_bottle.h"
#include "assets/objects/object_gi_bow/object_gi_bow.h"
#include "assets/objects/object_gi_camera/object_gi_camera.h"
#include "assets/objects/object_gi_compass/object_gi_compass.h"
#include "assets/objects/object_gi_fieldmap/object_gi_fieldmap.h"
#include "assets/objects/object_gi_fish/object_gi_fish.h"
#include "assets/objects/object_gi_ghost/object_gi_ghost.h"
#include "assets/objects/object_gi_glasses/object_gi_glasses.h"
#include "assets/objects/object_gi_gold_dust/object_gi_gold_dust.h"
#include "assets/objects/object_gi_golonmask/object_gi_golonmask.h"
#include "assets/objects/object_gi_heart/object_gi_heart.h"
#include "assets/objects/object_gi_hearts/object_gi_hearts.h"
#include "assets/objects/object_gi_hookshot/object_gi_hookshot.h"
#include "assets/objects/object_gi_insect/object_gi_insect.h"
#include "assets/objects/object_gi_key/object_gi_key.h"
#include "assets/objects/object_gi_ki_tan_mask/object_gi_ki_tan_mask.h"
#include "assets/objects/object_gi_liquid/object_gi_liquid.h"
#include "assets/objects/object_gi_loach/object_gi_loach.h"
#include "assets/objects/object_gi_longsword/object_gi_longsword.h"
#include "assets/objects/object_gi_m_arrow/object_gi_m_arrow.h"
#include "assets/objects/object_gi_magicmushroom/object_gi_magicmushroom.h"
#include "assets/objects/object_gi_magicpot/object_gi_magicpot.h"
#include "assets/objects/object_gi_map/object_gi_map.h"
#include "assets/objects/object_gi_mask03/object_gi_mask03.h"
#include "assets/objects/object_gi_mask05/object_gi_mask05.h"
#include "assets/objects/object_gi_mask06/object_gi_mask06.h"
#include "assets/objects/object_gi_mask09/object_gi_mask09.h"
#include "assets/objects/object_gi_mask10/object_gi_mask10.h"
#include "assets/objects/object_gi_mask11/object_gi_mask11.h"
#include "assets/objects/object_gi_mask12/object_gi_mask12.h"
#include "assets/objects/object_gi_mask13/object_gi_mask13.h"
#include "assets/objects/object_gi_mask14/object_gi_mask14.h"
#include "assets/objects/object_gi_mask15/object_gi_mask15.h"
#include "assets/objects/object_gi_mask16/object_gi_mask16.h"
#include "assets/objects/object_gi_mask17/object_gi_mask17.h"
#include "assets/objects/object_gi_mask18/object_gi_mask18.h"
#include "assets/objects/object_gi_mask20/object_gi_mask20.h"
#include "assets/objects/object_gi_mask21/object_gi_mask21.h"
#include "assets/objects/object_gi_mask22/object_gi_mask22.h"
#include "assets/objects/object_gi_mask23/object_gi_mask23.h"
#include "assets/objects/object_gi_melody/object_gi_melody.h"
#include "assets/objects/object_gi_milk/object_gi_milk.h"
#include "assets/objects/object_gi_mssa/object_gi_mssa.h"
#include "assets/objects/object_gi_nuts/object_gi_nuts.h"
#include "assets/objects/object_gi_nutsmask/object_gi_nutsmask.h"
#include "assets/objects/object_gi_ocarina/object_gi_ocarina.h"
#include "assets/objects/object_gi_purse/object_gi_purse.h"
#include "assets/objects/object_gi_rabit_mask/object_gi_rabit_mask.h"
#include "assets/objects/object_gi_reserve_b_00/object_gi_reserve_b_00.h"
#include "assets/objects/object_gi_reserve_b_01/object_gi_reserve_b_01.h"
#include "assets/objects/object_gi_reserve_c_00/object_gi_reserve_c_00.h"
#include "assets/objects/object_gi_reserve_c_01/object_gi_reserve_c_01.h"
#include "assets/objects/object_gi_reserve00/object_gi_reserve00.h"
#include "assets/objects/object_gi_reserve01/object_gi_reserve01.h"
#include "assets/objects/object_gi_rupy/object_gi_rupy.h"
#include "assets/objects/object_gi_schedule/object_gi_schedule.h"
#include "assets/objects/object_gi_seahorse/object_gi_seahorse.h"
#include "assets/objects/object_gi_shield_2/object_gi_shield_2.h"
#include "assets/objects/object_gi_shield_3/object_gi_shield_3.h"
#include "assets/objects/object_gi_soldout/object_gi_soldout.h"
#include "assets/objects/object_gi_soul/object_gi_soul.h"
#include "assets/objects/object_gi_stick/object_gi_stick.h"
#include "assets/objects/object_gi_stonemask/object_gi_stonemask.h"
#include "assets/objects/object_gi_sutaru/object_gi_sutaru.h"
#include "assets/objects/object_gi_sword_1/object_gi_sword_1.h"
#include "assets/objects/object_gi_sword_2/object_gi_sword_2.h"
#include "assets/objects/object_gi_sword_3/object_gi_sword_3.h"
#include "assets/objects/object_gi_sword_4/object_gi_sword_4.h"
#include "assets/objects/object_gi_truth_mask/object_gi_truth_mask.h"
#include "assets/objects/object_gi_zoramask/object_gi_zoramask.h"
#include "assets/objects/object_bsmask/object_bsmask.h"
#include "assets/objects/object_st/object_st.h"
#pragma GLOBAL_ASM("asm/non_matchings/code/z_draw/GetItem_Draw.s")
void GetItem_DrawBombchu(PlayState* play, s16 drawId);
void GetItem_DrawPoes(PlayState* play, s16 drawId);
void GetItem_DrawFairyBottle(PlayState* play, s16 drawId);
void GetItem_DrawSkullToken(PlayState* play, s16 drawId);
void GetItem_DrawCompass(PlayState* play, s16 drawId);
void GetItem_DrawPotion(PlayState* play, s16 drawId);
void GetItem_DrawGoronSword(PlayState* play, s16 drawId);
void GetItem_DrawDekuNuts(PlayState* play, s16 drawId);
void GetItem_DrawRecoveryHeart(PlayState* play, s16 drawId);
void GetItem_DrawFish(PlayState* play, s16 drawId);
void GetItem_DrawOpa0(PlayState* play, s16 drawId);
void GetItem_DrawOpa0Xlu1(PlayState* play, s16 drawId);
void GetItem_DrawOpa01(PlayState* play, s16 drawId);
void GetItem_DrawXlu01(PlayState* play, s16 drawId);
void GetItem_DrawSeahorse(PlayState* play, s16 drawId);
void GetItem_DrawFairyContainer(PlayState* play, s16 drawId);
void GetItem_DrawMoonsTear(PlayState* play, s16 drawId);
void GetItem_DrawMagicArrow(PlayState* play, s16 drawId);
void GetItem_DrawUpgrades(PlayState* play, s16 drawId);
void GetItem_DrawRupee(PlayState* play, s16 drawId);
void GetItem_DrawSmallRupee(PlayState* play, s16 drawId);
void GetItem_DrawWallet(PlayState* play, s16 drawId);
void GetItem_DrawRemains(PlayState* play, s16 drawId);
#pragma GLOBAL_ASM("asm/non_matchings/code/z_draw/func_800EE364.s")
typedef struct {
/* 0x00 */ void (*drawFunc)(PlayState*, s16);
/* 0x04 */ void* drawResources[8]; // Either display lists (Gfx*) or matrices (Mtx*)
} DrawItemTableEntry; // size = 0x24
#pragma GLOBAL_ASM("asm/non_matchings/code/z_draw/func_800EE400.s")
static DrawItemTableEntry sDrawItemTable[] = {
// GID_BOTTLE, OBJECT_GI_BOTTLE
{ GetItem_DrawOpa0Xlu1, { gGiEmptyBottleCorkDL, gGiEmptyBottleGlassDL } },
// GID_KEY_SMALL, OBJECT_GI_KEY
{ GetItem_DrawOpa0, { gGiSmallKeyDL } },
// GID_MASK_KAMARO, OBJECT_GI_MASK17
{ GetItem_DrawOpa01, { gGiKamaroMaskDL, gGiKamaroMaskEmptyDL } },
// GID_MASK_COUPLE, OBJECT_GI_MASK13
{ GetItem_DrawOpa0Xlu1, { gGiCouplesMaskFullDL, gGiCouplesMaskHalfDL } },
// GID_04, OBJECT_GI_MELODY
{ GetItem_DrawXlu01, { gGiSerenadeColorDL, gGiSongNoteDL } },
// GID_05, OBJECT_GI_MELODY
{ GetItem_DrawXlu01, { gGiRequiemColorDL, gGiSongNoteDL } },
// GID_06, OBJECT_GI_MELODY
{ GetItem_DrawXlu01, { gGiNocturneColorDL, gGiSongNoteDL } },
// GID_07, OBJECT_GI_MELODY
{ GetItem_DrawXlu01, { gGiPreludeColorDL, gGiSongNoteDL } },
// GID_RECOVERY_HEART, OBJECT_GI_HEART
{ GetItem_DrawRecoveryHeart, { gGiRecoveryHeartDL } },
// GID_KEY_BOSS, OBJECT_GI_KEY_BOSS
{ GetItem_DrawOpa0Xlu1, { gGiBossKeyDL, gGiBossKeyGemDL } },
// GID_COMPASS, OBJECT_GI_COMPASS
{ GetItem_DrawCompass, { gGiCompassDL, gGiCompassGlassDL } },
// GID_BOMBERS_NOTEBOOK, OBJECT_GI_SCHEDULE
{ GetItem_DrawOpa0Xlu1, { gGiBombersNotebookEmptyDL, gGiBombersNotebookDL } },
// GID_MASK_STONE, OBJECT_GI_STONEMASK
{ GetItem_DrawOpa0Xlu1, { gGiStoneMaskEmptyDL, gGiStoneMaskDL } },
// GID_MASK_KAFEIS_MASK, OBJECT_GI_MASK05
{ GetItem_DrawOpa01, { gGiKafeiMaskDL, gGiKafeiMaskEmptyDL } },
// GID_MASK_CIRCUS_LEADER, OBJECT_GI_MASK11
{ GetItem_DrawOpa0Xlu1, { gGiCircusLeaderMaskFaceDL, gGiCircusLeaderMaskEyebrowsDL } },
// GID_MASK_BREMEN, OBJECT_GI_MASK20
{ GetItem_DrawOpa01, { gGiBremenMaskDL, gGiBremenMaskEmptyDL } },
// GID_MASK_ALL_NIGHT, OBJECT_GI_MASK06
{ GetItem_DrawOpa0Xlu1, { gGiAllNightMaskEyesDL, gGiAllNightMaskFaceDL } },
// GID_NUTS, OBJECT_GI_NUTS
{ GetItem_DrawDekuNuts, { gGiNutDL } },
// GID_HEART_CONTAINER, OBJECT_GI_HEARTS
{ GetItem_DrawXlu01, { gGiHeartBorderDL, gGiHeartContainerDL } },
// GID_HEART_PIECE, OBJECT_GI_HEARTS
{ GetItem_DrawXlu01, { gGiHeartBorderDL, gGiHeartPieceDL } },
// GID_QUIVER_30, OBJECT_GI_ARROWCASE
{ GetItem_DrawUpgrades, { gGiQuiverInnerDL, gGiQuiver30InnerColorDL, gGiQuiver30OuterColorDL, gGiQuiverOuterDL } },
// GID_QUIVER_40, OBJECT_GI_ARROWCASE
{ GetItem_DrawUpgrades, { gGiQuiverInnerDL, gGiQuiver40InnerColorDL, gGiQuiver40OuterColorDL, gGiQuiverOuterDL } },
// GID_QUIVER_50, OBJECT_GI_ARROWCASE
{ GetItem_DrawUpgrades, { gGiQuiverInnerDL, gGiQuiver50InnerColorDL, gGiQuiver50OuterColorDL, gGiQuiverOuterDL } },
// GID_BOMB_BAG_20, OBJECT_GI_BOMBPOUCH
{ GetItem_DrawUpgrades, { gGiBombBagDL, gGiBombBag20BagColorDL, gGiBombBag20RingColorDL, gGiBombBagRingDL } },
// GID_BOMB_BAG_30, OBJECT_GI_BOMBPOUCH
{ GetItem_DrawUpgrades, { gGiBombBagDL, gGiBombBag30BagColorDL, gGiBombBag30RingColorDL, gGiBombBagRingDL } },
// GID_BOMB_BAG_40, OBJECT_GI_BOMBPOUCH
{ GetItem_DrawUpgrades, { gGiBombBagDL, gGiBombBag40BagColorDL, gGiBombBag40RingColorDL, gGiBombBagRingDL } },
// GID_STICK, OBJECT_GI_STICK
{ GetItem_DrawOpa0, { gGiStickDL } },
// GID_DUNGEON_MAP, OBJECT_GI_MAP
{ GetItem_DrawOpa0, { gGiDungeonMapDL } },
// GID_MAGIC_SMALL, OBJECT_GI_MAGICPOT
{ GetItem_DrawOpa0, { gGiMagicJarSmallDL } },
// GID_MAGIC_LARGE, OBJECT_GI_MAGICPOT
{ GetItem_DrawOpa0, { gGiMagicJarLargeDL } },
// GID_BOMB, OBJECT_GI_BOMB_1
{ GetItem_DrawOpa0, { gGiBombDL } },
// GID_STONE_OF_AGONY, OBJECT_GI_MAP
{ GetItem_DrawOpa0, { gGiStoneOfAgonyDL } },
// GID_WALLET_ADULT, OBJECT_GI_PURSE
{ GetItem_DrawWallet,
{ gGiWalletDL, gGiAdultWalletColorDL, gGiAdultWalletRupeeOuterColorDL, gGiWalletRupeeOuterDL,
gGiAdultWalletStringColorDL, gGiWalletStringDL, gGiAdultWalletRupeeInnerColorDL, gGiWalletRupeeInnerDL } },
// GID_WALLET_GIANT, OBJECT_GI_PURSE
{ GetItem_DrawWallet,
{ gGiWalletDL, gGiGiantsWalletColorDL, gGiGiantsWalletRupeeOuterColorDL, gGiWalletRupeeOuterDL,
gGiGiantsWalletStringColorDL, gGiWalletStringDL, gGiGiantsWalletRupeeInnerColorDL, gGiWalletRupeeInnerDL } },
// GID_MASK_DON_GERO, OBJECT_GI_MASK16
{ GetItem_DrawOpa0Xlu1, { gGiDonGeroMaskFaceDL, gGiDonGeroMaskBodyDL } },
// GID_ARROWS_SMALL, OBJECT_GI_ARROW
{ GetItem_DrawOpa0, { gGiArrowSmallDL } },
// GID_ARROWS_MEDIUM, OBJECT_GI_ARROW
{ GetItem_DrawOpa0, { gGiArrowMediumDL } },
// GID_ARROWS_LARGE, OBJECT_GI_ARROW
{ GetItem_DrawOpa0, { gGiArrowLargeDL } },
// GID_BOMBCHU, OBJECT_GI_BOMB_2
{ GetItem_DrawBombchu, { gGiBombchuDL } },
// GID_SHIELD_HERO, OBJECT_GI_SHIELD_2
{ GetItem_DrawOpa0Xlu1, { gGiHerosShieldEmblemDL, gGiHerosShieldDL } },
// GID_HOOKSHOT, OBJECT_GI_HOOKSHOT
{ GetItem_DrawOpa01, { gGiHookshotEmptyDL, gGiHookshotDL } },
// GID_29, OBJECT_GI_HOOKSHOT
{ GetItem_DrawOpa01, { gGiHookshotEmptyDL, gGiHookshotDL } },
// GID_OCARINA, OBJECT_GI_OCARINA
{ GetItem_DrawOpa0Xlu1, { gGiOcarinaOfTimeDL, gGiOcarinaOfTimeHolesDL } },
// GID_MILK, OBJECT_GI_MILK
{ GetItem_DrawOpa0Xlu1, { gGiMilkBottleContentsDL, gGiMilkBottleGlassDL } },
// GID_MASK_KEATON, OBJECT_GI_KI_TAN_MASK
{ GetItem_DrawOpa0Xlu1, { gGiKeatonMaskDL, gGiKeatonMaskEyesDL } },
// GID_TINGLE_MAP, OBJECT_GI_FIELDMAP
{ GetItem_DrawOpa01, { gGiTingleMapDL, gGiTingleMapEmptyDL } },
// GID_BOW, OBJECT_GI_BOW
{ GetItem_DrawOpa01, { gGiBowHandleDL, gGiBowStringDL } },
// GID_LENS, OBJECT_GI_GLASSES
{ GetItem_DrawOpa0Xlu1, { gGiLensDL, gGiLensGlassDL } },
// GID_POTION_GREEN, OBJECT_GI_LIQUID
{ GetItem_DrawPotion,
{ gGiPotionContainerPotDL, gGiPotionContainerGreenPotColorDL, gGiPotionContainerGreenLiquidColorDL,
gGiPotionContainerLiquidDL, gGiPotionContainerGreenPatternColorDL, gGiPotionContainerPatternDL } },
// GID_POTION_RED, OBJECT_GI_LIQUID
{ GetItem_DrawPotion,
{ gGiPotionContainerPotDL, gGiPotionContainerRedPotColorDL, gGiPotionContainerRedLiquidColorDL,
gGiPotionContainerLiquidDL, gGiPotionContainerRedPatternColorDL, gGiPotionContainerPatternDL } },
// GID_POTION_BLUE, OBJECT_GI_LIQUID
{ GetItem_DrawPotion,
{ gGiPotionContainerPotDL, gGiPotionContainerBluePotColorDL, gGiPotionContainerBlueLiquidColorDL,
gGiPotionContainerLiquidDL, gGiPotionContainerBluePatternColorDL, gGiPotionContainerPatternDL } },
// GID_SHIELD_MIRROR, OBJECT_GI_SHIELD_3
{ GetItem_DrawOpa0Xlu1, { gGiMirrorShieldEmptyDL, gGiMirrorShieldDL } },
// GID_MAGIC_BEANS, OBJECT_GI_BEAN
{ GetItem_DrawOpa0, { gGiBeanDL } },
// GID_FISH, OBJECT_GI_FISH
{ GetItem_DrawFish, { gGiFishContainerDL } },
// GID_LETTER_MAMA, OBJECT_GI_RESERVE_B_01
{ GetItem_DrawOpa0Xlu1, { gGiLetterToMamaEnvelopeLetterDL, gGiLetterToMamaInscriptionsDL } },
// GID_37
{ GetItem_DrawOpa0, { NULL } },
// GID_SWORD_BGS, OBJECT_GI_LONGSWORD
{ GetItem_DrawGoronSword, { gGiBiggoronSwordDL } },
// GID_MASK_SUN, OBJECT_GI_MSSA
{ GetItem_DrawOpa0Xlu1, { gGiSunMaskFaceDL, gGiSunMaskEyesSidePatternsDL } },
// GID_MASK_BLAST, OBJECT_GI_MASK21
{ GetItem_DrawOpa0Xlu1, { gGiBlastMaskEmptyDL, gGiBlastMaskDL } },
// GID_FAIRY, OBJECT_GI_BOTTLE_04
{ GetItem_DrawFairyContainer,
{ gGiFairyBottleEmptyDL, gGiFairyBottleGlassCorkDL, gGiFairyBottleContentsDL, &gGiFairyBottleBillboardRotMtx } },
// GID_MASK_SCENTS, OBJECT_GI_MASK22
{ GetItem_DrawOpa01, { gGiMaskOfScentsFaceDL, gGiMaskOfScentsTeethDL } },
// GID_MASK_CAPTAIN, OBJECT_GI_MASK18
{ GetItem_DrawOpa01, { gGiCaptainsHatBodyDL, gGiCaptainsHatFaceDL } },
// GID_MASK_BUNNY, OBJECT_GI_RABIT_MASK
{ GetItem_DrawOpa0Xlu1, { gGiBunnyHoodDL, gGiBunnyHoodEyesDL } },
// GID_MASK_TRUTH, OBJECT_GI_TRUTH_MASK
{ GetItem_DrawOpa0Xlu1, { gGiMaskOfTruthDL, gGiMaskOfTruthAccentsDL } },
// GID_DEED_SWAMP, OBJECT_GI_RESERVE01
{ GetItem_DrawOpa01, { gGiTitleDeedEmptyDL, gGiTitleDeedSwampColorDL } },
// GID_DEED_MOUNTAIN, OBJECT_GI_RESERVE01
{ GetItem_DrawOpa01, { gGiTitleDeedEmptyDL, gGiTitleDeedMountainColorDL } },
// GID_RUPEE_HUGE, OBJECT_GI_RUPY
{ GetItem_DrawRupee, { gGiRupeeInnerDL, gGiGoldRupeeInnerColorDL, gGiRupeeOuterDL, gGiGoldRupeeOuterColorDL } },
// GID_DEED_OCEAN, OBJECT_GI_RESERVE01
{ GetItem_DrawOpa01, { gGiTitleDeedEmptyDL, gGiTitleDeedOceanColorDL } },
// GID_MASK_GORON, OBJECT_GI_GOLONMASK
{ GetItem_DrawOpa0Xlu1, { gGiGoronMaskEmptyDL, gGiGoronMaskDL } },
// GID_MASK_ZORA, OBJECT_GI_ZORAMASK
{ GetItem_DrawOpa01, { gGiZoraMaskEmptyDL, gGiZoraMaskDL } },
// GID_46
{ GetItem_DrawBombchu, { NULL } },
// GID_ARROW_FIRE, OBJECT_GI_M_ARROW
{ GetItem_DrawMagicArrow, { gGiMagicArrowAmmoDL, gGiMagicArrowFireColorDL, gGiMagicArrowGlowDL } },
// GID_ARROW_ICE, OBJECT_GI_M_ARROW
{ GetItem_DrawMagicArrow, { gGiMagicArrowAmmoDL, gGiMagicArrowIceColorDL, gGiMagicArrowGlowDL } },
// GID_ARROW_LIGHT, OBJECT_GI_M_ARROW
{ GetItem_DrawMagicArrow, { gGiMagicArrowAmmoDL, gGiMagicArrowLightColorDL, gGiMagicArrowGlowDL } },
// GID_SKULL_TOKEN, OBJECT_GI_SUTARU
{ GetItem_DrawSkullToken, { gGiSkulltulaTokenDL, gGiSkulltulaTokenFlameDL } },
// GID_BUG, OBJECT_GI_INSECT
{ GetItem_DrawOpa0Xlu1, { gGiBugContainerContentsDL, gGiBugContainerGlassDL } },
// GID_4C
{ GetItem_DrawOpa0Xlu1, { NULL } },
// GID_POE, OBJECT_GI_GHOST
{ GetItem_DrawPoes,
{ gGiPoeContainerLidDL, gGiPoeContainerGlassDL, gGiPoeContainerContentsDL, gGiPoeContainerPoeColorDL } },
// GID_FAIRY_2, OBJECT_GI_SOUL
{ GetItem_DrawFairyBottle, { gGiFairyContainerBaseCapDL, gGiFairyContainerGlassDL, gGiFairyContainerContentsDL } },
// GID_RUPEE_GREEN, OBJECT_GI_RUPY
{ GetItem_DrawSmallRupee,
{ gGiRupeeInnerDL, gGiGreenRupeeInnerColorDL, gGiRupeeOuterDL, gGiGreenRupeeOuterColorDL } },
// GID_RUPEE_BLUE, OBJECT_GI_RUPY
{ GetItem_DrawSmallRupee,
{ gGiRupeeInnerDL, gGiBlueRupeeInnerColorDL, gGiRupeeOuterDL, gGiBlueRupeeOuterColorDL } },
// GID_RUPEE_RED, OBJECT_GI_RUPY
{ GetItem_DrawSmallRupee, { gGiRupeeInnerDL, gGiRedRupeeInnerColorDL, gGiRupeeOuterDL, gGiRedRupeeOuterColorDL } },
// GID_BIG_POE, OBJECT_GI_GHOST
{ GetItem_DrawPoes,
{ gGiPoeContainerLidDL, gGiPoeContainerGlassDL, gGiPoeContainerContentsDL, gGiPoeContainerBigPoeColorDL } },
// GID_RUPEE_PURPLE, OBJECT_GI_RUPY
{ GetItem_DrawRupee, { gGiRupeeInnerDL, gGiPurpleRupeeInnerColorDL, gGiRupeeOuterDL, gGiPurpleRupeeOuterColorDL } },
// GID_RUPEE_SILVER, OBJECT_GI_RUPY
{ GetItem_DrawRupee, { gGiRupeeInnerDL, gGiSilverRupeeInnerColorDL, gGiRupeeOuterDL, gGiSilverRupeeOuterColorDL } },
// GID_SWORD_KOKIRI, OBJECT_GI_SWORD_1
{ GetItem_DrawOpa01, { gGiKokiriSwordBladeHiltDL, gGiKokiriSwordGuardDL } },
// GID_SKULL_TOKEN_2, OBJECT_ST
{ GetItem_DrawSkullToken, { gSkulltulaTokenDL, gSkulltulaTokenFlameDL } },
// GID_57, OBJECT_GI_BOTTLE_RED
{ GetItem_DrawOpa0Xlu1, { gGiRedPotionBottleEmptyDL, gGiRedPotionBottleDL } },
// GID_ZORA_EGG, OBJECT_GI_BOTTLE_15
{ GetItem_DrawOpa0Xlu1, { gGiZoraEggBottleContentsDL, gGiZoraEggBottleGlassAndCorkDL } },
// GID_MOON_TEAR, OBJECT_GI_RESERVE00
{ GetItem_DrawMoonsTear, { gGiMoonsTearItemDL, gGiMoonsTearGlowDL } },
// GID_DEED_LAND, OBJECT_GI_RESERVE01
{ GetItem_DrawOpa01, { gGiTitleDeedEmptyDL, gGiTitleDeedLandColorDL } },
// GID_MASK_DEKU, OBJECT_GI_NUTSMASK
{ GetItem_DrawOpa0Xlu1, { gGiDekuMaskEmptyDL, gGiDekuMaskDL } },
// GID_REMAINS_ODOLWA, OBJECT_BSMASK
{ GetItem_DrawRemains, { gRemainsOdolwaDL, gRemainsOdolwaDL } },
// GID_POWDER_KEG, OBJECT_GI_BIGBOMB
{ GetItem_DrawOpa0Xlu1, { gGiPowderKegBarrelDL, gGiPowderKegGoronSkullAndFuseDL } },
// GID_GOLD_DUST, OBJECT_GI_GOLD_DUST
{ GetItem_DrawOpa01, { gGiGoldDustPowderDL, gGiGoldDustPowderEmptyDL } },
// GID_SEAHORSE, OBJECT_GI_BOTTLE_16
{ GetItem_DrawOpa0Xlu1, { gGiSeahorseBottleEmptyDL, gGiSeahorseBottleGlassAndCorkDL } },
// GID_60, OBJECT_GI_BOTTLE_22
{ GetItem_DrawOpa0Xlu1, { gGiHylianLoachBottleContentsDL, gGiHylianLoachBottleGlassCorkWaterDL } },
// GID_HYLIAN_LOACH, OBJECT_GI_LOACH
{ GetItem_DrawOpa0Xlu1, { gGiHylianLoachEmptyDL, gGiHylianLoachDL } },
// GID_SEAHORSE_CAUGHT, OBJECT_GI_SEAHORSE
{ GetItem_DrawSeahorse, { gGiSeahorseEmptyDL, gGiSeahorseBodyDL, gGiSeahorseGlowDL, &gGiSeahorseBillboardRotMtx } },
// GID_REMAINS_GOHT, OBJECT_BSMASK
{ GetItem_DrawRemains, { gRemainsGohtDL, gRemainsGohtDL } },
// GID_REMAINS_GYORG, OBJECT_BSMASK
{ GetItem_DrawRemains, { gRemainsGyorgDL, gRemainsGyorgDL } },
// GID_REMAINS_TWINMOLD, OBJECT_BSMASK
{ GetItem_DrawRemains, { gRemainsTwinmoldDL, gRemainsTwinmoldDL } },
// GID_SWORD_RAZOR, OBJECT_GI_SWORD_2
{ GetItem_DrawOpa01, { gGiRazorSwordDL, gGiRazorSwordEmptyDL } },
// GID_SWORD_GILDED, OBJECT_GI_SWORD_3
{ GetItem_DrawOpa01, { gGiGildedSwordDL, gGiGildedSwordEmptyDL } },
// GID_SWORD_GREAT_FAIRY, OBJECT_GI_SWORD_4
{ GetItem_DrawOpa0Xlu1, { gGiGreatFairySwordBladeDL, gGiGreatFairySwordHiltEmblemDL } },
// GID_MASK_GARO, OBJECT_GI_MASK09
{ GetItem_DrawOpa0Xlu1, { gGiGarosMaskCloakDL, gGiGarosMaskFaceDL } },
// GID_MASK_GREAT_FAIRY, OBJECT_GI_MASK14
{ GetItem_DrawOpa0Xlu1, { gGiGreatFairyMaskFaceDL, gGiGreatFairyMaskLeavesDL } },
// GID_MASK_GIBDO, OBJECT_GI_MASK15
{ GetItem_DrawOpa0Xlu1, { gGiGibdoMaskEmptyDL, gGiGibdoMaskDL } },
// GID_ROOM_KEY, OBJECT_GI_RESERVE_B_00
{ GetItem_DrawOpa0Xlu1, { gGiRoomKeyEmptyDL, gGiRoomKeyDL } },
// GID_LETTER_TO_KAFEI, OBJECT_GI_RESERVE_C_00
{ GetItem_DrawOpa0Xlu1, { gGiLetterToKafeiEnvelopeLetterDL, gGiLetterToKafeiInscriptionsDL } },
// GID_PENDANT_OF_MEMORIES, OBJECT_GI_RESERVE_C_01
{ GetItem_DrawOpa0Xlu1, { gGiPendantOfMemoriesEmptyDL, gGiPendantOfMemoriesDL } },
// GID_MUSHROOM, OBJECT_GI_MAGICMUSHROOM
{ GetItem_DrawOpa0Xlu1, { gGiMagicMushroomEmptyDL, gGiMagicMushroomDL } },
// GID_MASK_ROMANI, OBJECT_GI_MASK10
{ GetItem_DrawOpa0Xlu1, { gGiRomaniMaskCapDL, gGiRomaniMaskNoseEyeDL } },
// GID_MASK_POSTMAN, OBJECT_GI_MASK12
{ GetItem_DrawOpa0Xlu1, { gGiPostmanHatCapDL, gGiPostmanHatBunnyLogoDL } },
// GID_MASK_GIANT, OBJECT_GI_MASK23
{ GetItem_DrawOpa01, { gGiGiantMaskEmptyDL, gGiGiantMaskDL } },
// GID_CHATEAU, OBJECT_GI_BOTTLE_21
{ GetItem_DrawOpa0Xlu1, { gGiChateauRomaniBottleEmptyDL, gGiChateauRomaniBottleDL } },
// GID_PICTO_BOX, OBJECT_GI_CAMERA
{ GetItem_DrawOpa0Xlu1, { gGiPictoBoxFrameDL, gGiPictoBoxBodyAndLensDL } },
// GID_MASK_FIERCE_DEITY, OBJECT_GI_MASK03
{ GetItem_DrawOpa01, { gGiFierceDeityMaskFaceDL, gGiFierceDeityMaskHairAndHatDL } },
};
#pragma GLOBAL_ASM("asm/non_matchings/code/z_draw/func_800EE5FC.s")
/**
* Draw "Get Item" Model
* Calls the corresponding draw function for the given draw ID
*/
void GetItem_Draw(PlayState* play, s16 drawId) {
sDrawItemTable[drawId].drawFunc(play, drawId);
}
#pragma GLOBAL_ASM("asm/non_matchings/code/z_draw/func_800EE7D8.s")
void GetItem_DrawBombchu(PlayState* play, s16 drawId) {
s32 pad;
#pragma GLOBAL_ASM("asm/non_matchings/code/z_draw/func_800EE940.s")
OPEN_DISPS(play->state.gfxCtx);
#pragma GLOBAL_ASM("asm/non_matchings/code/z_draw/func_800EEA48.s")
func_8012C214(play->state.gfxCtx);
#pragma GLOBAL_ASM("asm/non_matchings/code/z_draw/func_800EEC18.s")
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].drawResources[0]);
#pragma GLOBAL_ASM("asm/non_matchings/code/z_draw/func_800EED20.s")
CLOSE_DISPS(play->state.gfxCtx);
}
#pragma GLOBAL_ASM("asm/non_matchings/code/z_draw/func_800EEE34.s")
void GetItem_DrawPoes(PlayState* play, s16 drawId) {
s32 pad;
#pragma GLOBAL_ASM("asm/non_matchings/code/z_draw/func_800EEF4C.s")
OPEN_DISPS(play->state.gfxCtx);
#pragma GLOBAL_ASM("asm/non_matchings/code/z_draw/func_800EF054.s")
func_8012C28C(play->state.gfxCtx);
#pragma GLOBAL_ASM("asm/non_matchings/code/z_draw/func_800EF0F0.s")
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].drawResources[0]);
#pragma GLOBAL_ASM("asm/non_matchings/code/z_draw/func_800EF1F4.s")
func_8012C2DC(play->state.gfxCtx);
#pragma GLOBAL_ASM("asm/non_matchings/code/z_draw/func_800EF2AC.s")
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].drawResources[1]);
#pragma GLOBAL_ASM("asm/non_matchings/code/z_draw/func_800EF364.s")
gSPSegment(POLY_XLU_DISP++, 0x08,
Gfx_TwoTexScroll(play->state.gfxCtx, G_TX_RENDERTILE, play->state.frames * 0, play->state.frames * 0, 16,
32, 1, play->state.frames, -(play->state.frames * 6), 16, 32));
#pragma GLOBAL_ASM("asm/non_matchings/code/z_draw/func_800EF4D4.s")
Matrix_Push();
Matrix_ReplaceRotation(&play->billboardMtxF);
#pragma GLOBAL_ASM("asm/non_matchings/code/z_draw/func_800EF65C.s")
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].drawResources[3]);
gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].drawResources[2]);
#pragma GLOBAL_ASM("asm/non_matchings/code/z_draw/func_800EF780.s")
Matrix_Pop();
#pragma GLOBAL_ASM("asm/non_matchings/code/z_draw/func_800EF89C.s")
CLOSE_DISPS(play->state.gfxCtx);
}
#pragma GLOBAL_ASM("asm/non_matchings/code/z_draw/func_800EF984.s")
void GetItem_DrawFairyBottle(PlayState* play, s16 drawId) {
s32 pad;
#pragma GLOBAL_ASM("asm/non_matchings/code/z_draw/func_800EFAB8.s")
OPEN_DISPS(play->state.gfxCtx);
#pragma GLOBAL_ASM("asm/non_matchings/code/z_draw/func_800EFBFC.s")
func_8012C28C(play->state.gfxCtx);
#pragma GLOBAL_ASM("asm/non_matchings/code/z_draw/func_800EFD44.s")
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].drawResources[0]);
func_8012C2DC(play->state.gfxCtx);
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].drawResources[1]);
gSPSegment(POLY_XLU_DISP++, 0x08,
Gfx_TwoTexScroll(play->state.gfxCtx, G_TX_RENDERTILE, play->state.frames * 0, play->state.frames * 0, 32,
32, 1, play->state.frames, -(play->state.frames * 6), 32, 32));
Matrix_Push();
Matrix_ReplaceRotation(&play->billboardMtxF);
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].drawResources[2]);
Matrix_Pop();
CLOSE_DISPS(play->state.gfxCtx);
}
void GetItem_DrawSkullToken(PlayState* play, s16 drawId) {
s32 pad;
OPEN_DISPS(play->state.gfxCtx);
func_8012C28C(play->state.gfxCtx);
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].drawResources[0]);
func_8012C2DC(play->state.gfxCtx);
gSPSegment(POLY_XLU_DISP++, 0x08,
Gfx_TwoTexScroll(play->state.gfxCtx, G_TX_RENDERTILE, play->state.frames * 0, -(play->state.frames * 5),
32, 32, 1, play->state.frames * 0, play->state.frames * 0, 32, 64));
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].drawResources[1]);
CLOSE_DISPS(play->state.gfxCtx);
}
void GetItem_DrawCompass(PlayState* play, s16 drawId) {
s32 pad;
OPEN_DISPS(play->state.gfxCtx);
func_8012C28C(play->state.gfxCtx);
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].drawResources[0]);
POLY_XLU_DISP = Gfx_CallSetupDL(POLY_XLU_DISP, 5);
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].drawResources[1]);
CLOSE_DISPS(play->state.gfxCtx);
}
void GetItem_DrawPotion(PlayState* play, s16 drawId) {
s32 pad;
OPEN_DISPS(play->state.gfxCtx);
func_8012C28C(play->state.gfxCtx);
gSPSegment(POLY_OPA_DISP++, 0x08,
Gfx_TwoTexScroll(play->state.gfxCtx, G_TX_RENDERTILE, -play->state.frames, play->state.frames, 32, 32, 1,
-play->state.frames, play->state.frames, 32, 32));
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].drawResources[1]);
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].drawResources[0]);
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].drawResources[2]);
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].drawResources[3]);
func_8012C2DC(play->state.gfxCtx);
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].drawResources[4]);
gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].drawResources[5]);
CLOSE_DISPS(play->state.gfxCtx);
}
void GetItem_DrawGoronSword(PlayState* play, s16 drawId) {
s32 pad;
OPEN_DISPS(play->state.gfxCtx);
func_8012C28C(play->state.gfxCtx);
gSPSegment(POLY_OPA_DISP++, 0x08,
Gfx_TwoTexScroll(play->state.gfxCtx, G_TX_RENDERTILE, play->state.frames * 1, play->state.frames * 0, 32,
32, 1, play->state.frames * 0, play->state.frames * 0, 32, 32));
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].drawResources[0]);
CLOSE_DISPS(play->state.gfxCtx);
}
void GetItem_DrawDekuNuts(PlayState* play, s16 drawId) {
s32 pad;
OPEN_DISPS(play->state.gfxCtx);
func_8012C28C(play->state.gfxCtx);
gSPSegment(POLY_OPA_DISP++, 0x08,
Gfx_TwoTexScroll(play->state.gfxCtx, G_TX_RENDERTILE, play->state.frames * 6, play->state.frames * 6, 32,
32, 1, play->state.frames * 6, play->state.frames * 6, 32, 32));
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].drawResources[0]);
CLOSE_DISPS(play->state.gfxCtx);
}
void GetItem_DrawRecoveryHeart(PlayState* play, s16 drawId) {
s32 pad;
OPEN_DISPS(play->state.gfxCtx);
func_8012C2DC(play->state.gfxCtx);
gSPSegment(POLY_XLU_DISP++, 0x08,
Gfx_TwoTexScroll(play->state.gfxCtx, G_TX_RENDERTILE, play->state.frames * 0, -(play->state.frames * 3),
32, 32, 1, play->state.frames * 0, -(play->state.frames * 2), 32, 32));
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].drawResources[0]);
CLOSE_DISPS(play->state.gfxCtx);
}
void GetItem_DrawFish(PlayState* play, s16 drawId) {
s32 pad;
OPEN_DISPS(play->state.gfxCtx);
func_8012C2DC(play->state.gfxCtx);
gSPSegment(POLY_XLU_DISP++, 0x08,
Gfx_TwoTexScroll(play->state.gfxCtx, G_TX_RENDERTILE, play->state.frames * 0, play->state.frames * 1, 32,
32, 1, play->state.frames * 0, play->state.frames * 1, 32, 32));
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].drawResources[0]);
CLOSE_DISPS(play->state.gfxCtx);
}
/**
* Draw `drawResources[0]` as Opa
*/
void GetItem_DrawOpa0(PlayState* play, s16 drawId) {
s32 pad;
OPEN_DISPS(play->state.gfxCtx);
func_8012C28C(play->state.gfxCtx);
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].drawResources[0]);
CLOSE_DISPS(play->state.gfxCtx);
}
/**
* Draw `drawResources[0]` as Opa and `drawResources[1]` as Xlu
*/
void GetItem_DrawOpa0Xlu1(PlayState* play, s16 drawId) {
s32 pad;
OPEN_DISPS(play->state.gfxCtx);
func_8012C28C(play->state.gfxCtx);
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].drawResources[0]);
func_8012C2DC(play->state.gfxCtx);
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].drawResources[1]);
CLOSE_DISPS(play->state.gfxCtx);
}
/**
* Draw `drawResources[0]` and `drawResources[1]` as Opa
*/
void GetItem_DrawOpa01(PlayState* play, s16 drawId) {
s32 pad;
OPEN_DISPS(play->state.gfxCtx);
func_8012C28C(play->state.gfxCtx);
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].drawResources[0]);
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].drawResources[1]);
CLOSE_DISPS(play->state.gfxCtx);
}
/**
* Draw `drawResources[0]` and `drawResources[1]` as Xlu
*/
void GetItem_DrawXlu01(PlayState* play, s16 drawId) {
s32 pad;
OPEN_DISPS(play->state.gfxCtx);
func_8012C2DC(play->state.gfxCtx);
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].drawResources[0]);
gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].drawResources[1]);
CLOSE_DISPS(play->state.gfxCtx);
}
void GetItem_DrawSeahorse(PlayState* play, s16 drawId) {
s32 pad;
MtxF mtx;
OPEN_DISPS(play->state.gfxCtx);
func_8012C28C(play->state.gfxCtx);
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].drawResources[0]);
func_8012C2DC(play->state.gfxCtx);
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].drawResources[1]);
Matrix_MtxToMtxF(Lib_SegmentedToVirtual(sDrawItemTable[drawId].drawResources[3]), &mtx);
Matrix_Mult(&mtx, MTXMODE_APPLY);
Matrix_ReplaceRotation(&play->billboardMtxF);
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].drawResources[2]);
CLOSE_DISPS(play->state.gfxCtx);
}
void GetItem_DrawFairyContainer(PlayState* play, s16 drawId) {
s32 pad;
MtxF mtx;
OPEN_DISPS(play->state.gfxCtx);
func_8012C28C(play->state.gfxCtx);
func_8012C2DC(play->state.gfxCtx);
AnimatedMat_Draw(play, Lib_SegmentedToVirtual(gGiFairyBottleTexAnim));
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].drawResources[0]);
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].drawResources[1]);
Matrix_MtxToMtxF(Lib_SegmentedToVirtual(sDrawItemTable[drawId].drawResources[3]), &mtx);
Matrix_Mult(&mtx, MTXMODE_APPLY);
Matrix_ReplaceRotation(&play->billboardMtxF);
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].drawResources[2]);
CLOSE_DISPS(play->state.gfxCtx);
}
void GetItem_DrawMoonsTear(PlayState* play, s16 drawId) {
s32 pad;
OPEN_DISPS(play->state.gfxCtx);
func_8012C28C(play->state.gfxCtx);
func_8012C2DC(play->state.gfxCtx);
AnimatedMat_Draw(play, Lib_SegmentedToVirtual(gGiMoonsTearTexAnim));
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].drawResources[0]);
Matrix_ReplaceRotation(&play->billboardMtxF);
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].drawResources[1]);
CLOSE_DISPS(play->state.gfxCtx);
}
void GetItem_DrawMagicArrow(PlayState* play, s16 drawId) {
s32 pad;
OPEN_DISPS(play->state.gfxCtx);
func_8012C28C(play->state.gfxCtx);
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].drawResources[0]);
func_8012C2DC(play->state.gfxCtx);
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].drawResources[1]);
gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].drawResources[2]);
CLOSE_DISPS(play->state.gfxCtx);
}
void GetItem_DrawUpgrades(PlayState* play, s16 drawId) {
s32 pad;
OPEN_DISPS(play->state.gfxCtx);
func_8012C28C(play->state.gfxCtx);
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].drawResources[1]);
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].drawResources[0]);
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].drawResources[2]);
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].drawResources[3]);
CLOSE_DISPS(play->state.gfxCtx);
}
void GetItem_DrawRupee(PlayState* play, s16 drawId) {
s32 pad;
OPEN_DISPS(play->state.gfxCtx);
func_8012C28C(play->state.gfxCtx);
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].drawResources[1]);
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].drawResources[0]);
func_8012C2DC(play->state.gfxCtx);
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].drawResources[3]);
gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].drawResources[2]);
CLOSE_DISPS(play->state.gfxCtx);
}
void GetItem_DrawSmallRupee(PlayState* play, s16 drawId) {
s32 pad;
OPEN_DISPS(play->state.gfxCtx);
Matrix_Scale(0.7f, 0.7f, 0.7f, MTXMODE_APPLY);
func_8012C28C(play->state.gfxCtx);
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].drawResources[1]);
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].drawResources[0]);
func_8012C2DC(play->state.gfxCtx);
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].drawResources[3]);
gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].drawResources[2]);
CLOSE_DISPS(play->state.gfxCtx);
}
void GetItem_DrawWallet(PlayState* play, s16 drawId) {
s32 pad;
OPEN_DISPS(play->state.gfxCtx);
func_8012C28C(play->state.gfxCtx);
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].drawResources[1]);
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].drawResources[0]);
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].drawResources[2]);
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].drawResources[3]);
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].drawResources[4]);
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].drawResources[5]);
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].drawResources[6]);
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].drawResources[7]);
CLOSE_DISPS(play->state.gfxCtx);
}
void GetItem_DrawRemains(PlayState* play, s16 drawId) {
s32 pad;
s8 objectIndex;
OPEN_DISPS(play->state.gfxCtx);
objectIndex = Object_GetIndex(&play->objectCtx, OBJECT_BSMASK);
gSPSegment(POLY_OPA_DISP++, 0x06, play->objectCtx.status[objectIndex].segment);
func_8012C28C(play->state.gfxCtx);
Matrix_Scale(0.02f, 0.02f, 0.02f, MTXMODE_APPLY);
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].drawResources[0]);
POLY_OPA_DISP = func_801660B8(play, POLY_OPA_DISP);
CLOSE_DISPS(play->state.gfxCtx);
}
+88 -87
View File
@@ -79,14 +79,14 @@ void EnItem00_Init(Actor* thisx, PlayState* play) {
if (this->actor.params == ITEM00_HEART_PIECE) {
sp30 = 0;
this->collectibleFlag = 0;
this->actor.params = ITEM00_HEART;
this->actor.params = ITEM00_RECOVERY_HEART;
} else {
Actor_MarkForDeath(&this->actor);
return;
}
}
if (this->actor.params == ITEM00_3_HEARTS) {
this->actor.params = ITEM00_HEART;
this->actor.params = ITEM00_RECOVERY_HEART;
}
Actor_ProcessInitChain(&this->actor, sInitChain);
@@ -118,7 +118,7 @@ void EnItem00_Init(Actor* thisx, PlayState* play) {
sp30 = -1;
}
break;
case ITEM00_HEART:
case ITEM00_RECOVERY_HEART:
this->actor.home.rot.z = randPlusMinusPoint5Scaled(65535.0f);
shadowOffset = 430.0f;
Actor_SetScale(&this->actor, 0.02f);
@@ -184,7 +184,7 @@ void EnItem00_Init(Actor* thisx, PlayState* play) {
ActorShape_Init(&this->actor.shape, shadowOffset, ActorShadow_DrawCircle, shadowScale);
this->actor.shape.shadowAlpha = 180;
this->actor.focus.pos = this->actor.world.pos;
this->unk14A = GI_NONE;
this->getItemId = GI_NONE;
if (sp30 < 0) {
this->actionFunc = EnItem00_WaitForHeartObject;
@@ -220,8 +220,8 @@ void EnItem00_Init(Actor* thisx, PlayState* play) {
case ITEM00_RUPEE_HUGE:
Item_Give(play, ITEM_RUPEE_HUGE);
break;
case ITEM00_HEART:
Item_Give(play, ITEM_HEART);
case ITEM00_RECOVERY_HEART:
Item_Give(play, ITEM_RECOVERY_HEART);
break;
case ITEM00_FLEXIBLE:
case ITEM00_BIG_FAIRY:
@@ -287,7 +287,8 @@ void EnItem00_WaitForHeartObject(EnItem00* this, PlayState* play) {
}
void func_800A640C(EnItem00* this, PlayState* play) {
if ((this->actor.params <= ITEM00_RUPEE_RED) || ((this->actor.params == ITEM00_HEART) && (this->unk152 < 0)) ||
if ((this->actor.params <= ITEM00_RUPEE_RED) ||
((this->actor.params == ITEM00_RECOVERY_HEART) && (this->unk152 < 0)) ||
(this->actor.params == ITEM00_HEART_PIECE) || (this->actor.params == ITEM00_HEART_CONTAINER)) {
this->actor.shape.rot.y = this->actor.shape.rot.y + 960;
} else if ((this->actor.params >= ITEM00_SHIELD_HERO) && (this->actor.params != ITEM00_NUTS_10) &&
@@ -367,7 +368,7 @@ void func_800A6780(EnItem00* this, PlayState* play) {
this->unk152++;
if (this->actor.params == ITEM00_HEART) {
if (this->actor.params == ITEM00_RECOVERY_HEART) {
if (this->actor.velocity.y < 0.0f) {
this->actor.speedXZ = 0.0f;
this->actor.gravity = -0.4f;
@@ -417,12 +418,12 @@ void func_800A6780(EnItem00* this, PlayState* play) {
void func_800A6A40(EnItem00* this, PlayState* play) {
Player* player = GET_PLAYER(play);
if (this->unk14A != GI_NONE) {
if (this->getItemId != GI_NONE) {
if (Actor_HasParent(&this->actor, play) == 0) {
Actor_PickUp(&this->actor, play, this->unk14A, 50.0f, 80.0f);
Actor_PickUp(&this->actor, play, this->getItemId, 50.0f, 80.0f);
this->unk152++;
} else {
this->unk14A = GI_NONE;
this->getItemId = GI_NONE;
}
}
@@ -435,7 +436,7 @@ void func_800A6A40(EnItem00* this, PlayState* play) {
if (this->actor.params <= ITEM00_RUPEE_RED) {
this->actor.shape.rot.y = this->actor.shape.rot.y + 960;
} else if (this->actor.params == ITEM00_HEART) {
} else if (this->actor.params == ITEM00_RECOVERY_HEART) {
this->actor.shape.rot.y = 0;
}
@@ -533,8 +534,8 @@ void EnItem00_Update(Actor* thisx, PlayState* play) {
case ITEM00_NUTS_10:
getItemId = GI_NUTS_10;
break;
case ITEM00_HEART:
Item_Give(play, ITEM_HEART);
case ITEM00_RECOVERY_HEART:
Item_Give(play, ITEM_RECOVERY_HEART);
break;
case ITEM00_FLEXIBLE:
case ITEM00_BIG_FAIRY:
@@ -629,7 +630,7 @@ void EnItem00_Update(Actor* thisx, PlayState* play) {
Actor_SetScale(&this->actor, this->unk154);
this->unk14A = GI_NONE;
this->getItemId = GI_NONE;
this->actionFunc = func_800A6A40;
}
@@ -657,7 +658,7 @@ void EnItem00_Draw(Actor* thisx, PlayState* play) {
case ITEM00_HEART_CONTAINER:
EnItem00_DrawHeartContainer(this, play);
break;
case ITEM00_HEART:
case ITEM00_RECOVERY_HEART:
if (this->unk152 < 0) {
if (this->unk152 == -1) {
s8 bankIndex = Object_GetIndex(&play->objectCtx, OBJECT_GI_HEART);
@@ -668,7 +669,7 @@ void EnItem00_Draw(Actor* thisx, PlayState* play) {
}
} else {
Matrix_Scale(16.0f, 16.0f, 16.0f, MTXMODE_APPLY);
GetItem_Draw(play, 8);
GetItem_Draw(play, GID_RECOVERY_HEART);
}
break;
}
@@ -793,8 +794,8 @@ void EnItem00_DrawHeartContainer(EnItem00* actor, PlayState* play) {
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_MODELVIEW | G_MTX_LOAD);
gSPDisplayList(POLY_XLU_DISP++, object_gi_hearts_DL_001290);
gSPDisplayList(POLY_XLU_DISP++, object_gi_hearts_DL_001470);
gSPDisplayList(POLY_XLU_DISP++, gGiHeartBorderDL);
gSPDisplayList(POLY_XLU_DISP++, gGiHeartContainerDL);
CLOSE_DISPS(play->state.gfxCtx);
}
@@ -826,7 +827,7 @@ s16 func_800A7650(s16 dropId) {
return ITEM00_NO_DROP;
}
if (dropId == ITEM00_HEART) {
if (dropId == ITEM00_RECOVERY_HEART) {
if (((void)0, gSaveContext.save.playerData.healthCapacity) == ((void)0, gSaveContext.save.playerData.health)) {
return ITEM00_RUPEE_GREEN;
}
@@ -851,7 +852,7 @@ Actor* Item_DropCollectible(PlayState* play, Vec3f* spawnPos, u32 params) {
if (paramFF == ITEM00_3_HEARTS) {
for (i = 0; i < 3; i++) {
spawnedActor = Item_DropCollectible(play, spawnPos, param7F00 | ITEM00_HEART | param8000);
spawnedActor = Item_DropCollectible(play, spawnPos, param7F00 | ITEM00_RECOVERY_HEART | param8000);
}
} else if (paramFF == ITEM00_MUSHROOM_CLOUD) {
param7F00 >>= 8;
@@ -958,61 +959,61 @@ Actor* Item_DropCollectible2(PlayState* play, Vec3f* spawnPos, s32 params) {
}
u8 sDropTable[DROP_TABLE_SIZE * DROP_TABLE_NUMBER] = {
ITEM00_RUPEE_GREEN, ITEM00_RUPEE_GREEN, ITEM00_RUPEE_BLUE, ITEM00_NO_DROP, ITEM00_NO_DROP,
ITEM00_MASK, ITEM00_MASK, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_BOMBS_A,
ITEM00_MAGIC_SMALL, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_HEART,
ITEM00_FLEXIBLE, ITEM00_RUPEE_GREEN, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP,
ITEM00_NO_DROP, ITEM00_MASK, ITEM00_MASK, ITEM00_NO_DROP, ITEM00_NO_DROP,
ITEM00_NO_DROP, ITEM00_MAGIC_SMALL, ITEM00_NO_DROP, ITEM00_HEART, ITEM00_HEART,
ITEM00_HEART, ITEM00_FLEXIBLE, ITEM00_RUPEE_GREEN, ITEM00_RUPEE_GREEN, ITEM00_NO_DROP,
ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_MASK, ITEM00_MASK, ITEM00_NO_DROP,
ITEM00_NO_DROP, ITEM00_BOMBS_A, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_LARGE, ITEM00_MAGIC_LARGE,
ITEM00_HEART, ITEM00_HEART, ITEM00_FLEXIBLE, ITEM00_RUPEE_GREEN, ITEM00_NO_DROP,
ITEM00_RUPEE_BLUE, ITEM00_RUPEE_RED, ITEM00_NO_DROP, ITEM00_MASK, ITEM00_MASK,
ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_BOMBS_A, ITEM00_MAGIC_SMALL, ITEM00_NO_DROP,
ITEM00_NO_DROP, ITEM00_HEART, ITEM00_HEART, ITEM00_FLEXIBLE, ITEM00_MASK,
ITEM00_MASK, ITEM00_MASK, ITEM00_MASK, ITEM00_NO_DROP, ITEM00_NO_DROP,
ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP,
ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP,
ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP,
ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP,
ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP,
ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP,
ITEM00_HEART, ITEM00_HEART, ITEM00_HEART, ITEM00_HEART, ITEM00_HEART,
ITEM00_HEART, ITEM00_HEART, ITEM00_HEART, ITEM00_HEART, ITEM00_HEART,
ITEM00_HEART, ITEM00_FLEXIBLE, ITEM00_HEART, ITEM00_HEART, ITEM00_HEART,
ITEM00_HEART, ITEM00_HEART, ITEM00_HEART, ITEM00_HEART, ITEM00_HEART,
ITEM00_HEART, ITEM00_HEART, ITEM00_HEART, ITEM00_HEART, ITEM00_HEART,
ITEM00_HEART, ITEM00_HEART, ITEM00_HEART, ITEM00_RUPEE_GREEN, ITEM00_RUPEE_GREEN,
ITEM00_RUPEE_GREEN, ITEM00_RUPEE_BLUE, ITEM00_RUPEE_BLUE, ITEM00_NO_DROP, ITEM00_NO_DROP,
ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP,
ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_RUPEE_BLUE,
ITEM00_RUPEE_BLUE, ITEM00_RUPEE_BLUE, ITEM00_RUPEE_BLUE, ITEM00_RUPEE_BLUE, ITEM00_RUPEE_BLUE,
ITEM00_RUPEE_BLUE, ITEM00_RUPEE_BLUE, ITEM00_RUPEE_BLUE, ITEM00_RUPEE_RED, ITEM00_RUPEE_RED,
ITEM00_RUPEE_RED, ITEM00_RUPEE_RED, ITEM00_RUPEE_RED, ITEM00_RUPEE_RED, ITEM00_RUPEE_RED,
ITEM00_ARROWS_10, ITEM00_ARROWS_10, ITEM00_ARROWS_10, ITEM00_ARROWS_10, ITEM00_ARROWS_10,
ITEM00_ARROWS_10, ITEM00_ARROWS_10, ITEM00_ARROWS_10, ITEM00_ARROWS_10, ITEM00_ARROWS_10,
ITEM00_ARROWS_30, ITEM00_ARROWS_30, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_LARGE,
ITEM00_MAGIC_LARGE, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP,
ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_BOMBS_A, ITEM00_BOMBS_A,
ITEM00_BOMBS_A, ITEM00_BOMBS_A, ITEM00_BOMBS_A, ITEM00_BOMBS_A, ITEM00_BOMBS_A,
ITEM00_BOMBS_A, ITEM00_BOMBS_A, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP,
ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP,
ITEM00_MAGIC_SMALL, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_SMALL,
ITEM00_MAGIC_SMALL, ITEM00_MAGIC_LARGE, ITEM00_MAGIC_LARGE, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_SMALL,
ITEM00_MAGIC_SMALL, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_SMALL,
ITEM00_MAGIC_SMALL, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_LARGE, ITEM00_MAGIC_LARGE,
ITEM00_MAGIC_LARGE, ITEM00_MAGIC_LARGE, ITEM00_MAGIC_LARGE, ITEM00_MAGIC_LARGE, ITEM00_NO_DROP,
ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NUTS_1, ITEM00_NUTS_1,
ITEM00_NO_DROP, ITEM00_ARROWS_10, ITEM00_ARROWS_10, ITEM00_ARROWS_10, ITEM00_STICK,
ITEM00_STICK, ITEM00_NO_DROP, ITEM00_HEART, ITEM00_HEART, ITEM00_FLEXIBLE,
ITEM00_RUPEE_GREEN, ITEM00_RUPEE_BLUE, ITEM00_RUPEE_BLUE, ITEM00_RUPEE_RED, ITEM00_NO_DROP,
ITEM00_ARROWS_10, ITEM00_ARROWS_10, ITEM00_ARROWS_30, ITEM00_BOMBS_A, ITEM00_NO_DROP,
ITEM00_STICK, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_LARGE, ITEM00_HEART, ITEM00_HEART,
ITEM00_FLEXIBLE, ITEM00_RUPEE_GREEN, ITEM00_HEART, ITEM00_HEART, ITEM00_MAGIC_SMALL,
ITEM00_MASK, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP,
ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP,
ITEM00_NO_DROP, ITEM00_NO_DROP,
ITEM00_RUPEE_GREEN, ITEM00_RUPEE_GREEN, ITEM00_RUPEE_BLUE, ITEM00_NO_DROP, ITEM00_NO_DROP,
ITEM00_MASK, ITEM00_MASK, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_BOMBS_A,
ITEM00_MAGIC_SMALL, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_RECOVERY_HEART,
ITEM00_FLEXIBLE, ITEM00_RUPEE_GREEN, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP,
ITEM00_NO_DROP, ITEM00_MASK, ITEM00_MASK, ITEM00_NO_DROP, ITEM00_NO_DROP,
ITEM00_NO_DROP, ITEM00_MAGIC_SMALL, ITEM00_NO_DROP, ITEM00_RECOVERY_HEART, ITEM00_RECOVERY_HEART,
ITEM00_RECOVERY_HEART, ITEM00_FLEXIBLE, ITEM00_RUPEE_GREEN, ITEM00_RUPEE_GREEN, ITEM00_NO_DROP,
ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_MASK, ITEM00_MASK, ITEM00_NO_DROP,
ITEM00_NO_DROP, ITEM00_BOMBS_A, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_LARGE, ITEM00_MAGIC_LARGE,
ITEM00_RECOVERY_HEART, ITEM00_RECOVERY_HEART, ITEM00_FLEXIBLE, ITEM00_RUPEE_GREEN, ITEM00_NO_DROP,
ITEM00_RUPEE_BLUE, ITEM00_RUPEE_RED, ITEM00_NO_DROP, ITEM00_MASK, ITEM00_MASK,
ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_BOMBS_A, ITEM00_MAGIC_SMALL, ITEM00_NO_DROP,
ITEM00_NO_DROP, ITEM00_RECOVERY_HEART, ITEM00_RECOVERY_HEART, ITEM00_FLEXIBLE, ITEM00_MASK,
ITEM00_MASK, ITEM00_MASK, ITEM00_MASK, ITEM00_NO_DROP, ITEM00_NO_DROP,
ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP,
ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP,
ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP,
ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP,
ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP,
ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP,
ITEM00_RECOVERY_HEART, ITEM00_RECOVERY_HEART, ITEM00_RECOVERY_HEART, ITEM00_RECOVERY_HEART, ITEM00_RECOVERY_HEART,
ITEM00_RECOVERY_HEART, ITEM00_RECOVERY_HEART, ITEM00_RECOVERY_HEART, ITEM00_RECOVERY_HEART, ITEM00_RECOVERY_HEART,
ITEM00_RECOVERY_HEART, ITEM00_FLEXIBLE, ITEM00_RECOVERY_HEART, ITEM00_RECOVERY_HEART, ITEM00_RECOVERY_HEART,
ITEM00_RECOVERY_HEART, ITEM00_RECOVERY_HEART, ITEM00_RECOVERY_HEART, ITEM00_RECOVERY_HEART, ITEM00_RECOVERY_HEART,
ITEM00_RECOVERY_HEART, ITEM00_RECOVERY_HEART, ITEM00_RECOVERY_HEART, ITEM00_RECOVERY_HEART, ITEM00_RECOVERY_HEART,
ITEM00_RECOVERY_HEART, ITEM00_RECOVERY_HEART, ITEM00_RECOVERY_HEART, ITEM00_RUPEE_GREEN, ITEM00_RUPEE_GREEN,
ITEM00_RUPEE_GREEN, ITEM00_RUPEE_BLUE, ITEM00_RUPEE_BLUE, ITEM00_NO_DROP, ITEM00_NO_DROP,
ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP,
ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_RUPEE_BLUE,
ITEM00_RUPEE_BLUE, ITEM00_RUPEE_BLUE, ITEM00_RUPEE_BLUE, ITEM00_RUPEE_BLUE, ITEM00_RUPEE_BLUE,
ITEM00_RUPEE_BLUE, ITEM00_RUPEE_BLUE, ITEM00_RUPEE_BLUE, ITEM00_RUPEE_RED, ITEM00_RUPEE_RED,
ITEM00_RUPEE_RED, ITEM00_RUPEE_RED, ITEM00_RUPEE_RED, ITEM00_RUPEE_RED, ITEM00_RUPEE_RED,
ITEM00_ARROWS_10, ITEM00_ARROWS_10, ITEM00_ARROWS_10, ITEM00_ARROWS_10, ITEM00_ARROWS_10,
ITEM00_ARROWS_10, ITEM00_ARROWS_10, ITEM00_ARROWS_10, ITEM00_ARROWS_10, ITEM00_ARROWS_10,
ITEM00_ARROWS_30, ITEM00_ARROWS_30, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_LARGE,
ITEM00_MAGIC_LARGE, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP,
ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_BOMBS_A, ITEM00_BOMBS_A,
ITEM00_BOMBS_A, ITEM00_BOMBS_A, ITEM00_BOMBS_A, ITEM00_BOMBS_A, ITEM00_BOMBS_A,
ITEM00_BOMBS_A, ITEM00_BOMBS_A, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP,
ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP,
ITEM00_MAGIC_SMALL, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_SMALL,
ITEM00_MAGIC_SMALL, ITEM00_MAGIC_LARGE, ITEM00_MAGIC_LARGE, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_SMALL,
ITEM00_MAGIC_SMALL, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_SMALL,
ITEM00_MAGIC_SMALL, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_LARGE, ITEM00_MAGIC_LARGE,
ITEM00_MAGIC_LARGE, ITEM00_MAGIC_LARGE, ITEM00_MAGIC_LARGE, ITEM00_MAGIC_LARGE, ITEM00_NO_DROP,
ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NUTS_1, ITEM00_NUTS_1,
ITEM00_NO_DROP, ITEM00_ARROWS_10, ITEM00_ARROWS_10, ITEM00_ARROWS_10, ITEM00_STICK,
ITEM00_STICK, ITEM00_NO_DROP, ITEM00_RECOVERY_HEART, ITEM00_RECOVERY_HEART, ITEM00_FLEXIBLE,
ITEM00_RUPEE_GREEN, ITEM00_RUPEE_BLUE, ITEM00_RUPEE_BLUE, ITEM00_RUPEE_RED, ITEM00_NO_DROP,
ITEM00_ARROWS_10, ITEM00_ARROWS_10, ITEM00_ARROWS_30, ITEM00_BOMBS_A, ITEM00_NO_DROP,
ITEM00_STICK, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_LARGE, ITEM00_RECOVERY_HEART, ITEM00_RECOVERY_HEART,
ITEM00_FLEXIBLE, ITEM00_RUPEE_GREEN, ITEM00_RECOVERY_HEART, ITEM00_RECOVERY_HEART, ITEM00_MAGIC_SMALL,
ITEM00_MASK, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP,
ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP,
ITEM00_NO_DROP, ITEM00_NO_DROP,
};
u8 sDropTableAmounts[DROP_TABLE_SIZE * DROP_TABLE_NUMBER] = {
@@ -1053,7 +1054,7 @@ void Item_DropCollectibleRandom(PlayState* play, Actor* fromActor, Vec3f* spawnP
dropId = ITEM00_ARROWS_10;
break;
case PLAYER_FORM_ZORA:
dropId = ITEM00_HEART;
dropId = ITEM00_RECOVERY_HEART;
break;
case PLAYER_FORM_GORON:
dropId = ITEM00_MAGIC_SMALL;
@@ -1074,7 +1075,7 @@ void Item_DropCollectibleRandom(PlayState* play, Actor* fromActor, Vec3f* spawnP
dropQuantity = 1;
} else if (fromActor->dropFlag & 2) {
params = 0x10;
dropId = ITEM00_HEART;
dropId = ITEM00_RECOVERY_HEART;
dropQuantity = 1;
} else if (fromActor->dropFlag & 0x20) {
dropId = ITEM00_RUPEE_PURPLE;
@@ -1093,11 +1094,11 @@ void Item_DropCollectibleRandom(PlayState* play, Actor* fromActor, Vec3f* spawnP
if (gSaveContext.save.playerData.health <= 0x30) {
params = 0x10;
dropId = ITEM00_HEART;
dropId = ITEM00_RECOVERY_HEART;
dropQuantity = 3;
} else if (gSaveContext.save.playerData.health <= 0x50) {
params = 0x10;
dropId = ITEM00_HEART;
dropId = ITEM00_RECOVERY_HEART;
dropQuantity = 1;
} else if ((gSaveContext.save.playerData.magicLevel != 0) && (gSaveContext.save.playerData.magic == 0)) {
params = 0xD0;
@@ -1159,13 +1160,13 @@ void Item_DropCollectibleRandom(PlayState* play, Actor* fromActor, Vec3f* spawnP
}
s32 D_801AE194[32] = {
ITEM00_NO_DROP, ITEM00_RUPEE_GREEN, ITEM00_RUPEE_BLUE, ITEM00_NO_DROP, ITEM00_RUPEE_RED,
ITEM00_RUPEE_PURPLE, ITEM00_NO_DROP, ITEM00_RUPEE_HUGE, ITEM00_COMPASS, ITEM00_MUSHROOM_CLOUD,
ITEM00_HEART, ITEM00_3_HEARTS, ITEM00_HEART_PIECE, ITEM00_HEART_CONTAINER, ITEM00_MAGIC_SMALL,
ITEM00_MAGIC_LARGE, ITEM00_FLEXIBLE, ITEM00_BIG_FAIRY, ITEM00_NO_DROP, ITEM00_NUTS_10,
ITEM00_NO_DROP, ITEM00_BOMBS_A, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP,
ITEM00_STICK, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP,
ITEM00_ARROWS_10, ITEM00_ARROWS_30,
ITEM00_NO_DROP, ITEM00_RUPEE_GREEN, ITEM00_RUPEE_BLUE, ITEM00_NO_DROP, ITEM00_RUPEE_RED,
ITEM00_RUPEE_PURPLE, ITEM00_NO_DROP, ITEM00_RUPEE_HUGE, ITEM00_COMPASS, ITEM00_MUSHROOM_CLOUD,
ITEM00_RECOVERY_HEART, ITEM00_3_HEARTS, ITEM00_HEART_PIECE, ITEM00_HEART_CONTAINER, ITEM00_MAGIC_SMALL,
ITEM00_MAGIC_LARGE, ITEM00_FLEXIBLE, ITEM00_BIG_FAIRY, ITEM00_NO_DROP, ITEM00_NUTS_10,
ITEM00_NO_DROP, ITEM00_BOMBS_A, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP,
ITEM00_STICK, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP,
ITEM00_ARROWS_10, ITEM00_ARROWS_30,
};
s32 func_800A8150(s32 index) {
+10 -10
View File
@@ -595,7 +595,7 @@ u8 Item_Give(PlayState* play, u8 item) {
SET_QUEST_ITEM(item - ITEM_REMAINS_ODOLWA + QUEST_REMAINS_ODOWLA);
return ITEM_NONE;
} else if (item == ITEM_HEART) {
} else if (item == ITEM_RECOVERY_HEART) {
Health_ChangeBy(play, 0x10);
return item;
@@ -655,7 +655,7 @@ u8 Item_Give(PlayState* play, u8 item) {
} else if (((item >= ITEM_POTION_RED) && (item <= ITEM_OBABA_DRINK)) || (item == ITEM_CHATEAU_2) ||
(item == ITEM_MILK) || (item == ITEM_GOLD_DUST_2) || (item == ITEM_HYLIAN_LOACH_2) ||
(item == ITEM_SEA_HORSE_CAUGHT)) {
(item == ITEM_SEAHORSE_CAUGHT)) {
slot = SLOT(item);
if ((item != ITEM_MILK_BOTTLE) && (item != ITEM_MILK_HALF)) {
@@ -671,8 +671,8 @@ u8 Item_Give(PlayState* play, u8 item) {
} else if (item == ITEM_HYLIAN_LOACH_2) {
item = ITEM_HYLIAN_LOACH;
} else if (item == ITEM_SEA_HORSE_CAUGHT) {
item = ITEM_SEA_HORSE;
} else if (item == ITEM_SEAHORSE_CAUGHT) {
item = ITEM_SEAHORSE;
}
slot = SLOT(item);
@@ -712,7 +712,7 @@ u8 Item_Give(PlayState* play, u8 item) {
} else if ((item >= ITEM_MOON_TEAR) && (item <= ITEM_MASK_GIANT)) {
temp = INV_CONTENT(item);
INV_CONTENT(item) = item;
if ((item >= ITEM_MOON_TEAR) && (item <= ITEM_PENDANT_MEMORIES) && (temp != ITEM_NONE)) {
if ((item >= ITEM_MOON_TEAR) && (item <= ITEM_PENDANT_OF_MEMORIES) && (temp != ITEM_NONE)) {
for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) {
if (temp == GET_CUR_FORM_BTN_ITEM(i)) {
SET_CUR_FORM_BTN_ITEM(i, item);
@@ -816,8 +816,8 @@ u8 Item_CheckObtainabilityImpl(u8 item) {
} else if (item == ITEM_HEART_CONTAINER) {
return ITEM_NONE;
} else if (item == ITEM_HEART) {
return ITEM_HEART;
} else if (item == ITEM_RECOVERY_HEART) {
return ITEM_RECOVERY_HEART;
} else if ((item == ITEM_MAGIC_SMALL) || (item == ITEM_MAGIC_LARGE)) {
if (!(gSaveContext.save.weekEventReg[12] & 0x80)) {
@@ -843,7 +843,7 @@ u8 Item_CheckObtainabilityImpl(u8 item) {
} else if (((item >= ITEM_POTION_RED) && (item <= ITEM_OBABA_DRINK)) || (item == ITEM_CHATEAU_2) ||
(item == ITEM_MILK) || (item == ITEM_GOLD_DUST_2) || (item == ITEM_HYLIAN_LOACH_2) ||
(item == ITEM_SEA_HORSE_CAUGHT)) {
(item == ITEM_SEAHORSE_CAUGHT)) {
bottleSlot = SLOT(item);
if ((item != ITEM_MILK_BOTTLE) && (item != ITEM_MILK_HALF)) {
@@ -859,8 +859,8 @@ u8 Item_CheckObtainabilityImpl(u8 item) {
} else if (item == ITEM_HYLIAN_LOACH_2) {
item = ITEM_HYLIAN_LOACH;
} else if (item == ITEM_SEA_HORSE_CAUGHT) {
item = ITEM_SEA_HORSE;
} else if (item == ITEM_SEAHORSE_CAUGHT) {
item = ITEM_SEAHORSE;
}
bottleSlot = SLOT(item);
+1 -1
View File
@@ -412,7 +412,7 @@ void Sram_SaveEndOfCycle(PlayState* play) {
Inventory_DeleteItem(ITEM_LONGSHOT, SLOT_TRADE_COUPLE);
for (j = EQUIP_SLOT_C_LEFT; j <= EQUIP_SLOT_C_RIGHT; j++) {
if (GET_CUR_FORM_BTN_ITEM(j) >= ITEM_MOON_TEAR && GET_CUR_FORM_BTN_ITEM(j) <= ITEM_PENDANT_MEMORIES) {
if (GET_CUR_FORM_BTN_ITEM(j) >= ITEM_MOON_TEAR && GET_CUR_FORM_BTN_ITEM(j) <= ITEM_PENDANT_OF_MEMORIES) {
SET_CUR_FORM_BTN_ITEM(j, ITEM_NONE);
Interface_LoadItemIconImpl(play, j);
}
@@ -4,6 +4,7 @@
* Description: Great Bay Temple - Waterwheels and push switches
*/
#include "prevent_bss_reordering.h"
#include "z_bg_dblue_movebg.h"
#include "objects/object_dblue_object/object_dblue_object.h"
#include "overlays/actors/ovl_Obj_Hunsui/z_obj_hunsui.h"
@@ -718,7 +718,7 @@ void func_80AADD9C(PlayState* play, DmChar05* this) {
Matrix_Translate(this->unk_190.x, this->unk_190.y, this->unk_190.z, MTXMODE_NEW);
Matrix_RotateZYX(0, play->gameplayFrames * 1000, 0, MTXMODE_APPLY);
Matrix_Scale(0.2f, 0.2f, 0.2f, MTXMODE_APPLY);
GetItem_Draw(play, GID_44);
GetItem_Draw(play, GID_MASK_GORON);
}
if (Object_IsLoaded(&play->objectCtx, this->unk_18F)) {
@@ -731,7 +731,7 @@ void func_80AADE78(PlayState* play, DmChar05* this) {
Matrix_Translate(this->unk_190.x, this->unk_190.y, this->unk_190.z, MTXMODE_NEW);
Matrix_RotateZYX(0, play->gameplayFrames * 1000, 0, MTXMODE_APPLY);
Matrix_Scale(0.2f, 0.2f, 0.2f, MTXMODE_APPLY);
GetItem_Draw(play, GID_45);
GetItem_Draw(play, GID_MASK_ZORA);
}
if (Object_IsLoaded(&play->objectCtx, this->unk_18F)) {
@@ -744,7 +744,7 @@ void func_80AADF54(PlayState* play, DmChar05* this) {
Matrix_Translate(this->unk_190.x, this->unk_190.y, this->unk_190.z, MTXMODE_NEW);
Matrix_RotateZYX(0, play->gameplayFrames * 1000, 0, MTXMODE_APPLY);
Matrix_Scale(0.2f, 0.2f, 0.2f, MTXMODE_APPLY);
GetItem_Draw(play, GID_6B);
GetItem_Draw(play, GID_MASK_GIBDO);
}
if (Object_IsLoaded(&play->objectCtx, this->unk_18F)) {
@@ -758,7 +758,7 @@ void func_80AAE030(PlayState* play, DmChar05* this) {
Matrix_Translate(this->unk_190.x, this->unk_190.y, this->unk_190.z, MTXMODE_NEW);
Matrix_RotateZYX(0, play->gameplayFrames * 1000, 0, MTXMODE_APPLY);
Matrix_Scale(0.2f, 0.2f, 0.2f, MTXMODE_APPLY);
GetItem_Draw(play, GID_03);
GetItem_Draw(play, GID_MASK_COUPLE);
}
if (Object_IsLoaded(&play->objectCtx, this->unk_18F)) {
@@ -768,17 +768,18 @@ void func_80AAE030(PlayState* play, DmChar05* this) {
}
void func_80AAE114(PlayState* play, DmChar05* this) {
s32 sp34;
s16 sp24[] = {
GID_02, GID_MASK_GREAT_FAIRY, GID_70, GID_3A, GID_0E, GID_0F, GID_3E, GID_71,
s32 getItemDrawIndex;
s16 getItemDrawIds[] = {
GID_MASK_KAMARO, GID_MASK_GREAT_FAIRY, GID_MASK_ROMANI, GID_MASK_BLAST,
GID_MASK_CIRCUS_LEADER, GID_MASK_BREMEN, GID_MASK_BUNNY, GID_MASK_POSTMAN,
};
sp34 = DMCHAR05_GET(&this->actor) - DMCHAR05_5;
getItemDrawIndex = DMCHAR05_GET(&this->actor) - DMCHAR05_5;
if (this->actor.objBankIndex == this->unk_18F) {
Matrix_Translate(this->actor.world.pos.x, this->actor.world.pos.y, this->actor.world.pos.z, MTXMODE_NEW);
Matrix_RotateZYX(0, play->gameplayFrames * 1000, 0, MTXMODE_APPLY);
Matrix_Scale(0.2f, 0.2f, 0.2f, MTXMODE_APPLY);
GetItem_Draw(play, sp24[sp34]);
GetItem_Draw(play, getItemDrawIds[getItemDrawIndex]);
}
if (Object_IsLoaded(&play->objectCtx, this->unk_18F)) {
@@ -546,7 +546,7 @@ void func_808B9CE8(DoorWarp1* this, PlayState* play) {
}
if (!Actor_HasParent(&this->dyna.actor, play)) {
Actor_PickUp(&this->dyna.actor, play, func_808B849C(this, play) + 84, 30.0f, 80.0f);
Actor_PickUp(&this->dyna.actor, play, (GI_REMAINS_ODOLWA - 1) + func_808B849C(this, play), 30.0f, 80.0f);
return;
}
@@ -495,7 +495,7 @@ void func_809C5738(EnBomBowlMan* this, PlayState* play) {
}
void func_809C59A4(EnBomBowlMan* this, PlayState* play) {
Actor_PickUp(&this->actor, play, GI_50, 300.0f, 300.0f);
Actor_PickUp(&this->actor, play, GI_BOMBERS_NOTEBOOK, 300.0f, 300.0f);
this->unk_29C = 1;
this->actionFunc = func_809C59F0;
}
@@ -512,7 +512,7 @@ void func_809C59F0(EnBomBowlMan* this, PlayState* play) {
func_800B8500(&this->actor, play, 400.0f, 400.0f, -1);
this->actionFunc = func_809C5AA4;
} else {
Actor_PickUp(&this->actor, play, GI_50, 300.0f, 300.0f);
Actor_PickUp(&this->actor, play, GI_BOMBERS_NOTEBOOK, 300.0f, 300.0f);
}
}
+16 -16
View File
@@ -218,9 +218,9 @@ void EnBox_Init(Actor* thisx, PlayState* play) {
this->dyna.actor.world.rot.x = 0;
}
thisx->shape.rot.x = this->dyna.actor.world.rot.x;
this->getItem = ENBOX_GET_ITEM(thisx);
this->getItemId = ENBOX_GET_ITEM(thisx);
if (Flags_GetTreasure(play, ENBOX_GET_CHEST_FLAG(&this->dyna.actor)) || this->getItem == GI_NONE) {
if (Flags_GetTreasure(play, ENBOX_GET_CHEST_FLAG(&this->dyna.actor)) || this->getItemId == GI_NONE) {
this->alpha = 255;
this->iceSmokeTimer = 100;
EnBox_SetupAction(this, EnBox_Open);
@@ -272,7 +272,7 @@ void EnBox_Init(Actor* thisx, PlayState* play) {
this->movementFlags |= ENBOX_MOVE_STICK_TO_GROUND;
}
if ((this->getItem == GI_STRAY_FAIRY) && !Flags_GetTreasure(play, ENBOX_GET_CHEST_FLAG(&this->dyna.actor))) {
if ((this->getItemId == GI_STRAY_FAIRY) && !Flags_GetTreasure(play, ENBOX_GET_CHEST_FLAG(&this->dyna.actor))) {
this->dyna.actor.flags |= ACTOR_FLAG_10;
}
@@ -485,10 +485,10 @@ void EnBox_WaitOpen(EnBox* this, PlayState* play) {
func_801A3098(0x2B | 0x900);
}
if (this->getItem == GI_STRAY_FAIRY) {
if (this->getItemId == GI_STRAY_FAIRY) {
this->movementFlags |= ENBOX_MOVE_0x20;
} else {
if ((this->getItem == GI_HEART_PIECE) || (this->getItem == GI_BOTTLE)) {
if ((this->getItemId == GI_HEART_PIECE) || (this->getItemId == GI_BOTTLE)) {
Flags_SetCollectible(play, this->collectableFlag);
}
Flags_SetTreasure(play, ENBOX_GET_CHEST_FLAG(&this->dyna.actor));
@@ -498,17 +498,17 @@ void EnBox_WaitOpen(EnBox* this, PlayState* play) {
Actor_OffsetOfPointInActorCoords(&this->dyna.actor, &offset, &player->actor.world.pos);
if (offset.z > -50.0f && offset.z < 0.0f && fabsf(offset.y) < 10.0f && fabsf(offset.x) < 20.0f &&
Player_IsFacingActor(&this->dyna.actor, 0x3000, play)) {
if (((this->getItem == GI_HEART_PIECE) || (this->getItem == GI_BOTTLE)) &&
if (((this->getItemId == GI_HEART_PIECE) || (this->getItemId == GI_BOTTLE)) &&
Flags_GetCollectible(play, this->collectableFlag)) {
this->getItem = GI_RECOVERY_HEART;
this->getItemId = GI_RECOVERY_HEART;
}
if ((this->getItem == GI_MASK_CAPTAIN) && (INV_CONTENT(ITEM_MASK_CAPTAIN) == ITEM_MASK_CAPTAIN)) {
this->getItem = GI_RECOVERY_HEART;
if ((this->getItemId == GI_MASK_CAPTAIN) && (INV_CONTENT(ITEM_MASK_CAPTAIN) == ITEM_MASK_CAPTAIN)) {
this->getItemId = GI_RECOVERY_HEART;
}
if ((this->getItem == GI_MASK_GIANT) && (INV_CONTENT(ITEM_MASK_GIANT) == ITEM_MASK_GIANT)) {
this->getItem = GI_RECOVERY_HEART;
if ((this->getItemId == GI_MASK_GIANT) && (INV_CONTENT(ITEM_MASK_GIANT) == ITEM_MASK_GIANT)) {
this->getItemId = GI_RECOVERY_HEART;
}
Actor_PickUpNearby(&this->dyna.actor, play, -this->getItem);
Actor_PickUpNearby(&this->dyna.actor, play, -this->getItemId);
}
if (Flags_GetTreasure(play, ENBOX_GET_CHEST_FLAG(&this->dyna.actor))) {
EnBox_SetupAction(this, EnBox_Open);
@@ -603,7 +603,7 @@ void EnBox_Update(Actor* thisx, PlayState* play) {
this->movementFlags &= ~ENBOX_MOVE_STICK_TO_GROUND;
EnBox_ClipToGround(this, play);
}
if ((this->getItem == GI_STRAY_FAIRY) && !Flags_GetTreasure(play, ENBOX_GET_CHEST_FLAG(&this->dyna.actor))) {
if ((this->getItemId == GI_STRAY_FAIRY) && !Flags_GetTreasure(play, ENBOX_GET_CHEST_FLAG(&this->dyna.actor))) {
play->actorCtx.unk5 |= 8;
}
this->actionFunc(this, play);
@@ -615,7 +615,7 @@ void EnBox_Update(Actor* thisx, PlayState* play) {
Actor_UpdateBgCheckInfo(play, &this->dyna.actor, 0.0f, 0.0f, 0.0f, 0x1C);
}
Actor_SetFocus(&this->dyna.actor, 40.0f);
if ((this->getItem == GI_ICE_TRAP) && (this->actionFunc == EnBox_Open) && (this->skelAnime.curFrame > 45.0f) &&
if ((this->getItemId == GI_ICE_TRAP) && (this->actionFunc == EnBox_Open) && (this->skelAnime.curFrame > 45.0f) &&
(this->iceSmokeTimer < 100)) {
EnBox_SpawnIceSmoke(this, play);
}
@@ -633,7 +633,7 @@ void EnBox_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot,
if (this->type == ENBOX_TYPE_BIG_ORNATE) {
gSPDisplayList((*gfx)++, &gBoxChestBaseOrnateDL);
} else if (Actor_IsSmallChest(this)) {
if (this->getItem == GI_KEY_SMALL) {
if (this->getItemId == GI_KEY_SMALL) {
gSPDisplayList((*gfx)++, &gBoxChestBaseGildedDL);
} else {
gSPDisplayList((*gfx)++, &gBoxChestBaseDL);
@@ -646,7 +646,7 @@ void EnBox_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot,
if (this->type == ENBOX_TYPE_BIG_ORNATE) {
gSPDisplayList((*gfx)++, &gBoxChestLidOrnateDL);
} else if (Actor_IsSmallChest(this)) {
if (this->getItem == GI_KEY_SMALL) {
if (this->getItemId == GI_KEY_SMALL) {
gSPDisplayList((*gfx)++, &gBoxChestLidGildedDL);
} else {
gSPDisplayList((*gfx)++, &gBoxChestLidDL);
+1 -1
View File
@@ -62,7 +62,7 @@ typedef struct EnBox {
/* 0x1F4 */ func_80867BDC_a0 unk_1F4;
/* 0x218 */ s16 cutsceneIdxA;
/* 0x21A */ s16 cutsceneIdxB;
/* 0x21C */ s32 getItem;
/* 0x21C */ s32 getItemId;
/* 0x220 */ s32 collectableFlag;
} EnBox; // size = 0x224
+4 -4
View File
@@ -610,11 +610,11 @@ void func_80A725F8(EnDno* this, PlayState* play) {
case 0x802:
if (Message_ShouldAdvance(play)) {
if (INV_CONTENT(ITEM_MASK_SCENTS) == ITEM_MASK_SCENTS) {
this->unk_458 = GI_RUPEE_RED;
this->getItemId = GI_RUPEE_RED;
} else {
this->unk_458 = GI_MASK_SCENTS;
this->getItemId = GI_MASK_SCENTS;
}
Actor_PickUp(&this->actor, play, this->unk_458, 60.0f, 60.0f);
Actor_PickUp(&this->actor, play, this->getItemId, 60.0f, 60.0f);
func_801477B4(play);
func_80A72B84(this, play);
}
@@ -678,7 +678,7 @@ void func_80A72BA4(EnDno* this, PlayState* play) {
this->actor.parent = NULL;
this->actionFunc = func_80A72598;
} else {
Actor_PickUp(&this->actor, play, this->unk_458, 60.0f, 60.0f);
Actor_PickUp(&this->actor, play, this->getItemId, 60.0f, 60.0f);
}
}
+1 -1
View File
@@ -48,7 +48,7 @@ typedef struct EnDno {
/* 0x44F */ UNK_TYPE1 unk_44F[0x3];
/* 0x452 */ s16 unk_452;
/* 0x454 */ f32 unk_454;
/* 0x458 */ s32 unk_458;
/* 0x458 */ s32 getItemId;
/* 0x45C */ s16 unk_45C;
/* 0x460 */ Actor* unk_460;
/* 0x464 */ u16 textId;
@@ -4938,7 +4938,7 @@ void EnFishing_HandleOwnerDialog(EnFishing* this, PlayState* play) {
} else {
if ((D_809171CC >= 60.0f) && !(gSaveContext.save.unk_EE4 & 0x800)) {
gSaveContext.save.unk_EE4 |= 0x800;
getItemId = GI_SCALE_GOLD;
getItemId = GI_SKULL_TOKEN;
sSinkingLureLocation = Rand_ZeroFloat(3.999f) + 1.0f;
}
}
@@ -4997,7 +4997,7 @@ void EnFishing_HandleOwnerDialog(EnFishing* this, PlayState* play) {
if (Actor_HasParent(&this->actor, play)) {
this->unk_154 = 24;
} else {
Actor_PickUp(&this->actor, play, GI_SCALE_GOLD, 2000.0f, 1000.0f);
Actor_PickUp(&this->actor, play, GI_SKULL_TOKEN, 2000.0f, 1000.0f);
}
break;
@@ -138,16 +138,16 @@ static ShopItemEntry sShopItemEntries[] = {
EnGirlA_BuyBottleItem, EnGirlA_BuyFanfare },
{ OBJECT_GI_BOTTLE, GID_BOTTLE, func_800B8050, 1, 0x29F8, 0x29F9, GI_BOTTLE_STOLEN, EnGirlA_CanBuyBottleStolen,
EnGirlA_BuyBottle, EnGirlA_BuyFanfare },
{ OBJECT_GI_SWORD_4, GID_SWORD_GREAT_FAIRY, func_800B8050, 4, 0x29F2, 0x29F3, GI_SWORD_GREAT_FAIRY,
{ OBJECT_GI_SWORD_4, GID_SWORD_GREAT_FAIRY, func_800B8050, 4, 0x29F2, 0x29F3, GI_SWORD_GREAT_FAIRY_STOLEN,
EnGirlA_CanBuySword, EnGirlA_BuySword, EnGirlA_BuyFanfare },
{ OBJECT_GI_SWORD_1, GID_SWORD_KOKIRI, func_800B8050, 1, 0x29F4, 0x29F5, GI_SWORD_KOKIRI, EnGirlA_CanBuySword,
{ OBJECT_GI_SWORD_1, GID_SWORD_KOKIRI, func_800B8050, 1, 0x29F4, 0x29F5, GI_SWORD_KOKIRI_STOLEN,
EnGirlA_CanBuySword, EnGirlA_BuySword, EnGirlA_BuyFanfare },
{ OBJECT_GI_SWORD_2, GID_SWORD_RAZOR, func_800B8050, 2, 0x29F4, 0x29F5, GI_SWORD_RAZOR_STOLEN, EnGirlA_CanBuySword,
EnGirlA_BuySword, EnGirlA_BuyFanfare },
{ OBJECT_GI_SWORD_2, GID_SWORD_RAZOR, func_800B8050, 2, 0x29F4, 0x29F5, GI_SWORD_RAZOR, EnGirlA_CanBuySword,
EnGirlA_BuySword, EnGirlA_BuyFanfare },
{ OBJECT_GI_SWORD_3, GID_SWORD_GILDED, func_800B8050, 3, 0x29F4, 0x29F5, GI_SWORD_GILDED, EnGirlA_CanBuySword,
EnGirlA_BuySword, EnGirlA_BuyFanfare },
{ OBJECT_GI_SHIELD_2, GID_SHIELD_HERO, func_800B8050, 1, 0x29F6, 0x29F7, GI_SHIELD_HERO_2, EnGirlA_CanBuyShieldHero,
EnGirlA_BuyShieldHero, EnGirlA_BuyFanfare },
{ OBJECT_GI_SWORD_3, GID_SWORD_GILDED, func_800B8050, 3, 0x29F4, 0x29F5, GI_SWORD_GILDED_STOLEN,
EnGirlA_CanBuySword, EnGirlA_BuySword, EnGirlA_BuyFanfare },
{ OBJECT_GI_SHIELD_2, GID_SHIELD_HERO, func_800B8050, 1, 0x29F6, 0x29F7, GI_SHIELD_HERO_STOLEN,
EnGirlA_CanBuyShieldHero, EnGirlA_BuyShieldHero, EnGirlA_BuyFanfare },
{ OBJECT_GI_SHIELD_3, GID_SHIELD_MIRROR, func_800B8050, 1, 0x29F6, 0x29F7, GI_SHIELD_MIRROR,
EnGirlA_CanBuyShieldMirror, EnGirlA_BuyShieldMirror, EnGirlA_BuyFanfare },
};
+4 -4
View File
@@ -377,12 +377,12 @@ void func_80B5BFB8(EnOt* this, PlayState* play) {
void func_80B5C154(EnOt* this, PlayState* play) {
if (gSaveContext.save.weekEventReg[32] & 1) {
this->unk_38C = GI_RUPEE_RED;
this->getItemId = GI_RUPEE_RED;
} else {
this->unk_38C = GI_HEART_PIECE;
this->getItemId = GI_HEART_PIECE;
gSaveContext.save.weekEventReg[32] |= 1;
}
Actor_PickUp(&this->actor, play, this->unk_38C, this->actor.xzDistToPlayer, this->actor.playerHeightRel);
Actor_PickUp(&this->actor, play, this->getItemId, this->actor.xzDistToPlayer, this->actor.playerHeightRel);
this->actionFunc = func_80B5C1CC;
}
@@ -392,7 +392,7 @@ void func_80B5C1CC(EnOt* this, PlayState* play) {
func_80B5C244(this, play);
func_80B5C244(this->unk_360, play);
} else {
Actor_PickUp(&this->actor, play, this->unk_38C, this->actor.xzDistToPlayer, this->actor.playerHeightRel);
Actor_PickUp(&this->actor, play, this->getItemId, this->actor.xzDistToPlayer, this->actor.playerHeightRel);
}
}
+1 -1
View File
@@ -52,7 +52,7 @@ typedef struct EnOt {
/* 0x378 */ Vec3f unk_378;
/* 0x384 */ u8 unk_384;
/* 0x388 */ s32 unk_388;
/* 0x38C */ s32 unk_38C;
/* 0x38C */ s32 getItemId;
/* 0x390 */ s16 unk_390;
/* 0x394 */ Vec3f unk_394;
/* 0x3A0 */ s16 unk_3A0;
+1 -1
View File
@@ -442,7 +442,7 @@ void EnTrt_GiveRedPotionForKoume(EnTrt* this, PlayState* play) {
} else if (gSaveContext.save.weekEventReg[12] & 0x10) {
Actor_PickUp(&this->actor, play, GI_POTION_RED, 300.0f, 300.0f);
} else {
Actor_PickUp(&this->actor, play, GI_BOTTLE_POTION_RED, 300.0f, 300.0f);
Actor_PickUp(&this->actor, play, GI_POTION_RED_BOTTLE, 300.0f, 300.0f);
}
}
+1 -1
View File
@@ -406,7 +406,7 @@ void func_80AD3FF4(EnTrt2* this, PlayState* play) {
} else if (gSaveContext.save.weekEventReg[12] & 0x10) {
Actor_PickUp(&this->actor, play, GI_POTION_RED, 300.0f, 300.0f);
} else {
Actor_PickUp(&this->actor, play, GI_BOTTLE_POTION_RED, 300.0f, 300.0f);
Actor_PickUp(&this->actor, play, GI_POTION_RED_BOTTLE, 300.0f, 300.0f);
}
}
+1 -1
View File
@@ -299,7 +299,7 @@ void func_80AE0460(EnTsn* this, PlayState* play) {
ENTSN_SET_Z(&this->unk_1D8->actor, false);
this->actionFunc = func_80AE0418;
} else {
Actor_PickUp(&this->actor, play, GI_SEAHORSE, 2000.0f, 1000.0f);
Actor_PickUp(&this->actor, play, GI_SEAHORSE_CAUGHT, 2000.0f, 1000.0f);
}
}
@@ -101,13 +101,13 @@ void ItemBHeart_Draw(Actor* thisx, PlayState* play) {
if (flag || thisx->world.rot.y != 0) {
func_8012C2DC(play->state.gfxCtx);
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_XLU_DISP++, object_gi_hearts_DL_001290);
gSPDisplayList(POLY_XLU_DISP++, object_gi_hearts_DL_001470);
gSPDisplayList(POLY_XLU_DISP++, gGiHeartBorderDL);
gSPDisplayList(POLY_XLU_DISP++, gGiHeartContainerDL);
} else {
func_8012C28C(play->state.gfxCtx);
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_OPA_DISP++, object_gi_hearts_DL_001290);
gSPDisplayList(POLY_OPA_DISP++, object_gi_hearts_DL_001470);
gSPDisplayList(POLY_OPA_DISP++, gGiHeartBorderDL);
gSPDisplayList(POLY_OPA_DISP++, gGiHeartContainerDL);
}
CLOSE_DISPS(play->state.gfxCtx);
@@ -37,14 +37,14 @@ static s16 sObjectIds[] = {
OBJECT_GI_BOTTLE, OBJECT_GI_KEY, OBJECT_GI_M_ARROW, OBJECT_GI_RUPY, OBJECT_GI_RUPY,
OBJECT_GI_RUPY, OBJECT_GI_RUPY, OBJECT_GI_HEARTS, OBJECT_GI_KEY,
};
static s16 sDrawItemIndices[] = {
GID_BOTTLE, GID_BOTTLE, GID_BOTTLE, GID_BOTTLE, GID_BOTTLE, GID_BOTTLE, GID_01,
GID_47, GID_4F, GID_50, GID_51, GID_53, GID_13, GID_01,
static s16 sGetItemDrawIds[] = {
GID_BOTTLE, GID_BOTTLE, GID_BOTTLE, GID_BOTTLE, GID_BOTTLE, GID_BOTTLE, GID_KEY_SMALL,
GID_ARROW_FIRE, GID_RUPEE_GREEN, GID_RUPEE_BLUE, GID_RUPEE_RED, GID_RUPEE_PURPLE, GID_HEART_PIECE, GID_KEY_SMALL,
};
static s16 sGetItemIds[] = {
GI_BOTTLE, GI_BOTTLE, GI_BOTTLE, GI_BOTTLE, GI_BOTTLE, GI_BOTTLE, GI_KEY_SMALL,
GI_25, GI_NONE, GI_NONE, GI_NONE, GI_NONE, GI_NONE, GI_NONE,
GI_BOTTLE, GI_BOTTLE, GI_BOTTLE, GI_BOTTLE, GI_BOTTLE, GI_BOTTLE, GI_KEY_SMALL,
GI_ARROW_FIRE, GI_NONE, GI_NONE, GI_NONE, GI_NONE, GI_NONE, GI_NONE,
};
void ItemEtcetera_SetupAction(ItemEtcetera* this, ItemEtceteraActionFunc actionFunc) {
@@ -62,8 +62,8 @@ void ItemEtcetera_Init(Actor* thisx, PlayState* play) {
} else {
this->objIndex = objBankIndex;
}
this->giDrawId = sDrawItemIndices[type];
this->itemID = sGetItemIds[type];
this->getItemDrawId = sGetItemDrawIds[type];
this->getItemId = sGetItemIds[type];
this->futureActionFunc = func_8092009C;
this->drawFunc = ItemEtcetera_Draw;
Actor_SetScale(&this->actor, 0.25f);
@@ -104,7 +104,7 @@ void func_8092009C(ItemEtcetera* this, PlayState* play) {
if (Actor_HasParent(&this->actor, play)) {
Actor_MarkForDeath(&this->actor);
} else {
Actor_PickUp(&this->actor, play, this->itemID, 30.0f, 50.0f);
Actor_PickUp(&this->actor, play, this->getItemId, 30.0f, 50.0f);
}
}
@@ -126,7 +126,7 @@ void ItemEtcetera_DrawThroughLens(Actor* thisx, PlayState* play) {
if (play->actorCtx.unk4 == 100) {
func_800B8050(&this->actor, play, 0);
func_800B8118(&this->actor, play, 0);
GetItem_Draw(play, this->giDrawId);
GetItem_Draw(play, this->getItemDrawId);
}
}
@@ -135,5 +135,5 @@ void ItemEtcetera_Draw(Actor* thisx, PlayState* play) {
func_800B8050(&this->actor, play, 0);
func_800B8118(&this->actor, play, 0);
GetItem_Draw(play, this->giDrawId);
GetItem_Draw(play, this->getItemDrawId);
}
@@ -30,8 +30,8 @@ typedef enum {
typedef struct ItemEtcetera {
/* 0x000 */ Actor actor;
/* 0x144 */ ItemEtceteraActionFunc futureActionFunc;
/* 0x148 */ s16 giDrawId;
/* 0x14A */ s16 itemID;
/* 0x148 */ s16 getItemDrawId;
/* 0x14A */ s16 getItemId;
/* 0x14C */ u8 objIndex;
/* 0x150 */ ActorFunc drawFunc;
/* 0x154 */ ItemEtceteraActionFunc actionFunc;
@@ -148,11 +148,11 @@ void ObjMoonStone_Draw(Actor* thisx, PlayState* play) {
OPEN_DISPS(play->state.gfxCtx);
func_8012C28C(play->state.gfxCtx);
func_8012C2DC(play->state.gfxCtx);
AnimatedMat_Draw(play, Lib_SegmentedToVirtual(object_gi_reserve00_Matanimheader_001C60));
AnimatedMat_Draw(play, Lib_SegmentedToVirtual(gGiMoonsTearTexAnim));
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_OPA_DISP++, object_gi_reserve00_DL_000D78);
gSPDisplayList(POLY_OPA_DISP++, gGiMoonsTearItemDL);
Matrix_ReplaceRotation(&play->billboardMtxF);
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_XLU_DISP++, object_gi_reserve00_DL_000C80);
gSPDisplayList(POLY_XLU_DISP++, gGiMoonsTearGlowDL);
CLOSE_DISPS(play->state.gfxCtx);
}
@@ -465,7 +465,7 @@ void ObjNozoki_Draw(Actor* thisx, PlayState* play) {
ObjNozoki* this = THIS;
if (this->unk_15C == 1) {
GetItem_Draw(play, GID_39);
GetItem_Draw(play, GID_MASK_SUN);
} else {
Gfx_DrawDListOpa(play, D_80BA34FC[this->unk_15C]);
}
@@ -508,7 +508,7 @@ void func_809289E4(ObjTsubo* this, PlayState* play) {
s32 absYawDiff = ABS_ALT(yawDiff);
if (absYawDiff > (0x10000 / 3)) {
Actor_PickUp(&this->actor, play, 0, 36.0f, 30.0f);
Actor_PickUp(&this->actor, play, GI_NONE, 36.0f, 30.0f);
}
}
}