diff --git a/config/SOUE01/splits.txt b/config/SOUE01/splits.txt index 74d5e914..cef69813 100644 --- a/config/SOUE01/splits.txt +++ b/config/SOUE01/splits.txt @@ -1220,10 +1220,34 @@ toBeSorted/counters/extra_wallet_counter.cpp: .data start:0x805280B0 end:0x805280D0 .sbss start:0x80575640 end:0x80575648 -toBeSorted/item_mdl.cpp: - .text start:0x8016E2A0 end:0x80171AA8 align:16 - .rodata start:0x804E91D0 end:0x804E9A80 - .data start:0x805280D0 end:0x80528B20 +toBeSorted/item_mdl_misc.cpp: + .text start:0x8016E2A0 end:0x8016F9DC align:16 + .rodata start:0x804E91D0 end:0x804E9650 + .data start:0x805280D0 end:0x80528490 + .sdata start:0x80572A10 end:0x80572A28 + .sdata2 start:0x8057A1D8 end:0x8057A1E0 + +toBeSorted/item_mdl_item.cpp: + .text start:0x8016F9E0 end:0x8016FE20 align:16 + .rodata start:0x804E9650 end:0x804E9A48 + .data start:0x80528490 end:0x80528A68 + .sdata start:0x80572A28 end:0x80572AA0 + +toBeSorted/item_mdl_rupee.cpp: + .text start:0x8016FE20 end:0x80170414 align:16 + .rodata start:0x804E9A48 end:0x804E9A80 + .data start:0x80528A68 end:0x80528AB0 + +toBeSorted/item_mdl_light_fruit.cpp: + .text start:0x80170420 end:0x801708E4 align:16 + .data start:0x80528AB0 end:0x80528AE0 + +toBeSorted/item_mdl_stamina_fruit.cpp: + .text start:0x801708F0 end:0x80170DA4 align:16 + .data start:0x80528AE0 end:0x80528B20 + +toBeSorted/item_spawn.cpp: + .text start:0x80170DB0 end:0x80171AA8 align:16 toBeSorted/unk_screen_effect.cpp: .text start:0x80171AB0 end:0x801749D8 align:16 diff --git a/config/SOUE01/symbols.txt b/config/SOUE01/symbols.txt index 816f8f26..f8f5e681 100644 --- a/config/SOUE01/symbols.txt +++ b/config/SOUE01/symbols.txt @@ -142,8 +142,8 @@ findSMA3 = .text:0x80006CD0; // type:function size:0x10 initialize__4MplsFiPPc = .text:0x80006CE0; // type:function size:0x80 tryLaunchMovie__4MplsFv = .text:0x80006D60; // type:function size:0x60 forceLaunchMovie__4MplsFv = .text:0x80006DC0; // type:function size:0x48 -fn_80006E10 = .text:0x80006E10; // type:function size:0x3C -fn_80006E50 = .text:0x80006E50; // type:function size:0x58 +__ct__6dMdl_cFv = .text:0x80006E10; // type:function size:0x3C +__dt__6dMdl_cFv = .text:0x80006E50; // type:function size:0x58 printGameInfo__Fv = .text:0x80006EB0; // type:function size:0xBC scope:local waitForButtonSequence__FPv = .text:0x80006F70; // type:function size:0x9C scope:local preExceptionCallback__Fv = .text:0x80007010; // type:function size:0x38 scope:local @@ -658,19 +658,19 @@ fn_8001BEF0 = .text:0x8001BEF0; // type:function size:0x58 fn_8001BF50 = .text:0x8001BF50; // type:function size:0x40 fn_8001BF90 = .text:0x8001BF90; // type:function size:0x4 remove__27dSwordSwingEffectProcBase_cFv = .text:0x8001BFA0; // type:function size:0x54 -__dt__Q227dSwordSwingEffectProcBase_c11swing_entryFv = .text:0x8001C000; // type:function size:0x40 +__dt__Q227dSwordSwingEffectProcBase_c11swing_entryFv = .text:0x8001C000; // type:function size:0x40 scope:weak drawXlu__27dSwordSwingEffectProcBase_cFv = .text:0x8001C040; // type:function size:0x30C hasSwings__27dSwordSwingEffectProcBase_cCFv = .text:0x8001C350; // type:function size:0x14 entry__27dSwordSwingEffectProcBase_cFv = .text:0x8001C370; // type:function size:0x44 create__27dSwordSwingEffectProcBase_cFlP12mAllocator_c = .text:0x8001C3C0; // type:function size:0xCC -__ct__Q227dSwordSwingEffectProcBase_c11swing_entryFv = .text:0x8001C490; // type:function size:0x18 +__ct__Q227dSwordSwingEffectProcBase_c11swing_entryFv = .text:0x8001C490; // type:function size:0x18 scope:weak addSwing__27dSwordSwingEffectProcBase_cFRC7mVec3_c6mColorRC7mVec3_c6mColor = .text:0x8001C4B0; // type:function size:0x78 calc__27dSwordSwingEffectProcBase_cFf = .text:0x8001C530; // type:function size:0x94 drawXlu__23dSwordSwingEffectProc_cFv = .text:0x8001C5D0; // type:function size:0x3E4 create__23dSwordSwingEffectProc_cFlP12mAllocator_cPQ23EGG7ResTIMGf = .text:0x8001C9C0; // type:function size:0x60 -set__Q227dSwordSwingEffectProcBase_c11swing_entryFRC7mVec3_c6mColorRC7mVec3_c6mColor = .text:0x8001CA20; // type:function size:0x7C -__dt__23dSwordSwingEffectProc_cFv = .text:0x8001CAA0; // type:function size:0x80 -__dt__27dSwordSwingEffectProcBase_cFv = .text:0x8001CB20; // type:function size:0x7C +set__Q227dSwordSwingEffectProcBase_c11swing_entryFRC7mVec3_cRC6mColorRC7mVec3_cRC6mColor = .text:0x8001CA20; // type:function size:0x7C +__dt__23dSwordSwingEffectProc_cFv = .text:0x8001CAA0; // type:function size:0x80 scope:weak +__dt__27dSwordSwingEffectProcBase_cFv = .text:0x8001CB20; // type:function size:0x7C scope:weak fn_8001CBA0 = .text:0x8001CBA0; // type:function size:0x20C fn_8001CDB0 = .text:0x8001CDB0; // type:function size:0x308 fn_8001D0C0 = .text:0x8001D0C0; // type:function size:0x35C @@ -2826,28 +2826,28 @@ initAudioMgr__6dSys_cFPQ23EGG4Heap = .text:0x80064250; // type:function size:0xB beginRender__6dSys_cFv = .text:0x80064300; // type:function size:0x38 endRender__6dSys_cFv = .text:0x80064340; // type:function size:0x18 beginFrame__6dSys_cFv = .text:0x80064360; // type:function size:0x68 -onBeginFrame__Q23EGG126TSystemFv = .text:0x800643D0; // type:function size:0x4 +onBeginFrame__Q23EGG126TSystemFv = .text:0x800643D0; // type:function size:0x4 scope:weak endFrame__6dSys_cFv = .text:0x800643E0; // type:function size:0x48 -onEndFrame__Q23EGG126TSystemFv = .text:0x80064430; // type:function size:0x4 +onEndFrame__Q23EGG126TSystemFv = .text:0x80064430; // type:function size:0x4 scope:weak setBlack__6dSys_cFb = .text:0x80064440; // type:function size:0x80 setFrameRate__6dSys_cFUc = .text:0x800644C0; // type:function size:0x10 getFrameRate__6dSys_cFv = .text:0x800644D0; // type:function size:0x10 setClearColor__6dSys_cFQ34nw4r2ut5Color = .text:0x800644E0; // type:function size:0x60 getClearColor__6dSys_cFv = .text:0x80064540; // type:function size:0x14 create__6dSys_cFv = .text:0x80064560; // type:function size:0x3BC -setPosParam__Q23EGG14CoreControllerFff = .text:0x80064920; // type:function size:0x8 -initialize__Q23EGG126TSystemFv = .text:0x80064930; // type:function size:0x1F4 +setPosParam__Q23EGG14CoreControllerFff = .text:0x80064920; // type:function size:0x8 scope:weak +initialize__Q23EGG126TSystemFv = .text:0x80064930; // type:function size:0x1F4 scope:weak execute__6dSys_cFv = .text:0x80064B30; // type:function size:0x268 fixHeaps__7dSystemFv = .text:0x80064DA0; // type:function size:0xB8 __sinit_\d_sys_cpp = .text:0x80064E60; // type:function size:0x34 scope:local -initRenderMode__Q23EGG126TSystemFv = .text:0x80064EA0; // type:function size:0x4 -getVideo__Q23EGG126TSystemFv = .text:0x80064EB0; // type:function size:0x8 -getSystemHeap__Q23EGG126TSystemFv = .text:0x80064EC0; // type:function size:0x8 -getDisplay__Q23EGG126TSystemFv = .text:0x80064ED0; // type:function size:0x8 -getXfbMgr__Q23EGG126TSystemFv = .text:0x80064EE0; // type:function size:0x8 -getPerfView__Q23EGG126TSystemFv = .text:0x80064EF0; // type:function size:0x14 -getSceneMgr__Q23EGG126TSystemFv = .text:0x80064F10; // type:function size:0x8 -getAudioMgr__Q23EGG126TSystemFv = .text:0x80064F20; // type:function size:0x8 +initRenderMode__Q23EGG126TSystemFv = .text:0x80064EA0; // type:function size:0x4 scope:weak +getVideo__Q23EGG126TSystemFv = .text:0x80064EB0; // type:function size:0x8 scope:weak +getSystemHeap__Q23EGG126TSystemFv = .text:0x80064EC0; // type:function size:0x8 scope:weak +getDisplay__Q23EGG126TSystemFv = .text:0x80064ED0; // type:function size:0x8 scope:weak +getXfbMgr__Q23EGG126TSystemFv = .text:0x80064EE0; // type:function size:0x8 scope:weak +getPerfView__Q23EGG126TSystemFv = .text:0x80064EF0; // type:function size:0x14 scope:weak +getSceneMgr__Q23EGG126TSystemFv = .text:0x80064F10; // type:function size:0x8 scope:weak +getAudioMgr__Q23EGG126TSystemFv = .text:0x80064F20; // type:function size:0x8 scope:weak fn_80064F30 = .text:0x80064F30; // type:function size:0x24 fn_80064F60 = .text:0x80064F60; // type:function size:0x2C fn_80064F90 = .text:0x80064F90; // type:function size:0x30 @@ -9347,8 +9347,8 @@ setAdviceOptions__9FiContextFl = .text:0x8016CB00; // type:function size:0x1C resetAdviceOptions__9FiContextFv = .text:0x8016CB20; // type:function size:0x1C fn_8016CB40__9FiContextFv = .text:0x8016CB40; // type:function size:0x1C isInLeviasFightMaybe__9FiContextFv = .text:0x8016CB60; // type:function size:0x78 -AcItem__isItemThatHasStruct = .text:0x8016CBE0; // type:function size:0x3C -AcItem__getIndex = .text:0x8016CC20; // type:function size:0x14 +hasItemMdl__FUs = .text:0x8016CBE0; // type:function size:0x3C +getItemMdlIdx__FUs = .text:0x8016CC20; // type:function size:0x14 checkedAdd__7CounterFl = .text:0x8016CC40; // type:function size:0xF0 getCommittedValue__7CounterCFv = .text:0x8016CD30; // type:function size:0x20 getUncommittedValue__7CounterCFv = .text:0x8016CD50; // type:function size:0x20 @@ -9457,70 +9457,71 @@ __dt__18ExtraWalletCounterFv = .text:0x8016E220; // type:function size:0x40 scop __ct__18ExtraWalletCounterFv = .text:0x8016E260; // type:function size:0x18 getMax__18ExtraWalletCounterCFv = .text:0x8016E280; // type:function size:0x8 scope:weak __sinit_\extra_wallet_counter_cpp = .text:0x8016E290; // type:function size:0x8 scope:local -itemHasPutItemModel = .text:0x8016E2A0; // type:function size:0x6C -fn_8016E310 = .text:0x8016E310; // type:function size:0x194 -fn_8016E4B0 = .text:0x8016E4B0; // type:function size:0x1C -fn_8016E4D0 = .text:0x8016E4D0; // type:function size:0x48 -fn_8016E520 = .text:0x8016E520; // type:function size:0x48 -fn_8016E570 = .text:0x8016E570; // type:function size:0x40 -fn_8016E5B0 = .text:0x8016E5B0; // type:function size:0x4 -fn_8016E5C0 = .text:0x8016E5C0; // type:function size:0x48 -fn_8016E610 = .text:0x8016E610; // type:function size:0x48 -itemHasShieldModel = .text:0x8016E660; // type:function size:0x6C -fn_8016E6D0 = .text:0x8016E6D0; // type:function size:0x15C -fn_8016E830 = .text:0x8016E830; // type:function size:0x8 -fn_8016E840 = .text:0x8016E840; // type:function size:0x8 -fn_8016E850 = .text:0x8016E850; // type:function size:0x8 -fn_8016E860 = .text:0x8016E860; // type:function size:0x34 -fn_8016E8A0 = .text:0x8016E8A0; // type:function size:0x10 -fn_8016E8B0 = .text:0x8016E8B0; // type:function size:0x10 -hasItemBottleModel = .text:0x8016E8C0; // type:function size:0x6C -fn_8016E930 = .text:0x8016E930; // type:function size:0x104 -fn_8016EA40 = .text:0x8016EA40; // type:function size:0x8 -fn_8016EA50 = .text:0x8016EA50; // type:function size:0x8 -fn_8016EA60 = .text:0x8016EA60; // type:function size:0x8 -fn_8016EA70 = .text:0x8016EA70; // type:function size:0x8C -fn_8016EB00 = .text:0x8016EB00; // type:function size:0x4 -fn_8016EB10 = .text:0x8016EB10; // type:function size:0x10 -fn_8016EB20 = .text:0x8016EB20; // type:function size:0x10 -AcItem__isTear = .text:0x8016EB30; // type:function size:0x4 -fn_8016EB40 = .text:0x8016EB40; // type:function size:0x360 -fn_8016EEA0 = .text:0x8016EEA0; // type:function size:0x1C -fn_8016EEC0 = .text:0x8016EEC0; // type:function size:0x48 -fn_8016EF10 = .text:0x8016EF10; // type:function size:0x48 -fn_8016EF60 = .text:0x8016EF60; // type:function size:0x84 -fn_8016EFF0 = .text:0x8016EFF0; // type:function size:0x4 -fn_8016F000 = .text:0x8016F000; // type:function size:0x48 -fn_8016F050 = .text:0x8016F050; // type:function size:0x48 -AcItem__isStarryFirefly = .text:0x8016F0A0; // type:function size:0x4 -fn_8016F0B0 = .text:0x8016F0B0; // type:function size:0x13C -fn_8016F1F0 = .text:0x8016F1F0; // type:function size:0x8 -fn_8016F200 = .text:0x8016F200; // type:function size:0x8 -fn_8016F210 = .text:0x8016F210; // type:function size:0x8 -fn_8016F220 = .text:0x8016F220; // type:function size:0x78 -fn_8016F2A0 = .text:0x8016F2A0; // type:function size:0x4 -fn_8016F2B0 = .text:0x8016F2B0; // type:function size:0x10 -fn_8016F2C0 = .text:0x8016F2C0; // type:function size:0x10 -fn_8016F2D0 = .text:0x8016F2D0; // type:function size:0x8 -hasItemPotionBottleModel = .text:0x8016F2E0; // type:function size:0x6C -fn_8016F350 = .text:0x8016F350; // type:function size:0x1D4 -fn_8016F530 = .text:0x8016F530; // type:function size:0x8 -fn_8016F540 = .text:0x8016F540; // type:function size:0x8 -fn_8016F550 = .text:0x8016F550; // type:function size:0x8 -fn_8016F560 = .text:0x8016F560; // type:function size:0x8C -fn_8016F5F0 = .text:0x8016F5F0; // type:function size:0x4 -fn_8016F600 = .text:0x8016F600; // type:function size:0x10 -fn_8016F610 = .text:0x8016F610; // type:function size:0x10 -fn_8016F620 = .text:0x8016F620; // type:function size:0x8 -fn_8016F630 = .text:0x8016F630; // type:function size:0x88 -fn_8016F6C0 = .text:0x8016F6C0; // type:function size:0x58 -fn_8016F720 = .text:0x8016F720; // type:function size:0x7C -fn_8016F7A0 = .text:0x8016F7A0; // type:function size:0x8 -fn_8016F7B0 = .text:0x8016F7B0; // type:function size:0xAC -fn_8016F860 = .text:0x8016F860; // type:function size:0x8 -fn_8016F870 = .text:0x8016F870; // type:function size:0x70 -fn_8016F8E0 = .text:0x8016F8E0; // type:function size:0x7C -fn_8016F960 = .text:0x8016F960; // type:function size:0x7C +isMdlForItemId__13dItemMdlPut_cFUs = .text:0x8016E2A0; // type:function size:0x6C +init__13dItemMdlPut_cFUsP9dAcItem_cP12mAllocator_c = .text:0x8016E310; // type:function size:0x194 +vt_0x10__13dItemMdlPut_cFUc = .text:0x8016E4B0; // type:function size:0x1C +setScale__13dItemMdlPut_cFRC7mVec3_c = .text:0x8016E4D0; // type:function size:0x48 +setLocalMtx__13dItemMdlPut_cFRC6mMtx_c = .text:0x8016E520; // type:function size:0x48 +draw__13dItemMdlPut_cFv = .text:0x8016E570; // type:function size:0x40 +vt_0x20__13dItemMdlPut_cFv = .text:0x8016E5B0; // type:function size:0x4 +setPriorityDraw__13dItemMdlPut_cFv = .text:0x8016E5C0; // type:function size:0x48 +unsetPriorityDraw__13dItemMdlPut_cFv = .text:0x8016E610; // type:function size:0x48 +isMdlForItemId__16dItemMdlShield_cFUs = .text:0x8016E660; // type:function size:0x6C +init__16dItemMdlShield_cFUsP9dAcItem_cP12mAllocator_c = .text:0x8016E6D0; // type:function size:0x15C +vt_0x10__16dItemMdlShield_cFUc = .text:0x8016E830; // type:function size:0x8 +setScale__16dItemMdlShield_cFRC7mVec3_c = .text:0x8016E840; // type:function size:0x8 +setLocalMtx__16dItemMdlShield_cFRC6mMtx_c = .text:0x8016E850; // type:function size:0x8 +draw__16dItemMdlShield_cFv = .text:0x8016E860; // type:function size:0x30 +vt_0x20__16dItemMdlShield_cFv = .text:0x8016E890; // type:function size:0x4 +setPriorityDraw__16dItemMdlShield_cFv = .text:0x8016E8A0; // type:function size:0x10 +unsetPriorityDraw__16dItemMdlShield_cFv = .text:0x8016E8B0; // type:function size:0x10 +isMdlForItemId__16dItemMdlBottle_cFUs = .text:0x8016E8C0; // type:function size:0x6C +init__16dItemMdlBottle_cFUsP9dAcItem_cP12mAllocator_c = .text:0x8016E930; // type:function size:0x104 +vt_0x10__16dItemMdlBottle_cFUc = .text:0x8016EA40; // type:function size:0x8 +setScale__16dItemMdlBottle_cFRC7mVec3_c = .text:0x8016EA50; // type:function size:0x8 +setLocalMtx__16dItemMdlBottle_cFRC6mMtx_c = .text:0x8016EA60; // type:function size:0x8 +draw__16dItemMdlBottle_cFv = .text:0x8016EA70; // type:function size:0x8C +vt_0x20__16dItemMdlBottle_cFv = .text:0x8016EB00; // type:function size:0x4 +setPriorityDraw__16dItemMdlBottle_cFv = .text:0x8016EB10; // type:function size:0x10 +unsetPriorityDraw__16dItemMdlBottle_cFv = .text:0x8016EB20; // type:function size:0x10 +isMdlForItemId__14dItemMdlTear_cFUs = .text:0x8016EB30; // type:function size:0x4 +init__14dItemMdlTear_cFUsP9dAcItem_cP12mAllocator_c = .text:0x8016EB40; // type:function size:0x360 +vt_0x10__14dItemMdlTear_cFUc = .text:0x8016EEA0; // type:function size:0x1C +setScale__14dItemMdlTear_cFRC7mVec3_c = .text:0x8016EEC0; // type:function size:0x48 +setLocalMtx__14dItemMdlTear_cFRC6mMtx_c = .text:0x8016EF10; // type:function size:0x48 +draw__14dItemMdlTear_cFv = .text:0x8016EF60; // type:function size:0x84 +vt_0x20__14dItemMdlTear_cFv = .text:0x8016EFF0; // type:function size:0x4 +setPriorityDraw__14dItemMdlTear_cFv = .text:0x8016F000; // type:function size:0x48 +unsetPriorityDraw__14dItemMdlTear_cFv = .text:0x8016F050; // type:function size:0x48 +isMdlForItemId__17dItemMdlFirefly_cFUs = .text:0x8016F0A0; // type:function size:0x4 +init__17dItemMdlFirefly_cFUsP9dAcItem_cP12mAllocator_c = .text:0x8016F0B0; // type:function size:0x13C +vt_0x10__17dItemMdlFirefly_cFUc = .text:0x8016F1F0; // type:function size:0x8 +setScale__17dItemMdlFirefly_cFRC7mVec3_c = .text:0x8016F200; // type:function size:0x8 +setLocalMtx__17dItemMdlFirefly_cFRC6mMtx_c = .text:0x8016F210; // type:function size:0x8 +draw__17dItemMdlFirefly_cFv = .text:0x8016F220; // type:function size:0x78 +vt_0x20__17dItemMdlFirefly_cFv = .text:0x8016F2A0; // type:function size:0x4 +setPriorityDraw__17dItemMdlFirefly_cFv = .text:0x8016F2B0; // type:function size:0x10 +unsetPriorityDraw__17dItemMdlFirefly_cFv = .text:0x8016F2C0; // type:function size:0x10 +getMdl__17dItemMdlFirefly_cFv = .text:0x8016F2D0; // type:function size:0x8 +isMdlForItemId__16dItemMdlPotion_cFUs = .text:0x8016F2E0; // type:function size:0x6C +init__16dItemMdlPotion_cFUsP9dAcItem_cP12mAllocator_c = .text:0x8016F350; // type:function size:0x1D4 +vt_0x10__16dItemMdlPotion_cFUc = .text:0x8016F530; // type:function size:0x8 +setScale__16dItemMdlPotion_cFRC7mVec3_c = .text:0x8016F540; // type:function size:0x8 +setLocalMtx__16dItemMdlPotion_cFRC6mMtx_c = .text:0x8016F550; // type:function size:0x8 +draw__16dItemMdlPotion_cFv = .text:0x8016F560; // type:function size:0x8C +vt_0x20__16dItemMdlPotion_cFv = .text:0x8016F5F0; // type:function size:0x4 +setPriorityDraw__16dItemMdlPotion_cFv = .text:0x8016F600; // type:function size:0x10 +unsetPriorityDraw__16dItemMdlPotion_cFv = .text:0x8016F610; // type:function size:0x10 +getMdl__16dItemMdlPotion_cFv = .text:0x8016F620; // type:function size:0x8 +__dt__16dItemMdlPotion_cFv = .text:0x8016F630; // type:function size:0x88 scope:weak +__dt__10dItemMdl_cFv = .text:0x8016F6C0; // type:function size:0x58 scope:weak +__dt__17dItemMdlFirefly_cFv = .text:0x8016F720; // type:function size:0x7C scope:weak +getMdl__10dItemMdl_cFv = .text:0x8016F7A0; // type:function size:0x8 scope:weak +__dt__14dItemMdlTear_cFv = .text:0x8016F7B0; // type:function size:0xAC scope:weak +getMdl__16dItemMdlBottle_cFv = .text:0x8016F860; // type:function size:0x8 scope:weak +__dt__16dItemMdlBottle_cFv = .text:0x8016F870; // type:function size:0x70 scope:weak +__dt__16dItemMdlShield_cFv = .text:0x8016F8E0; // type:function size:0x7C scope:weak +__dt__13dItemMdlPut_cFv = .text:0x8016F960; // type:function size:0x7C scope:weak hasItemModel = .text:0x8016F9E0; // type:function size:0x6C getItemModelForItem = .text:0x8016FA50; // type:function size:0x2C0 fn_8016FD10 = .text:0x8016FD10; // type:function size:0x8 @@ -13388,9 +13389,9 @@ fn_8024A2A0 = .text:0x8024A2A0; // type:function size:0x10 AcItem__getItemId = .text:0x8024A2B0; // type:function size:0x8 AcItem__getTearNumber = .text:0x8024A2C0; // type:function size:0xC getFirstBitParams2 = .text:0x8024A2D0; // type:function size:0x24 -getParams2Lower_shift1_0x7 = .text:0x8024A300; // type:function size:0x24 +getParams2Lower_shift1_0x7__9dAcItem_cCFv = .text:0x8024A300; // type:function size:0x24 getCurrentTrial__9dAcItem_cFv = .text:0x8024A330; // type:function size:0x68 -getTearSubtype = .text:0x8024A3A0; // type:function size:0x68 +getTearSubtype__9dAcItem_cF7ITEM_ID = .text:0x8024A3A0; // type:function size:0x68 AcItem__GetItemGetType = .text:0x8024A410; // type:function size:0x3C AcItem__getItemListElement = .text:0x8024A450; // type:function size:0x8 AcItem__getFinalDeterminedItemId = .text:0x8024A460; // type:function size:0x8 @@ -13472,8 +13473,8 @@ isItemSligshot = .text:0x80250A60; // type:function size:0x10 is10DekuSeeds = .text:0x80250A70; // type:function size:0x10 AcItem__isHeartPiece = .text:0x80250A80; // type:function size:0x10 AcItem__isDekuHornet = .text:0x80250A90; // type:function size:0x10 -AcItem__isStarryFirefly2 = .text:0x80250AA0; // type:function size:0x10 -AcItem__isJellyBlob = .text:0x80250AB0; // type:function size:0x10 +isStarryFirefly__9dAcItem_cF7ITEM_ID = .text:0x80250AA0; // type:function size:0x10 +isJellyBlob__9dAcItem_cF7ITEM_ID = .text:0x80250AB0; // type:function size:0x10 AcItem__isDarkTreasure = .text:0x80250AC0; // type:function size:0x10 AcItem__isCommonTreasure = .text:0x80250AD0; // type:function size:0x10 AcItem__isSemiRareTreasure = .text:0x80250AE0; // type:function size:0x10 @@ -13482,13 +13483,13 @@ fn_80250B00 = .text:0x80250B00; // type:function size:0x10 fn_80250B10 = .text:0x80250B10; // type:function size:0x10 isRupee__9dAcItem_cF7ITEM_ID = .text:0x80250B20; // type:function size:0x88 AcItem__isBombDrop = .text:0x80250BB0; // type:function size:0x58 -AcItem__isTear2 = .text:0x80250C10; // type:function size:0x78 +isTear__9dAcItem_cF7ITEM_ID = .text:0x80250C10; // type:function size:0x78 AcItem__is_Larvae_Ore_JellyBlob_Claw_Horn_EvilCryst_OrnSkull_GoldSkull = .text:0x80250C90; // type:function size:0xB8 AcItem__isBug = .text:0x80250D50; // type:function size:0x7C AcItem__isTreasure = .text:0x80250DD0; // type:function size:0x138 isTreasure__9dAcItem_cF7ITEM_ID = .text:0x80250F10; // type:function size:0x88 AcItem__isItemHeart = .text:0x80250FA0; // type:function size:0x34 -isSingleArrow = .text:0x80250FE0; // type:function size:0x8 +isSingleArrow__9dAcItem_cCFv = .text:0x80250FE0; // type:function size:0x8 isBundleOrArrows = .text:0x80250FF0; // type:function size:0x8 AcItem__isItemSilverRupee = .text:0x80251000; // type:function size:0x8 AcItem__isItemGoldRupee = .text:0x80251010; // type:function size:0x8 @@ -14621,7 +14622,7 @@ doDelete__10dTgEvent_cFv = .text:0x8027A450; // type:function size:0x8 actorExecute__10dTgEvent_cFv = .text:0x8027A460; // type:function size:0x150 actorExecuteInEvent__10dTgEvent_cFv = .text:0x8027A5B0; // type:function size:0x108 draw__10dTgEvent_cFv = .text:0x8027A6C0; // type:function size:0x8 -__dt__10dTgEvent_cFv = .text:0x8027A6D0; // type:function size:0x70 +__dt__10dTgEvent_cFv = .text:0x8027A6D0; // type:function size:0x70 scope:weak dTgEventF_c_classInit__Fv = .text:0x8027A740; // type:function size:0x5C create__11dTgEventF_cFv = .text:0x8027A7A0; // type:function size:0x9C doDelete__11dTgEventF_cFv = .text:0x8027A840; // type:function size:0x8 @@ -14632,7 +14633,7 @@ unsetStoryFlag__11dTgEventF_cF12StoryFlags_e = .text:0x8027A8E0; // type:functio actorExecute__11dTgEventF_cFv = .text:0x8027A900; // type:function size:0xFC actorExecuteInEvent__11dTgEventF_cFv = .text:0x8027AA00; // type:function size:0xB0 draw__11dTgEventF_cFv = .text:0x8027AAB0; // type:function size:0x8 -__dt__11dTgEventF_cFv = .text:0x8027AAC0; // type:function size:0x70 +__dt__11dTgEventF_cFv = .text:0x8027AAC0; // type:function size:0x70 scope:weak TgTkEvnt__ctor = .text:0x8027AB30; // type:function size:0xB8 fn_8027ABF0 = .text:0x8027ABF0; // type:function size:0x58 fn_8027AC50 = .text:0x8027AC50; // type:function size:0x6C @@ -26254,10 +26255,10 @@ switchThreadCallback__Q23EGG6ThreadFP8OSThreadP8OSThread = .text:0x80496C70; // setCommonMesgQueue__Q23EGG6ThreadFiPQ23EGG4Heap = .text:0x80496D60; // type:function size:0x5C start__Q23EGG6ThreadFPv = .text:0x80496DC0; // type:function size:0x10 run__Q23EGG6ThreadFv = .text:0x80496DD0; // type:function size:0x8 scope:weak -getThreadIndex__Q23EGG13ThreadMgrFP8OSThread = .text:0x80496DE0; // type:function size:0x44 -doRegisterThread__Q23EGG13ThreadMgrFP8OSThread = .text:0x80496E30; // type:function size:0xD8 -sortByPriority__Q23EGG13ThreadMgrFv = .text:0x80496F10; // type:function size:0x1CC -registerThread__Q23EGG13ThreadMgrFP8OSThreadQ23EGG13UnknownStruct = .text:0x804970E0; // type:function size:0x8C +getThreadIndex__Q23EGG9ThreadMgrFP8OSThread = .text:0x80496DE0; // type:function size:0x44 +doRegisterThread__Q23EGG9ThreadMgrFP8OSThread = .text:0x80496E30; // type:function size:0xD8 +sortByPriority__Q23EGG9ThreadMgrFv = .text:0x80496F10; // type:function size:0x1CC +registerThread__Q23EGG9ThreadMgrFP8OSThreadQ23EGG13UnknownStruct = .text:0x804970E0; // type:function size:0x8C initMemory__Q23EGG17ConfigurationDataFv = .text:0x80497170; // type:function size:0x174 run__Q23EGG17ConfigurationDataFv = .text:0x804972F0; // type:function size:0x23C PreRetraceCallback = .text:0x80497530; // type:function size:0x40 @@ -28185,17 +28186,17 @@ roomStageHandlers = .rodata:0x804E0C00; // type:object size:0x10 scope:local stageRoomHandlers = .rodata:0x804E0C10; // type:object size:0x10 scope:local roomHandlers = .rodata:0x804E0C20; // type:object size:0x60 scope:local roomReactivateHandlers = .rodata:0x804E0C80; // type:object size:0x18 scope:local -gRMO_Pal60_608x456Prog_16x9 = .rodata:0x804E0C98; // type:object size:0x3C -gRMO_Pal60_608x456IntDf_16x9 = .rodata:0x804E0CD4; // type:object size:0x3C -gRMO_Pal50_608x456IntDf_16x9 = .rodata:0x804E0D10; // type:object size:0x3C -gRMO_Ntsc_608x456Prog_16x9 = .rodata:0x804E0D4C; // type:object size:0x3C -gRMO_Ntsc_608x456IntDf_16x9 = .rodata:0x804E0D88; // type:object size:0x3C -gRMO_Pal60_608x456Prog_4x3 = .rodata:0x804E0DC4; // type:object size:0x3C -gRMO_Pal60_608x456IntDf_4x3 = .rodata:0x804E0E00; // type:object size:0x3C -gRMO_Pal50_608x456IntDf_4x3 = .rodata:0x804E0E3C; // type:object size:0x3C -gRMO_Ntsc_608x456Prog_4x3 = .rodata:0x804E0E78; // type:object size:0x3C -gRMO_Ntsc_608x456IntDf_4x3 = .rodata:0x804E0EB4; // type:object size:0x3C -gSysRenderModeObjSet = .rodata:0x804E0EF0; // type:object size:0x28 +gRMO_Pal60_608x456Prog_16x9 = .rodata:0x804E0C98; // type:object size:0x3C scope:local +gRMO_Pal60_608x456IntDf_16x9 = .rodata:0x804E0CD4; // type:object size:0x3C scope:local +gRMO_Pal50_608x456IntDf_16x9 = .rodata:0x804E0D10; // type:object size:0x3C scope:local +gRMO_Ntsc_608x456Prog_16x9 = .rodata:0x804E0D4C; // type:object size:0x3C scope:local +gRMO_Ntsc_608x456IntDf_16x9 = .rodata:0x804E0D88; // type:object size:0x3C scope:local +gRMO_Pal60_608x456Prog_4x3 = .rodata:0x804E0DC4; // type:object size:0x3C scope:local +gRMO_Pal60_608x456IntDf_4x3 = .rodata:0x804E0E00; // type:object size:0x3C scope:local +gRMO_Pal50_608x456IntDf_4x3 = .rodata:0x804E0E3C; // type:object size:0x3C scope:local +gRMO_Ntsc_608x456Prog_4x3 = .rodata:0x804E0E78; // type:object size:0x3C scope:local +gRMO_Ntsc_608x456IntDf_4x3 = .rodata:0x804E0EB4; // type:object size:0x3C scope:local +gSysRenderModeObjSet = .rodata:0x804E0EF0; // type:object size:0x28 scope:local @LOCAL@ModeProc__Q26dReset8Manage_cFv@procs = .rodata:0x804E0F18; // type:object size:0x48 scope:local @LOCAL@ModeRequest__Q26dReset8Manage_cFQ36dReset8Manage_c6Mode_e@procs = .rodata:0x804E0F60; // type:object size:0x48 scope:local sInfos = .rodata:0x804E0FA8; // type:object size:0x246C scope:local data:4byte @@ -28351,17 +28352,17 @@ lbl_804E8D08 = .rodata:0x804E8D08; // type:object size:0x10 lbl_804E8D18 = .rodata:0x804E8D18; // type:object size:0x10 brlanMap = .rodata:0x804E8D28; // type:object size:0x48 scope:local data:4byte brlanMap = .rodata:0x804E8D70; // type:object size:0x40 scope:local data:4byte -ITEM_TO_MODEL_INDEX = .rodata:0x804E8DB0; // type:object size:0x400 +ITEM_TO_MODEL_INDEX = .rodata:0x804E8DB0; // type:object size:0x400 scope:local data:2byte @8849 = .rodata:0x804E91B0; // type:object size:0x20 scope:local data:4byte -MODEL_ID_TO_PUT_ITEM_MODEL_IDX = .rodata:0x804E91D0; // type:object size:0xA8 -PUT_ITEM_MODEL_NAMES = .rodata:0x804E9278; // type:object size:0xA0 -GET_SHIELD_MODEL_INDEX = .rodata:0x804E9318; // type:object size:0xA8 -GET_SHIELD_MODEL_NAMES = .rodata:0x804E93C0; // type:object size:0x90 -GET_BOTTLE_MODEL_INDEX = .rodata:0x804E9450; // type:object size:0xA8 -GET_BOTTLE_MODEL_NAMES = .rodata:0x804E94F8; // type:object size:0x60 -TEAR_TYPE_COLOR_FRAMES = .rodata:0x804E9558; // type:object size:0x10 -GET_POTION_BOTTLE_MODEL_INDEX = .rodata:0x804E9568; // type:object size:0xA8 -GET_POTION_BOTTLE_DEFS = .rodata:0x804E9610; // type:object size:0x40 +sMdlIdx__13dItemMdlPut_c = .rodata:0x804E91D0; // type:object size:0xA7 +sMdlConfig__13dItemMdlPut_c = .rodata:0x804E9278; // type:object size:0xA0 +sMdlIdx__16dItemMdlShield_c = .rodata:0x804E9318; // type:object size:0xA7 +sMdlConfig__16dItemMdlShield_c = .rodata:0x804E93C0; // type:object size:0x90 +sMdlIdx__16dItemMdlBottle_c = .rodata:0x804E9450; // type:object size:0xA7 +sMdlConfig__16dItemMdlBottle_c = .rodata:0x804E94F8; // type:object size:0x60 +sMdlConfig__14dItemMdlTear_c = .rodata:0x804E9558; // type:object size:0x10 +sMdlIdx__16dItemMdlPotion_c = .rodata:0x804E9568; // type:object size:0xA7 +sMdlConfig__16dItemMdlPotion_c = .rodata:0x804E9610; // type:object size:0x40 ITEM_MODEL_INDEX = .rodata:0x804E9650; // type:object size:0xA8 ITEM_MODEL_DEFS = .rodata:0x804E96F8; // type:object size:0x350 RUPEE_ITEM_TO_TEX_FRAME = .rodata:0x804E9A48; // type:object size:0x38 data:2byte @@ -29272,12 +29273,13 @@ gTRKMemMap = .rodata:0x804FCFC0; // type:object size:0x10 data:4byte lbl_804FCFD0 = .rodata:0x804FCFD0; // type:object size:0x28 data:4byte lbl_804FCFF8 = .rodata:0x804FCFF8; // type:object size:0x28 data:4byte lbl_804FD020 = .rodata:0x804FD020; // type:object size:0x28 data:4byte -@805 = .data:0x804FD060; // type:object size:0xB data:string -@806 = .data:0x804FD06C; // type:object size:0xC data:string -@810 = .data:0x804FD078; // type:object size:0x1B data:string -@812 = .data:0x804FD094; // type:object size:0x12 data:string -@815 = .data:0x804FD0A8; // type:object size:0xB data:string -lbl_804FD0B8 = .data:0x804FD0B8; // type:object size:0x10 +@807 = .data:0x804FD060; // type:object size:0xB scope:local data:string +...data.0 = .data:0x804FD060; // type:label scope:local +@808 = .data:0x804FD06C; // type:object size:0xC scope:local data:string +@812 = .data:0x804FD078; // type:object size:0x1B scope:local data:string +@814 = .data:0x804FD094; // type:object size:0x12 scope:local data:string +@817 = .data:0x804FD0A8; // type:object size:0xB scope:local data:string +__vt__6dMdl_c = .data:0x804FD0B8; // type:object size:0xC @5819 = .data:0x804FD0C8; // type:object size:0x10 scope:local data:string ...data.0 = .data:0x804FD0C8; // type:label scope:local @5821 = .data:0x804FD0D8; // type:object size:0x10 scope:local data:string @@ -30887,12 +30889,13 @@ __vt__24daPlBaseScnObjCallback_c = .data:0x8050DDB8; // type:object size:0x20 __vt__8dScene_c = .data:0x8050DDF8; // type:object size:0x4C @23343 = .data:0x8050DE48; // type:object size:0xE scope:local data:string @25556 = .data:0x8050DE58; // type:object size:0x11 scope:local data:string +...data.0 = .data:0x8050DE58; // type:label scope:local @25619 = .data:0x8050DE6C; // type:object size:0x15 scope:local data:string @25620 = .data:0x8050DE84; // type:object size:0x15 scope:local data:string @25621 = .data:0x8050DE9C; // type:object size:0x15 scope:local data:string @25756 = .data:0x8050DEB4; // type:object size:0xD scope:local data:string @25757 = .data:0x8050DEC4; // type:object size:0xE scope:local data:string -__vt__Q23EGG126TSystem = .data:0x8050DED4; // type:object size:0x3C +__vt__Q23EGG126TSystem = .data:0x8050DED4; // type:object size:0x3C scope:weak lbl_8050DF10 = .data:0x8050DF10; // type:object size:0x18 @9033 = .data:0x8050DF28; // type:object size:0x11 scope:local data:string @9034 = .data:0x8050DF3C; // type:object size:0x11 scope:local data:string @@ -35088,52 +35091,57 @@ __vt__11TearCounter = .data:0x80528050; // type:object size:0x20 scope:weak __vt__20SlingshotSeedCounter = .data:0x80528070; // type:object size:0x20 scope:weak __vt__15KeyPieceCounter = .data:0x80528090; // type:object size:0x20 scope:weak __vt__18ExtraWalletCounter = .data:0x805280B0; // type:object size:0x20 scope:weak -lbl_805280D0 = .data:0x805280D0; // type:object size:0x9 data:string -lbl_805280DC = .data:0x805280DC; // type:object size:0x9 data:string -lbl_805280E8 = .data:0x805280E8; // type:object size:0xF data:string -lbl_805280F8 = .data:0x805280F8; // type:object size:0xF data:string -lbl_80528108 = .data:0x80528108; // type:object size:0x9 data:string -lbl_80528114 = .data:0x80528114; // type:object size:0x9 data:string -lbl_80528120 = .data:0x80528120; // type:object size:0xC data:string -lbl_8052812C = .data:0x8052812C; // type:object size:0x12 data:string -lbl_80528140 = .data:0x80528140; // type:object size:0xC data:string -lbl_8052814C = .data:0x8052814C; // type:object size:0x12 data:string -lbl_80528160 = .data:0x80528160; // type:object size:0xB data:string -lbl_8052816C = .data:0x8052816C; // type:object size:0xB data:string -lbl_80528178 = .data:0x80528178; // type:object size:0xE data:string -lbl_80528188 = .data:0x80528188; // type:object size:0xE data:string -lbl_80528198 = .data:0x80528198; // type:object size:0xF data:string -lbl_805281A8 = .data:0x805281A8; // type:object size:0xF data:string -lbl_805281B8 = .data:0x805281B8; // type:object size:0x12 data:string -lbl_805281CC = .data:0x805281CC; // type:object size:0x12 data:string -lbl_805281E0 = .data:0x805281E0; // type:object size:0xC data:string -lbl_805281EC = .data:0x805281EC; // type:object size:0xC data:string -lbl_805281F8 = .data:0x805281F8; // type:object size:0xE data:string -lbl_80528208 = .data:0x80528208; // type:object size:0xE data:string -lbl_80528218 = .data:0x80528218; // type:object size:0x10 data:string -lbl_80528228 = .data:0x80528228; // type:object size:0xE data:string -lbl_80528238 = .data:0x80528238; // type:object size:0x10 data:string -lbl_80528248 = .data:0x80528248; // type:object size:0xE data:string -lbl_80528258 = .data:0x80528258; // type:object size:0x10 data:string -lbl_80528268 = .data:0x80528268; // type:object size:0xF data:string -lbl_80528278 = .data:0x80528278; // type:object size:0x9 data:string -lbl_80528284 = .data:0x80528284; // type:object size:0xE data:string -lbl_80528298 = .data:0x80528298; // type:object size:0x10 data:string -lbl_805282A8 = .data:0x805282A8; // type:object size:0x11 data:string -lbl_805282BC = .data:0x805282BC; // type:object size:0xF data:string -lbl_805282CC = .data:0x805282CC; // type:object size:0xA data:string -lbl_805282D8 = .data:0x805282D8; // type:object size:0x44 -lbl_8052831C = .data:0x8052831C; // type:object size:0x11 data:string -lbl_80528330 = .data:0x80528330; // type:object size:0x10 data:string -lbl_80528340 = .data:0x80528340; // type:object size:0xE data:string -lbl_80528350 = .data:0x80528350; // type:object size:0xD data:string -lbl_80528360 = .data:0x80528360; // type:object size:0x9 data:string -PotionModel_vtable = .data:0x80528370; // type:object size:0x30 -FireflyModel_vtable = .data:0x805283A0; // type:object size:0x30 -TearModel_vtable = .data:0x805283D0; // type:object size:0x30 -BottleModel_vtable = .data:0x80528400; // type:object size:0x30 -ShieldModel_vtable = .data:0x80528430; // type:object size:0x30 -PutItemModel_vtable = .data:0x80528460; // type:object size:0x30 +@20954 = .data:0x805280D0; // type:object size:0x9 scope:local data:string +...data.0 = .data:0x805280D0; // type:label scope:local +@20955 = .data:0x805280DC; // type:object size:0x9 scope:local data:string +@20956 = .data:0x805280E8; // type:object size:0xF scope:local data:string +@20957 = .data:0x805280F8; // type:object size:0xF scope:local data:string +@20958 = .data:0x80528108; // type:object size:0x9 scope:local data:string +@20959 = .data:0x80528114; // type:object size:0x9 scope:local data:string +@20960 = .data:0x80528120; // type:object size:0xC scope:local data:string +@20961 = .data:0x8052812C; // type:object size:0x12 scope:local data:string +@20962 = .data:0x80528140; // type:object size:0xC scope:local data:string +@20963 = .data:0x8052814C; // type:object size:0x12 scope:local data:string +@20964 = .data:0x80528160; // type:object size:0xB scope:local data:string +@20965 = .data:0x8052816C; // type:object size:0xB scope:local data:string +@20968 = .data:0x80528178; // type:object size:0xE scope:local data:string +@20969 = .data:0x80528188; // type:object size:0xE scope:local data:string +@20970 = .data:0x80528198; // type:object size:0xF scope:local data:string +@20971 = .data:0x805281A8; // type:object size:0xF scope:local data:string +@20972 = .data:0x805281B8; // type:object size:0x12 scope:local data:string +@20973 = .data:0x805281CC; // type:object size:0x12 scope:local data:string +@20974 = .data:0x805281E0; // type:object size:0xC scope:local data:string +@20975 = .data:0x805281EC; // type:object size:0xC scope:local data:string +@21911 = .data:0x805281F8; // type:object size:0xE scope:local data:string +@21075 = .data:0x80528208; // type:object size:0xE scope:local data:string +@21076 = .data:0x80528218; // type:object size:0x10 scope:local data:string +@21077 = .data:0x80528228; // type:object size:0xE scope:local data:string +@21078 = .data:0x80528238; // type:object size:0x10 scope:local data:string +@21079 = .data:0x80528248; // type:object size:0xE scope:local data:string +@21080 = .data:0x80528258; // type:object size:0x10 scope:local data:string +@21169 = .data:0x80528268; // type:object size:0xF scope:local data:string +@21170 = .data:0x80528278; // type:object size:0x9 scope:local data:string +@21171 = .data:0x80528284; // type:object size:0xE scope:local data:string +@21172 = .data:0x80528298; // type:object size:0x10 scope:local data:string +@21173 = .data:0x805282A8; // type:object size:0x11 scope:local data:string +@21174 = .data:0x805282BC; // type:object size:0xF scope:local data:string +@21175 = .data:0x805282CC; // type:object size:0xA scope:local data:string +@21176 = .data:0x805282D8; // type:object size:0x11 scope:local data:string +@22131 = .data:0x805282EC; // type:object size:0xA scope:local data:string +@22132 = .data:0x805282F8; // type:object size:0xB scope:local data:string +@22134 = .data:0x80528304; // type:object size:0xA scope:local data:string +@22135 = .data:0x80528310; // type:object size:0xB scope:local data:string +@22198 = .data:0x8052831C; // type:object size:0x11 scope:local data:string +@21526 = .data:0x80528330; // type:object size:0x10 scope:local data:string +@21527 = .data:0x80528340; // type:object size:0xE scope:local data:string +@21528 = .data:0x80528350; // type:object size:0xD scope:local data:string +@21529 = .data:0x80528360; // type:object size:0x9 scope:local data:string +__vt__16dItemMdlPotion_c = .data:0x80528370; // type:object size:0x30 +__vt__17dItemMdlFirefly_c = .data:0x805283A0; // type:object size:0x30 +__vt__14dItemMdlTear_c = .data:0x805283D0; // type:object size:0x30 +__vt__16dItemMdlBottle_c = .data:0x80528400; // type:object size:0x30 +__vt__16dItemMdlShield_c = .data:0x80528430; // type:object size:0x30 +__vt__13dItemMdlPut_c = .data:0x80528460; // type:object size:0x30 lbl_80528490 = .data:0x80528490; // type:object size:0xC data:string lbl_8052849C = .data:0x8052849C; // type:object size:0x9 data:string lbl_805284A8 = .data:0x805284A8; // type:object size:0xA data:string @@ -36479,9 +36487,9 @@ lbl_80536628 = .data:0x80536628; // type:object size:0x68 g_profile_CAMERA2_TAG = .data:0x80536690; // type:object size:0x10 lbl_805366A0 = .data:0x805366A0; // type:object size:0x78 g_profile_EVENT_TAG = .data:0x80536718; // type:object size:0x10 -__vt__10dTgEvent_c = .data:0x80536728; // type:object size:0x78 +__vt__10dTgEvent_c = .data:0x80536728; // type:object size:0x74 g_profile_EVENTF_TAG = .data:0x805367A0; // type:object size:0x10 -__vt__11dTgEventF_c = .data:0x805367B0; // type:object size:0x78 +__vt__11dTgEventF_c = .data:0x805367B0; // type:object size:0x74 g_profile_TAG_TKEVNT = .data:0x80536828; // type:object size:0x10 TgTkEvnt__vtable = .data:0x80536838; // type:object size:0x78 lbl_805368B0 = .data:0x805368B0; // type:object size:0x30 @@ -39536,10 +39544,11 @@ __vt__Q23EGG7FrmHeap = .data:0x8056E9D0; // type:object size:0x30 __vt__Q23EGG10AssertHeap = .data:0x8056EA00; // type:object size:0x30 __vt__Q23EGG8Disposer = .data:0x8056EA30; // type:object size:0xC __vt__Q23EGG6Thread = .data:0x8056EA40; // type:object size:0x18 -@8336 = .data:0x8056EA58; // type:object size:0xC data:string -@8337 = .data:0x8056EA64; // type:object size:0xC data:string -@8338 = .data:0x8056EA70; // type:object size:0xD data:string -@8339 = .data:0x8056EA80; // type:object size:0xA data:string +@8332 = .data:0x8056EA58; // type:object size:0xC scope:local data:string +...data.0 = .data:0x8056EA58; // type:label scope:local +@8333 = .data:0x8056EA64; // type:object size:0xC scope:local data:string +@8334 = .data:0x8056EA70; // type:object size:0xD scope:local data:string +@8335 = .data:0x8056EA80; // type:object size:0xA scope:local data:string lbl_8056EA8C = .data:0x8056EA8C; // type:object size:0x3C __vt__Q23EGG7Display = .data:0x8056EAC8; // type:object size:0x20 __vt__Q23EGG10ColorFader = .data:0x8056EAE8; // type:object size:0x24 @@ -39720,8 +39729,8 @@ jumptable_805713B0 = .data:0x805713B0; // type:object size:0x1C scope:local jumptable_805713CC = .data:0x805713CC; // type:object size:0x1C scope:local @stringBase0 = .data:0x805713E8; // type:object size:0x30 scope:local data:string_table gTRKExceptionStatus = .data:0x80571418; // type:object size:0x10 scope:local data:4byte -@813 = .sdata:0x80571440; // type:object size:0x8 -@813 = .sdata:0x80571448; // type:object size:0x8 data:string +@813 = .sdata:0x80571440; // type:object size:0x1 scope:local +@815 = .sdata:0x80571448; // type:object size:0x8 scope:local data:string @5820 = .sdata:0x80571450; // type:object size:0x3 scope:local data:string @5822 = .sdata:0x80571454; // type:object size:0x4 scope:local data:string @5824 = .sdata:0x80571458; // type:object size:0x5 scope:local data:string @@ -40568,9 +40577,9 @@ sGroupName = .sdata:0x805729C8; // type:object size:0x4 scope:local data:4byte @11240 = .sdata:0x805729F8; // type:object size:0x8 scope:local data:string @11626 = .sdata:0x80572A00; // type:object size:0x1 scope:local @30454 = .sdata:0x80572A08; // type:object size:0x5 scope:local data:string -lbl_80572A10 = .sdata:0x80572A10; // type:object size:0x8 data:string -lbl_80572A18 = .sdata:0x80572A18; // type:object size:0x8 data:string -lbl_80572A20 = .sdata:0x80572A20; // type:object size:0x8 data:string +@20966 = .sdata:0x80572A10; // type:object size:0x8 scope:local data:string +@20967 = .sdata:0x80572A18; // type:object size:0x8 scope:local data:string +@22133 = .sdata:0x80572A20; // type:object size:0x8 scope:local data:string lbl_80572A28 = .sdata:0x80572A28; // type:object size:0x8 data:string lbl_80572A30 = .sdata:0x80572A30; // type:object size:0x8 data:string lbl_80572A38 = .sdata:0x80572A38; // type:object size:0x8 data:string @@ -41261,7 +41270,7 @@ lbl_80573AE0 = .sdata:0x80573AE0; // type:object size:0x7 data:string lbl_80573AE8 = .sdata:0x80573AE8; // type:object size:0x7 data:string lbl_80573AF0 = .sdata:0x80573AF0; // type:object size:0x4 data:4byte lbl_80573AF4 = .sdata:0x80573AF4; // type:object size:0x5 data:string -@23328 = .sdata:0x80573B00; // type:object size:0x8 data:4byte +@23808 = .sdata:0x80573B00; // type:object size:0x4 scope:local data:4byte lbl_80573B08 = .sdata:0x80573B08; // type:object size:0x4 data:4byte lbl_80573B0C = .sdata:0x80573B0C; // type:object size:0x4 data:4byte lbl_80573B10 = .sdata:0x80573B10; // type:object size:0x4 data:4byte @@ -43334,7 +43343,7 @@ sFreeCallbackArg__Q23EGG4Heap = .sbss:0x80576760; // type:object size:0x4 data:4 sCreateCallback__Q23EGG4Heap = .sbss:0x80576764; // type:object size:0x4 data:4byte sDestroyCallback__Q23EGG4Heap = .sbss:0x80576768; // type:object size:0x4 data:4byte sOldSwitchThreadCallback__Q23EGG6Thread = .sbss:0x80576770; // type:object size:0x4 data:4byte -sInstance__Q23EGG13ThreadMgr = .sbss:0x80576778; // type:object size:0x4 data:4byte +sInstance__Q23EGG9ThreadMgr = .sbss:0x80576778; // type:object size:0x4 data:4byte mConfigData__Q23EGG10BaseSystem = .sbss:0x80576780; // type:object size:0x4 data:4byte sTickPeriod__Q23EGG7Display = .sbss:0x80576788; // type:object size:0x4 data:4byte spSelector = .sbss:0x80576790; // type:object size:0x4 scope:local data:4byte @@ -43515,11 +43524,11 @@ lbl_80576AF8 = .sdata2:0x80576AF8; // type:object size:0x4 align:4 data:float lbl_80576AFC = .sdata2:0x80576AFC; // type:object size:0x4 align:4 data:float lbl_80576B00 = .sdata2:0x80576B00; // type:object size:0x4 align:4 data:float lbl_80576B04 = .sdata2:0x80576B04; // type:object size:0x4 align:4 data:float -lbl_80576B08 = .sdata2:0x80576B08; // type:object size:0x4 align:4 data:float -lbl_80576B10 = .sdata2:0x80576B10; // type:object size:0x8 align:8 data:double -lbl_80576B18 = .sdata2:0x80576B18; // type:object size:0x4 align:4 data:float -lbl_80576B1C = .sdata2:0x80576B1C; // type:object size:0x4 align:4 data:float -lbl_80576B20 = .sdata2:0x80576B20; // type:object size:0x8 align:8 data:double +@22305 = .sdata2:0x80576B08; // type:object size:0x4 scope:local align:4 data:float +@22308 = .sdata2:0x80576B10; // type:object size:0x8 scope:local align:8 data:double +@22397 = .sdata2:0x80576B18; // type:object size:0x4 scope:local align:4 data:float +@22398 = .sdata2:0x80576B1C; // type:object size:0x4 scope:local align:4 data:float +@22402 = .sdata2:0x80576B20; // type:object size:0x8 scope:local align:8 data:double lbl_80576B28 = .sdata2:0x80576B28; // type:object size:0x4 align:4 data:float lbl_80576B2C = .sdata2:0x80576B2C; // type:object size:0x4 align:4 data:float lbl_80576B30 = .sdata2:0x80576B30; // type:object size:0x4 align:4 data:float @@ -44194,8 +44203,8 @@ lbl_80577910 = .sdata2:0x80577910; // type:object size:0x4 align:4 data:float lbl_80577914 = .sdata2:0x80577914; // type:object size:0x4 align:4 data:float lbl_80577918 = .sdata2:0x80577918; // type:object size:0x4 align:4 data:float roomActivateHandlers = .sdata2:0x80577920; // type:object size:0x8 scope:local -@25622 = .sdata2:0x80577928; // type:object size:0x4 align:4 data:float -@25623 = .sdata2:0x8057792C; // type:object size:0x4 align:4 data:float +@25694 = .sdata2:0x80577928; // type:object size:0x4 scope:local align:4 data:float +@25695 = .sdata2:0x8057792C; // type:object size:0x4 scope:local align:4 data:float lbl_80577930 = .sdata2:0x80577930; // type:object size:0x8 align:8 data:double lbl_80577938 = .sdata2:0x80577938; // type:object size:0x8 align:8 data:double lbl_80577940 = .sdata2:0x80577940; // type:object size:0x4 align:4 data:float @@ -45853,7 +45862,7 @@ brlanMap = .sdata2:0x8057A198; // type:object size:0x8 scope:local data:4byte @30290 = .sdata2:0x8057A1C8; // type:object size:0x8 scope:local align:8 data:double @30375 = .sdata2:0x8057A1D0; // type:object size:0x4 scope:local align:4 data:float @30376 = .sdata2:0x8057A1D4; // type:object size:0x4 scope:local align:4 data:float -lbl_8057A1D8 = .sdata2:0x8057A1D8; // type:object size:0x4 align:4 data:float +@22199 = .sdata2:0x8057A1D8; // type:object size:0x4 scope:local align:4 data:float lbl_8057A1E0 = .sdata2:0x8057A1E0; // type:object size:0x4 align:4 data:float lbl_8057A1E4 = .sdata2:0x8057A1E4; // type:object size:0x4 align:4 data:float lbl_8057A1E8 = .sdata2:0x8057A1E8; // type:object size:0x4 align:4 data:float @@ -48525,7 +48534,7 @@ lbl_8057C634 = .sdata2:0x8057C634; // type:object size:0x4 align:4 data:float lbl_8057C638 = .sdata2:0x8057C638; // type:object size:0x4 align:4 data:float lbl_8057C640 = .sdata2:0x8057C640; // type:object size:0x4 align:4 data:float @23574 = .sdata2:0x8057C648; // type:object size:0x4 scope:local align:4 data:float -@23549 = .sdata2:0x8057C650; // type:object size:0x4 align:4 data:float +@24099 = .sdata2:0x8057C650; // type:object size:0x4 scope:local align:4 data:float lbl_8057C658 = .sdata2:0x8057C658; // type:object size:0x4 align:4 data:float lbl_8057C65C = .sdata2:0x8057C65C; // type:object size:0x4 align:4 data:float lbl_8057C660 = .sdata2:0x8057C660; // type:object size:0x4 align:4 data:float diff --git a/configure.py b/configure.py index 7588d026..69f9ef95 100644 --- a/configure.py +++ b/configure.py @@ -413,7 +413,7 @@ config.libs = [ Object(Matching, "toBeSorted/d_lib.cpp"), Object(NonMatching, "toBeSorted/unk_sorajima_list.cpp"), Object(Matching, "toBeSorted/mpls.cpp"), - Object(NonMatching, "toBeSorted/mdl_base.cpp"), + Object(Matching, "toBeSorted/mdl_base.cpp"), Object(Matching, "toBeSorted/d_exception.cpp"), Object(NonMatching, "toBeSorted/d_jstudio.cpp"), Object(Matching, "toBeSorted/save_file.cpp"), @@ -583,7 +583,7 @@ config.libs = [ Object(Matching, "d/lyt/d_lyt_common_title.cpp"), Object(Matching, "d/lyt/d_lyt_cursor_stick.cpp"), Object(Matching, "toBeSorted/fi_context.cpp"), - Object(NonMatching, "toBeSorted/item_mdl_name.cpp"), + Object(Matching, "toBeSorted/item_mdl_name.cpp"), Object(Matching, "toBeSorted/counters/counter.cpp"), Object(NonMatching, "toBeSorted/counters/counters.cpp"), Object(Matching, "toBeSorted/counters/rupee_counter.cpp"), @@ -593,7 +593,12 @@ config.libs = [ Object(Matching, "toBeSorted/counters/slingshot_seed_counter.cpp"), Object(Matching, "toBeSorted/counters/key_piece_counter.cpp"), Object(Matching, "toBeSorted/counters/extra_wallet_counter.cpp"), - Object(NonMatching, "toBeSorted/item_mdl.cpp"), + Object(Matching, "toBeSorted/item_mdl_misc.cpp"), + Object(NonMatching, "toBeSorted/item_mdl_item.cpp"), + Object(NonMatching, "toBeSorted/item_mdl_rupee.cpp"), + Object(NonMatching, "toBeSorted/item_mdl_light_fruit.cpp"), + Object(NonMatching, "toBeSorted/item_mdl_stamina_fruit.cpp"), + Object(NonMatching, "toBeSorted/item_spawn.cpp"), # probably multiple files, see sdata2 Object(NonMatching, "toBeSorted/unk_screen_effect.cpp"), Object(NonMatching, "toBeSorted/revision_info.cpp"), Object(NonMatching, "d/a/d_a_bullet_base.cpp"), diff --git a/include/d/a/d_a_item.h b/include/d/a/d_a_item.h index 24fcd785..fa07912b 100644 --- a/include/d/a/d_a_item.h +++ b/include/d/a/d_a_item.h @@ -78,11 +78,19 @@ public: static u32 getKeyPieceCount(); static u32 getSmallKeyCount(); + static bool isJellyBlob(ITEM_ID item); + static bool isStarryFirefly(ITEM_ID item); + static bool isRupee(ITEM_ID item); static bool isKeyPiece(ITEM_ID item); static bool isTreasure(ITEM_ID item); + static bool isTear(ITEM_ID item); + + bool isSingleArrow() const; bool isTriforce() const; + u32 getParams2Lower_shift1_0x7() const; + static bool getItemGetEventName(u16 item, const char **outName); static void itemGetEventStart(dAcBase_c *); static void itemGetEventEnd(dAcBase_c *); @@ -101,6 +109,16 @@ public: static Trial_e getCurrentTrial(); + enum Tear_e { + TEAR_0, + TEAR_1, + TEAR_2, + TEAR_3, + TEAR_MAX + }; + + static Tear_e getTearSubtype(ITEM_ID item); + static void healLink(u32 amount, bool); // move to dAcPy_c static bool isPerformingInitialCollection() { diff --git a/include/toBeSorted/item_mdl.h b/include/toBeSorted/item_mdl.h new file mode 100644 index 00000000..5ed940d0 --- /dev/null +++ b/include/toBeSorted/item_mdl.h @@ -0,0 +1,43 @@ +#ifndef TOBESORTED_ITEM_MDL_H +#define TOBESORTED_ITEM_MDL_H + +#include "m/m3d/m_mdl.h" +#include "m/m_allocator.h" +#include "m/m_mtx.h" +#include "m/m_vec.h" +#include "m/types_m.h" +#include "toBeSorted/mdl_base.h" + +// all names made up + +class dAcItem_c; + +// vtable at 80533eb0 +class dItemMdl_c : public dMdl_c { +public: + /* 0x08 */ virtual ~dItemMdl_c() {} + /* 0x0C */ virtual bool init(u16 itemId, dAcItem_c *item, mAllocator_c *allocator) = 0; + /* 0x10 */ virtual void vt_0x10(u8) = 0; + /* 0x14 */ virtual void setScale(const mVec3_c &scale) = 0; + /* 0x18 */ virtual void setLocalMtx(const mMtx_c &mtx) = 0; + /* 0x1C */ virtual void draw() = 0; + /* 0x20 */ virtual void vt_0x20() = 0; + /* 0x24 */ virtual void setPriorityDraw() = 0; + /* 0x28 */ virtual void unsetPriorityDraw() = 0; + /* 0x2C */ virtual m3d::smdl_c *getMdl() { + return nullptr; + } + + enum ItemMdl0x14_e { + ITEM_MDL_UNK0x14_0, + ITEM_MDL_UNK0x14_1, + ITEM_MDL_UNK0x14_2, + ITEM_MDL_UNK0x14_3, + }; + +protected: + /* 0x10 */ dAcItem_c *mpItem; + /* 0x14 */ u8 field_0x14; +}; + +#endif diff --git a/include/toBeSorted/item_mdl_misc.h b/include/toBeSorted/item_mdl_misc.h new file mode 100644 index 00000000..e5178dab --- /dev/null +++ b/include/toBeSorted/item_mdl_misc.h @@ -0,0 +1,228 @@ +#ifndef TOBESORTED_ITEM_MDL_MISC_H +#define TOBESORTED_ITEM_MDL_MISC_H + +#include "m/m3d/m_anmchr.h" +#include "m/m3d/m_anmmatclr.h" +#include "m/m3d/m_anmmdl.h" +#include "m/m3d/m_anmtexpat.h" +#include "m/m3d/m_anmtexsrt.h" +#include "m/m3d/m_mdl.h" +#include "m/m3d/m_smdl.h" +#include "m/types_m.h" +#include "toBeSorted/item_mdl.h" + +class dItemMdlPut_c : public dItemMdl_c { +public: + /* 0x08 */ virtual ~dItemMdlPut_c() {} + /* 0x0C */ virtual bool init(u16 itemId, dAcItem_c *item, mAllocator_c *allocator) override; + /* 0x10 */ virtual void vt_0x10(u8) override; + /* 0x14 */ virtual void setScale(const mVec3_c &scale) override; + /* 0x18 */ virtual void setLocalMtx(const mMtx_c &mtx) override; + /* 0x1C */ virtual void draw() override; + /* 0x20 */ virtual void vt_0x20() override; + /* 0x24 */ virtual void setPriorityDraw() override; + /* 0x28 */ virtual void unsetPriorityDraw() override; + + static bool isMdlForItemId(u16 itemId); + +private: + enum MdlIdx { + MDL_PUT_ARROW, + MDL_PUT_ARROW_BUNDLE, + MDL_PUT_HEART, + MDL_PUT_KEY_SMALL, + MDL_PUT_BOMB_SET, + MDL_PUT_SEED, + MDL_PUT_HEART_UTUWA, + MDL_PUT_HEART_KAKERA, + MDL_PUT_TRI_FORCE, + MDL_PUT_GARAGARA, + MDL_PUT_MAX, + }; + + struct MdlConfig { + const char *putResFile; + const char *putResMdl; + const char *getResFile; + const char *getResMdl; + }; + static const MdlConfig sMdlConfig[]; + static const u8 sMdlIdx[]; + + /* 0x18 */ m3d::smdl_c mGetMdl; + /* 0x34 */ m3d::smdl_c mPutMdl; +}; + +class dItemMdlShield_c : public dItemMdl_c { +public: + /* 0x08 */ virtual ~dItemMdlShield_c() {} + /* 0x0C */ virtual bool init(u16 itemId, dAcItem_c *item, mAllocator_c *allocator) override; + /* 0x10 */ virtual void vt_0x10(u8) override; + /* 0x14 */ virtual void setScale(const mVec3_c &scale) override; + /* 0x18 */ virtual void setLocalMtx(const mMtx_c &mtx) override; + /* 0x1C */ virtual void draw() override; + /* 0x20 */ virtual void vt_0x20() override; + /* 0x24 */ virtual void setPriorityDraw() override; + /* 0x28 */ virtual void unsetPriorityDraw() override; + + static bool isMdlForItemId(u16 itemId); + +private: + enum ShieldIdx { + MDL_SHIELD_WOOD_0, + MDL_SHIELD_WOOD_1, + MDL_SHIELD_WOOD_2, + MDL_SHIELD_IRON_0, + MDL_SHIELD_IRON_1, + MDL_SHIELD_IRON_2, + MDL_SHIELD_HOLY_0, + MDL_SHIELD_HOLY_1, + MDL_SHIELD_HOLY_2, + MDL_SHIELD_MAX + }; + + struct MdlConfig { + f32 frame; + const char *resFile; + const char *mdlName; + const char *anmName; + }; + static const MdlConfig sMdlConfig[]; + static const u8 sMdlIdx[]; + + /* 0x18 */ m3d::smdl_c mMdl; + /* 0x34 */ m3d::anmTexPat_c mAnmTexPat; +}; + +// Maybe a bad name because fairies etc. are also supported +class dItemMdlBottle_c : public dItemMdl_c { +public: + /* 0x08 */ virtual ~dItemMdlBottle_c() {} + /* 0x0C */ virtual bool init(u16 itemId, dAcItem_c *item, mAllocator_c *allocator) override; + /* 0x10 */ virtual void vt_0x10(u8) override; + /* 0x14 */ virtual void setScale(const mVec3_c &scale) override; + /* 0x18 */ virtual void setLocalMtx(const mMtx_c &mtx) override; + /* 0x1C */ virtual void draw() override; + /* 0x20 */ virtual void vt_0x20() override; + /* 0x24 */ virtual void setPriorityDraw() override; + /* 0x28 */ virtual void unsetPriorityDraw() override; + /* 0x2C */ virtual m3d::smdl_c *getMdl() override { + return &mMdl.getModel(); + } + + static bool isMdlForItemId(u16 itemId); + +private: + enum BottleIdx { + MDL_BOTTLE_WATER, + MDL_BOTTLE_FAIRY, + MDL_BOTTLE_HOLY, + MDL_BOTTLE_KUSURI, + MDL_BOTTLE_KUSURI_S, + MDL_BOTTLE_B_FAIRY, + MDL_BOTTLE_SOZAI_I, + MDL_BOTTLE_PUMPKIN, + MDL_BOTTLE_MAX + }; + + struct MdlConfig { + const char *resFile; + const char *mdlName; + const char *anmName; + }; + static const MdlConfig sMdlConfig[]; + static const u8 sMdlIdx[]; + + /* 0x18 */ m3d::mdlAnmChr mMdl; + /* 0x80 */ u32 mFlags; +}; + +class dItemMdlTear_c : public dItemMdl_c { +public: + /* 0x08 */ virtual ~dItemMdlTear_c() {} + /* 0x0C */ virtual bool init(u16 itemId, dAcItem_c *item, mAllocator_c *allocator) override; + /* 0x10 */ virtual void vt_0x10(u8) override; + /* 0x14 */ virtual void setScale(const mVec3_c &scale) override; + /* 0x18 */ virtual void setLocalMtx(const mMtx_c &mtx) override; + /* 0x1C */ virtual void draw() override; + /* 0x20 */ virtual void vt_0x20() override; + /* 0x24 */ virtual void setPriorityDraw() override; + /* 0x28 */ virtual void unsetPriorityDraw() override; + + static bool isMdlForItemId(u16 itemId); + +private: + struct MdlConfig { + f32 frame; + }; + static const MdlConfig sMdlConfig[]; + static const u8 sMdlIdx[]; + + /* 0x18 */ m3d::smdl_c mMdl1; + /* 0x34 */ m3d::smdl_c mMdl2; + /* 0x50 */ m3d::anmTexPat_c mAnmTexPat1; + /* 0x7C */ m3d::anmTexPat_c mAnmTexPat2; + /* 0xA8 */ m3d::anmTexSrt_c mAnmTexSrt1; + /* 0xD4 */ m3d::anmTexSrt_c mAnmTexSrt2; +}; + +class dItemMdlFirefly_c : public dItemMdl_c { +public: + /* 0x08 */ virtual ~dItemMdlFirefly_c() {} + /* 0x0C */ virtual bool init(u16 itemId, dAcItem_c *item, mAllocator_c *allocator) override; + /* 0x10 */ virtual void vt_0x10(u8) override; + /* 0x14 */ virtual void setScale(const mVec3_c &scale) override; + /* 0x18 */ virtual void setLocalMtx(const mMtx_c &mtx) override; + /* 0x1C */ virtual void draw() override; + /* 0x20 */ virtual void vt_0x20() override; + /* 0x24 */ virtual void setPriorityDraw() override; + /* 0x28 */ virtual void unsetPriorityDraw() override; + /* 0x2C */ virtual m3d::smdl_c *getMdl() override; + + static bool isMdlForItemId(u16 itemId); + +private: + /* 0x18 */ m3d::smdl_c mMdl; + /* 0x34 */ m3d::anmMatClr_c mAnmMatClr; +}; + +// Maybe a bad name because crystals are also supported +class dItemMdlPotion_c : public dItemMdl_c { +public: + /* 0x08 */ virtual ~dItemMdlPotion_c() {} + /* 0x0C */ virtual bool init(u16 itemId, dAcItem_c *item, mAllocator_c *allocator) override; + /* 0x10 */ virtual void vt_0x10(u8) override; + /* 0x14 */ virtual void setScale(const mVec3_c &scale) override; + /* 0x18 */ virtual void setLocalMtx(const mMtx_c &mtx) override; + /* 0x1C */ virtual void draw() override; + /* 0x20 */ virtual void vt_0x20() override; + /* 0x24 */ virtual void setPriorityDraw() override; + /* 0x28 */ virtual void unsetPriorityDraw() override; + /* 0x2C */ virtual m3d::smdl_c *getMdl() override; + + static bool isMdlForItemId(u16 itemId); + +private: + enum PotionIdx { + MDL_POTION_MUTEKI, + MDL_POTION_GUTS, + MDL_POTION_AIR, + MDL_POTION_GENKI, + MDL_POTION_MAX, + }; + + struct MdlConfig { + const char *resFile; + const char *mdlName; + const char *anmChrName; + const char *anmTexSrtName; + }; + static const MdlConfig sMdlConfig[]; + static const u8 sMdlIdx[]; + + /* 0x18 */ m3d::smdl_c mMdl; + /* 0x34 */ m3d::anmChr_c mAnmChr; + /* 0x6C */ m3d::anmTexSrt_c mAnmTexSrt; +}; + +#endif diff --git a/include/toBeSorted/item_mdl_name.h b/include/toBeSorted/item_mdl_name.h new file mode 100644 index 00000000..8d678dd0 --- /dev/null +++ b/include/toBeSorted/item_mdl_name.h @@ -0,0 +1,183 @@ +#ifndef TOBESORTED_ITEM_MDL_NAME_H +#define TOBESORTED_ITEM_MDL_NAME_H + +#include "common.h" + +// all names made up + + +enum ItemMdlIdx { + ITEMMDL_SMALL_KEY, + ITEMMDL_GREEN_RUPEE, + ITEMMDL_BLUE_RUPEE, + ITEMMDL_RED_RUPEE, + ITEMMDL_COMPLETE_TRIFORCE, + ITEMMDL_HEART, + ITEMMDL_SINGLE_ARROW, + ITEMMDL_BUNDLE_ARROWS, + ITEMMDL_GODDESS_WHITESWORD, + ITEMMDL_PRACTICE_SWORD, + ITEMMDL_GODDESS_SWORD, + ITEMMDL_GODDESS_LONGSWORD, + ITEMMDL_MASTER_SWORD, + ITEMMDL_TRUE_MASTER_SWORD, + ITEMMDL_SAILCLOTH, + ITEMMDL_GODDESS_HARP, + ITEMMDL_SPIRIT_VESSEL, + ITEMMDL_BOW, + ITEMMDL_CLAWSHOWS, + ITEMMDL_BIRD_STATUETTE, + ITEMMDL_AC_BK, + ITEMMDL_FS_BK, + ITEMMDL_SSH_BK, + ITEMMDL_KEY_PIECE, + ITEMMDL_SV_BK, + ITEMMDL_ET_BK, + ITEMMDL_LMF_BK, + ITEMMDL_SILVER_RUPEE, + ITEMMDL_GOLD_RUPEE, + ITEMMDL_RUPOOR, + ITEMMDL_5_CRYSTALS, + ITEMMDL_GLITTERING_SPORES, + ITEMMDL_5_BOMBS, + ITEMMDL_10_BOMBS, + ITEMMDL_STAMINA_FRUIT, + ITEMMDL_FARORE_TEAR, + ITEMMDL_DIN_TEAR, + ITEMMDL_NAYRU_TEAR, + ITEMMDL_SACRED_TEAR, + ITEMMDL_LIGHT_FRUIT, + ITEMMDL_1_CRYSTAL, + ITEMMDL_GUST_BELLOWS, + ITEMMDL_DUNGEON_MAP_FI, + ITEMMDL_DUNGEON_MAP, + ITEMMDL_SLINGSHOT, + ITEMMDL_BEETLE, + ITEMMDL_WATER, + ITEMMDL_MUSHROOM_SPORES, + ITEMMDL_DIGGING_MITTS, + ITEMMDL_5_DEKU_SEEDS, + ITEMMDL_10_DEKU_SEEDS, + ITEMMDL_GUARDIAN_POTION, + ITEMMDL_GUARDIAN_POTION_PLUS, + ITEMMDL_WATER_SCALE, + ITEMMDL_BUG_MEDAL, + ITEMMDL_BUG_NET, + ITEMMDL_FAIRY, + ITEMMDL_SACRED_WATER, + ITEMMDL_HOOK_BEETLE, + ITEMMDL_QUICK_BEETLE, + ITEMMDL_TOUGH_BEETLE, + ITEMMDL_HEART_POTION, + ITEMMDL_HEART_POTION_PLUS, + ITEMMDL_HEART_POTION_ALSO_PLUS, + ITEMMDL_STAMINA_POTION, + ITEMMDL_STAMINA_POTION_PLUS, + ITEMMDL_AIR_POTION, + ITEMMDL_AIR_POTION_PLUS, + ITEMMDL_BOTTLED_FAIRY, + ITEMMDL_IRON_BOW, + ITEMMDL_SACRED_BOW, + ITEMMDL_BOMB_BAG, + ITEMMDL_HEART_CONTAINER, + ITEMMDL_HEART_PIECE, + ITEMMDL_TRI_COURAGE, + ITEMMDL_TRI_POWER, + ITEMMDL_TRI_WISDOWM, + ITEMMDL_SEA_CHART, + ITEMMDL_MOGMA_MITTS, + ITEMMDL_HEART_MEDAL, + ITEMMDL_RUPEE_MEDAL, + ITEMMDL_TREASURE_MEDAL, + ITEMMDL_POTION_MEDAL, + ITEMMDL_CURSED_MEDAL, + ITEMMDL_MIGHTY_SCATTERSHOT, + ITEMMDL_85, + ITEMMDL_MEDIUM_WALLET, + ITEMMDL_BIG_WALLET, + ITEMMDL_GIANT_WALLET, + ITEMMDL_TYCOON_WALLET, + ITEMMDL_ADVENTURE_POUCH, + ITEMMDL_POUCH_EXPANSION, + ITEMMDL_LIFE_MEDAL, + ITEMMDL_WOODEN_SHIELD, + ITEMMDL_BANDED_SHIELD, + ITEMMDL_BRACED_SHIELD, + ITEMMDL_IRON_SHIELD, + ITEMMDL_REINFORCED_SHIELD, + ITEMMDL_FORTIFIED_SHIELD, + ITEMMDL_SACRED_SHIELD, + ITEMMDL_DIVINE_SHIELD, + ITEMMDL_GODDESS_SHIELD, + ITEMMDL_HYLIAN_SHIELD, + ITEMMDL_REVITALIZING_POTION, + ITEMMDL_REVITALIZING_POTION_PLUS, + ITEMMDL_SMALL_SEED_SATCHEL, + ITEMMDL_MEDIUM_SEED_SATCHEL, + ITEMMDL_LARGE_SEED_SATCHEL, + ITEMMDL_SMALL_QUIVER, + ITEMMDL_MEDIUM_QUIVER, + ITEMMDL_LARGE_QUIVER, + ITEMMDL_SMALL_BOMB_BAG, + ITEMMDL_MEDIUM_BOMB_BAG, + ITEMMDL_LARGE_BOMB_BAG, + ITEMMDL_WHIP, + ITEMMDL_FIRESHIELD_EARRINGS, + ITEMMDL_BIG_BUG_NET, + ITEMMDL_FARON_GRASSHOPPER, + ITEMMDL_WOODLAND_RHINO_BEETLE, + ITEMMDL_DEKU_HORNET, + ITEMMDL_SKYLOFT_MANTIS, + ITEMMDL_VOLCANIC_LADYBUG, + ITEMMDL_BLESSED_BUTTERFLY, + ITEMMDL_LANAYRU_ANT, + ITEMMDL_SAND_CICADA, + ITEMMDL_GERUDO_DRAGONFLY, + ITEMMDL_ELDIN_ROLLER, + ITEMMDL_SKY_STAG_BEETLE, + ITEMMDL_STARRY_FIREFLY, + ITEMMDL_BOTTLE, + ITEMMDL_CAWLIN_LETTER, + ITEMMDL_BEEDLE_INSECT_CAGE, + ITEMMDL_RATTLE, + ITEMMDL_HORNET_LARVAE, + ITEMMDL_BIRD_FEATHER, + ITEMMDL_TUMBLE_WEED, + ITEMMDL_LIZARD_TAIL, + ITEMMDL_ELDIN_ORE, + ITEMMDL_ANCIENT_FLOWER, + ITEMMDL_AMBER_RELIC, + ITEMMDL_DUSK_RELIC, + ITEMMDL_JELLY_BLOB, + ITEMMDL_MONSTER_CLAW, + ITEMMDL_MONSTER_HORN, + ITEMMDL_ORNAMENTAL_SKULL, + ITEMMDL_EVIL_CRYSTAL, + ITEMMDL_BLUE_BIRD_FEATHER, + ITEMMDL_GOLDEN_SKULL, + ITEMMDL_GODDESS_PLUME, + ITEMMDL_EMERALD_TABLET, + ITEMMDL_RUBY_TABLET, + ITEMMDL_AMBER_TABLET, + ITEMMDL_STONE_OF_TRIALS, + ITEMMDL_BALLAD_OF_THE_GODDESS, + ITEMMDL_FARORES_COURAGE, + ITEMMDL_NAYRUS_WISDOM, + ITEMMDL_DINS_POWER, + ITEMMDL_FARON_SOTH, + ITEMMDL_ELDIN_SOTH, + ITEMMDL_LANAYRU_SOTH, + ITEMMDL_ITEM_SOTH, + ITEMMDL_REVITALIZING_POTION_PLUS_PLUS, + ITEMMDL_HOT_SOUP, + ITEMMDL_COLD_SOUP, + ITEMMDL_LIFE_TREE_SEED, + ITEMMDL_LIFE_TREE_FRUIT, + ITEMMDL_EXTRA_WALLET, + ITEMMDL_MAX, +}; + +bool hasItemMdl(u16 itemId); +u16 getItemMdlIdx(u16 itemId); + +#endif diff --git a/include/toBeSorted/mdl_base.h b/include/toBeSorted/mdl_base.h new file mode 100644 index 00000000..5d74297f --- /dev/null +++ b/include/toBeSorted/mdl_base.h @@ -0,0 +1,12 @@ +#ifndef TOBESORTED_MDL_BASE_H +#define TOBESORTED_MDL_BASE_H + +#include "egg/core/eggDisposer.h" + +class dMdl_c : public EGG::Disposer { +protected: + dMdl_c(); + virtual ~dMdl_c(); +}; + +#endif diff --git a/src/toBeSorted/item_mdl_misc.cpp b/src/toBeSorted/item_mdl_misc.cpp new file mode 100644 index 00000000..d45bc536 --- /dev/null +++ b/src/toBeSorted/item_mdl_misc.cpp @@ -0,0 +1,1289 @@ +#include "toBeSorted/item_mdl_misc.h" + +#include "common.h" +#include "d/a/d_a_item.h" +#include "m/m3d/m_fanm.h" +#include "nw4r/g3d/res/g3d_resanmchr.h" +#include "nw4r/g3d/res/g3d_resanmclr.h" +#include "nw4r/g3d/res/g3d_resanmtexpat.h" +#include "nw4r/g3d/res/g3d_resanmtexsrt.h" +#include "nw4r/g3d/res/g3d_resfile.h" +#include "nw4r/g3d/res/g3d_resmdl.h" +#include "toBeSorted/arc_managers/oarc_manager.h" +#include "toBeSorted/item_mdl_name.h" + +const u8 dItemMdlPut_c::sMdlIdx[] = { + MDL_PUT_KEY_SMALL, /* ITEMMDL_SMALL_KEY */ + MDL_PUT_MAX, /* ITEMMDL_GREEN_RUPEE */ + MDL_PUT_MAX, /* ITEMMDL_BLUE_RUPEE */ + MDL_PUT_MAX, /* ITEMMDL_RED_RUPEE */ + MDL_PUT_MAX, /* ITEMMDL_COMPLETE_TRIFORCE */ + MDL_PUT_HEART, /* ITEMMDL_HEART */ + MDL_PUT_ARROW, /* ITEMMDL_SINGLE_ARROW */ + MDL_PUT_ARROW_BUNDLE, /* ITEMMDL_BUNDLE_ARROWS */ + MDL_PUT_MAX, /* ITEMMDL_GODDESS_WHITESWORD */ + MDL_PUT_MAX, /* ITEMMDL_PRACTICE_SWORD */ + MDL_PUT_MAX, /* ITEMMDL_GODDESS_SWORD */ + MDL_PUT_MAX, /* ITEMMDL_GODDESS_LONGSWORD */ + MDL_PUT_MAX, /* ITEMMDL_MASTER_SWORD */ + MDL_PUT_MAX, /* ITEMMDL_TRUE_MASTER_SWORD */ + MDL_PUT_MAX, /* ITEMMDL_SAILCLOTH */ + MDL_PUT_MAX, /* ITEMMDL_GODDESS_HARP */ + MDL_PUT_MAX, /* ITEMMDL_SPIRIT_VESSEL */ + MDL_PUT_MAX, /* ITEMMDL_BOW */ + MDL_PUT_MAX, /* ITEMMDL_CLAWSHOWS */ + MDL_PUT_MAX, /* ITEMMDL_BIRD_STATUETTE */ + MDL_PUT_MAX, /* ITEMMDL_AC_BK */ + MDL_PUT_MAX, /* ITEMMDL_FS_BK */ + MDL_PUT_MAX, /* ITEMMDL_SSH_BK */ + MDL_PUT_MAX, /* ITEMMDL_KEY_PIECE */ + MDL_PUT_MAX, /* ITEMMDL_SV_BK */ + MDL_PUT_MAX, /* ITEMMDL_ET_BK */ + MDL_PUT_MAX, /* ITEMMDL_LMF_BK */ + MDL_PUT_MAX, /* ITEMMDL_SILVER_RUPEE */ + MDL_PUT_MAX, /* ITEMMDL_GOLD_RUPEE */ + MDL_PUT_MAX, /* ITEMMDL_RUPOOR */ + MDL_PUT_MAX, /* ITEMMDL_5_CRYSTALS */ + MDL_PUT_MAX, /* ITEMMDL_GLITTERING_SPORES */ + MDL_PUT_MAX, /* ITEMMDL_5_BOMBS */ + MDL_PUT_BOMB_SET, /* ITEMMDL_10_BOMBS */ + MDL_PUT_MAX, /* ITEMMDL_STAMINA_FRUIT */ + MDL_PUT_MAX, /* ITEMMDL_FARORE_TEAR */ + MDL_PUT_MAX, /* ITEMMDL_DIN_TEAR */ + MDL_PUT_MAX, /* ITEMMDL_NAYRU_TEAR */ + MDL_PUT_MAX, /* ITEMMDL_SACRED_TEAR */ + MDL_PUT_MAX, /* ITEMMDL_LIGHT_FRUIT */ + MDL_PUT_MAX, /* ITEMMDL_1_CRYSTAL */ + MDL_PUT_MAX, /* ITEMMDL_GUST_BELLOWS */ + MDL_PUT_MAX, /* ITEMMDL_DUNGEON_MAP_FI */ + MDL_PUT_MAX, /* ITEMMDL_DUNGEON_MAP */ + MDL_PUT_MAX, /* ITEMMDL_SLINGSHOT */ + MDL_PUT_MAX, /* ITEMMDL_BEETLE */ + MDL_PUT_MAX, /* ITEMMDL_WATER */ + MDL_PUT_MAX, /* ITEMMDL_MUSHROOM_SPORES */ + MDL_PUT_MAX, /* ITEMMDL_DIGGING_MITTS */ + MDL_PUT_SEED, /* ITEMMDL_5_DEKU_SEEDS */ + MDL_PUT_MAX, /* ITEMMDL_10_DEKU_SEEDS */ + MDL_PUT_MAX, /* ITEMMDL_GUARDIAN_POTION */ + MDL_PUT_MAX, /* ITEMMDL_GUARDIAN_POTION_PLUS */ + MDL_PUT_MAX, /* ITEMMDL_WATER_SCALE */ + MDL_PUT_MAX, /* ITEMMDL_BUG_MEDAL */ + MDL_PUT_MAX, /* ITEMMDL_BUG_NET */ + MDL_PUT_MAX, /* ITEMMDL_FAIRY */ + MDL_PUT_MAX, /* ITEMMDL_SACRED_WATER */ + MDL_PUT_MAX, /* ITEMMDL_HOOK_BEETLE */ + MDL_PUT_MAX, /* ITEMMDL_QUICK_BEETLE */ + MDL_PUT_MAX, /* ITEMMDL_TOUGH_BEETLE */ + MDL_PUT_MAX, /* ITEMMDL_HEART_POTION */ + MDL_PUT_MAX, /* ITEMMDL_HEART_POTION_PLUS */ + MDL_PUT_MAX, /* ITEMMDL_HEART_POTION_ALSO_PLUS */ + MDL_PUT_MAX, /* ITEMMDL_STAMINA_POTION */ + MDL_PUT_MAX, /* ITEMMDL_STAMINA_POTION_PLUS */ + MDL_PUT_MAX, /* ITEMMDL_AIR_POTION */ + MDL_PUT_MAX, /* ITEMMDL_AIR_POTION_PLUS */ + MDL_PUT_MAX, /* ITEMMDL_BOTTLED_FAIRY */ + MDL_PUT_MAX, /* ITEMMDL_IRON_BOW */ + MDL_PUT_MAX, /* ITEMMDL_SACRED_BOW */ + MDL_PUT_MAX, /* ITEMMDL_BOMB_BAG */ + MDL_PUT_HEART_UTUWA, /* ITEMMDL_HEART_CONTAINER */ + MDL_PUT_HEART_KAKERA, /* ITEMMDL_HEART_PIECE */ + MDL_PUT_TRI_FORCE, /* ITEMMDL_TRI_COURAGE */ + MDL_PUT_TRI_FORCE, /* ITEMMDL_TRI_POWER */ + MDL_PUT_TRI_FORCE, /* ITEMMDL_TRI_WISDOWM */ + MDL_PUT_MAX, /* ITEMMDL_SEA_CHART */ + MDL_PUT_MAX, /* ITEMMDL_MOGMA_MITTS */ + MDL_PUT_MAX, /* ITEMMDL_HEART_MEDAL */ + MDL_PUT_MAX, /* ITEMMDL_RUPEE_MEDAL */ + MDL_PUT_MAX, /* ITEMMDL_TREASURE_MEDAL */ + MDL_PUT_MAX, /* ITEMMDL_POTION_MEDAL */ + MDL_PUT_MAX, /* ITEMMDL_CURSED_MEDAL */ + MDL_PUT_MAX, /* ITEMMDL_MIGHTY_SCATTERSHOT */ + MDL_PUT_MAX, /* ITEMMDL_85 */ + MDL_PUT_MAX, /* ITEMMDL_MEDIUM_WALLET */ + MDL_PUT_MAX, /* ITEMMDL_BIG_WALLET */ + MDL_PUT_MAX, /* ITEMMDL_GIANT_WALLET */ + MDL_PUT_MAX, /* ITEMMDL_TYCOON_WALLET */ + MDL_PUT_MAX, /* ITEMMDL_ADVENTURE_POUCH */ + MDL_PUT_MAX, /* ITEMMDL_POUCH_EXPANSION */ + MDL_PUT_MAX, /* ITEMMDL_LIFE_MEDAL */ + MDL_PUT_MAX, /* ITEMMDL_WOODEN_SHIELD */ + MDL_PUT_MAX, /* ITEMMDL_BANDED_SHIELD */ + MDL_PUT_MAX, /* ITEMMDL_BRACED_SHIELD */ + MDL_PUT_MAX, /* ITEMMDL_IRON_SHIELD */ + MDL_PUT_MAX, /* ITEMMDL_REINFORCED_SHIELD */ + MDL_PUT_MAX, /* ITEMMDL_FORTIFIED_SHIELD */ + MDL_PUT_MAX, /* ITEMMDL_SACRED_SHIELD */ + MDL_PUT_MAX, /* ITEMMDL_DIVINE_SHIELD */ + MDL_PUT_MAX, /* ITEMMDL_GODDESS_SHIELD */ + MDL_PUT_MAX, /* ITEMMDL_HYLIAN_SHIELD */ + MDL_PUT_MAX, /* ITEMMDL_REVITALIZING_POTION */ + MDL_PUT_MAX, /* ITEMMDL_REVITALIZING_POTION_PLUS */ + MDL_PUT_MAX, /* ITEMMDL_SMALL_SEED_SATCHEL */ + MDL_PUT_MAX, /* ITEMMDL_MEDIUM_SEED_SATCHEL */ + MDL_PUT_MAX, /* ITEMMDL_LARGE_SEED_SATCHEL */ + MDL_PUT_MAX, /* ITEMMDL_SMALL_QUIVER */ + MDL_PUT_MAX, /* ITEMMDL_MEDIUM_QUIVER */ + MDL_PUT_MAX, /* ITEMMDL_LARGE_QUIVER */ + MDL_PUT_MAX, /* ITEMMDL_SMALL_BOMB_BAG */ + MDL_PUT_MAX, /* ITEMMDL_MEDIUM_BOMB_BAG */ + MDL_PUT_MAX, /* ITEMMDL_LARGE_BOMB_BAG */ + MDL_PUT_MAX, /* ITEMMDL_WHIP */ + MDL_PUT_MAX, /* ITEMMDL_FIRESHIELD_EARRINGS */ + MDL_PUT_MAX, /* ITEMMDL_BIG_BUG_NET */ + MDL_PUT_MAX, /* ITEMMDL_FARON_GRASSHOPPER */ + MDL_PUT_MAX, /* ITEMMDL_WOODLAND_RHINO_BEETLE */ + MDL_PUT_MAX, /* ITEMMDL_DEKU_HORNET */ + MDL_PUT_MAX, /* ITEMMDL_SKYLOFT_MANTIS */ + MDL_PUT_MAX, /* ITEMMDL_VOLCANIC_LADYBUG */ + MDL_PUT_MAX, /* ITEMMDL_BLESSED_BUTTERFLY */ + MDL_PUT_MAX, /* ITEMMDL_LANAYRU_ANT */ + MDL_PUT_MAX, /* ITEMMDL_SAND_CICADA */ + MDL_PUT_MAX, /* ITEMMDL_GERUDO_DRAGONFLY */ + MDL_PUT_MAX, /* ITEMMDL_ELDIN_ROLLER */ + MDL_PUT_MAX, /* ITEMMDL_SKY_STAG_BEETLE */ + MDL_PUT_MAX, /* ITEMMDL_STARRY_FIREFLY */ + MDL_PUT_MAX, /* ITEMMDL_BOTTLE */ + MDL_PUT_MAX, /* ITEMMDL_CAWLIN_LETTER */ + MDL_PUT_MAX, /* ITEMMDL_BEEDLE_INSECT_CAGE */ + MDL_PUT_GARAGARA, /* ITEMMDL_RATTLE */ + MDL_PUT_MAX, /* ITEMMDL_HORNET_LARVAE */ + MDL_PUT_MAX, /* ITEMMDL_BIRD_FEATHER */ + MDL_PUT_MAX, /* ITEMMDL_TUMBLE_WEED */ + MDL_PUT_MAX, /* ITEMMDL_LIZARD_TAIL */ + MDL_PUT_MAX, /* ITEMMDL_ELDIN_ORE */ + MDL_PUT_MAX, /* ITEMMDL_ANCIENT_FLOWER */ + MDL_PUT_MAX, /* ITEMMDL_AMBER_RELIC */ + MDL_PUT_MAX, /* ITEMMDL_DUSK_RELIC */ + MDL_PUT_MAX, /* ITEMMDL_JELLY_BLOB */ + MDL_PUT_MAX, /* ITEMMDL_MONSTER_CLAW */ + MDL_PUT_MAX, /* ITEMMDL_MONSTER_HORN */ + MDL_PUT_MAX, /* ITEMMDL_ORNAMENTAL_SKULL */ + MDL_PUT_MAX, /* ITEMMDL_EVIL_CRYSTAL */ + MDL_PUT_MAX, /* ITEMMDL_BLUE_BIRD_FEATHER */ + MDL_PUT_MAX, /* ITEMMDL_GOLDEN_SKULL */ + MDL_PUT_MAX, /* ITEMMDL_GODDESS_PLUME */ + MDL_PUT_MAX, /* ITEMMDL_EMERALD_TABLET */ + MDL_PUT_MAX, /* ITEMMDL_RUBY_TABLET */ + MDL_PUT_MAX, /* ITEMMDL_AMBER_TABLET */ + MDL_PUT_MAX, /* ITEMMDL_STONE_OF_TRIALS */ + MDL_PUT_MAX, /* ITEMMDL_BALLAD_OF_THE_GODDESS */ + MDL_PUT_MAX, /* ITEMMDL_FARORES_COURAGE */ + MDL_PUT_MAX, /* ITEMMDL_NAYRUS_WISDOM */ + MDL_PUT_MAX, /* ITEMMDL_DINS_POWER */ + MDL_PUT_MAX, /* ITEMMDL_FARON_SOTH */ + MDL_PUT_MAX, /* ITEMMDL_ELDIN_SOTH */ + MDL_PUT_MAX, /* ITEMMDL_LANAYRU_SOTH */ + MDL_PUT_MAX, /* ITEMMDL_ITEM_SOTH */ + MDL_PUT_MAX, /* ITEMMDL_REVITALIZING_POTION_PLUS_PLUS */ + MDL_PUT_MAX, /* ITEMMDL_HOT_SOUP */ + MDL_PUT_MAX, /* ITEMMDL_COLD_SOUP */ + MDL_PUT_MAX, /* ITEMMDL_LIFE_TREE_SEED */ + MDL_PUT_MAX, /* ITEMMDL_LIFE_TREE_FRUIT */ + MDL_PUT_MAX, /* ITEMMDL_EXTRA_WALLET */ +}; + +const dItemMdlPut_c::MdlConfig dItemMdlPut_c::sMdlConfig[] = { + { "PutArrow", "PutArrow", "GetArrow", "GetArrow"}, + { "PutArrow", "PutArrowBundle", "GetArrow", "GetArrowBundle"}, + { "PutHeart", "PutHeart", "GetHeart", "GetHeart"}, + { "PutKeySmall", "PutKeySmallNormal", "GetKeySmall", "GetKeySmallNormal"}, + { "PutBombSet", "PutBombSet", "GetBombSet", "GetBombSet"}, + { "PutSeed", "PutSeed", "GetSeed", "GetSeed"}, + { "PutHeartUtuwa", "PutHeartUtuwa", "GetHeartUtuwa", "GetHeartUtuwa"}, + { "PutHeartKakera", "PutHeartKakera", "GetHeartKakera", "GetHeartKakera"}, + {"PutTriForceSingle", "PutTriForceSingle", "GetTriForceSingle", "GetTriForceSingle"}, + { "PutGaragara", "PutGaragara", "GetGaragara", "GetGaragara"}, +}; + +bool dItemMdlPut_c::isMdlForItemId(u16 itemId) { + if (hasItemMdl(itemId) == false) { + return false; + } else { + return sMdlIdx[getItemMdlIdx(itemId)] <= MDL_PUT_MAX - 1; + } +} + +bool dItemMdlPut_c::init(u16 itemId, dAcItem_c *item, mAllocator_c *allocator) { + s32 mdlIdx = getItemMdlIdx(itemId); + u8 mdlConfigIdx = sMdlIdx[mdlIdx]; + + const MdlConfig *fileAndMdl = &sMdlConfig[mdlConfigIdx]; + + void *resData0 = OarcManager::GetInstance()->getMdlFromArc2(fileAndMdl->putResFile); + if (resData0 == nullptr) { + return false; + } + nw4r::g3d::ResFile res0(resData0); + if (!res0.IsValid()) { + return false; + } + + nw4r::g3d::ResMdl mdl0(res0.GetResMdl(fileAndMdl->putResMdl)); + if (!mdl0.IsValid()) { + return false; + } + + if (!mGetMdl.create(mdl0, allocator, 0x120)) { + return false; + } + + bool isPickupArrow = item->isSingleArrow() && item->getParams2Lower_shift1_0x7() == 0; + void *resData1 = OarcManager::GetInstance()->getMdlFromArc2(fileAndMdl->getResFile); + if (resData1 == nullptr) { + return false; + } + nw4r::g3d::ResFile res1(resData1); + if (!res1.IsValid()) { + return false; + } + + nw4r::g3d::ResMdl mdl1(res1.GetResMdl(isPickupArrow ? "GetArrowEnemy" : fileAndMdl->getResMdl)); + if (!mdl1.IsValid()) { + return false; + } + + if (!mPutMdl.create(mdl1, allocator, 0x120)) { + return false; + } + + mpItem = item; + return true; +} + +void dItemMdlPut_c::vt_0x10(u8 arg) { + if (arg == ITEM_MDL_UNK0x14_3) { + field_0x14 = ITEM_MDL_UNK0x14_1; + } else { + field_0x14 = arg; + } +} + +void dItemMdlPut_c::setScale(const mVec3_c &scale) { + mGetMdl.setScale(scale); + mPutMdl.setScale(scale); +} + +void dItemMdlPut_c::setLocalMtx(const mMtx_c &mtx) { + mGetMdl.setLocalMtx(mtx); + mPutMdl.setLocalMtx(mtx); +} + +void dItemMdlPut_c::draw() { + switch (field_0x14) { + case ITEM_MDL_UNK0x14_1: mpItem->fn_8002ECD0(&mGetMdl, 7); break; + case ITEM_MDL_UNK0x14_2: mpItem->fn_8002ECD0(&mPutMdl, 6); break; + } +} + +void dItemMdlPut_c::vt_0x20() { + // no-op +} + +void dItemMdlPut_c::setPriorityDraw() { + mGetMdl.setPriorityDraw(0x82, 0x7F); + mPutMdl.setPriorityDraw(0x82, 0x7F); +} + +void dItemMdlPut_c::unsetPriorityDraw() { + mGetMdl.setPriorityDraw(0x7F, 0x7F); + mPutMdl.setPriorityDraw(0x7F, 0x7F); +} + +const u8 dItemMdlShield_c::sMdlIdx[] = { + MDL_SHIELD_MAX, /* ITEMMDL_SMALL_KEY */ + MDL_SHIELD_MAX, /* ITEMMDL_GREEN_RUPEE */ + MDL_SHIELD_MAX, /* ITEMMDL_BLUE_RUPEE */ + MDL_SHIELD_MAX, /* ITEMMDL_RED_RUPEE */ + MDL_SHIELD_MAX, /* ITEMMDL_COMPLETE_TRIFORCE */ + MDL_SHIELD_MAX, /* ITEMMDL_HEART */ + MDL_SHIELD_MAX, /* ITEMMDL_SINGLE_ARROW */ + MDL_SHIELD_MAX, /* ITEMMDL_BUNDLE_ARROWS */ + MDL_SHIELD_MAX, /* ITEMMDL_GODDESS_WHITESWORD */ + MDL_SHIELD_MAX, /* ITEMMDL_PRACTICE_SWORD */ + MDL_SHIELD_MAX, /* ITEMMDL_GODDESS_SWORD */ + MDL_SHIELD_MAX, /* ITEMMDL_GODDESS_LONGSWORD */ + MDL_SHIELD_MAX, /* ITEMMDL_MASTER_SWORD */ + MDL_SHIELD_MAX, /* ITEMMDL_TRUE_MASTER_SWORD */ + MDL_SHIELD_MAX, /* ITEMMDL_SAILCLOTH */ + MDL_SHIELD_MAX, /* ITEMMDL_GODDESS_HARP */ + MDL_SHIELD_MAX, /* ITEMMDL_SPIRIT_VESSEL */ + MDL_SHIELD_MAX, /* ITEMMDL_BOW */ + MDL_SHIELD_MAX, /* ITEMMDL_CLAWSHOWS */ + MDL_SHIELD_MAX, /* ITEMMDL_BIRD_STATUETTE */ + MDL_SHIELD_MAX, /* ITEMMDL_AC_BK */ + MDL_SHIELD_MAX, /* ITEMMDL_FS_BK */ + MDL_SHIELD_MAX, /* ITEMMDL_SSH_BK */ + MDL_SHIELD_MAX, /* ITEMMDL_KEY_PIECE */ + MDL_SHIELD_MAX, /* ITEMMDL_SV_BK */ + MDL_SHIELD_MAX, /* ITEMMDL_ET_BK */ + MDL_SHIELD_MAX, /* ITEMMDL_LMF_BK */ + MDL_SHIELD_MAX, /* ITEMMDL_SILVER_RUPEE */ + MDL_SHIELD_MAX, /* ITEMMDL_GOLD_RUPEE */ + MDL_SHIELD_MAX, /* ITEMMDL_RUPOOR */ + MDL_SHIELD_MAX, /* ITEMMDL_5_CRYSTALS */ + MDL_SHIELD_MAX, /* ITEMMDL_GLITTERING_SPORES */ + MDL_SHIELD_MAX, /* ITEMMDL_5_BOMBS */ + MDL_SHIELD_MAX, /* ITEMMDL_10_BOMBS */ + MDL_SHIELD_MAX, /* ITEMMDL_STAMINA_FRUIT */ + MDL_SHIELD_MAX, /* ITEMMDL_FARORE_TEAR */ + MDL_SHIELD_MAX, /* ITEMMDL_DIN_TEAR */ + MDL_SHIELD_MAX, /* ITEMMDL_NAYRU_TEAR */ + MDL_SHIELD_MAX, /* ITEMMDL_SACRED_TEAR */ + MDL_SHIELD_MAX, /* ITEMMDL_LIGHT_FRUIT */ + MDL_SHIELD_MAX, /* ITEMMDL_1_CRYSTAL */ + MDL_SHIELD_MAX, /* ITEMMDL_GUST_BELLOWS */ + MDL_SHIELD_MAX, /* ITEMMDL_DUNGEON_MAP_FI */ + MDL_SHIELD_MAX, /* ITEMMDL_DUNGEON_MAP */ + MDL_SHIELD_MAX, /* ITEMMDL_SLINGSHOT */ + MDL_SHIELD_MAX, /* ITEMMDL_BEETLE */ + MDL_SHIELD_MAX, /* ITEMMDL_WATER */ + MDL_SHIELD_MAX, /* ITEMMDL_MUSHROOM_SPORES */ + MDL_SHIELD_MAX, /* ITEMMDL_DIGGING_MITTS */ + MDL_SHIELD_MAX, /* ITEMMDL_5_DEKU_SEEDS */ + MDL_SHIELD_MAX, /* ITEMMDL_10_DEKU_SEEDS */ + MDL_SHIELD_MAX, /* ITEMMDL_GUARDIAN_POTION */ + MDL_SHIELD_MAX, /* ITEMMDL_GUARDIAN_POTION_PLUS */ + MDL_SHIELD_MAX, /* ITEMMDL_WATER_SCALE */ + MDL_SHIELD_MAX, /* ITEMMDL_BUG_MEDAL */ + MDL_SHIELD_MAX, /* ITEMMDL_BUG_NET */ + MDL_SHIELD_MAX, /* ITEMMDL_FAIRY */ + MDL_SHIELD_MAX, /* ITEMMDL_SACRED_WATER */ + MDL_SHIELD_MAX, /* ITEMMDL_HOOK_BEETLE */ + MDL_SHIELD_MAX, /* ITEMMDL_QUICK_BEETLE */ + MDL_SHIELD_MAX, /* ITEMMDL_TOUGH_BEETLE */ + MDL_SHIELD_MAX, /* ITEMMDL_HEART_POTION */ + MDL_SHIELD_MAX, /* ITEMMDL_HEART_POTION_PLUS */ + MDL_SHIELD_MAX, /* ITEMMDL_HEART_POTION_ALSO_PLUS */ + MDL_SHIELD_MAX, /* ITEMMDL_STAMINA_POTION */ + MDL_SHIELD_MAX, /* ITEMMDL_STAMINA_POTION_PLUS */ + MDL_SHIELD_MAX, /* ITEMMDL_AIR_POTION */ + MDL_SHIELD_MAX, /* ITEMMDL_AIR_POTION_PLUS */ + MDL_SHIELD_MAX, /* ITEMMDL_BOTTLED_FAIRY */ + MDL_SHIELD_MAX, /* ITEMMDL_IRON_BOW */ + MDL_SHIELD_MAX, /* ITEMMDL_SACRED_BOW */ + MDL_SHIELD_MAX, /* ITEMMDL_BOMB_BAG */ + MDL_SHIELD_MAX, /* ITEMMDL_HEART_CONTAINER */ + MDL_SHIELD_MAX, /* ITEMMDL_HEART_PIECE */ + MDL_SHIELD_MAX, /* ITEMMDL_TRI_COURAGE */ + MDL_SHIELD_MAX, /* ITEMMDL_TRI_POWER */ + MDL_SHIELD_MAX, /* ITEMMDL_TRI_WISDOWM */ + MDL_SHIELD_MAX, /* ITEMMDL_SEA_CHART */ + MDL_SHIELD_MAX, /* ITEMMDL_MOGMA_MITTS */ + MDL_SHIELD_MAX, /* ITEMMDL_HEART_MEDAL */ + MDL_SHIELD_MAX, /* ITEMMDL_RUPEE_MEDAL */ + MDL_SHIELD_MAX, /* ITEMMDL_TREASURE_MEDAL */ + MDL_SHIELD_MAX, /* ITEMMDL_POTION_MEDAL */ + MDL_SHIELD_MAX, /* ITEMMDL_CURSED_MEDAL */ + MDL_SHIELD_MAX, /* ITEMMDL_MIGHTY_SCATTERSHOT */ + MDL_SHIELD_MAX, /* ITEMMDL_85 */ + MDL_SHIELD_MAX, /* ITEMMDL_MEDIUM_WALLET */ + MDL_SHIELD_MAX, /* ITEMMDL_BIG_WALLET */ + MDL_SHIELD_MAX, /* ITEMMDL_GIANT_WALLET */ + MDL_SHIELD_MAX, /* ITEMMDL_TYCOON_WALLET */ + MDL_SHIELD_MAX, /* ITEMMDL_ADVENTURE_POUCH */ + MDL_SHIELD_MAX, /* ITEMMDL_POUCH_EXPANSION */ + MDL_SHIELD_MAX, /* ITEMMDL_LIFE_MEDAL */ + MDL_SHIELD_WOOD_0, /* ITEMMDL_WOODEN_SHIELD */ + MDL_SHIELD_WOOD_1, /* ITEMMDL_BANDED_SHIELD */ + MDL_SHIELD_WOOD_2, /* ITEMMDL_BRACED_SHIELD */ + MDL_SHIELD_IRON_0, /* ITEMMDL_IRON_SHIELD */ + MDL_SHIELD_IRON_1, /* ITEMMDL_REINFORCED_SHIELD */ + MDL_SHIELD_IRON_2, /* ITEMMDL_FORTIFIED_SHIELD */ + MDL_SHIELD_HOLY_0, /* ITEMMDL_SACRED_SHIELD */ + MDL_SHIELD_HOLY_1, /* ITEMMDL_DIVINE_SHIELD */ + MDL_SHIELD_HOLY_2, /* ITEMMDL_GODDESS_SHIELD */ + MDL_SHIELD_MAX, /* ITEMMDL_HYLIAN_SHIELD */ + MDL_SHIELD_MAX, /* ITEMMDL_REVITALIZING_POTION */ + MDL_SHIELD_MAX, /* ITEMMDL_REVITALIZING_POTION_PLUS */ + MDL_SHIELD_MAX, /* ITEMMDL_SMALL_SEED_SATCHEL */ + MDL_SHIELD_MAX, /* ITEMMDL_MEDIUM_SEED_SATCHEL */ + MDL_SHIELD_MAX, /* ITEMMDL_LARGE_SEED_SATCHEL */ + MDL_SHIELD_MAX, /* ITEMMDL_SMALL_QUIVER */ + MDL_SHIELD_MAX, /* ITEMMDL_MEDIUM_QUIVER */ + MDL_SHIELD_MAX, /* ITEMMDL_LARGE_QUIVER */ + MDL_SHIELD_MAX, /* ITEMMDL_SMALL_BOMB_BAG */ + MDL_SHIELD_MAX, /* ITEMMDL_MEDIUM_BOMB_BAG */ + MDL_SHIELD_MAX, /* ITEMMDL_LARGE_BOMB_BAG */ + MDL_SHIELD_MAX, /* ITEMMDL_WHIP */ + MDL_SHIELD_MAX, /* ITEMMDL_FIRESHIELD_EARRINGS */ + MDL_SHIELD_MAX, /* ITEMMDL_BIG_BUG_NET */ + MDL_SHIELD_MAX, /* ITEMMDL_FARON_GRASSHOPPER */ + MDL_SHIELD_MAX, /* ITEMMDL_WOODLAND_RHINO_BEETLE */ + MDL_SHIELD_MAX, /* ITEMMDL_DEKU_HORNET */ + MDL_SHIELD_MAX, /* ITEMMDL_SKYLOFT_MANTIS */ + MDL_SHIELD_MAX, /* ITEMMDL_VOLCANIC_LADYBUG */ + MDL_SHIELD_MAX, /* ITEMMDL_BLESSED_BUTTERFLY */ + MDL_SHIELD_MAX, /* ITEMMDL_LANAYRU_ANT */ + MDL_SHIELD_MAX, /* ITEMMDL_SAND_CICADA */ + MDL_SHIELD_MAX, /* ITEMMDL_GERUDO_DRAGONFLY */ + MDL_SHIELD_MAX, /* ITEMMDL_ELDIN_ROLLER */ + MDL_SHIELD_MAX, /* ITEMMDL_SKY_STAG_BEETLE */ + MDL_SHIELD_MAX, /* ITEMMDL_STARRY_FIREFLY */ + MDL_SHIELD_MAX, /* ITEMMDL_BOTTLE */ + MDL_SHIELD_MAX, /* ITEMMDL_CAWLIN_LETTER */ + MDL_SHIELD_MAX, /* ITEMMDL_BEEDLE_INSECT_CAGE */ + MDL_SHIELD_MAX, /* ITEMMDL_RATTLE */ + MDL_SHIELD_MAX, /* ITEMMDL_HORNET_LARVAE */ + MDL_SHIELD_MAX, /* ITEMMDL_BIRD_FEATHER */ + MDL_SHIELD_MAX, /* ITEMMDL_TUMBLE_WEED */ + MDL_SHIELD_MAX, /* ITEMMDL_LIZARD_TAIL */ + MDL_SHIELD_MAX, /* ITEMMDL_ELDIN_ORE */ + MDL_SHIELD_MAX, /* ITEMMDL_ANCIENT_FLOWER */ + MDL_SHIELD_MAX, /* ITEMMDL_AMBER_RELIC */ + MDL_SHIELD_MAX, /* ITEMMDL_DUSK_RELIC */ + MDL_SHIELD_MAX, /* ITEMMDL_JELLY_BLOB */ + MDL_SHIELD_MAX, /* ITEMMDL_MONSTER_CLAW */ + MDL_SHIELD_MAX, /* ITEMMDL_MONSTER_HORN */ + MDL_SHIELD_MAX, /* ITEMMDL_ORNAMENTAL_SKULL */ + MDL_SHIELD_MAX, /* ITEMMDL_EVIL_CRYSTAL */ + MDL_SHIELD_MAX, /* ITEMMDL_BLUE_BIRD_FEATHER */ + MDL_SHIELD_MAX, /* ITEMMDL_GOLDEN_SKULL */ + MDL_SHIELD_MAX, /* ITEMMDL_GODDESS_PLUME */ + MDL_SHIELD_MAX, /* ITEMMDL_EMERALD_TABLET */ + MDL_SHIELD_MAX, /* ITEMMDL_RUBY_TABLET */ + MDL_SHIELD_MAX, /* ITEMMDL_AMBER_TABLET */ + MDL_SHIELD_MAX, /* ITEMMDL_STONE_OF_TRIALS */ + MDL_SHIELD_MAX, /* ITEMMDL_BALLAD_OF_THE_GODDESS */ + MDL_SHIELD_MAX, /* ITEMMDL_FARORES_COURAGE */ + MDL_SHIELD_MAX, /* ITEMMDL_NAYRUS_WISDOM */ + MDL_SHIELD_MAX, /* ITEMMDL_DINS_POWER */ + MDL_SHIELD_MAX, /* ITEMMDL_FARON_SOTH */ + MDL_SHIELD_MAX, /* ITEMMDL_ELDIN_SOTH */ + MDL_SHIELD_MAX, /* ITEMMDL_LANAYRU_SOTH */ + MDL_SHIELD_MAX, /* ITEMMDL_ITEM_SOTH */ + MDL_SHIELD_MAX, /* ITEMMDL_REVITALIZING_POTION_PLUS_PLUS */ + MDL_SHIELD_MAX, /* ITEMMDL_HOT_SOUP */ + MDL_SHIELD_MAX, /* ITEMMDL_COLD_SOUP */ + MDL_SHIELD_MAX, /* ITEMMDL_LIFE_TREE_SEED */ + MDL_SHIELD_MAX, /* ITEMMDL_LIFE_TREE_FRUIT */ + MDL_SHIELD_MAX, /* ITEMMDL_EXTRA_WALLET */ +}; + +const dItemMdlShield_c::MdlConfig dItemMdlShield_c::sMdlConfig[] = { + {0.0f, "GetShieldWood", "GetShieldWood", "EquipShieldWood"}, + {1.0f, "GetShieldWood", "GetShieldWood", "EquipShieldWood"}, + {2.0f, "GetShieldWood", "GetShieldWood", "EquipShieldWood"}, + {0.0f, "GetShieldIron", "GetShieldIron", "EquipShieldIron"}, + {1.0f, "GetShieldIron", "GetShieldIron", "EquipShieldIron"}, + {2.0f, "GetShieldIron", "GetShieldIron", "EquipShieldIron"}, + {0.0f, "GetShieldHoly", "GetShieldHoly", "EquipShieldHoly"}, + {1.0f, "GetShieldHoly", "GetShieldHoly", "EquipShieldHoly"}, + {2.0f, "GetShieldHoly", "GetShieldHoly", "EquipShieldHoly"}, +}; + +bool dItemMdlShield_c::isMdlForItemId(u16 itemId) { + if (hasItemMdl(itemId) == false) { + return false; + } else { + return sMdlIdx[getItemMdlIdx(itemId)] <= MDL_SHIELD_MAX - 1; + } +} + +bool dItemMdlShield_c::init(u16 itemId, dAcItem_c *item, mAllocator_c *allocator) { + s32 mdlIdx = getItemMdlIdx(itemId); + u8 mdlConfigIdx = sMdlIdx[mdlIdx]; + + const MdlConfig *fileAndMdl = &sMdlConfig[mdlConfigIdx]; + + void *resData0 = OarcManager::GetInstance()->getMdlFromArc2(fileAndMdl->resFile); + if (resData0 == nullptr) { + return false; + } + nw4r::g3d::ResFile res0(resData0); + if (!res0.IsValid()) { + return false; + } + + nw4r::g3d::ResMdl mdl0(res0.GetResMdl(fileAndMdl->mdlName)); + if (!mdl0.IsValid()) { + return false; + } + + if (!mMdl.create(mdl0, allocator, 0x123)) { + return false; + } + + nw4r::g3d::ResAnmTexPat pat0(res0.GetResAnmTexPat(fileAndMdl->anmName)); + if (!pat0.IsValid()) { + return false; + } + + if (!mAnmTexPat.create(mdl0, pat0, allocator, NULL, 1)) { + return false; + } + + mMdl.setAnm(mAnmTexPat); + mAnmTexPat.setFrame(fileAndMdl->frame, 0); + + mpItem = item; + return true; +} + +void dItemMdlShield_c::vt_0x10(u8 arg) { + field_0x14 = arg; +} + +void dItemMdlShield_c::setScale(const mVec3_c &scale) { + mMdl.setScale(scale); +} + +void dItemMdlShield_c::setLocalMtx(const mMtx_c &mtx) { + mMdl.setLocalMtx(mtx); +} + +void dItemMdlShield_c::draw() { + if (field_0x14 == ITEM_MDL_UNK0x14_2) { + mpItem->fn_8002ECD0(&mMdl, 6); + } else { + mpItem->fn_8002ECD0(&mMdl, 7); + } +} + +void dItemMdlShield_c::vt_0x20() { + // no-op +} + +void dItemMdlShield_c::setPriorityDraw() { + mMdl.setPriorityDraw(0x82, 0x7F); +} + +void dItemMdlShield_c::unsetPriorityDraw() { + mMdl.setPriorityDraw(0x7F, 0x7F); +} + +const u8 dItemMdlBottle_c::sMdlIdx[] = { + MDL_BOTTLE_MAX, /* ITEMMDL_SMALL_KEY */ + MDL_BOTTLE_MAX, /* ITEMMDL_GREEN_RUPEE */ + MDL_BOTTLE_MAX, /* ITEMMDL_BLUE_RUPEE */ + MDL_BOTTLE_MAX, /* ITEMMDL_RED_RUPEE */ + MDL_BOTTLE_MAX, /* ITEMMDL_COMPLETE_TRIFORCE */ + MDL_BOTTLE_MAX, /* ITEMMDL_HEART */ + MDL_BOTTLE_MAX, /* ITEMMDL_SINGLE_ARROW */ + MDL_BOTTLE_MAX, /* ITEMMDL_BUNDLE_ARROWS */ + MDL_BOTTLE_MAX, /* ITEMMDL_GODDESS_WHITESWORD */ + MDL_BOTTLE_MAX, /* ITEMMDL_PRACTICE_SWORD */ + MDL_BOTTLE_MAX, /* ITEMMDL_GODDESS_SWORD */ + MDL_BOTTLE_MAX, /* ITEMMDL_GODDESS_LONGSWORD */ + MDL_BOTTLE_MAX, /* ITEMMDL_MASTER_SWORD */ + MDL_BOTTLE_MAX, /* ITEMMDL_TRUE_MASTER_SWORD */ + MDL_BOTTLE_MAX, /* ITEMMDL_SAILCLOTH */ + MDL_BOTTLE_MAX, /* ITEMMDL_GODDESS_HARP */ + MDL_BOTTLE_MAX, /* ITEMMDL_SPIRIT_VESSEL */ + MDL_BOTTLE_MAX, /* ITEMMDL_BOW */ + MDL_BOTTLE_MAX, /* ITEMMDL_CLAWSHOWS */ + MDL_BOTTLE_MAX, /* ITEMMDL_BIRD_STATUETTE */ + MDL_BOTTLE_MAX, /* ITEMMDL_AC_BK */ + MDL_BOTTLE_MAX, /* ITEMMDL_FS_BK */ + MDL_BOTTLE_MAX, /* ITEMMDL_SSH_BK */ + MDL_BOTTLE_MAX, /* ITEMMDL_KEY_PIECE */ + MDL_BOTTLE_MAX, /* ITEMMDL_SV_BK */ + MDL_BOTTLE_MAX, /* ITEMMDL_ET_BK */ + MDL_BOTTLE_MAX, /* ITEMMDL_LMF_BK */ + MDL_BOTTLE_MAX, /* ITEMMDL_SILVER_RUPEE */ + MDL_BOTTLE_MAX, /* ITEMMDL_GOLD_RUPEE */ + MDL_BOTTLE_MAX, /* ITEMMDL_RUPOOR */ + MDL_BOTTLE_MAX, /* ITEMMDL_5_CRYSTALS */ + MDL_BOTTLE_MAX, /* ITEMMDL_GLITTERING_SPORES */ + MDL_BOTTLE_MAX, /* ITEMMDL_5_BOMBS */ + MDL_BOTTLE_MAX, /* ITEMMDL_10_BOMBS */ + MDL_BOTTLE_MAX, /* ITEMMDL_STAMINA_FRUIT */ + MDL_BOTTLE_MAX, /* ITEMMDL_FARORE_TEAR */ + MDL_BOTTLE_MAX, /* ITEMMDL_DIN_TEAR */ + MDL_BOTTLE_MAX, /* ITEMMDL_NAYRU_TEAR */ + MDL_BOTTLE_MAX, /* ITEMMDL_SACRED_TEAR */ + MDL_BOTTLE_MAX, /* ITEMMDL_LIGHT_FRUIT */ + MDL_BOTTLE_MAX, /* ITEMMDL_1_CRYSTAL */ + MDL_BOTTLE_MAX, /* ITEMMDL_GUST_BELLOWS */ + MDL_BOTTLE_MAX, /* ITEMMDL_DUNGEON_MAP_FI */ + MDL_BOTTLE_MAX, /* ITEMMDL_DUNGEON_MAP */ + MDL_BOTTLE_MAX, /* ITEMMDL_SLINGSHOT */ + MDL_BOTTLE_MAX, /* ITEMMDL_BEETLE */ + MDL_BOTTLE_WATER, /* ITEMMDL_WATER */ + MDL_BOTTLE_MAX, /* ITEMMDL_MUSHROOM_SPORES */ + MDL_BOTTLE_MAX, /* ITEMMDL_DIGGING_MITTS */ + MDL_BOTTLE_MAX, /* ITEMMDL_5_DEKU_SEEDS */ + MDL_BOTTLE_MAX, /* ITEMMDL_10_DEKU_SEEDS */ + MDL_BOTTLE_MAX, /* ITEMMDL_GUARDIAN_POTION */ + MDL_BOTTLE_MAX, /* ITEMMDL_GUARDIAN_POTION_PLUS */ + MDL_BOTTLE_MAX, /* ITEMMDL_WATER_SCALE */ + MDL_BOTTLE_MAX, /* ITEMMDL_BUG_MEDAL */ + MDL_BOTTLE_MAX, /* ITEMMDL_BUG_NET */ + MDL_BOTTLE_FAIRY, /* ITEMMDL_FAIRY */ + MDL_BOTTLE_HOLY, /* ITEMMDL_SACRED_WATER */ + MDL_BOTTLE_MAX, /* ITEMMDL_HOOK_BEETLE */ + MDL_BOTTLE_MAX, /* ITEMMDL_QUICK_BEETLE */ + MDL_BOTTLE_MAX, /* ITEMMDL_TOUGH_BEETLE */ + MDL_BOTTLE_KUSURI, /* ITEMMDL_HEART_POTION */ + MDL_BOTTLE_KUSURI, /* ITEMMDL_HEART_POTION_PLUS */ + MDL_BOTTLE_KUSURI_S, /* ITEMMDL_HEART_POTION_ALSO_PLUS */ + MDL_BOTTLE_MAX, /* ITEMMDL_STAMINA_POTION */ + MDL_BOTTLE_MAX, /* ITEMMDL_STAMINA_POTION_PLUS */ + MDL_BOTTLE_MAX, /* ITEMMDL_AIR_POTION */ + MDL_BOTTLE_MAX, /* ITEMMDL_AIR_POTION_PLUS */ + MDL_BOTTLE_B_FAIRY, /* ITEMMDL_BOTTLED_FAIRY */ + MDL_BOTTLE_MAX, /* ITEMMDL_IRON_BOW */ + MDL_BOTTLE_MAX, /* ITEMMDL_SACRED_BOW */ + MDL_BOTTLE_MAX, /* ITEMMDL_BOMB_BAG */ + MDL_BOTTLE_MAX, /* ITEMMDL_HEART_CONTAINER */ + MDL_BOTTLE_MAX, /* ITEMMDL_HEART_PIECE */ + MDL_BOTTLE_MAX, /* ITEMMDL_TRI_COURAGE */ + MDL_BOTTLE_MAX, /* ITEMMDL_TRI_POWER */ + MDL_BOTTLE_MAX, /* ITEMMDL_TRI_WISDOWM */ + MDL_BOTTLE_MAX, /* ITEMMDL_SEA_CHART */ + MDL_BOTTLE_MAX, /* ITEMMDL_MOGMA_MITTS */ + MDL_BOTTLE_MAX, /* ITEMMDL_HEART_MEDAL */ + MDL_BOTTLE_MAX, /* ITEMMDL_RUPEE_MEDAL */ + MDL_BOTTLE_MAX, /* ITEMMDL_TREASURE_MEDAL */ + MDL_BOTTLE_MAX, /* ITEMMDL_POTION_MEDAL */ + MDL_BOTTLE_MAX, /* ITEMMDL_CURSED_MEDAL */ + MDL_BOTTLE_MAX, /* ITEMMDL_MIGHTY_SCATTERSHOT */ + MDL_BOTTLE_MAX, /* ITEMMDL_85 */ + MDL_BOTTLE_MAX, /* ITEMMDL_MEDIUM_WALLET */ + MDL_BOTTLE_MAX, /* ITEMMDL_BIG_WALLET */ + MDL_BOTTLE_MAX, /* ITEMMDL_GIANT_WALLET */ + MDL_BOTTLE_MAX, /* ITEMMDL_TYCOON_WALLET */ + MDL_BOTTLE_MAX, /* ITEMMDL_ADVENTURE_POUCH */ + MDL_BOTTLE_MAX, /* ITEMMDL_POUCH_EXPANSION */ + MDL_BOTTLE_MAX, /* ITEMMDL_LIFE_MEDAL */ + MDL_BOTTLE_MAX, /* ITEMMDL_WOODEN_SHIELD */ + MDL_BOTTLE_MAX, /* ITEMMDL_BANDED_SHIELD */ + MDL_BOTTLE_MAX, /* ITEMMDL_BRACED_SHIELD */ + MDL_BOTTLE_MAX, /* ITEMMDL_IRON_SHIELD */ + MDL_BOTTLE_MAX, /* ITEMMDL_REINFORCED_SHIELD */ + MDL_BOTTLE_MAX, /* ITEMMDL_FORTIFIED_SHIELD */ + MDL_BOTTLE_MAX, /* ITEMMDL_SACRED_SHIELD */ + MDL_BOTTLE_MAX, /* ITEMMDL_DIVINE_SHIELD */ + MDL_BOTTLE_MAX, /* ITEMMDL_GODDESS_SHIELD */ + MDL_BOTTLE_MAX, /* ITEMMDL_HYLIAN_SHIELD */ + MDL_BOTTLE_MAX, /* ITEMMDL_REVITALIZING_POTION */ + MDL_BOTTLE_MAX, /* ITEMMDL_REVITALIZING_POTION_PLUS */ + MDL_BOTTLE_MAX, /* ITEMMDL_SMALL_SEED_SATCHEL */ + MDL_BOTTLE_MAX, /* ITEMMDL_MEDIUM_SEED_SATCHEL */ + MDL_BOTTLE_MAX, /* ITEMMDL_LARGE_SEED_SATCHEL */ + MDL_BOTTLE_MAX, /* ITEMMDL_SMALL_QUIVER */ + MDL_BOTTLE_MAX, /* ITEMMDL_MEDIUM_QUIVER */ + MDL_BOTTLE_MAX, /* ITEMMDL_LARGE_QUIVER */ + MDL_BOTTLE_MAX, /* ITEMMDL_SMALL_BOMB_BAG */ + MDL_BOTTLE_MAX, /* ITEMMDL_MEDIUM_BOMB_BAG */ + MDL_BOTTLE_MAX, /* ITEMMDL_LARGE_BOMB_BAG */ + MDL_BOTTLE_MAX, /* ITEMMDL_WHIP */ + MDL_BOTTLE_MAX, /* ITEMMDL_FIRESHIELD_EARRINGS */ + MDL_BOTTLE_MAX, /* ITEMMDL_BIG_BUG_NET */ + MDL_BOTTLE_MAX, /* ITEMMDL_FARON_GRASSHOPPER */ + MDL_BOTTLE_MAX, /* ITEMMDL_WOODLAND_RHINO_BEETLE */ + MDL_BOTTLE_MAX, /* ITEMMDL_DEKU_HORNET */ + MDL_BOTTLE_MAX, /* ITEMMDL_SKYLOFT_MANTIS */ + MDL_BOTTLE_MAX, /* ITEMMDL_VOLCANIC_LADYBUG */ + MDL_BOTTLE_MAX, /* ITEMMDL_BLESSED_BUTTERFLY */ + MDL_BOTTLE_MAX, /* ITEMMDL_LANAYRU_ANT */ + MDL_BOTTLE_MAX, /* ITEMMDL_SAND_CICADA */ + MDL_BOTTLE_MAX, /* ITEMMDL_GERUDO_DRAGONFLY */ + MDL_BOTTLE_MAX, /* ITEMMDL_ELDIN_ROLLER */ + MDL_BOTTLE_MAX, /* ITEMMDL_SKY_STAG_BEETLE */ + MDL_BOTTLE_MAX, /* ITEMMDL_STARRY_FIREFLY */ + MDL_BOTTLE_MAX, /* ITEMMDL_BOTTLE */ + MDL_BOTTLE_MAX, /* ITEMMDL_CAWLIN_LETTER */ + MDL_BOTTLE_MAX, /* ITEMMDL_BEEDLE_INSECT_CAGE */ + MDL_BOTTLE_MAX, /* ITEMMDL_RATTLE */ + MDL_BOTTLE_MAX, /* ITEMMDL_HORNET_LARVAE */ + MDL_BOTTLE_MAX, /* ITEMMDL_BIRD_FEATHER */ + MDL_BOTTLE_MAX, /* ITEMMDL_TUMBLE_WEED */ + MDL_BOTTLE_MAX, /* ITEMMDL_LIZARD_TAIL */ + MDL_BOTTLE_MAX, /* ITEMMDL_ELDIN_ORE */ + MDL_BOTTLE_MAX, /* ITEMMDL_ANCIENT_FLOWER */ + MDL_BOTTLE_MAX, /* ITEMMDL_AMBER_RELIC */ + MDL_BOTTLE_MAX, /* ITEMMDL_DUSK_RELIC */ + MDL_BOTTLE_SOZAI_I, /* ITEMMDL_JELLY_BLOB */ + MDL_BOTTLE_MAX, /* ITEMMDL_MONSTER_CLAW */ + MDL_BOTTLE_MAX, /* ITEMMDL_MONSTER_HORN */ + MDL_BOTTLE_MAX, /* ITEMMDL_ORNAMENTAL_SKULL */ + MDL_BOTTLE_MAX, /* ITEMMDL_EVIL_CRYSTAL */ + MDL_BOTTLE_MAX, /* ITEMMDL_BLUE_BIRD_FEATHER */ + MDL_BOTTLE_MAX, /* ITEMMDL_GOLDEN_SKULL */ + MDL_BOTTLE_MAX, /* ITEMMDL_GODDESS_PLUME */ + MDL_BOTTLE_MAX, /* ITEMMDL_EMERALD_TABLET */ + MDL_BOTTLE_MAX, /* ITEMMDL_RUBY_TABLET */ + MDL_BOTTLE_MAX, /* ITEMMDL_AMBER_TABLET */ + MDL_BOTTLE_MAX, /* ITEMMDL_STONE_OF_TRIALS */ + MDL_BOTTLE_MAX, /* ITEMMDL_BALLAD_OF_THE_GODDESS */ + MDL_BOTTLE_MAX, /* ITEMMDL_FARORES_COURAGE */ + MDL_BOTTLE_MAX, /* ITEMMDL_NAYRUS_WISDOM */ + MDL_BOTTLE_MAX, /* ITEMMDL_DINS_POWER */ + MDL_BOTTLE_MAX, /* ITEMMDL_FARON_SOTH */ + MDL_BOTTLE_MAX, /* ITEMMDL_ELDIN_SOTH */ + MDL_BOTTLE_MAX, /* ITEMMDL_LANAYRU_SOTH */ + MDL_BOTTLE_MAX, /* ITEMMDL_ITEM_SOTH */ + MDL_BOTTLE_MAX, /* ITEMMDL_REVITALIZING_POTION_PLUS_PLUS */ + MDL_BOTTLE_PUMPKIN, /* ITEMMDL_HOT_SOUP */ + MDL_BOTTLE_PUMPKIN, /* ITEMMDL_COLD_SOUP */ + MDL_BOTTLE_MAX, /* ITEMMDL_LIFE_TREE_SEED */ + MDL_BOTTLE_MAX, /* ITEMMDL_LIFE_TREE_FRUIT */ + MDL_BOTTLE_MAX, /* ITEMMDL_EXTRA_WALLET */ +}; + +const dItemMdlBottle_c::MdlConfig dItemMdlBottle_c::sMdlConfig[] = { + { "GetBottleWater", "GetBottleWater", "GetBottleWater"}, + { "GetFairy", "GetFairy", "GetFairy"}, + { "GetBottleHoly", "GetBottleHoly", "GetBottleHoly"}, + { "GetBottleKusuri", "GetBottleKusuri", "GetBottleKusuri"}, + {"GetBottleKusuriS", "GetBottleKusuriS", "GetBottleKusuriS"}, + { "GetBottleFairy", "GetBottleFairy", "GetBottleFairy"}, + { "GetSozaiI", "GetSozaiI", "GetSozaiI"}, + {"GetBottlePumpkin", "GetBottlePumpkin", "GetBottlePumpkin"}, +}; + +bool dItemMdlBottle_c::isMdlForItemId(u16 itemId) { + if (hasItemMdl(itemId) == false) { + return false; + } else { + return sMdlIdx[getItemMdlIdx(itemId)] <= MDL_BOTTLE_MAX - 1; + } +} + +bool dItemMdlBottle_c::init(u16 itemId, dAcItem_c *item, mAllocator_c *allocator) { + s32 mdlIdx = getItemMdlIdx(itemId); + u8 mdlConfigIdx = sMdlIdx[mdlIdx]; + + const MdlConfig *fileAndMdl = &sMdlConfig[mdlConfigIdx]; + + void *resData0 = OarcManager::GetInstance()->getMdlFromArc2(fileAndMdl->resFile); + if (resData0 == nullptr) { + return false; + } + + if (!mMdl.create(resData0, fileAndMdl->mdlName, fileAndMdl->anmName, allocator, 0x120)) { + return false; + } + + if (!mMdl.setAnm(fileAndMdl->anmName, m3d::PLAY_MODE_4)) { + return false; + } + + mpItem = item; + if (dAcItem_c::isJellyBlob((ITEM_ID)itemId)) { + mFlags |= 0x1; + } + + return true; +} + +void dItemMdlBottle_c::vt_0x10(u8 arg) { + field_0x14 = arg; +} + +void dItemMdlBottle_c::setScale(const mVec3_c &scale) { + mMdl.getModel().setScale(scale); +} + +void dItemMdlBottle_c::setLocalMtx(const mMtx_c &mtx) { + mMdl.getModel().setLocalMtx(mtx); +} + +void dItemMdlBottle_c::draw() { + if (mpItem == nullptr) { + return; + } + + if (field_0x14 != ITEM_MDL_UNK0x14_1 || (mFlags & 0x1) == 0) { + mMdl.play(); + } + + if (field_0x14 == ITEM_MDL_UNK0x14_2) { + mpItem->fn_8002ECD0(&mMdl.getModel(), 6); + } else { + mpItem->fn_8002ECD0(&mMdl.getModel(), 7); + } +} + +void dItemMdlBottle_c::vt_0x20() { + // no-op +} + +void dItemMdlBottle_c::setPriorityDraw() { + mMdl.getModel().setPriorityDraw(0x82, 0x7F); +} + +void dItemMdlBottle_c::unsetPriorityDraw() { + mMdl.getModel().setPriorityDraw(0x7F, 0x7F); +} + +const dItemMdlTear_c::MdlConfig dItemMdlTear_c::sMdlConfig[] = { + {0.0f}, + {1.0f}, + {2.0f}, + {3.0f}, +}; + +bool dItemMdlTear_c::isMdlForItemId(u16 itemId) { + return dAcItem_c::isTear((ITEM_ID)itemId); +} + +bool dItemMdlTear_c::init(u16 itemId, dAcItem_c *item, mAllocator_c *allocator) { + // TODO - why is TRY_CREATE used so inconsistently here? + + dAcItem_c::Tear_e tear = dAcItem_c::getTearSubtype((ITEM_ID)itemId); + if (tear == dAcItem_c::TEAR_MAX) { + return false; + } + + const MdlConfig *fileAndMdl = &sMdlConfig[tear]; + f32 frame = fileAndMdl->frame; + + { + void *resData1 = OarcManager::GetInstance()->getMdlFromArc2("PutSizuku"); + if (resData1 == nullptr) { + return false; + } + nw4r::g3d::ResFile res1(resData1); + if (!res1.IsValid()) { + return false; + } + + nw4r::g3d::ResMdl mdl1 = res1.GetResMdl("PutShizuku"); + if (!mdl1.IsValid()) { + return false; + } + if (!mMdl1.create(mdl1, allocator, 0x327)) { + return false; + } + + nw4r::g3d::ResAnmTexSrt anmTexSrt1 = res1.GetResAnmTexSrt("Shizuku"); + if (!anmTexSrt1.IsValid()) { + return false; + } + TRY_CREATE(mAnmTexSrt1.create(mdl1, anmTexSrt1, allocator, nullptr, 1)); + TRY_CREATE(mMdl1.setAnm(mAnmTexSrt1)); + + nw4r::g3d::ResAnmTexPat anmTexPat1 = res1.GetResAnmTexPat("Shizuku"); + if (!anmTexPat1.IsValid()) { + return false; + } + if (!mAnmTexPat1.create(mdl1, anmTexPat1, allocator, nullptr, 1)) { + return false; + } + TRY_CREATE(mMdl1.setAnm(mAnmTexPat1)); + mAnmTexPat1.setFrame(frame, 0); + } + + { + void *resData2 = OarcManager::GetInstance()->getMdlFromArc2("GetSizuku"); + if (resData2 == nullptr) { + return false; + } + nw4r::g3d::ResFile res2(resData2); + if (!res2.IsValid()) { + return false; + } + + nw4r::g3d::ResMdl mdl2 = res2.GetResMdl("GetShizuku"); + if (!mdl2.IsValid()) { + return false; + } + if (!mMdl2.create(mdl2, allocator, 0x327)) { + return false; + } + + nw4r::g3d::ResAnmTexSrt anmTexSrt2 = res2.GetResAnmTexSrt("Shizuku"); + if (!anmTexSrt2.IsValid()) { + return false; + } + TRY_CREATE(mAnmTexSrt2.create(mdl2, anmTexSrt2, allocator, nullptr, 1)); + TRY_CREATE(mMdl2.setAnm(mAnmTexSrt2)); + + nw4r::g3d::ResAnmTexPat anmTexPat2 = res2.GetResAnmTexPat("Shizuku"); + if (!anmTexPat2.IsValid()) { + return false; + } + if (!mAnmTexPat2.create(mdl2, anmTexPat2, allocator, nullptr, 1)) { + return false; + } + TRY_CREATE(mMdl2.setAnm(mAnmTexPat2)); + mAnmTexPat2.setFrame(frame, 0); + } + + mpItem = item; + + return true; +} + +void dItemMdlTear_c::vt_0x10(u8 arg) { + if (arg == ITEM_MDL_UNK0x14_3) { + field_0x14 = ITEM_MDL_UNK0x14_1; + } else { + field_0x14 = arg; + } +} + +void dItemMdlTear_c::setScale(const mVec3_c &scale) { + mMdl1.setScale(scale); + mMdl2.setScale(scale); +} + +void dItemMdlTear_c::setLocalMtx(const mMtx_c &mtx) { + mMdl1.setLocalMtx(mtx); + mMdl2.setLocalMtx(mtx); +} + +void dItemMdlTear_c::draw() { + switch (field_0x14) { + case ITEM_MDL_UNK0x14_1: + mAnmTexSrt1.play(); + mpItem->fn_8002ECD0(&mMdl1, 7); + break; + case ITEM_MDL_UNK0x14_2: + mAnmTexSrt2.play(); + mpItem->fn_8002ECD0(&mMdl2, 6); + break; + } +} + +void dItemMdlTear_c::vt_0x20() { + // no-op +} + +void dItemMdlTear_c::setPriorityDraw() { + mMdl1.setPriorityDraw(0x82, 0x7F); + mMdl2.setPriorityDraw(0x82, 0x7F); +} + +void dItemMdlTear_c::unsetPriorityDraw() { + mMdl1.setPriorityDraw(0x7F, 0x7F); + mMdl2.setPriorityDraw(0x7F, 0x7F); +} + +bool dItemMdlFirefly_c::isMdlForItemId(u16 itemId) { + return dAcItem_c::isStarryFirefly((ITEM_ID)itemId); +} + +bool dItemMdlFirefly_c::init(u16 itemId, dAcItem_c *item, mAllocator_c *allocator) { + void *resData = OarcManager::GetInstance()->getMdlFromArc2("GetInsectFirefly"); + if (resData == nullptr) { + return false; + } + nw4r::g3d::ResFile res(resData); + if (!res.IsValid()) { + return false; + } + + nw4r::g3d::ResMdl mdl = res.GetResMdl("GetInsectFirefly"); + if (!mdl.IsValid()) { + return false; + } + if (!mMdl.create(mdl, allocator, 0x128)) { + return false; + } + + nw4r::g3d::ResAnmClr anmClr = res.GetResAnmClr("GetInsectFirefly"); + if (!anmClr.IsValid()) { + return false; + } + TRY_CREATE(mAnmMatClr.create(mdl, anmClr, allocator, nullptr, 1)); + mAnmMatClr.setFrameOnly(0.0f); + TRY_CREATE(mMdl.setAnm(mAnmMatClr)); + + mpItem = item; + return true; +} + +void dItemMdlFirefly_c::vt_0x10(u8 arg) { + field_0x14 = arg; +} + +void dItemMdlFirefly_c::setScale(const mVec3_c &scale) { + mMdl.setScale(scale); +} + +void dItemMdlFirefly_c::setLocalMtx(const mMtx_c &mtx) { + mMdl.setLocalMtx(mtx); +} + +void dItemMdlFirefly_c::draw() { + switch (field_0x14) { + case ITEM_MDL_UNK0x14_1: mpItem->fn_8002ECD0(&mMdl, 7); break; + case ITEM_MDL_UNK0x14_2: mpItem->fn_8002ECD0(&mMdl, 6); break; + } + mAnmMatClr.play(); +} + +void dItemMdlFirefly_c::vt_0x20() { + // no-op +} + +void dItemMdlFirefly_c::setPriorityDraw() { + mMdl.setPriorityDraw(0x82, 0x7F); +} + +void dItemMdlFirefly_c::unsetPriorityDraw() { + mMdl.setPriorityDraw(0x7F, 0x7F); +} + +m3d::smdl_c *dItemMdlFirefly_c::getMdl() { + return &mMdl; +} + +const u8 dItemMdlPotion_c::sMdlIdx[] = { + MDL_POTION_MAX, /* ITEMMDL_SMALL_KEY */ + MDL_POTION_MAX, /* ITEMMDL_GREEN_RUPEE */ + MDL_POTION_MAX, /* ITEMMDL_BLUE_RUPEE */ + MDL_POTION_MAX, /* ITEMMDL_RED_RUPEE */ + MDL_POTION_MAX, /* ITEMMDL_COMPLETE_TRIFORCE */ + MDL_POTION_MAX, /* ITEMMDL_HEART */ + MDL_POTION_MAX, /* ITEMMDL_SINGLE_ARROW */ + MDL_POTION_MAX, /* ITEMMDL_BUNDLE_ARROWS */ + MDL_POTION_MAX, /* ITEMMDL_GODDESS_WHITESWORD */ + MDL_POTION_MAX, /* ITEMMDL_PRACTICE_SWORD */ + MDL_POTION_MAX, /* ITEMMDL_GODDESS_SWORD */ + MDL_POTION_MAX, /* ITEMMDL_GODDESS_LONGSWORD */ + MDL_POTION_MAX, /* ITEMMDL_MASTER_SWORD */ + MDL_POTION_MAX, /* ITEMMDL_TRUE_MASTER_SWORD */ + MDL_POTION_MAX, /* ITEMMDL_SAILCLOTH */ + MDL_POTION_MAX, /* ITEMMDL_GODDESS_HARP */ + MDL_POTION_MAX, /* ITEMMDL_SPIRIT_VESSEL */ + MDL_POTION_MAX, /* ITEMMDL_BOW */ + MDL_POTION_MAX, /* ITEMMDL_CLAWSHOWS */ + MDL_POTION_MAX, /* ITEMMDL_BIRD_STATUETTE */ + MDL_POTION_MAX, /* ITEMMDL_AC_BK */ + MDL_POTION_MAX, /* ITEMMDL_FS_BK */ + MDL_POTION_MAX, /* ITEMMDL_SSH_BK */ + MDL_POTION_MAX, /* ITEMMDL_KEY_PIECE */ + MDL_POTION_MAX, /* ITEMMDL_SV_BK */ + MDL_POTION_MAX, /* ITEMMDL_ET_BK */ + MDL_POTION_MAX, /* ITEMMDL_LMF_BK */ + MDL_POTION_MAX, /* ITEMMDL_SILVER_RUPEE */ + MDL_POTION_MAX, /* ITEMMDL_GOLD_RUPEE */ + MDL_POTION_MAX, /* ITEMMDL_RUPOOR */ + MDL_POTION_GENKI, /* ITEMMDL_5_CRYSTALS */ + MDL_POTION_MAX, /* ITEMMDL_GLITTERING_SPORES */ + MDL_POTION_MAX, /* ITEMMDL_5_BOMBS */ + MDL_POTION_MAX, /* ITEMMDL_10_BOMBS */ + MDL_POTION_MAX, /* ITEMMDL_STAMINA_FRUIT */ + MDL_POTION_MAX, /* ITEMMDL_FARORE_TEAR */ + MDL_POTION_MAX, /* ITEMMDL_DIN_TEAR */ + MDL_POTION_MAX, /* ITEMMDL_NAYRU_TEAR */ + MDL_POTION_MAX, /* ITEMMDL_SACRED_TEAR */ + MDL_POTION_MAX, /* ITEMMDL_LIGHT_FRUIT */ + MDL_POTION_GENKI, /* ITEMMDL_1_CRYSTAL */ + MDL_POTION_MAX, /* ITEMMDL_GUST_BELLOWS */ + MDL_POTION_MAX, /* ITEMMDL_DUNGEON_MAP_FI */ + MDL_POTION_MAX, /* ITEMMDL_DUNGEON_MAP */ + MDL_POTION_MAX, /* ITEMMDL_SLINGSHOT */ + MDL_POTION_MAX, /* ITEMMDL_BEETLE */ + MDL_POTION_MAX, /* ITEMMDL_WATER */ + MDL_POTION_MAX, /* ITEMMDL_MUSHROOM_SPORES */ + MDL_POTION_MAX, /* ITEMMDL_DIGGING_MITTS */ + MDL_POTION_MAX, /* ITEMMDL_5_DEKU_SEEDS */ + MDL_POTION_MAX, /* ITEMMDL_10_DEKU_SEEDS */ + MDL_POTION_MUTEKI, /* ITEMMDL_GUARDIAN_POTION */ + MDL_POTION_MUTEKI, /* ITEMMDL_GUARDIAN_POTION_PLUS */ + MDL_POTION_MAX, /* ITEMMDL_WATER_SCALE */ + MDL_POTION_MAX, /* ITEMMDL_BUG_MEDAL */ + MDL_POTION_MAX, /* ITEMMDL_BUG_NET */ + MDL_POTION_MAX, /* ITEMMDL_FAIRY */ + MDL_POTION_MAX, /* ITEMMDL_SACRED_WATER */ + MDL_POTION_MAX, /* ITEMMDL_HOOK_BEETLE */ + MDL_POTION_MAX, /* ITEMMDL_QUICK_BEETLE */ + MDL_POTION_MAX, /* ITEMMDL_TOUGH_BEETLE */ + MDL_POTION_MAX, /* ITEMMDL_HEART_POTION */ + MDL_POTION_MAX, /* ITEMMDL_HEART_POTION_PLUS */ + MDL_POTION_MAX, /* ITEMMDL_HEART_POTION_ALSO_PLUS */ + MDL_POTION_GUTS, /* ITEMMDL_STAMINA_POTION */ + MDL_POTION_GUTS, /* ITEMMDL_STAMINA_POTION_PLUS */ + MDL_POTION_AIR, /* ITEMMDL_AIR_POTION */ + MDL_POTION_AIR, /* ITEMMDL_AIR_POTION_PLUS */ + MDL_POTION_MAX, /* ITEMMDL_BOTTLED_FAIRY */ + MDL_POTION_MAX, /* ITEMMDL_IRON_BOW */ + MDL_POTION_MAX, /* ITEMMDL_SACRED_BOW */ + MDL_POTION_MAX, /* ITEMMDL_BOMB_BAG */ + MDL_POTION_MAX, /* ITEMMDL_HEART_CONTAINER */ + MDL_POTION_MAX, /* ITEMMDL_HEART_PIECE */ + MDL_POTION_MAX, /* ITEMMDL_TRI_COURAGE */ + MDL_POTION_MAX, /* ITEMMDL_TRI_POWER */ + MDL_POTION_MAX, /* ITEMMDL_TRI_WISDOWM */ + MDL_POTION_MAX, /* ITEMMDL_SEA_CHART */ + MDL_POTION_MAX, /* ITEMMDL_MOGMA_MITTS */ + MDL_POTION_MAX, /* ITEMMDL_HEART_MEDAL */ + MDL_POTION_MAX, /* ITEMMDL_RUPEE_MEDAL */ + MDL_POTION_MAX, /* ITEMMDL_TREASURE_MEDAL */ + MDL_POTION_MAX, /* ITEMMDL_POTION_MEDAL */ + MDL_POTION_MAX, /* ITEMMDL_CURSED_MEDAL */ + MDL_POTION_MAX, /* ITEMMDL_MIGHTY_SCATTERSHOT */ + MDL_POTION_MAX, /* ITEMMDL_85 */ + MDL_POTION_MAX, /* ITEMMDL_MEDIUM_WALLET */ + MDL_POTION_MAX, /* ITEMMDL_BIG_WALLET */ + MDL_POTION_MAX, /* ITEMMDL_GIANT_WALLET */ + MDL_POTION_MAX, /* ITEMMDL_TYCOON_WALLET */ + MDL_POTION_MAX, /* ITEMMDL_ADVENTURE_POUCH */ + MDL_POTION_MAX, /* ITEMMDL_POUCH_EXPANSION */ + MDL_POTION_MAX, /* ITEMMDL_LIFE_MEDAL */ + MDL_POTION_MAX, /* ITEMMDL_WOODEN_SHIELD */ + MDL_POTION_MAX, /* ITEMMDL_BANDED_SHIELD */ + MDL_POTION_MAX, /* ITEMMDL_BRACED_SHIELD */ + MDL_POTION_MAX, /* ITEMMDL_IRON_SHIELD */ + MDL_POTION_MAX, /* ITEMMDL_REINFORCED_SHIELD */ + MDL_POTION_MAX, /* ITEMMDL_FORTIFIED_SHIELD */ + MDL_POTION_MAX, /* ITEMMDL_SACRED_SHIELD */ + MDL_POTION_MAX, /* ITEMMDL_DIVINE_SHIELD */ + MDL_POTION_MAX, /* ITEMMDL_GODDESS_SHIELD */ + MDL_POTION_MAX, /* ITEMMDL_HYLIAN_SHIELD */ + MDL_POTION_MAX, /* ITEMMDL_REVITALIZING_POTION */ + MDL_POTION_MAX, /* ITEMMDL_REVITALIZING_POTION_PLUS */ + MDL_POTION_MAX, /* ITEMMDL_SMALL_SEED_SATCHEL */ + MDL_POTION_MAX, /* ITEMMDL_MEDIUM_SEED_SATCHEL */ + MDL_POTION_MAX, /* ITEMMDL_LARGE_SEED_SATCHEL */ + MDL_POTION_MAX, /* ITEMMDL_SMALL_QUIVER */ + MDL_POTION_MAX, /* ITEMMDL_MEDIUM_QUIVER */ + MDL_POTION_MAX, /* ITEMMDL_LARGE_QUIVER */ + MDL_POTION_MAX, /* ITEMMDL_SMALL_BOMB_BAG */ + MDL_POTION_MAX, /* ITEMMDL_MEDIUM_BOMB_BAG */ + MDL_POTION_MAX, /* ITEMMDL_LARGE_BOMB_BAG */ + MDL_POTION_MAX, /* ITEMMDL_WHIP */ + MDL_POTION_MAX, /* ITEMMDL_FIRESHIELD_EARRINGS */ + MDL_POTION_MAX, /* ITEMMDL_BIG_BUG_NET */ + MDL_POTION_MAX, /* ITEMMDL_FARON_GRASSHOPPER */ + MDL_POTION_MAX, /* ITEMMDL_WOODLAND_RHINO_BEETLE */ + MDL_POTION_MAX, /* ITEMMDL_DEKU_HORNET */ + MDL_POTION_MAX, /* ITEMMDL_SKYLOFT_MANTIS */ + MDL_POTION_MAX, /* ITEMMDL_VOLCANIC_LADYBUG */ + MDL_POTION_MAX, /* ITEMMDL_BLESSED_BUTTERFLY */ + MDL_POTION_MAX, /* ITEMMDL_LANAYRU_ANT */ + MDL_POTION_MAX, /* ITEMMDL_SAND_CICADA */ + MDL_POTION_MAX, /* ITEMMDL_GERUDO_DRAGONFLY */ + MDL_POTION_MAX, /* ITEMMDL_ELDIN_ROLLER */ + MDL_POTION_MAX, /* ITEMMDL_SKY_STAG_BEETLE */ + MDL_POTION_MAX, /* ITEMMDL_STARRY_FIREFLY */ + MDL_POTION_MAX, /* ITEMMDL_BOTTLE */ + MDL_POTION_MAX, /* ITEMMDL_CAWLIN_LETTER */ + MDL_POTION_MAX, /* ITEMMDL_BEEDLE_INSECT_CAGE */ + MDL_POTION_MAX, /* ITEMMDL_RATTLE */ + MDL_POTION_MAX, /* ITEMMDL_HORNET_LARVAE */ + MDL_POTION_MAX, /* ITEMMDL_BIRD_FEATHER */ + MDL_POTION_MAX, /* ITEMMDL_TUMBLE_WEED */ + MDL_POTION_MAX, /* ITEMMDL_LIZARD_TAIL */ + MDL_POTION_MAX, /* ITEMMDL_ELDIN_ORE */ + MDL_POTION_MAX, /* ITEMMDL_ANCIENT_FLOWER */ + MDL_POTION_MAX, /* ITEMMDL_AMBER_RELIC */ + MDL_POTION_MAX, /* ITEMMDL_DUSK_RELIC */ + MDL_POTION_MAX, /* ITEMMDL_JELLY_BLOB */ + MDL_POTION_MAX, /* ITEMMDL_MONSTER_CLAW */ + MDL_POTION_MAX, /* ITEMMDL_MONSTER_HORN */ + MDL_POTION_MAX, /* ITEMMDL_ORNAMENTAL_SKULL */ + MDL_POTION_MAX, /* ITEMMDL_EVIL_CRYSTAL */ + MDL_POTION_MAX, /* ITEMMDL_BLUE_BIRD_FEATHER */ + MDL_POTION_MAX, /* ITEMMDL_GOLDEN_SKULL */ + MDL_POTION_MAX, /* ITEMMDL_GODDESS_PLUME */ + MDL_POTION_MAX, /* ITEMMDL_EMERALD_TABLET */ + MDL_POTION_MAX, /* ITEMMDL_RUBY_TABLET */ + MDL_POTION_MAX, /* ITEMMDL_AMBER_TABLET */ + MDL_POTION_MAX, /* ITEMMDL_STONE_OF_TRIALS */ + MDL_POTION_MAX, /* ITEMMDL_BALLAD_OF_THE_GODDESS */ + MDL_POTION_MAX, /* ITEMMDL_FARORES_COURAGE */ + MDL_POTION_MAX, /* ITEMMDL_NAYRUS_WISDOM */ + MDL_POTION_MAX, /* ITEMMDL_DINS_POWER */ + MDL_POTION_MAX, /* ITEMMDL_FARON_SOTH */ + MDL_POTION_MAX, /* ITEMMDL_ELDIN_SOTH */ + MDL_POTION_MAX, /* ITEMMDL_LANAYRU_SOTH */ + MDL_POTION_MAX, /* ITEMMDL_ITEM_SOTH */ + MDL_POTION_MAX, /* ITEMMDL_REVITALIZING_POTION_PLUS_PLUS */ + MDL_POTION_MAX, /* ITEMMDL_HOT_SOUP */ + MDL_POTION_MAX, /* ITEMMDL_COLD_SOUP */ + MDL_POTION_MAX, /* ITEMMDL_LIFE_TREE_SEED */ + MDL_POTION_MAX, /* ITEMMDL_LIFE_TREE_FRUIT */ + MDL_POTION_MAX, /* ITEMMDL_EXTRA_WALLET */ +}; + +const dItemMdlPotion_c::MdlConfig dItemMdlPotion_c::sMdlConfig[] = { + {"GetBottleMuteki", "GetBottleMuteki", "GetBottleMuteki", "GetBottleMuteki"}, + { "GetBottleGuts", "GetBottleGuts", "GetBottleGuts", "GetBottleGuts"}, + { "GetBottleAir", "GetBottleAir", "GetBottleAir", "GetBottleAir"}, + { "GetGenki", "GetGenki", "GetGenki", "GetGenki"}, +}; + +bool dItemMdlPotion_c::isMdlForItemId(u16 itemId) { + if (hasItemMdl(itemId) == false) { + return false; + } else { + return sMdlIdx[getItemMdlIdx(itemId)] <= MDL_POTION_MAX - 1; + } +} + +bool dItemMdlPotion_c::init(u16 itemId, dAcItem_c *item, mAllocator_c *allocator) { + s32 mdlIdx = getItemMdlIdx(itemId); + u8 mdlConfigIdx = sMdlIdx[mdlIdx]; + + const MdlConfig *fileAndMdl = &sMdlConfig[mdlConfigIdx]; + + void *resData = OarcManager::GetInstance()->getMdlFromArc2(fileAndMdl->resFile); + if (resData == nullptr) { + return false; + } + nw4r::g3d::ResFile resFile(resData); + if (!resFile.IsValid()) { + return false; + } + + nw4r::g3d::ResMdl mdl = resFile.GetResMdl(fileAndMdl->mdlName); + if (!mdl.IsValid()) { + return false; + } + // TODO - what? This makes the function return true if model creation + // succeeds but the anmChr is invalid. + bool result = mMdl.create(mdl, allocator, 0x324); + if (!result) { + return false; + } + + nw4r::g3d::ResAnmChr anmChr = resFile.GetResAnmChr(fileAndMdl->anmChrName); + if (!anmChr.IsValid()) { + return result; + } + TRY_CREATE(mAnmChr.create2(mdl, anmChr, allocator)); + mAnmChr.setAnm(mMdl, anmChr, m3d::PLAY_MODE_0); + mMdl.setAnm(mAnmChr); + + nw4r::g3d::ResAnmTexSrt anmTexSrt = resFile.GetResAnmTexSrt(fileAndMdl->anmTexSrtName); + if (!anmTexSrt.IsValid()) { + return false; + } + TRY_CREATE(mAnmTexSrt.create(mdl, anmTexSrt, allocator, nullptr, 1)); + TRY_CREATE(mMdl.setAnm(mAnmTexSrt)); + + mpItem = item; + return true; +} + +void dItemMdlPotion_c::vt_0x10(u8 arg) { + field_0x14 = arg; +} + +void dItemMdlPotion_c::setScale(const mVec3_c &scale) { + mMdl.setScale(scale); +} + +void dItemMdlPotion_c::setLocalMtx(const mMtx_c &mtx) { + mMdl.setLocalMtx(mtx); +} + +void dItemMdlPotion_c::draw() { + mAnmChr.play(); + mAnmTexSrt.play(); + switch (field_0x14) { + case ITEM_MDL_UNK0x14_1: mpItem->fn_8002ECD0(&mMdl, 7); break; + case ITEM_MDL_UNK0x14_2: mpItem->fn_8002ECD0(&mMdl, 6); break; + } +} + +void dItemMdlPotion_c::vt_0x20() { + // no-op +} + +void dItemMdlPotion_c::setPriorityDraw() { + mMdl.setPriorityDraw(0x82, 0x7F); +} + +void dItemMdlPotion_c::unsetPriorityDraw() { + mMdl.setPriorityDraw(0x7F, 0x7F); +} + +m3d::smdl_c *dItemMdlPotion_c::getMdl() { + return &mMdl; +} diff --git a/src/toBeSorted/item_mdl_name.cpp b/src/toBeSorted/item_mdl_name.cpp new file mode 100644 index 00000000..a0b95f77 --- /dev/null +++ b/src/toBeSorted/item_mdl_name.cpp @@ -0,0 +1,528 @@ +#include "common.h" +#include "toBeSorted/item_mdl_name.h" + +static const u16 ITEM_TO_MODEL_INDEX[512] = { + ITEMMDL_MAX, /* ITEM_NONE */ + ITEMMDL_SMALL_KEY, /* ITEM_SMALL_KEY */ + ITEMMDL_GREEN_RUPEE, /* ITEM_GREEN_RUPEE */ + ITEMMDL_BLUE_RUPEE, /* ITEM_BLUE_RUPEE */ + ITEMMDL_RED_RUPEE, /* ITEM_RED_RUPEE */ + ITEMMDL_COMPLETE_TRIFORCE, /* ITEM_COMPLETE_TRIFORCE */ + ITEMMDL_HEART, /* ITEM_HEART */ + ITEMMDL_SINGLE_ARROW, /* ITEM_SINGLE_ARROW */ + ITEMMDL_BUNDLE_ARROWS, /* ITEM_BUNDLE_ARROWS */ + ITEMMDL_GODDESS_WHITESWORD, /* ITEM_GODDESS_WHITESWORD */ + ITEMMDL_PRACTICE_SWORD, /* ITEM_PRACTICE_SWORD */ + ITEMMDL_GODDESS_SWORD, /* ITEM_GODDESS_SWORD */ + ITEMMDL_GODDESS_LONGSWORD, /* ITEM_GODDESS_LONGSWORD */ + ITEMMDL_MASTER_SWORD, /* ITEM_MASTER_SWORD */ + ITEMMDL_TRUE_MASTER_SWORD, /* ITEM_TRUE_MASTER_SWORD */ + ITEMMDL_SAILCLOTH, /* ITEM_SAILCLOTH */ + ITEMMDL_GODDESS_HARP, /* ITEM_GODDESS_HARP */ + ITEMMDL_SPIRIT_VESSEL, /* ITEM_SPIRIT_VESSEL */ + ITEMMDL_MAX, /* ITEM_UNK_18 */ + ITEMMDL_BOW, /* ITEM_BOW */ + ITEMMDL_CLAWSHOWS, /* ITEM_CLAWSHOTS */ + ITEMMDL_BIRD_STATUETTE, /* ITEM_BIRD_STATUETTE */ + ITEMMDL_MAX, /* ITEM_COMMON_BUG */ + ITEMMDL_MAX, /* ITEM_UNCOMMON_BUG */ + ITEMMDL_MAX, /* ITEM_RARE_BUG */ + ITEMMDL_AC_BK, /* ITEM_AC_BK */ + ITEMMDL_FS_BK, /* ITEM_FS_BK */ + ITEMMDL_SSH_BK, /* ITEM_SSH_BK */ + ITEMMDL_KEY_PIECE, /* ITEM_KEY_PIECE */ + ITEMMDL_SV_BK, /* ITEM_SV_BK */ + ITEMMDL_ET_BK, /* ITEM_ET_BK */ + ITEMMDL_LMF_BK, /* ITEM_LMF_BK */ + ITEMMDL_SILVER_RUPEE, /* ITEM_SILVER_RUPEE */ + ITEMMDL_GOLD_RUPEE, /* ITEM_GOLD_RUPEE */ + ITEMMDL_RUPOOR, /* ITEM_RUPOOR */ + ITEMMDL_5_CRYSTALS, /* ITEM_5_CRYSTALS */ + ITEMMDL_GLITTERING_SPORES, /* ITEM_GLITTERING_SPORES */ + ITEMMDL_MAX, /* ITEM_UNK_37 */ + ITEMMDL_MAX, /* ITEM_UNK_38 */ + ITEMMDL_MAX, /* ITEM_UNK_39 */ + ITEMMDL_5_BOMBS, /* ITEM_5_BOMBS */ + ITEMMDL_10_BOMBS, /* ITEM_10_BOMBS */ + ITEMMDL_STAMINA_FRUIT, /* ITEM_STAMINA_FRUIT */ + ITEMMDL_FARORE_TEAR, /* ITEM_FARORE_TEAR */ + ITEMMDL_DIN_TEAR, /* ITEM_DIN_TEAR */ + ITEMMDL_NAYRU_TEAR, /* ITEM_NAYRU_TEAR */ + ITEMMDL_SACRED_TEAR, /* ITEM_SACRED_TEAR */ + ITEMMDL_LIGHT_FRUIT, /* ITEM_LIGHT_FRUIT */ + ITEMMDL_1_CRYSTAL, /* ITEM_1_CRYSTAL */ + ITEMMDL_GUST_BELLOWS, /* ITEM_GUST_BELLOWS */ + ITEMMDL_DUNGEON_MAP_FI, /* ITEM_DUNGEON_MAP_FI */ + ITEMMDL_DUNGEON_MAP, /* ITEM_DUNGEON_MAP */ + ITEMMDL_SLINGSHOT, /* ITEM_SLINGSHOT */ + ITEMMDL_BEETLE, /* ITEM_BEETLE */ + ITEMMDL_WATER, /* ITEM_WATER */ + ITEMMDL_MUSHROOM_SPORES, /* ITEM_MUSHROOM_SPORES */ + ITEMMDL_DIGGING_MITTS, /* ITEM_DIGGING_MITTS */ + ITEMMDL_5_DEKU_SEEDS, /* ITEM_5_DEKU_SEEDS */ + ITEMMDL_MAX, /* ITEM_UNK_58 */ + ITEMMDL_MAX, /* ITEM_UNK_59 */ + ITEMMDL_10_DEKU_SEEDS, /* ITEM_10_DEKU_SEEDS */ + ITEMMDL_MAX, /* ITEM_COMMON_TREASURE */ + ITEMMDL_MAX, /* ITEM_COMMON_TREASURE2 */ + ITEMMDL_MAX, /* ITEM_UNCOMMON_TREASURE */ + ITEMMDL_MAX, /* ITEM_RARE_TREASURE */ + ITEMMDL_GUARDIAN_POTION, /* ITEM_GUARDIAN_POTION */ + ITEMMDL_GUARDIAN_POTION_PLUS, /* ITEM_GUARDIAN_POTION_PLUS */ + ITEMMDL_MAX, /* ITEM_UNK_67 */ + ITEMMDL_WATER_SCALE, /* ITEM_WATER_SCALE */ + ITEMMDL_MAX, /* ITEM_UNK_69 */ + ITEMMDL_BUG_MEDAL, /* ITEM_BUG_MEDAL */ + ITEMMDL_BUG_NET, /* ITEM_BUG_NET */ + ITEMMDL_FAIRY, /* ITEM_FAIRY */ + ITEMMDL_MAX, /* ITEM_UNK_73 */ + ITEMMDL_SACRED_WATER, /* ITEM_SACRED_WATER */ + ITEMMDL_HOOK_BEETLE, /* ITEM_HOOK_BEETLE */ + ITEMMDL_QUICK_BEETLE, /* ITEM_QUICK_BEETLE */ + ITEMMDL_TOUGH_BEETLE, /* ITEM_TOUGH_BEETLE */ + ITEMMDL_HEART_POTION, /* ITEM_HEART_POTION */ + ITEMMDL_HEART_POTION_PLUS, /* ITEM_HEART_POTION_PLUS */ + ITEMMDL_MAX, /* ITEM_HEART_POTION_ALSO */ + ITEMMDL_HEART_POTION_ALSO_PLUS, /* ITEM_HEART_POTION_PLUS_PLUS */ + ITEMMDL_MAX, /* ITEM_UNK_82 */ + ITEMMDL_MAX, /* ITEM_GUARDIAN_POTION_NO_TBOX */ + ITEMMDL_STAMINA_POTION, /* ITEM_STAMINA_POTION */ + ITEMMDL_STAMINA_POTION_PLUS, /* ITEM_STAMINA_POTION_PLUS */ + ITEMMDL_AIR_POTION, /* ITEM_AIR_POTION */ + ITEMMDL_AIR_POTION_PLUS, /* ITEM_AIR_POTION_PLUS */ + ITEMMDL_BOTTLED_FAIRY, /* ITEM_BOTTLED_FAIRY */ + ITEMMDL_MAX, /* ITEM_UNK_89 */ + ITEMMDL_IRON_BOW, /* ITEM_IRON_BOW */ + ITEMMDL_SACRED_BOW, /* ITEM_SACRED_BOW */ + ITEMMDL_BOMB_BAG, /* ITEM_BOMB_BAG */ + ITEMMDL_HEART_CONTAINER, /* ITEM_HEART_CONTAINER */ + ITEMMDL_HEART_PIECE, /* ITEM_HEART_PIECE */ + ITEMMDL_TRI_COURAGE, /* ITEM_TRI_COURAGE */ + ITEMMDL_TRI_POWER, /* ITEM_TRI_POWER */ + ITEMMDL_TRI_WISDOWM, /* ITEM_TRI_WISDOM */ + ITEMMDL_SEA_CHART, /* ITEM_SEA_CHART */ + ITEMMDL_MOGMA_MITTS, /* ITEM_MOGMA_MITTS */ + ITEMMDL_HEART_MEDAL, /* ITEM_HEART_MEDAL */ + ITEMMDL_RUPEE_MEDAL, /* ITEM_RUPEE_MEDAL */ + ITEMMDL_TREASURE_MEDAL, /* ITEM_TREASURE_MEDAL */ + ITEMMDL_POTION_MEDAL, /* ITEM_POTION_MEDAL */ + ITEMMDL_CURSED_MEDAL, /* ITEM_CURSED_MEDAL */ + ITEMMDL_MIGHTY_SCATTERSHOT, /* ITEM_MIGHTY_SCATTERSHOT */ + ITEMMDL_MAX, /* ITEM_UNK_106 */ + ITEMMDL_85, /* ITEM_UNK_107 */ + ITEMMDL_MEDIUM_WALLET, /* ITEM_MEDIUM_WALLET */ + ITEMMDL_BIG_WALLET, /* ITEM_BIG_WALLET */ + ITEMMDL_GIANT_WALLET, /* ITEM_GIANT_WALLET */ + ITEMMDL_TYCOON_WALLET, /* ITEM_TYCOON_WALLET */ + ITEMMDL_ADVENTURE_POUCH, /* ITEM_ADVENTURE_POUCH */ + ITEMMDL_POUCH_EXPANSION, /* ITEM_POUCH_EXPANSION */ + ITEMMDL_LIFE_MEDAL, /* ITEM_LIFE_MEDAL */ + ITEMMDL_MAX, /* ITEM_UNK_115 */ + ITEMMDL_WOODEN_SHIELD, /* ITEM_WOODEN_SHIELD */ + ITEMMDL_BANDED_SHIELD, /* ITEM_BANDED_SHIELD */ + ITEMMDL_BRACED_SHIELD, /* ITEM_BRACED_SHIELD */ + ITEMMDL_IRON_SHIELD, /* ITEM_IRON_SHIELD */ + ITEMMDL_REINFORCED_SHIELD, /* ITEM_REINFORCED_SHIELD */ + ITEMMDL_FORTIFIED_SHIELD, /* ITEM_FORTIFIED_SHIELD */ + ITEMMDL_SACRED_SHIELD, /* ITEM_SACRED_SHIELD */ + ITEMMDL_DIVINE_SHIELD, /* ITEM_DIVINE_SHIELD */ + ITEMMDL_GODDESS_SHIELD, /* ITEM_GODDESS_SHIELD */ + ITEMMDL_HYLIAN_SHIELD, /* ITEM_HYLIAN_SHIELD */ + ITEMMDL_REVITALIZING_POTION, /* ITEM_REVITALIZING_POTION */ + ITEMMDL_REVITALIZING_POTION_PLUS, /* ITEM_REVITALIZING_POTION_PLUS */ + ITEMMDL_SMALL_SEED_SATCHEL, /* ITEM_SMALL_SEED_SATCHEL */ + ITEMMDL_MEDIUM_SEED_SATCHEL, /* ITEM_MEDIUM_SEED_SATCHEL */ + ITEMMDL_LARGE_SEED_SATCHEL, /* ITEM_LARGE_SEED_SATCHEL */ + ITEMMDL_SMALL_QUIVER, /* ITEM_SMALL_QUIVER */ + ITEMMDL_MEDIUM_QUIVER, /* ITEM_MEDIUM_QUIVER */ + ITEMMDL_LARGE_QUIVER, /* ITEM_LARGE_QUIVER */ + ITEMMDL_SMALL_BOMB_BAG, /* ITEM_SMALL_BOMB_BAG */ + ITEMMDL_MEDIUM_BOMB_BAG, /* ITEM_MEDIUM_BOMB_BAG */ + ITEMMDL_LARGE_BOMB_BAG, /* ITEM_LARGE_BOMB_BAG */ + ITEMMDL_WHIP, /* ITEM_WHIP */ + ITEMMDL_FIRESHIELD_EARRINGS, /* ITEM_FIRESHIELD_EARRINGS */ + ITEMMDL_MAX, /* ITEM_UNK_139 */ + ITEMMDL_BIG_BUG_NET, /* ITEM_BIG_BUG_NET */ + ITEMMDL_FARON_GRASSHOPPER, /* ITEM_FARON_GRASSHOPPER */ + ITEMMDL_WOODLAND_RHINO_BEETLE, /* ITEM_WOODLAND_RHINO_BEETLE */ + ITEMMDL_DEKU_HORNET, /* ITEM_DEKU_HORNET */ + ITEMMDL_SKYLOFT_MANTIS, /* ITEM_SKYLOFT_MANTIS */ + ITEMMDL_VOLCANIC_LADYBUG, /* ITEM_VOLCANIC_LADYBUG */ + ITEMMDL_BLESSED_BUTTERFLY, /* ITEM_BLESSED_BUTTERFLY */ + ITEMMDL_LANAYRU_ANT, /* ITEM_LANAYRU_ANT */ + ITEMMDL_SAND_CICADA, /* ITEM_SAND_CICADA */ + ITEMMDL_GERUDO_DRAGONFLY, /* ITEM_GERUDO_DRAGONFLY */ + ITEMMDL_ELDIN_ROLLER, /* ITEM_ELDIN_ROLLER */ + ITEMMDL_SKY_STAG_BEETLE, /* ITEM_SKY_STAG_BEETLE */ + ITEMMDL_STARRY_FIREFLY, /* ITEM_STARRY_FIREFLY */ + ITEMMDL_BOTTLE, /* ITEM_BOTTLE */ + ITEMMDL_MAX, /* ITEM_RUPEE_MEDAL_ALSO */ + ITEMMDL_MAX, /* ITEM_HEART_MEDAL_ALSO */ + ITEMMDL_MAX, /* ITEM_UNK_156 */ + ITEMMDL_MAX, /* ITEM_UNK_157 */ + ITEMMDL_CAWLIN_LETTER, /* ITEM_CAWLIN_LETTER */ + ITEMMDL_BEEDLE_INSECT_CAGE, /* ITEM_BEEDLE_INSECT_CAGE */ + ITEMMDL_RATTLE, /* ITEM_RATTLE */ + ITEMMDL_HORNET_LARVAE, /* ITEM_HORNET_LARVAE */ + ITEMMDL_BIRD_FEATHER, /* ITEM_BIRD_FEATHER */ + ITEMMDL_TUMBLE_WEED, /* ITEM_TUMBLE_WEED */ + ITEMMDL_LIZARD_TAIL, /* ITEM_LIZARD_TAIL */ + ITEMMDL_ELDIN_ORE, /* ITEM_ELDIN_ORE */ + ITEMMDL_ANCIENT_FLOWER, /* ITEM_ANCIENT_FLOWER */ + ITEMMDL_AMBER_RELIC, /* ITEM_AMBER_RELIC */ + ITEMMDL_DUSK_RELIC, /* ITEM_DUSK_RELIC */ + ITEMMDL_JELLY_BLOB, /* ITEM_JELLY_BLOB */ + ITEMMDL_MONSTER_CLAW, /* ITEM_MONSTER_CLAW */ + ITEMMDL_MONSTER_HORN, /* ITEM_MONSTER_HORN */ + ITEMMDL_ORNAMENTAL_SKULL, /* ITEM_ORNAMENTAL_SKULL */ + ITEMMDL_EVIL_CRYSTAL, /* ITEM_EVIL_CRYSTAL */ + ITEMMDL_BLUE_BIRD_FEATHER, /* ITEM_BLUE_BIRD_FEATHER */ + ITEMMDL_GOLDEN_SKULL, /* ITEM_GOLDEN_SKULL */ + ITEMMDL_GODDESS_PLUME, /* ITEM_GODDESS_PLUME */ + ITEMMDL_EMERALD_TABLET, /* ITEM_EMERALD_TABLET */ + ITEMMDL_RUBY_TABLET, /* ITEM_RUBY_TABLET */ + ITEMMDL_AMBER_TABLET, /* ITEM_AMBER_TABLET */ + ITEMMDL_STONE_OF_TRIALS, /* ITEM_STONE_OF_TRIALS */ + ITEMMDL_MAX, /* ITEM_UNK_181 */ + ITEMMDL_MAX, /* ITEM_UNK_182 */ + ITEMMDL_MAX, /* ITEM_UNK_183 */ + ITEMMDL_MAX, /* ITEM_UNK_184 */ + ITEMMDL_MAX, /* ITEM_UNK_185 */ + ITEMMDL_BALLAD_OF_THE_GODDESS, /* ITEM_BALLAD_OF_THE_GODDESS */ + ITEMMDL_FARORES_COURAGE, /* ITEM_FARORES_COURAGE */ + ITEMMDL_NAYRUS_WISDOM, /* ITEM_NAYRUS_WISDOM */ + ITEMMDL_DINS_POWER, /* ITEM_DINS_POWER */ + ITEMMDL_FARON_SOTH, /* ITEM_FARON_SOTH */ + ITEMMDL_ELDIN_SOTH, /* ITEM_ELDIN_SOTH */ + ITEMMDL_LANAYRU_SOTH, /* ITEM_LANAYRU_SOTH */ + ITEMMDL_ITEM_SOTH, /* ITEM_SOTH */ + ITEMMDL_REVITALIZING_POTION_PLUS_PLUS, /* ITEM_REVITALIZING_POTION_PLUS_PLUS */ + ITEMMDL_HOT_SOUP, /* ITEM_HOT_SOUP */ + ITEMMDL_COLD_SOUP, /* ITEM_COLD_SOUP */ + ITEMMDL_LIFE_TREE_SEED, /* ITEM_LIFE_TREE_SEED */ + ITEMMDL_LIFE_TREE_FRUIT, /* ITEM_LIFE_TREE_FRUIT */ + ITEMMDL_EXTRA_WALLET, /* ITEM_EXTRA_WALLET */ + ITEMMDL_MAX, /* ITEM_UNK_200 */ + ITEMMDL_MAX, /* ITEM_LIFE_MEDAL_AGAIN */ + ITEMMDL_MAX, /* ITEM_POUCH_EXPANSION_GODDESS_CHEST */ + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, + ITEMMDL_MAX, +}; + +bool hasItemMdl(u16 itemId) { + if (itemId >= ARRAY_LENGTH(ITEM_TO_MODEL_INDEX)) { + return false; + } + return ITEM_TO_MODEL_INDEX[itemId] <= ITEMMDL_MAX - 1; +} + +u16 getItemMdlIdx(u16 itemId) { + return ITEM_TO_MODEL_INDEX[itemId]; +} diff --git a/src/toBeSorted/mdl_base.cpp b/src/toBeSorted/mdl_base.cpp new file mode 100644 index 00000000..2c5ba98b --- /dev/null +++ b/src/toBeSorted/mdl_base.cpp @@ -0,0 +1,4 @@ +#include "toBeSorted/mdl_base.h" + +dMdl_c::dMdl_c() {} +dMdl_c::~dMdl_c() {}