diff --git a/include/JSystem/J3DGraphAnimator/J3DMaterialAnm.h b/include/JSystem/J3DGraphAnimator/J3DMaterialAnm.h index f3c349f72a..db9a5184a6 100644 --- a/include/JSystem/J3DGraphAnimator/J3DMaterialAnm.h +++ b/include/JSystem/J3DGraphAnimator/J3DMaterialAnm.h @@ -114,6 +114,8 @@ private: class J3DMaterialAnm { public: + J3DMaterialAnm() { initialize(); } + /* 8032C320 */ void initialize(); /* 8032C5A4 */ void setMatColorAnm(int, J3DMatColorAnm*); /* 8032C5E4 */ void setTexMtxAnm(int, J3DTexMtxAnm*); diff --git a/include/JSystem/J3DGraphBase/J3DPacket.h b/include/JSystem/J3DGraphBase/J3DPacket.h index 14ed0fb5f4..6552c461af 100644 --- a/include/JSystem/J3DGraphBase/J3DPacket.h +++ b/include/JSystem/J3DGraphBase/J3DPacket.h @@ -64,6 +64,8 @@ public: mpFirstChild = NULL; } + void setUserArea(u32 area) { mpUserData = (void*)area; } + virtual bool entry(J3DDrawBuffer*); virtual void draw(); virtual ~J3DPacket() {} diff --git a/include/JSystem/JAudio2/JASDvdThread.h b/include/JSystem/JAudio2/JASDvdThread.h index 5496d6ec04..779461a72f 100644 --- a/include/JSystem/JAudio2/JASDvdThread.h +++ b/include/JSystem/JAudio2/JASDvdThread.h @@ -2,5 +2,14 @@ #define JASDVDTHREAD_H #include "dolphin/types.h" +#include "JSystem/JAudio2/JASTaskThread.h" + +class JASDvd { +public: + /* 8028FEFC */ static JASTaskThread* getThreadPointer(); + /* 8028FF04 */ void createThread(s32, int, u32); + + static JASTaskThread* sThread; +}; #endif /* JASDVDTHREAD_H */ diff --git a/include/JSystem/JAudio2/JASTaskThread.h b/include/JSystem/JAudio2/JASTaskThread.h index b8cecabc6a..82f9a9f2ac 100644 --- a/include/JSystem/JAudio2/JASTaskThread.h +++ b/include/JSystem/JAudio2/JASTaskThread.h @@ -2,5 +2,22 @@ #define JASTASKTHREAD_H #include "dolphin/types.h" +#include "JSystem/JKernel/JKRThread.h" + +class JASTaskThread : public JKRThread { +public: + /* 8028F6C4 */ JASTaskThread(int, int, u32); + /* 8028F9EC */ void allocCallStack(void (*)(void*), void*); + /* 8028F850 */ void allocCallStack(void (*)(void*), void const*, u32); + /* 8028FC54 */ void sendCmdMsg(void (*)(void*), void*); + /* 8028FB5C */ void sendCmdMsg(void (*)(void*), void const*, u32); + /* 8028FE88 */ void pause(bool); + + /* 8028F724 */ virtual ~JASTaskThread(); + /* 8028FD4C */ virtual void run(); + + /* 0x7C */ OSThreadQueue* mpThreadQueue; + /* 0x84 */ bool field_0x84; +}; #endif /* JASTASKTHREAD_H */ diff --git a/include/JSystem/JKernel/JKRAssertHeap.h b/include/JSystem/JKernel/JKRAssertHeap.h index e285ea9f99..58c4345d5c 100644 --- a/include/JSystem/JKernel/JKRAssertHeap.h +++ b/include/JSystem/JKernel/JKRAssertHeap.h @@ -25,7 +25,7 @@ public: /* vt[16] */ virtual s32 do_getFreeSize(void); /* override */ /* vt[17] */ virtual void* do_getMaxFreeBlock(void); /* override */ /* vt[18] */ virtual s32 do_getTotalFreeSize(void); /* override */ - /* vt[19] */ virtual u8 do_changeGroupID(u8 param_1); /* override */ + /* vt[19] */ virtual s32 do_changeGroupID(u8 param_1); /* override */ /* vt[20] */ virtual u8 do_getCurrentGroupId(void); /* override */ public: diff --git a/include/JSystem/JKernel/JKRExpHeap.h b/include/JSystem/JKernel/JKRExpHeap.h index d2e93baa53..257e0bfc4b 100644 --- a/include/JSystem/JKernel/JKRExpHeap.h +++ b/include/JSystem/JKernel/JKRExpHeap.h @@ -73,7 +73,7 @@ public: /* vt[16] */ virtual s32 do_getFreeSize(); /* override */ /* vt[17] */ virtual void* do_getMaxFreeBlock(); /* override */ /* vt[18] */ virtual s32 do_getTotalFreeSize(); /* override */ - /* vt[19] */ virtual u8 do_changeGroupID(u8 newGroupID); /* override */ + /* vt[19] */ virtual s32 do_changeGroupID(u8 newGroupID); /* override */ /* vt[20] */ virtual u8 do_getCurrentGroupId(); /* override */ /* vt[21] */ virtual void state_register(JKRHeap::TState*, u32) const; /* override */ /* vt[22] */ virtual bool state_compare(JKRHeap::TState const&, diff --git a/include/JSystem/JKernel/JKRHeap.h b/include/JSystem/JKernel/JKRHeap.h index f2194cb7a8..d0f0fc9c0d 100644 --- a/include/JSystem/JKernel/JKRHeap.h +++ b/include/JSystem/JKernel/JKRHeap.h @@ -43,7 +43,7 @@ public: s32 getFreeSize(); void* getMaxFreeBlock(); s32 getTotalFreeSize(); - u8 changeGroupID(u8 newGroupId); + s32 changeGroupID(u8 newGroupId); u32 getMaxAllocatableSize(int alignment); JKRHeap* find(void* ptr) const; @@ -73,7 +73,7 @@ public: /* vt[16] */ virtual s32 do_getFreeSize() = 0; /* vt[17] */ virtual void* do_getMaxFreeBlock() = 0; /* vt[18] */ virtual s32 do_getTotalFreeSize() = 0; - /* vt[19] */ virtual u8 do_changeGroupID(u8 newGroupID); + /* vt[19] */ virtual s32 do_changeGroupID(u8 newGroupID); /* vt[20] */ virtual u8 do_getCurrentGroupId(); /* vt[21] */ virtual void state_register(JKRHeap::TState*, unsigned long) const; /* vt[22] */ virtual bool state_compare(JKRHeap::TState const&, JKRHeap::TState const&) const; diff --git a/include/JSystem/JParticle/JPAParticle.h b/include/JSystem/JParticle/JPAParticle.h index ae0a07b8b2..2c50176b8a 100644 --- a/include/JSystem/JParticle/JPAParticle.h +++ b/include/JSystem/JParticle/JPAParticle.h @@ -287,6 +287,7 @@ public: class JPAParticleCallBack { public: + JPAParticleCallBack() {} virtual ~JPAParticleCallBack(); virtual void execute(JPABaseEmitter*, JPABaseParticle*); virtual void draw(JPABaseEmitter*, JPABaseParticle*); diff --git a/include/JSystem/JUtility/JUTReport.h b/include/JSystem/JUtility/JUTReport.h index 9fd63ad99b..f38f31706a 100644 --- a/include/JSystem/JUtility/JUTReport.h +++ b/include/JSystem/JUtility/JUTReport.h @@ -1,7 +1,7 @@ #ifndef JSYSTEM_JUTILITY_JUTREPORT_H #define JSYSTEM_JUTILITY_JUTREPORT_H -void JUTReport(int, int, const char*, ...); -void JUTReport(int, int, int, const char*, ...); +void JUTReport(int x_pos, int y_pos, const char* str, ...); +void JUTReport(int x_pos, int y_pos, int, const char* str, ...); #endif \ No newline at end of file diff --git a/include/Z2AudioLib/Z2AudioMgr.h b/include/Z2AudioLib/Z2AudioMgr.h index 11e9446f36..9e3b540cc1 100644 --- a/include/Z2AudioLib/Z2AudioMgr.h +++ b/include/Z2AudioLib/Z2AudioMgr.h @@ -38,11 +38,7 @@ public: /* 0x04A4 */ Z2SceneMgr mSceneMgr; /* 0x04C4 */ Z2StatusMgr mStatusMgr; /* 0x04F4 */ Z2SoundObjMgr mSoundObjMgr; - - /* 0x0514 */ /* virtual */ void startSound(JAISoundID, JAISoundHandle*, - JGeometry::TVec3 const*); - /* 0x0514 */ void* vtable; // remove later - + /* 0x0514 */ virtual void startSound(JAISoundID, JAISoundHandle*, JGeometry::TVec3 const*); /* 0x0518 */ bool mResettingFlag; /* 0x0519 */ bool field_0x519; /* 0x051C */ JASAudioReseter mAudioReseter; diff --git a/include/Z2AudioLib/Z2WolfHowlMgr.h b/include/Z2AudioLib/Z2WolfHowlMgr.h index df241f8be4..0efc431339 100644 --- a/include/Z2AudioLib/Z2WolfHowlMgr.h +++ b/include/Z2AudioLib/Z2WolfHowlMgr.h @@ -4,18 +4,29 @@ #include "Z2AudioLib/Z2SoundObject.h" #include "dolphin/types.h" -struct Z2WolfHowlData {}; +/* + * Z2WolfHowlData + * mLineNum: Number of lines/points within the song + * mSongData: u16 array which corresponds to each line/point + * + * The high byte of each u16 line corresponds to bar type (low, middle, high) + * The low byte of each u16 line corresponds to length of note + */ +struct Z2WolfHowlData { + u8 mLineNum; + u16* mSongData; +}; class Z2WolfHowlMgr { public: Z2WolfHowlMgr(); void resetState(); - void calcVolumeMod(float); + void calcVolumeMod(f32); void getNowPitch(); void getNowInputValue(); - void calcPitchMod(float, float); - void startWolfHowlSound(float, float, bool, float); + void calcPitchMod(f32, f32); + void startWolfHowlSound(f32, f32, bool, f32); void setCorrectData(s8, Z2WolfHowlData*); void getCorrectLine(u8); void getCorrectLineNum(); @@ -29,37 +40,37 @@ private: /* 0x00 */ JAISoundHandle* field_0x00; /* 0x04 */ JAISoundHandle* field_0x04; /* 0x08 */ JAISoundHandle* field_0x08; - /* 0x0C */ Z2WolfHowlData* field_0x0c; - /* 0x10 */ void* field_0x10; - /* 0x14 */ float mNowInputValue; - /* 0x18 */ float field_0x18; - /* 0x1C */ float field_0x1c; - /* 0x20 */ float field_0x20; - /* 0x24 */ float field_0x24; - /* 0x28 */ float field_0x28; + /* 0x0C */ Z2WolfHowlData* mpCurSong; + /* 0x10 */ Z2WolfHowlData** mpSongList; + /* 0x14 */ f32 mNowInputValue; + /* 0x18 */ f32 field_0x18; + /* 0x1C */ f32 field_0x1c; + /* 0x20 */ f32 field_0x20; + /* 0x24 */ f32 field_0x24; + /* 0x28 */ f32 field_0x28; /* 0x2C */ u8 field_0x2c[4]; - /* 0x30 */ float field_0x30; - /* 0x34 */ float field_0x34; - /* 0x38 */ float field_0x38; - /* 0x3C */ float field_0x3c; - /* 0x40 */ float field_0x40; - /* 0x44 */ float field_0x44; - /* 0x48 */ float field_0x48; - /* 0x4C */ float field_0x4c; - /* 0x50 */ float field_0x50; - /* 0x54 */ float field_0x54; - /* 0x58 */ float field_0x58; - /* 0x5C */ float field_0x5c; - /* 0x60 */ float field_0x60; - /* 0x64 */ float field_0x64; - /* 0x68 */ float field_0x68; - /* 0x6C */ float field_0x6c; - /* 0x70 */ float field_0x70; - /* 0x74 */ float field_0x74; - /* 0x78 */ float field_0x78; - /* 0x7C */ float field_0x7c; - /* 0x80 */ float field_0x80; - /* 0x84 */ float field_0x84; + /* 0x30 */ f32 field_0x30; + /* 0x34 */ f32 field_0x34; + /* 0x38 */ f32 field_0x38; + /* 0x3C */ f32 field_0x3c; + /* 0x40 */ f32 field_0x40; + /* 0x44 */ f32 field_0x44; + /* 0x48 */ f32 field_0x48; + /* 0x4C */ f32 field_0x4c; + /* 0x50 */ f32 field_0x50; + /* 0x54 */ f32 field_0x54; + /* 0x58 */ f32 field_0x58; + /* 0x5C */ f32 field_0x5c; + /* 0x60 */ f32 field_0x60; + /* 0x64 */ f32 field_0x64; + /* 0x68 */ f32 field_0x68; + /* 0x6C */ f32 field_0x6c; + /* 0x70 */ f32 field_0x70; + /* 0x74 */ f32 field_0x74; + /* 0x78 */ f32 field_0x78; + /* 0x7C */ f32 field_0x7c; + /* 0x80 */ f32 field_0x80; + /* 0x84 */ f32 field_0x84; /* 0x88 */ void* mTimer; /* 0x8C */ u8 mReleaseTimer; /* 0x8D */ u8 field_0x8d; diff --git a/include/d/a/d_a_alink.h b/include/d/a/d_a_alink.h index f8921292ec..a1dc780d0f 100644 --- a/include/d/a/d_a_alink.h +++ b/include/d/a/d_a_alink.h @@ -33,6 +33,7 @@ class J2DAnmBase; class daAlink_lockCursor_c : public dDlst_base_c { public: + daAlink_lockCursor_c() {} /* 80125F14 */ BOOL create(); /* 80126358 */ void update(); /* 80126424 */ virtual void draw(); @@ -64,6 +65,7 @@ private: class daAlink_sight_c : public daPy_sightPacket_c { public: + daAlink_sight_c() {} /* 80126650 */ bool create(); /* 80126710 */ void onLockFlg(); @@ -78,6 +80,7 @@ private: class daAlink_blur_c : public J3DPacket { public: + daAlink_blur_c() {} /* 801256EC */ void initBlur(f32, int, cXyz const*, cXyz const*, cXyz const*); /* 8012589C */ void copyBlur(cXyz const*, cXyz const*, cXyz const*); /* 80125B0C */ void traceBlur(cXyz const*, cXyz const*, s16); @@ -100,9 +103,16 @@ private: class dAlink_bottleWaterPcallBack_c : public JPAParticleCallBack { public: + dAlink_bottleWaterPcallBack_c() { initialize(0.0f); } /* 80124A2C */ virtual void execute(JPABaseEmitter*, JPABaseParticle*); /* 800CFCF8 */ virtual ~dAlink_bottleWaterPcallBack_c(); + void initialize(f32 minY) { + mHitFlg = 0; + mAppearFlg = 0; + mKeepMinY = minY; + } + private: /* 0x04 */ s16 mHitFlg; /* 0x06 */ s16 mAppearFlg; @@ -127,6 +137,8 @@ STATIC_ASSERT(sizeof(daAlink_footData_c) == 0xA4); class daAlink_matAnm_c : public J3DMaterialAnm { public: + daAlink_matAnm_c() { init(); } + /* 8009D8E4 */ void init(); /* 800D0180 */ void offSetFlg(); @@ -423,9 +435,10 @@ public: class hsChainShape_c : public J3DPacket { public: + hsChainShape_c() {} /* 80107900 */ virtual void draw(); /* 800D0CDC */ virtual ~hsChainShape_c(); - }; + }; // Size: 0x10 /* 8009D87C */ bool getE3Zhint(); /* 8009D884 */ char* getAlinkArcName(); @@ -574,7 +587,7 @@ public: /* 800B21EC */ BOOL checkSlope() const; /* 800B25CC */ BOOL itemTriggerCheck(u8); /* 800B25E8 */ BOOL itemButtonCheck(u8); - /* 800B2604 */ void itemButton(); + /* 800B2604 */ BOOL itemButton(); /* 800B2634 */ void itemTrigger(); /* 800B2664 */ void spActionButton(); /* 800B2688 */ void spActionTrigger(); @@ -702,7 +715,7 @@ public: /* 800BFDB0 */ BOOL checkZoraWearAbility() const; /* 800BFDFC */ BOOL checkMagicArmorWearAbility() const; /* 800BFE48 */ J3DModelData* loadAramBmd(u16, u32); - /* 800BFF04 */ void loadAram(u16, u32); + /* 800BFF04 */ void* loadAram(u16, u32); /* 800BFF70 */ J3DAnmTevRegKey* loadAramItemBrk(u16, J3DModel*); /* 800BFFCC */ void loadAramItemBtk(u16, J3DModel*); /* 800C0028 */ void loadAramItemBtp(u16, J3DModel*); @@ -1567,21 +1580,21 @@ public: /* 80107744 */ void procBoardCutTurn(); /* 801083C8 */ void hookshotAtHitCallBack(dCcD_GObjInf*, fopAc_ac_c*, dCcD_GObjInf*); /* 801086DC */ void resetHookshotMode(); - /* 8010871C */ void setEnemyBombHookshot(fopAc_ac_c*); - /* 80108784 */ void checkLv7BossRoom(); - /* 801087B0 */ void checkHookshotStickBG(cBgS_PolyInfo&); + /* 8010871C */ bool setEnemyBombHookshot(fopAc_ac_c*); + /* 80108784 */ bool checkLv7BossRoom(); + /* 801087B0 */ bool checkHookshotStickBG(cBgS_PolyInfo&); /* 80108828 */ void cancelHookshotCarry(); /* 80108864 */ void changeHookshotDrawModel(); - /* 801088A0 */ void checkHookshotRoofLv7Boss(); - /* 801088C8 */ void checkChaseHookshot(); - /* 80108980 */ void checkOctaIealSpecialCollect(); - /* 801089E8 */ void checkBossOctaIealRoom(); - /* 80108A18 */ void checkHookshotWait() const; + /* 801088A0 */ BOOL checkHookshotRoofLv7Boss(); + /* 801088C8 */ BOOL checkChaseHookshot(); + /* 80108980 */ BOOL checkOctaIealSpecialCollect(); + /* 801089E8 */ BOOL checkBossOctaIealRoom(); + /* 80108A18 */ BOOL checkHookshotWait() const; /* 80108A3C */ void setHookshotCatchNow(); /* 80108B34 */ void setHookshotModel(); /* 80108DB4 */ void setHookshotSight(); /* 80108EEC */ void cancelHookshotShot(); - /* 80108F64 */ void cancelHookshotMove(); + /* 80108F64 */ bool cancelHookshotMove(); /* 8010903C */ void checkHookshotReadyMaterialOffMode() const; /* 80109070 */ void setHookshotReadyMaterial(); /* 801090EC */ void initHookshotUpperAnimeSpeed(int); @@ -2269,7 +2282,7 @@ public: virtual s16 getGiantPuzzleAimAngle() const; virtual void setGoronSideMove(fopAc_ac_c*); virtual void setCargoCarry(fopAc_ac_c*); - virtual bool getHookshotTopPos(); + virtual cXyz* getHookshotTopPos(); virtual bool checkHookshotReturnMode() const; virtual bool checkHookshotShootReturnMode() const; virtual bool checkOctaIealHang() const; @@ -2427,7 +2440,12 @@ private: /* 0x0072C */ J3DAnmBase* field_0x072c; /* 0x00730 */ mDoExt_bckAnm field_0x730; /* 0x0074C */ mDoExt_bckAnm field_0x74C; - /* 0x00768 */ u8 field_0x0768[0x5C]; + /* 0x00768 */ J3DModelData* field_0x0768; + /* 0x0076C */ Z2SoundObjSimple* field_0x076c; + /* 0x00770 */ hsChainShape_c* field_0x770; + /* 0x00774 */ u8 field_0x0774[0x77C - 0x774]; + /* 0x0077C */ dBgS_ObjLinChk* mpHookshotLinChk; + /* 0x00780 */ u8 field_0x780[0x7C4 - 0x780]; /* 0x007C4 */ daPy_actorKeep_c mWolfLockAcKeep[10]; /* 0x00814 */ dCcD_Stts field_0x814; /* 0x00850 */ dCcD_Cyl field_0x850[3]; @@ -2467,7 +2485,7 @@ private: /* 0x02118 */ daPy_anmHeap_c mAnmHeap5; /* 0x0212C */ daPy_anmHeap_c mAnmHeap6; /* 0x02140 */ daPy_anmHeap_c mAnmHeap7; - /* 0x02154 */ mDoExt_bckAnm field_0x2154; + /* 0x02154 */ mDoExt_bckAnm field_0x2154; // issue here? /* 0x02170 */ u8 field_0x2170[0x18]; /* 0x02188 */ dEyeHL_c mEyeHL1; /* 0x0219C */ dEyeHL_c mEyeHL2; @@ -2644,7 +2662,7 @@ private: /* 0x03014 */ s16 mFallVoiceInit; /* 0x03016 */ u8 field_0x3016[2]; /* 0x03018 */ s16 field_0x3018; - /* 0x0301A */ s16 field_0x301a; + /* 0x0301A */ s16 mHookshotMode; /* 0x0301C */ s16 field_0x301c; /* 0x0301E */ s16 field_0x301e; /* 0x03020 */ s16 field_0x3020; @@ -2950,7 +2968,7 @@ private: /* 0x037C8 */ cXyz field_0x37c8; /* 0x037D4 */ cXyz field_0x37d4; /* 0x037E0 */ cXyz field_0x37e0; - /* 0x037EC */ cXyz field_0x37ec; + /* 0x037EC */ cXyz mHookshotTopPos; /* 0x037F8 */ cXyz field_0x37f8; /* 0x03804 */ cXyz field_0x3804; /* 0x03810 */ cXyz field_0x3810; diff --git a/include/d/a/d_a_npc.h b/include/d/a/d_a_npc.h index bbafedf42d..18b6946743 100644 --- a/include/d/a/d_a_npc.h +++ b/include/d/a/d_a_npc.h @@ -332,4 +332,190 @@ public: STATIC_ASSERT(sizeof(daNpcT_c) == 0xE40); +class daNpcF_ActorMngr_c { +private: + /* 0x0 */ u32 mActorID; + +public: + /* 801506B0 */ void initialize(); + /* 801506D8 */ void entry(unsigned int); + /* 801506BC */ void entry(fopAc_ac_c*); + /* 801506E0 */ void remove(); + /* 801506EC */ void getActorP(); + + /* 80155E40 */ virtual ~daNpcF_ActorMngr_c(); +}; + +class daNpcF_c : public fopAc_ac_c { +private: + /* 0x568 */ mDoExt_McaMorfSO* mMcaMorf; + /* 0x56C */ mDoExt_bckAnm mBckAnm; + /* 0x588 */ mDoExt_btpAnm mBtpAnm; + /* 0x5A0 */ mDoExt_btkAnm mBtkAnm; + /* 0x5B8 */ mDoExt_brkAnm mBrkAnm; + /* 0x5D0 */ dBgS_ObjAcch field_0x5d0; + /* 0x7A8 */ dCcD_Stts field_0x7a8; + /* 0x7E4 */ dBgS_AcchCir field_0x7e4; + /* 0x824 */ daNpcF_ActorMngr_c field_0x824; + /* 0x82C */ daNpcF_ActorMngr_c field_0x82c[5]; + /* 0x854 */ cXyz field_0x854[3]; + /* 0x878 */ cXyz field_0x878; + /* 0x884 */ cXyz field_0x884; + /* 0x890 */ cXyz field_0x890; + /* 0x89C */ cXyz field_0x89c; + /* 0x8A8 */ cXyz field_0x8a8; + /* 0x8B4 */ cXyz field_0x8b4; + /* 0x8C0 */ cXyz field_0x8c0; + /* 0x8CC */ cXyz field_0x8cc; + /* 0x8D8 */ cXyz field_0x8d8; + /* 0x8E4 */ cXyz field_0x8e4; + /* 0x8F0 */ csXyz field_0x8f0; + /* 0x8F6 */ csXyz field_0x8f6; + /* 0x8FC */ csXyz field_0x8fc; + /* 0x902 */ csXyz field_0x902; + /* 0x908 */ csXyz field_0x908[3]; + /* 0x91A */ csXyz field_0x91a[3]; + /* 0x92C */ int field_0x92c; + /* 0x930 */ u32 field_0x930; + /* 0x934 */ u32 field_0x934; + /* 0x938 */ u32 field_0x938; + /* 0x93C */ u32 field_0x93c[5]; + /* 0x950 */ int field_0x950; + /* 0x954 */ int field_0x954; + /* 0x958 */ int field_0x958; + /* 0x95C */ int field_0x95c; + /* 0x960 */ int field_0x960; + /* 0x964 */ int field_0x964; + /* 0x968 */ int field_0x968; + /* 0x96C */ int field_0x96c; + /* 0x970 */ f32 field_0x970; + /* 0x974 */ f32 field_0x974; + /* 0x978 */ f32 field_0x978; + /* 0x97C */ f32 field_0x97c; + /* 0x980 */ f32 field_0x980; + /* 0x984 */ f32 field_0x984[3]; + /* 0x990 */ u16 field_0x990; + /* 0x990 */ u16 field_0x992; + /* 0x990 */ u16 field_0x994; + /* 0x990 */ u16 field_0x996; + /* 0x998 */ u16 field_0x998; + /* 0x99C */ u32 field_0x99c; + /* 0x9A0 */ u32 field_0x9a0; + /* 0x9A4 */ int field_0x9a4; + /* 0x9A8 */ int field_0x9a8; + /* 0x9AC */ int field_0x9ac; + /* 0x9B0 */ u32 field_0x9b0; + /* 0x9B4 */ int mFlowNodeNo; + /* 0x9B8 */ cXyz field_0x9b8; + /* 0x9C4 */ cXyz field_0x9c4; + /* 0x9D0 */ u16 field_0x9d0; + /* 0x9D2 */ u16 field_0x9d2; + /* 0x9D4 */ u16 field_0x9d4; + /* 0x9D6 */ u16 field_0x9d6; + /* 0x9D8 */ u16 field_0x9d8; + /* 0x9DA */ u16 field_0x9da; + /* 0x9DC */ u16 field_0x9dc; + /* 0x9DE */ u16 field_0x9de; + /* 0x9E0 */ u16 field_0x9e0; + /* 0x9E2 */ u16 field_0x9e2; + /* 0x9E4 */ u16 field_0x9e4; + /* 0x9E6 */ u16 field_0x9e6; + /* 0x9E8 */ u8 field_0x9e8; + /* 0x9E9 */ u8 field_0x9e9; + /* 0x9EA */ u8 field_0x9ea; + /* 0x9EB */ u8 field_0x9eb; + /* 0x9EC */ u8 field_0x9ec; + /* 0x9ED */ u8 field_0x9ed; + /* 0x9EE */ u8 field_0x9ee; + /* 0x9EF */ u8 field_0x9ef; + /* 0x9F0 */ u8 field_0x9f0; + /* 0x9F1 */ u8 field_0x9f1; + /* 0x9F2 */ bool mHide; + /* 0x9f3 */ u8 field_0x9f3; + /* 0x9F4 */ u8 field_0x9f4; + /* 0x9F5 */ u8 field_0x9f5; + /* 0x9F6 */ u8 field_0x9f6; + /* 0x9F8 */ dMsgFlow_c field_0x9f8; + /* 0xA44 */ cBgS_GndChk field_0xa44; + /* 0xA80 */ dBgS_GndChk field_0xa80; + /* 0xAD4 */ dBgS_LinChk field_0xad4; + +public: + struct daNpcF_anmPlayData {}; + + /* 80152014 */ void execute(); + /* 801522AC */ void draw(int, int, f32, _GXColorS10*, int); + /* 80152614 */ void tgHitCallBack(fopAc_ac_c*, dCcD_GObjInf*, fopAc_ac_c*, dCcD_GObjInf*); + /* 80152654 */ void srchAttnActor1(void*, void*); + /* 801526E8 */ void srchActor(void*, void*); + + /* 801528C8 */ void initialize(); + /* 80152B2C */ void getTrnsfrmKeyAnmP(char*, int); + /* 80152B68 */ void getTexPtrnAnmP(char*, int); + /* 80152BA4 */ void getTexSRTKeyAnmP(char*, int); + /* 80152BE0 */ void getTevRegKeyAnmP(char*, int); + /* 80152C1C */ void setMcaMorfAnm(J3DAnmTransformKey*, f32, f32, int, int, int); + /* 80152C80 */ void setBckAnm(J3DAnmTransform*, f32, int, int, int, bool); + /* 80152CC4 */ void setBtpAnm(J3DAnmTexPattern*, J3DModelData*, f32, int); + /* 80152D04 */ void setBtkAnm(J3DAnmTextureSRTKey*, J3DModelData*, f32, int); + /* 80152D44 */ void setBrkAnm(J3DAnmTevRegKey*, J3DModelData*, f32, int); + /* 80152D84 */ void setEnvTevColor(); + /* 80152DE0 */ void setRoomNo(); + /* 80152E24 */ void chkEndAnm(f32); + /* 80152EC4 */ void chkEndAnm(J3DFrameCtrl*, f32); + /* 80152F40 */ void playAllAnm(); + /* 80153150 */ void playExpressionAnm(daNpcF_c::daNpcF_anmPlayData***); + /* 80153264 */ void playMotionAnm(daNpcF_c::daNpcF_anmPlayData***); + /* 8015337C */ void setLookatMtx(int, int*, f32); + /* 80153578 */ void hitChk2(dCcD_Cyl*, int, int); + /* 80153658 */ void setDamage(int, int, int); + /* 80153718 */ void ctrlMsgAnm(int&, int&, fopAc_ac_c*, int); + /* 8015387C */ void orderEvent(int, char*, u16, u16, u8, u16); + /* 80153954 */ void changeEvent(char*, char*, u16, u16); + /* 801539F0 */ void chkActorInSight(fopAc_ac_c*, f32); + /* 80153A78 */ void chkActorInArea(fopAc_ac_c*, cXyz, cXyz, s16); + /* 80153BDC */ void chkActorInAttnArea(fopAc_ac_c*, fopAc_ac_c*, int); + /* 80153D1C */ void initTalk(int, fopAc_ac_c**); + /* 80153D84 */ void talkProc(int*, int, fopAc_ac_c**); + /* 80153EF4 */ void turn(s16, f32, int); + /* 801540A4 */ void step(s16, int, int, int); + /* 80154250 */ void setAngle(s16); + /* 80154278 */ void getDistTableIdx(int, int); + /* 801542A0 */ void getEvtAreaTagP(int, int); + /* 8015436C */ void getAttnActorP(int, void* (*)(void*, void*), f32, f32, f32, f32, s16, int, + int); + /* 80154730 */ void chkActorInSight2(fopAc_ac_c*, f32, s16); + /* 80154834 */ void chkPointInArea(cXyz, cXyz, f32, f32, f32, s16); + /* 801548F4 */ void chkPointInArea(cXyz, cXyz, cXyz, s16); + /* 8015496C */ void getAttentionPos(fopAc_ac_c*); + /* 801549E0 */ void chkFindPlayer2(int, s16); + /* 80154BD8 */ void setHitodamaPrtcl(); + + /* 80155BF4 */ virtual ~daNpcF_c(); + /* 80155BC8 */ virtual void setParam(); + /* 80155BC0 */ virtual bool main(); + /* 80155BD8 */ virtual bool ctrlBtk(); + /* 80155BBC */ virtual void adjustShapeAngle(); + /* 8015276C */ virtual void setMtx(); + /* 801527FC */ virtual void setMtx2(); + /* 80155BB8 */ virtual void setAttnPos(); + /* 80155BB4 */ virtual void setCollisions(); + /* 80155BE0 */ virtual bool setExpressionAnm(int, bool); + /* 80155EC8 */ virtual bool setExpressionBtp(int); + /* 80155BF0 */ virtual void setExpression(int, f32); + /* 80155BE8 */ virtual void setMotionAnm(int, f32); + /* 80155BEC */ virtual void setMotion(int, f32, int); + /* 80155BD0 */ virtual bool drawDbgInfo(); + /* 80155BCC */ virtual void drawOtherMdls(); + + static u8 const mCcDObjInfo[48]; + static u8 mCcDCyl[68]; + static u8 mCcDSph[64]; + static u8 mFindActorPList[400]; + static u8 mFindCount[4]; + static u8 mSrchActorName[2 + 2 /* padding */]; +}; + +STATIC_ASSERT(sizeof(daNpcF_c) == 0xB48); + #endif /* D_A_D_A_NPC_H */ diff --git a/include/d/a/d_a_player.h b/include/d/a/d_a_player.h index e731cd5086..491c90d572 100644 --- a/include/d/a/d_a_player.h +++ b/include/d/a/d_a_player.h @@ -13,6 +13,7 @@ class daPy_sightPacket_c : public dDlst_base_c { public: + daPy_sightPacket_c() {} /* 8015F1A0 */ virtual void draw(); /* 80140CDC */ virtual ~daPy_sightPacket_c(); @@ -48,6 +49,10 @@ public: enum daAlinkHEAP_TYPE {}; /* 80140DCC */ void __defctor(); + daPy_anmHeap_c() { + __defctor(); + } + daPy_anmHeap_c(u32); ~daPy_anmHeap_c(); void initData(); @@ -480,7 +485,7 @@ public: virtual void setGoronSideMove(fopAc_ac_c*); virtual void setCargoCarry(fopAc_ac_c*); virtual bool getDpdFarFlg() const; - virtual bool getHookshotTopPos(); + virtual cXyz* getHookshotTopPos(); virtual bool checkHookshotReturnMode() const; virtual bool checkHookshotShootReturnMode() const; virtual bool checkOctaIealHang() const; diff --git a/include/d/bg/d_bg_s.h b/include/d/bg/d_bg_s.h index 62219f8cf6..5d9565e561 100644 --- a/include/d/bg/d_bg_s.h +++ b/include/d/bg/d_bg_s.h @@ -91,7 +91,7 @@ public: u32 ChkGrpInf(cBgS_PolyInfo const&, u32); s32 GetRoomId(cBgS_PolyInfo const&); bool GetPolyAttackThrough(cBgS_PolyInfo const&); - bool ChkPolyHSStick(cBgS_PolyInfo const&); + u32 ChkPolyHSStick(cBgS_PolyInfo const&); void WallCorrect(dBgS_Acch*); void WallCorrectSort(dBgS_Acch*); f32 RoofChk(dBgS_RoofChk*); diff --git a/include/d/bg/d_bg_s_acch.h b/include/d/bg/d_bg_s_acch.h index e07a458783..7d14297fd1 100644 --- a/include/d/bg/d_bg_s_acch.h +++ b/include/d/bg/d_bg_s_acch.h @@ -180,6 +180,9 @@ public: }; class dBgS_LinkAcch : public dBgS_Acch { +public: + dBgS_LinkAcch() { SetLink(); } + /* 80140F30 */ virtual ~dBgS_LinkAcch(); }; diff --git a/include/d/bg/d_bg_s_gnd_chk.h b/include/d/bg/d_bg_s_gnd_chk.h index 5087082ca8..bc17ae7176 100644 --- a/include/d/bg/d_bg_s_gnd_chk.h +++ b/include/d/bg/d_bg_s_gnd_chk.h @@ -13,6 +13,7 @@ public: class dBgS_LinkGndChk : public dBgS_GndChk { public: + dBgS_LinkGndChk() { SetLink(); } /* 80140EB8 */ virtual ~dBgS_LinkGndChk(); }; diff --git a/include/d/bg/d_bg_s_grp_pass_chk.h b/include/d/bg/d_bg_s_grp_pass_chk.h index 5d426af4cc..6b9c2b8a66 100644 --- a/include/d/bg/d_bg_s_grp_pass_chk.h +++ b/include/d/bg/d_bg_s_grp_pass_chk.h @@ -8,7 +8,8 @@ class dBgS_GrpPassChk : public cBgS_GrpPassChk { public: enum { /* 0x1 */ NORMAL_GRP = 1, - /* 0x2 */ WATER_GRP + /* 0x2 */ WATER_GRP, + /* 0x3 */ FULL_GRP }; /* 80077BA0 */ dBgS_GrpPassChk(); @@ -19,6 +20,7 @@ public: void OnSpl() { mGrp |= WATER_GRP; } void OnNormalGrp() { mGrp |= NORMAL_GRP; } void OffNormalGrp() { mGrp &= ~NORMAL_GRP; } + void OffFullGrp() { mGrp &= ~FULL_GRP; } private: /* 0x4 */ u32 mGrp; diff --git a/include/d/bg/d_bg_s_roof_chk.h b/include/d/bg/d_bg_s_roof_chk.h index 78a4e64f33..0b1558fba0 100644 --- a/include/d/bg/d_bg_s_roof_chk.h +++ b/include/d/bg/d_bg_s_roof_chk.h @@ -24,8 +24,9 @@ private: /* 0x4C */ f32 mNowY; }; // Size: 0x50 -class dBgS_LinkRoofChk : dBgS_RoofChk { +class dBgS_LinkRoofChk : public dBgS_RoofChk { public: + dBgS_LinkRoofChk() { SetLink(); } /* 80140E40 */ virtual ~dBgS_LinkRoofChk(); }; diff --git a/include/d/bg/d_bg_w.h b/include/d/bg/d_bg_w.h index 02d8cf7287..d2d37fab17 100644 --- a/include/d/bg/d_bg_w.h +++ b/include/d/bg/d_bg_w.h @@ -117,7 +117,7 @@ public: virtual void GetPolyCamThrough(int) = 0; virtual void GetPolyLinkThrough(int) = 0; virtual void GetPolyArrowThrough(int) = 0; - virtual bool GetPolyHSStick(int) = 0; + virtual u32 GetPolyHSStick(int) = 0; virtual void GetPolyBoomerangThrough(int) = 0; virtual void GetPolyRopeThrough(int) = 0; virtual void GetPolyBombThrough(int) = 0; @@ -216,7 +216,7 @@ public: /* 8007B504 */ virtual void GetPolyCamThrough(int); /* 8007B52C */ virtual void GetPolyLinkThrough(int); /* 8007B550 */ virtual void GetPolyArrowThrough(int); - /* 8007B574 */ virtual bool GetPolyHSStick(int); + /* 8007B574 */ virtual u32 GetPolyHSStick(int); /* 8007B598 */ virtual void GetPolyBoomerangThrough(int); /* 8007B5BC */ virtual void GetPolyRopeThrough(int); /* 8007B5E0 */ virtual void GetPolyBombThrough(int); diff --git a/include/d/bg/d_bg_w_base.h b/include/d/bg/d_bg_w_base.h index d2797f66fc..5da858ca4f 100644 --- a/include/d/bg/d_bg_w_base.h +++ b/include/d/bg/d_bg_w_base.h @@ -57,7 +57,7 @@ public: virtual void GetPolyCamThrough(int) = 0; virtual void GetPolyLinkThrough(int) = 0; virtual void GetPolyArrowThrough(int) = 0; - virtual bool GetPolyHSStick(int) = 0; + virtual u32 GetPolyHSStick(int) = 0; virtual void GetPolyBoomerangThrough(int) = 0; virtual void GetPolyRopeThrough(int) = 0; virtual void GetPolyBombThrough(int) = 0; @@ -88,6 +88,7 @@ public: u8 GetRoomId() { return m_roomId; } bool chkStickWall() { return field_0xb & 1; } bool chkStickRoof() { return field_0xb & 2; } + bool ChkPushPullOk() const { return m_pushPull_Ok; } private: /* 0x08 */ u8 m_priority; diff --git a/include/d/bg/d_bg_w_kcol.h b/include/d/bg/d_bg_w_kcol.h index 4fd7aa108d..93a055df04 100644 --- a/include/d/bg/d_bg_w_kcol.h +++ b/include/d/bg/d_bg_w_kcol.h @@ -53,7 +53,7 @@ public: /* 80082B98 */ virtual void GetPolyCamThrough(int); /* 80082BC4 */ virtual void GetPolyLinkThrough(int); /* 80082BF0 */ virtual void GetPolyArrowThrough(int); - /* 80082C1C */ virtual void GetPolyHSStick(int); + /* 80082C1C */ virtual u32 GetPolyHSStick(int); /* 80082C48 */ virtual void GetPolyBoomerangThrough(int); /* 80082C74 */ virtual void GetPolyRopeThrough(int); /* 80082CA0 */ virtual void GetPolyBombThrough(int); diff --git a/include/d/com/d_com_inf_game.h b/include/d/com/d_com_inf_game.h index a71bec6eba..f4ea443233 100644 --- a/include/d/com/d_com_inf_game.h +++ b/include/d/com/d_com_inf_game.h @@ -1357,6 +1357,10 @@ inline void dComIfGs_setNoFile(u8 file) { g_dComIfG_gameInfo.info.setNoFile(file); } +inline void* dComIfGs_getPEventBit() { + return g_dComIfG_gameInfo.info.getEvent().getPEventBit(); +} + void dComIfGp_setItemLifeCount(f32 amount, u8 type); void dComIfGp_setItemRupeeCount(long amount); void dComIfGp_setSelectItem(int index); diff --git a/include/d/d_attention.h b/include/d/d_attention.h index faafe287d9..d288f00c3c 100644 --- a/include/d/d_attention.h +++ b/include/d/d_attention.h @@ -203,17 +203,15 @@ public: /* 8014B010 */ void getDistTable(int); dAttCatch_c& getCatghTarget() { return mCatghTarget; } - bool chkFlag(u32 flag) { return mFlags & flag; } - BOOL Lockon() { - bool chk = true; - if (!LockonTruth()) { - if (!chkFlag(0x20000000)) { - chk = false; - } + BOOL chkFlag(u32 flag) { return mFlags & flag; } + s8 Lockon() { + /* s32 chk = true; + if (!LockonTruth() && !chkFlag(0x20000000)) { + chk = false; } - return chk; + return chk; */ - // return !LockonTruth() && !chkFlag(0x20000000); + return !LockonTruth() && !chkFlag(0x20000000); } static u8 loc_type_tbl[12]; diff --git a/include/d/d_drawlist.h b/include/d/d_drawlist.h index 3dc5268fd0..eb4bf4efd6 100644 --- a/include/d/d_drawlist.h +++ b/include/d/d_drawlist.h @@ -29,6 +29,7 @@ public: class dDlst_base_c { public: + dDlst_base_c() {} virtual void draw(); }; diff --git a/include/d/d_eye_hl.h b/include/d/d_eye_hl.h index 8ec08f6b62..157988fb0e 100644 --- a/include/d/d_eye_hl.h +++ b/include/d/d_eye_hl.h @@ -26,6 +26,12 @@ public: class dEyeHL_c : public dEyeHL_mng_c { public: + dEyeHL_c() { + m_timg = NULL; + m_pre = NULL; + m_next = NULL; + } + /* 8009C964 */ void entry(J3DModelData*, char const*); /* 8009CA28 */ void remove(); /* 80140C80 */ ~dEyeHL_c(); diff --git a/include/d/kankyo/d_kankyo.h b/include/d/kankyo/d_kankyo.h index 4b10fff891..28008e68ec 100644 --- a/include/d/kankyo/d_kankyo.h +++ b/include/d/kankyo/d_kankyo.h @@ -10,6 +10,7 @@ #include "dolphin/gx/GX.h" #include "dolphin/types.h" #include "m_Do/m_Do_ext.h" +#include "Z2AudioLib/Z2EnvSeMgr.h" class cBgS_PolyInfo; @@ -485,6 +486,9 @@ public: /* 0x130C */ u8 field_0x130c; }; // Size: 0x1310 +extern dScnKy_env_light_c g_env_light; +extern Z2EnvSeMgr g_mEnvSeMgr; + STATIC_ASSERT(sizeof(dScnKy_env_light_c) == 4880); BOOL dKy_darkworld_stage_check(char const*, int); diff --git a/include/d/particle/d_particle.h b/include/d/particle/d_particle.h index ff1857407e..a154b9975d 100644 --- a/include/d/particle/d_particle.h +++ b/include/d/particle/d_particle.h @@ -13,6 +13,8 @@ public: class dPa_hermiteEcallBack_c : public dPa_levelEcallBack { public: + dPa_hermiteEcallBack_c() {} + /* 8004F6B8 */ void setOldPosP(cXyz const*, cXyz const*); /* 8004FCC8 */ virtual ~dPa_hermiteEcallBack_c(); diff --git a/include/d/save/d_save.h b/include/d/save/d_save.h index 7cccd00ae6..5cac4e2acc 100644 --- a/include/d/save/d_save.h +++ b/include/d/save/d_save.h @@ -833,6 +833,8 @@ public: void setEventReg(u16 i_reg, u8 i_no); u8 getEventReg(u16 i_reg) const; + void* getPEventBit() { return (void*)mEvent; } + private: /* 0x0 */ u8 mEvent[256]; }; // Size: 0x100 diff --git a/include/dolphin/os/OS.h b/include/dolphin/os/OS.h index 51aff6b9cf..b1ce58846a 100644 --- a/include/dolphin/os/OS.h +++ b/include/dolphin/os/OS.h @@ -224,6 +224,7 @@ u8* OSGetStackPointer(void); void OSCreateAlarm(OSAlarm* alarm); void OSCancelAlarm(OSAlarm* alarm); void OSSetAlarm(OSAlarm* alarm, OSTime time, OSAlarmHandler handler); +void OSSetPeriodicAlarm(OSAlarm*, OSTime, OSTime, OSAlarmHandler); void OSInitCond(OSCond* cond); void OSWaitCond(OSCond* cond, OSMutex* mutex); diff --git a/include/f_op/f_op_actor_mng.h b/include/f_op/f_op_actor_mng.h index 13b70893e2..df0443d5c1 100644 --- a/include/f_op/f_op_actor_mng.h +++ b/include/f_op/f_op_actor_mng.h @@ -162,6 +162,14 @@ inline void fopAcM_SetRoomNo(fopAc_ac_c* actor, s8 roomNo) { actor->mCurrent.mRoomNo = roomNo; } +inline void fopAcM_setHookCarryNow(fopAc_ac_c* actor) { + fopAcM_OnStatus(actor, 0x100000); +} + +inline void fopAcM_cancelHookCarryNow(fopAc_ac_c* actor) { + fopAcM_OffStatus(actor, 0x100000); +} + void* fopAcM_FastCreate(s16 pProcTypeID, FastCreateReqFunc param_2, void* param_3, void* pData); void fopAcM_setStageLayer(void*); int fopAcM_setRoomLayer(void*, int); diff --git a/include/m_Do/m_Do_DVDError.h b/include/m_Do/m_Do_DVDError.h index 5559ee3166..d4d162a959 100644 --- a/include/m_Do/m_Do_DVDError.h +++ b/include/m_Do/m_Do_DVDError.h @@ -2,5 +2,10 @@ #define M_DO_M_DO_DVDERROR_H #include "dolphin/types.h" +#include "JSystem/JKernel/JKRThread.h" + +void mDoDvdErr_ThdCleanup(); +static void mDoDvdErr_Watch(void*); +static void AlarmHandler(OSAlarm*, OSContext*); #endif /* M_DO_M_DO_DVDERROR_H */ diff --git a/include/m_Do/m_Do_MemCard.h b/include/m_Do/m_Do_MemCard.h index b91cb63326..f1513f7b1c 100644 --- a/include/m_Do/m_Do_MemCard.h +++ b/include/m_Do/m_Do_MemCard.h @@ -39,6 +39,8 @@ public: /* 800172D4 */ s32 checkspace(); /* 80017360 */ void setCardState(s32); + bool isCardCommNone() { return mCardCommand == CARD_NO_COMMAND; } + /* 0x0000 */ u8 mData[0x1FBC]; /* 0x1FBC */ u8 mChannel; /* 0x1FBD */ u8 mCopyToPos; @@ -59,4 +61,8 @@ static int mDoMemCd_main(void*); extern mDoMemCd_Ctrl_c g_mDoMemCd_control; +inline bool mDoMemCd_isCardCommNone() { + return g_mDoMemCd_control.isCardCommNone(); +} + #endif /* M_DO_M_DO_MEMCARD_H */ diff --git a/include/m_Do/m_Do_Reset.h b/include/m_Do/m_Do_Reset.h index 3045816bd8..5d9609065c 100644 --- a/include/m_Do/m_Do_Reset.h +++ b/include/m_Do/m_Do_Reset.h @@ -38,7 +38,7 @@ public: static u8 getProgSeqFlag() { return mResetData->mProgSeqFlag; } static u8 getWarningDispFlag() { return mResetData->mWarningDispFlag; } static BOOL isReturnToMenu() { return mResetData->mReturnToMenu; } - static bool isShutdown() { return mResetData->mShutdown; } + static BOOL isShutdown() { return mResetData->mShutdown; } static int isReset() { return mResetData->mReset; } static int get3ButtonResetPort() { return mResetData->m3ButtonResetPort; } static int is3ButtonReset() { return mResetData->m3ButtonReset; } @@ -54,4 +54,6 @@ public: static mDoRstData* mResetData; }; +extern u8 data_80450C88; + #endif /* M_DO_M_DO_RESET_H */ diff --git a/include/m_Do/m_Do_audio.h b/include/m_Do/m_Do_audio.h index c589030a83..6798ece84d 100644 --- a/include/m_Do/m_Do_audio.h +++ b/include/m_Do/m_Do_audio.h @@ -20,6 +20,7 @@ extern bool sResetFlag; class mDoAud_zelAudio_c { public: void reset(); + mDoAud_zelAudio_c() {} ~mDoAud_zelAudio_c() {} static void onInitFlag() { struct_80450BB8 = true; } @@ -28,6 +29,7 @@ public: static void onResetFlag() { sResetFlag = true; } static void offResetFlag() { sResetFlag = false; } static bool isBgmSet() { return data_80450bba; } + static void onBgmSet() { data_80450bba = true; } static void offBgmSet() { data_80450bba = false; } Z2AudioMgr mAudioMgr; diff --git a/include/m_Do/m_Do_controller_pad.h b/include/m_Do/m_Do_controller_pad.h index 31cfd81b4a..a9875b6c8e 100644 --- a/include/m_Do/m_Do_controller_pad.h +++ b/include/m_Do/m_Do_controller_pad.h @@ -6,11 +6,11 @@ #include "dolphin/types.h" #include "m_Do/m_Do_Reset.h" +// Controller Ports 1 - 4 +enum { PAD_1, PAD_2, PAD_3, PAD_4 }; + class mDoCPd_c { public: - // Controller Ports 1 - 4 - enum { PAD_0, PAD_1, PAD_2, PAD_3 }; - static void create(); static void read(); static void convert(interface_of_controller_pad*, JUTGamePad*); diff --git a/include/m_Do/m_Do_machine.h b/include/m_Do/m_Do_machine.h index 8ea5888795..669ee1aecd 100644 --- a/include/m_Do/m_Do_machine.h +++ b/include/m_Do/m_Do_machine.h @@ -14,6 +14,7 @@ bool exceptionReadPad(u32*, u32*); void exceptionRestart(); void myExceptionCallback(u16, OSContext*, u32, u32); void my_SysPrintHeap(char const*, void*, u32); +void mDoMch_HeapCheckAll(); extern GXRenderModeObj g_ntscZeldaProg; diff --git a/include/m_Do/m_Do_main.h b/include/m_Do/m_Do_main.h index 09a01987a6..6015b935fb 100644 --- a/include/m_Do/m_Do_main.h +++ b/include/m_Do/m_Do_main.h @@ -10,6 +10,20 @@ void* LOAD_COPYDATE(void*); class HeapCheck { public: + // needed for sinit + /* HeapCheck(JKRExpHeap* heap, const char* name, const char* jName) { + mName = name; + mJName = jName; + setHeap(heap); + mMaxTotalUsedSize = 0; + mMaxTotalFreeSize = 0; + field_0x14 = 0; + field_0x18 = 0; + mTargetHeapSize = 0; + mUsedCount = 0; + mTotalUsedSize = 0; + } */ + void CheckHeap1(void); s32 getUsedCount(void) const; void heapDisplay(void) const; @@ -21,19 +35,23 @@ public: void setHeapSize(u32 i_size) { mTargetHeapSize = i_size; } s32 getMaxTotalUsedSize() { return mMaxTotalUsedSize; } s32 getMaxTotalFreeSize() { return mMaxTotalFreeSize; } - char* getName() const { return mName; } + const char* getName() const { return mName; } void saveRelBase() { mUsedCount = getUsedCount(); mTotalUsedSize = mHeap->getTotalUsedSize(); } + u32 getRelUsedCount() const { return getUsedCount() - mUsedCount; } + u32 getRelTotalUsedSize() const { return mHeap->getTotalUsedSize() - mTotalUsedSize; } + private: - /* 0x00 */ char* mName; - /* 0x04 */ char* mJName; + /* 0x00 */ const char* mName; + /* 0x04 */ const char* mJName; /* 0x08 */ JKRExpHeap* mHeap; /* 0x0C */ s32 mMaxTotalUsedSize; /* 0x10 */ s32 mMaxTotalFreeSize; - /* 0x14 */ u8 unk20[8]; + /* 0x14 */ s32 field_0x14; + /* 0x18 */ s32 field_0x18; /* 0x1C */ u32 mTargetHeapSize; /* 0x20 */ u32 mUsedCount; /* 0x24 */ u32 mTotalUsedSize; @@ -47,7 +65,7 @@ struct mDoMain { static OSTime sHungUpTime; }; -extern s8 data_80450580; +extern s8 data_80450580; // Debug enabled extern bool sOSReportDisabled; extern bool data_80450B99; diff --git a/libs/JSystem/JAudio2/JASDvdThread.cpp b/libs/JSystem/JAudio2/JASDvdThread.cpp index d7a5380678..c73bd6c63f 100644 --- a/libs/JSystem/JAudio2/JASDvdThread.cpp +++ b/libs/JSystem/JAudio2/JASDvdThread.cpp @@ -7,26 +7,6 @@ #include "dol2asm.h" #include "dolphin/types.h" -// -// Types: -// - -struct JKRHeap { - static u8 sSystemHeap[4]; - static u8 sCurrentHeap[4]; -}; - -struct JASTaskThread { - /* 8028F6C4 */ JASTaskThread(int, int, u32); -}; - -struct JASDvd { - /* 8028FEFC */ u32 getThreadPointer(); - /* 8028FF04 */ void createThread(s32, int, u32); - - static u8 sThread[4 + 4 /* padding */]; -}; - // // Forward References: // @@ -41,7 +21,6 @@ extern "C" u8 sThread__6JASDvd[4 + 4 /* padding */]; extern "C" void __ct__13JASTaskThreadFiiUl(); extern "C" void* __nw__FUlP7JKRHeapi(); -extern "C" void OSResumeThread(); extern "C" void _savegpr_29(); extern "C" void _restgpr_29(); extern "C" extern u8 JASDram[4]; @@ -54,11 +33,11 @@ extern "C" u8 sCurrentHeap__7JKRHeap[4]; /* ############################################################################################## */ /* 80451208-80451210 000708 0004+04 2/1 0/0 0/0 .sbss sThread__6JASDvd */ -u8 JASDvd::sThread[4 + 4 /* padding */]; +JASTaskThread* JASDvd::sThread; /* 8028FEFC-8028FF04 -00001 0008+00 0/0 0/0 0/0 .text getThreadPointer__6JASDvdFv */ -u32 JASDvd::getThreadPointer() { - return *(u32*)(&JASDvd::sThread); +JASTaskThread* JASDvd::getThreadPointer() { + return JASDvd::sThread; } /* 8028FF04-8028FFA8 28A844 00A4+00 0/0 1/1 0/0 .text createThread__6JASDvdFliUl */ diff --git a/libs/JSystem/JAudio2/JASTaskThread.cpp b/libs/JSystem/JAudio2/JASTaskThread.cpp index 92f70b7072..325c17098c 100644 --- a/libs/JSystem/JAudio2/JASTaskThread.cpp +++ b/libs/JSystem/JAudio2/JASTaskThread.cpp @@ -11,26 +11,6 @@ // Types: // -struct JKRHeap { - static u8 sSystemHeap[4]; -}; - -struct JKRThread { - /* 802D1610 */ JKRThread(JKRHeap*, u32, int, int); - /* 802D1758 */ ~JKRThread(); -}; - -struct JASTaskThread { - /* 8028F6C4 */ JASTaskThread(int, int, u32); - /* 8028F724 */ ~JASTaskThread(); - /* 8028F9EC */ void allocCallStack(void (*)(void*), void*); - /* 8028F850 */ void allocCallStack(void (*)(void*), void const*, u32); - /* 8028FC54 */ void sendCmdMsg(void (*)(void*), void*); - /* 8028FB5C */ void sendCmdMsg(void (*)(void*), void const*, u32); - /* 8028FD4C */ void run(); - /* 8028FE88 */ void pause(bool); -}; - struct JASCalc { /* 8028F354 */ void bcopy(void const*, void*, u32); }; @@ -59,12 +39,6 @@ extern "C" void* __nw__FUlP7JKRHeapi(); extern "C" void __dl__FPv(); extern "C" void __ct__9JKRThreadFP7JKRHeapUlii(); extern "C" void __dt__9JKRThreadFv(); -extern "C" void OSDisableInterrupts(); -extern "C" void OSRestoreInterrupts(); -extern "C" void OSSendMessage(); -extern "C" void OSReceiveMessage(); -extern "C" void OSLockMutex(); -extern "C" void OSUnlockMutex(); extern "C" void OSInitThreadQueue(); extern "C" void OSSleepThread(); extern "C" void OSWakeupThread(); @@ -104,7 +78,8 @@ asm JASTaskThread::JASTaskThread(int param_0, int param_1, u32 param_2) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm JASTaskThread::~JASTaskThread() { +// asm JASTaskThread::~JASTaskThread() { +extern "C" asm void __dt__13JASTaskThreadFv() { nofralloc #include "asm/JSystem/JAudio2/JASTaskThread/__dt__13JASTaskThreadFv.s" } diff --git a/libs/JSystem/JKernel/JKRAssertHeap.cpp b/libs/JSystem/JKernel/JKRAssertHeap.cpp index 6787b3b766..0054cd87a4 100644 --- a/libs/JSystem/JKernel/JKRAssertHeap.cpp +++ b/libs/JSystem/JKernel/JKRAssertHeap.cpp @@ -109,7 +109,7 @@ bool JKRAssertHeap::dump_sort() { /* 802D142C-802D1434 2CBD6C 0008+00 1/0 0/0 0/0 .text do_changeGroupID__13JKRAssertHeapFUc */ -u8 JKRAssertHeap::do_changeGroupID(u8) { +s32 JKRAssertHeap::do_changeGroupID(u8) { return 0; } diff --git a/libs/JSystem/JKernel/JKRExpHeap.cpp b/libs/JSystem/JKernel/JKRExpHeap.cpp index 9bfb17e015..bf368bad54 100644 --- a/libs/JSystem/JKernel/JKRExpHeap.cpp +++ b/libs/JSystem/JKernel/JKRExpHeap.cpp @@ -558,7 +558,7 @@ void JKRExpHeap::do_fillFreeArea() { /* 802CF928-802CF978 2CA268 0050+00 1/0 0/0 0/0 .text do_changeGroupID__10JKRExpHeapFUc */ -u8 JKRExpHeap::do_changeGroupID(u8 param_0) { +s32 JKRExpHeap::do_changeGroupID(u8 param_0) { lock(); u8 prev = mCurrentGroupId; mCurrentGroupId = param_0; diff --git a/libs/JSystem/JKernel/JKRHeap.cpp b/libs/JSystem/JKernel/JKRHeap.cpp index 8274afdebe..10f570d76a 100644 --- a/libs/JSystem/JKernel/JKRHeap.cpp +++ b/libs/JSystem/JKernel/JKRHeap.cpp @@ -352,7 +352,7 @@ s32 JKRHeap::getTotalFreeSize() { } /* 802CE7B0-802CE7DC 2C90F0 002C+00 0/0 1/1 0/0 .text changeGroupID__7JKRHeapFUc */ -u8 JKRHeap::changeGroupID(u8 param_1) { +s32 JKRHeap::changeGroupID(u8 param_1) { return do_changeGroupID(param_1); } @@ -624,7 +624,7 @@ void JKRHeap::state_dump(JKRHeap::TState const& p) const { } /* 802CEDA4-802CEDAC 2C96E4 0008+00 1/0 1/0 0/0 .text do_changeGroupID__7JKRHeapFUc */ -u8 JKRHeap::do_changeGroupID(u8 param_0) { +s32 JKRHeap::do_changeGroupID(u8 param_0) { return 0; } diff --git a/libs/Z2AudioLib/Z2AudioMgr.cpp b/libs/Z2AudioLib/Z2AudioMgr.cpp index a43073d9e1..f79fda6e72 100644 --- a/libs/Z2AudioLib/Z2AudioMgr.cpp +++ b/libs/Z2AudioLib/Z2AudioMgr.cpp @@ -409,8 +409,9 @@ asm bool Z2AudioMgr::hasReset() const { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void Z2AudioMgr::startSound(JAISoundID param_0, JAISoundHandle* param_1, - JGeometry::TVec3 const* param_2) { +//asm void Z2AudioMgr::startSound(JAISoundID param_0, JAISoundHandle* param_1, +// JGeometry::TVec3 const* param_2) { +extern "C" asm void func_802CDB1C() { nofralloc #include "asm/Z2AudioLib/Z2AudioMgr/func_802CDB1C.s" } diff --git a/libs/Z2AudioLib/Z2WolfHowlMgr.cpp b/libs/Z2AudioLib/Z2WolfHowlMgr.cpp index 0c47321529..64a40bbf2d 100644 --- a/libs/Z2AudioLib/Z2WolfHowlMgr.cpp +++ b/libs/Z2AudioLib/Z2WolfHowlMgr.cpp @@ -86,91 +86,59 @@ extern "C" u8 mLinkPtr__14Z2CreatureLink[4 + 4 /* padding */]; /* ############################################################################################## */ /* 804508A0-804508A8 000320 0008+00 1/0 0/0 0/0 .sdata sHowlTobikusa */ -extern "C" u8 sHowlTobikusa[8]; +extern "C" u16 sHowlTobikusa[4]; /* 803CBC50-803CBC5C 028D70 000C+00 1/0 0/0 0/0 .data sHowlUmakusa */ -SECTION_DATA static u8 sHowlUmakusa[12] = { - 0x01, 0x0F, 0x02, 0x0F, 0x03, 0x3C, 0x01, 0x0F, 0x02, 0x0F, 0x03, 0x3C, +SECTION_DATA static u16 sHowlUmakusa[6] = { + 0x010F, 0x020F, 0x033C, 0x010F, 0x020F, 0x033C, }; /* 803CBC5C-803CBC68 028D7C 000C+00 1/0 0/0 0/0 .data sHowlZeldaSong */ -SECTION_DATA static u8 sHowlZeldaSong[12] = { - 0x02, 0x1E, 0x01, 0x0F, 0x03, 0x2D, 0x02, 0x1E, 0x01, 0x0F, 0x03, 0x2D, +SECTION_DATA static u16 sHowlZeldaSong[6] = { + 0x021E, 0x010F, 0x032D, 0x021E, 0x010F, 0x032D, }; /* 803CBC68-803CBC74 028D88 000C+00 1/0 0/0 0/0 .data sHowlLightPrelude */ -SECTION_DATA static u8 sHowlLightPrelude[12] = { - 0x01, 0x14, 0x03, 0x28, 0x01, 0x14, 0x03, 0x14, 0x02, 0x14, 0x01, 0x1E, +SECTION_DATA static u16 sHowlLightPrelude[6] = { + 0x0114, 0x0328, 0x0114, 0x0314, 0x0214, 0x011E, }; /* 803CBC74-803CBC80 028D94 000C+00 1/0 0/0 0/0 .data sHowlSoulRequiem */ -SECTION_DATA static u8 sHowlSoulRequiem[12] = { - 0x03, 0x1E, 0x02, 0x0F, 0x03, 0x0F, 0x01, 0x1E, 0x02, 0x1E, 0x03, 0x1E, +SECTION_DATA static u16 sHowlSoulRequiem[6] = { + 0x031E, 0x020F, 0x030F, 0x011E, 0x021E, 0x031E, }; /* 803CBC80-803CBC8C 028DA0 000C+00 1/0 0/0 0/0 .data sHealingSong */ -SECTION_DATA static u8 sHealingSong[12] = { - 0x01, 0x1E, 0x02, 0x1E, 0x03, 0x1E, 0x01, 0x1E, 0x02, 0x1E, 0x03, 0x1E, +SECTION_DATA static u16 sHealingSong[6] = { + 0x011E, 0x021E, 0x031E, 0x011E, 0x021E, 0x031E, }; /* 803CBC8C-803CBC9C 028DAC 000E+02 1/0 0/0 0/0 .data sNewSong1 */ -SECTION_DATA static u8 sNewSong1[14 + 2 /* padding */] = { - 0x03, - 0x1E, - 0x02, - 0x1E, - 0x01, - 0x1E, - 0x03, - 0x28, - 0x02, - 0x14, - 0x03, - 0x1E, - 0x01, - 0x1E, - /* padding */ - 0x00, - 0x00, +SECTION_DATA static u16 sNewSong1[7] = { + 0x031E, 0x021E, 0x011E, 0x0328, 0x0214, 0x031E, 0x011E, }; /* 803CBC9C-803CBCAC 028DBC 0010+00 1/0 0/0 0/0 .data sNewSong2 */ -SECTION_DATA static u8 sNewSong2[16] = { - 0x01, 0x14, 0x02, 0x14, 0x03, 0x14, 0x02, 0x3C, 0x03, 0x14, 0x01, 0x14, 0x02, 0x14, 0x03, 0x1E, +SECTION_DATA static u16 sNewSong2[8] = { + 0x0114, 0x0214, 0x0314, 0x023C, 0x0314, 0x0114, 0x0214, 0x031E, }; /* 803CBCAC-803CBCC0 028DCC 0012+02 1/0 0/0 0/0 .data sNewSong3 */ -SECTION_DATA static u8 sNewSong3[18 + 2 /* padding */] = { - 0x02, - 0x1E, - 0x03, - 0x3C, - 0x02, - 0x28, - 0x01, - 0x14, - 0x03, - 0x3C, - 0x01, - 0x14, - 0x02, - 0x14, - 0x01, - 0x14, - 0x02, - 0x2D, - /* padding */ - 0x00, - 0x00, +SECTION_DATA static u16 sNewSong3[9] = { + 0x021E, 0x033C, 0x0228, 0x0114, 0x033C, 0x0114, 0x0214, 0x0114, 0x022D, }; /* 803CBCC0-803CBD08 -00001 0048+00 1/1 0/0 0/0 .data sGuideData */ -SECTION_DATA static void* sGuideData[18] = { - (void*)0x04000000, (void*)&sHowlTobikusa, (void*)0x06000000, (void*)&sHowlUmakusa, - (void*)0x06000000, (void*)&sHowlZeldaSong, (void*)0x06000000, (void*)&sHealingSong, - (void*)0x06000000, (void*)&sHowlSoulRequiem, (void*)0x06000000, (void*)&sHowlLightPrelude, - (void*)0x07000000, (void*)&sNewSong1, (void*)0x08000000, (void*)&sNewSong2, - (void*)0x09000000, (void*)&sNewSong3, +SECTION_DATA static Z2WolfHowlData sGuideData[9] = { + {4, sHowlTobikusa}, + {6, sHowlUmakusa}, + {6, sHowlZeldaSong}, + {6, sHealingSong}, + {6, sHowlSoulRequiem}, + {6, sHowlLightPrelude}, + {7, sNewSong1}, + {8, sNewSong2}, + {9, sNewSong3}, }; /* 80450880-80450884 000300 0004+00 2/2 0/0 0/0 .sdata cPitchDown */ @@ -213,8 +181,8 @@ SECTION_SDATA static f32 sStickHigh = 0.5f; SECTION_SDATA static f32 sStickCenter = 1.0f / 5.0f; /* 804508A0-804508A8 000320 0008+00 1/0 0/0 0/0 .sdata sHowlTobikusa */ -SECTION_SDATA static u8 sHowlTobikusa[8] = { - 0x01, 0x1E, 0x03, 0x1E, 0x01, 0x1E, 0x03, 0x1E, +SECTION_SDATA static u16 sHowlTobikusa[4] = { + 0x011E, 0x031E, 0x011E, 0x031E, }; /* 80455E60-80455E64 004460 0004+00 8/8 0/0 0/0 .sdata2 @3485 */ diff --git a/src/d/a/d_a_alink.cpp b/src/d/a/d_a_alink.cpp index cf4975757c..0846767685 100644 --- a/src/d/a/d_a_alink.cpp +++ b/src/d/a/d_a_alink.cpp @@ -13,6 +13,7 @@ #include "d/a/d_a_horse_static.h" #include "d/com/d_com_inf_game.h" #include "d/d_bomb.h" +#include "d/d_procname.h" #include "dol2asm.h" #include "dolphin/types.h" #include "f_op/f_op_actor_mng.h" @@ -3307,7 +3308,6 @@ extern "C" u8 mGndCheck__11fopAcM_gc_c[84]; extern "C" u8 mWaterCheck__11fopAcM_wt_c[84 + 4 /* padding */]; extern "C" u8 mDemoArcName__20dStage_roomControl_c[10 + 2 /* padding */]; extern "C" u8 mSimpleTexObj__21dDlst_shadowControl_c[32]; -extern "C" extern u8 g_env_light[4880]; extern "C" f32 Zero__4cXyz[3]; extern "C" u8 BaseX__4cXyz[12]; extern "C" u8 BaseY__4cXyz[12]; @@ -3347,6 +3347,10 @@ inline BOOL i_dComIfGs_isEventBit(u16 id) { return g_dComIfG_gameInfo.info.getEvent().isEventBit(id); } +inline bool i_dComIfGp_checkPlayerStatus1(int param_0, u32 flag) { + return g_dComIfG_gameInfo.play.checkPlayerStatus(param_0, 1, flag); +} + /* 8009D87C-8009D884 0981BC 0008+00 0/0 1/1 0/0 .text getE3Zhint__9daAlink_cFv */ bool daAlink_c::getE3Zhint() { return false; @@ -15665,8 +15669,8 @@ BOOL daAlink_c::itemButtonCheck(u8 pButton) { return mItemButton & pButton; } -void daAlink_c::itemButton() { - itemButtonCheck(1 << mSelectItemId); +BOOL daAlink_c::itemButton() { + return itemButtonCheck(1 << mSelectItemId); } void daAlink_c::itemTrigger() { @@ -17152,7 +17156,7 @@ asm J3DModelData* daAlink_c::loadAramBmd(u16 param_0, u32 param_1) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::loadAram(u16 param_0, u32 param_1) { +asm void* daAlink_c::loadAram(u16 param_0, u32 param_1) { nofralloc #include "asm/d/a/d_a_alink/loadAram__9daAlink_cFUsUl.s" } @@ -28031,164 +28035,141 @@ asm void daAlink_c::hookshotAtHitCallBack(dCcD_GObjInf* param_0, fopAc_ac_c* par /* 8010859C-801085BC 102EDC 0020+00 1/1 0/0 0/0 .text * daAlink_hookshotAtHitCallBack__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daAlink_hookshotAtHitCallBack(fopAc_ac_c* param_0, dCcD_GObjInf* param_1, +static void daAlink_hookshotAtHitCallBack(fopAc_ac_c* player, dCcD_GObjInf* param_1, fopAc_ac_c* param_2, dCcD_GObjInf* param_3) { - nofralloc -#include "asm/d/a/d_a_alink/daAlink_hookshotAtHitCallBack__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf.s" + ((daAlink_c*)player)->hookshotAtHitCallBack(param_1, param_2, param_3); } -#pragma pop /* 801085BC-80108600 102EFC 0044+00 1/0 0/0 0/0 .text getHookshotTopPos__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::getHookshotTopPos() { - nofralloc -#include "asm/d/a/d_a_alink/getHookshotTopPos__9daAlink_cFv.s" +cXyz* daAlink_c::getHookshotTopPos() { + if (checkHookshotItem(mEquipItem)) { + return &mHookshotTopPos; + } + + return NULL; } -#pragma pop /* 80108600-80108668 102F40 0068+00 1/0 0/0 0/0 .text checkHookshotReturnMode__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkHookshotReturnMode() const { - nofralloc -#include "asm/d/a/d_a_alink/checkHookshotReturnMode__9daAlink_cCFv.s" +bool daAlink_c::checkHookshotReturnMode() const { + return checkHookshotItem(mEquipItem) && (mHookshotMode == 4 || mHookshotMode == 5 || mHookshotMode == 6); } -#pragma pop /* 80108668-801086DC 102FA8 0074+00 1/0 0/0 0/0 .text checkHookshotShootReturnMode__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkHookshotShootReturnMode() const { - nofralloc -#include "asm/d/a/d_a_alink/checkHookshotShootReturnMode__9daAlink_cCFv.s" +bool daAlink_c::checkHookshotShootReturnMode() const { + return (checkHookshotItem(mEquipItem) && mHookshotMode == 3) || checkHookshotReturnMode(); } -#pragma pop /* 801086DC-8010871C 10301C 0040+00 6/6 0/0 0/0 .text resetHookshotMode__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::resetHookshotMode() { - nofralloc -#include "asm/d/a/d_a_alink/resetHookshotMode__9daAlink_cFv.s" +void daAlink_c::resetHookshotMode() { + mHookshotMode = 0; + initLockAt(); + mSearchBallScale = __float_max[0]; } -#pragma pop /* 8010871C-80108784 10305C 0068+00 0/0 0/0 1/1 .text * setEnemyBombHookshot__9daAlink_cFP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::setEnemyBombHookshot(fopAc_ac_c* param_0) { - nofralloc -#include "asm/d/a/d_a_alink/setEnemyBombHookshot__9daAlink_cFP10fopAc_ac_c.s" +bool daAlink_c::setEnemyBombHookshot(fopAc_ac_c* actor) { + if (field_0x284c.getActor() != NULL) { + cancelHookshotCarry(); + field_0x284c.setData(actor); + fopAcM_setHookCarryNow(actor); + return true; + } + return false; } -#pragma pop /* 80108784-801087B0 1030C4 002C+00 3/3 0/0 0/0 .text checkLv7BossRoom__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::checkLv7BossRoom() { - nofralloc -#include "asm/d/a/d_a_alink/checkLv7BossRoom__9daAlink_cFv.s" +bool daAlink_c::checkLv7BossRoom() { + return checkStageName("D_MN07A"); } -#pragma pop /* 801087B0-80108828 1030F0 0078+00 6/6 0/0 0/0 .text * checkHookshotStickBG__9daAlink_cFR13cBgS_PolyInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::checkHookshotStickBG(cBgS_PolyInfo& param_0) { - nofralloc -#include "asm/d/a/d_a_alink/checkHookshotStickBG__9daAlink_cFR13cBgS_PolyInfo.s" +bool daAlink_c::checkHookshotStickBG(cBgS_PolyInfo& poly) { + if (dComIfG_Bgsp().ChkPolyHSStick(poly)) { + dBgW_Base* bgw = dComIfG_Bgsp().GetBgWBasePointer(poly); + if (bgw != NULL && bgw->ChkPushPullOk()) { + return true; + } + } + + return false; } -#pragma pop /* 80108828-80108864 103168 003C+00 4/4 0/0 0/0 .text cancelHookshotCarry__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::cancelHookshotCarry() { - nofralloc -#include "asm/d/a/d_a_alink/cancelHookshotCarry__9daAlink_cFv.s" +void daAlink_c::cancelHookshotCarry() { + if (field_0x284c.getActor() != NULL) { + fopAcM_cancelHookCarryNow(field_0x284c.getActor()); + field_0x284c.clearData(); + } } -#pragma pop /* 80108864-801088A0 1031A4 003C+00 2/2 0/0 0/0 .text changeHookshotDrawModel__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::changeHookshotDrawModel() { - nofralloc -#include "asm/d/a/d_a_alink/changeHookshotDrawModel__9daAlink_cFv.s" +void daAlink_c::changeHookshotDrawModel() { + if (mEquipItem == HOOKSHOT && field_0x3020 == 1) { + J3DModel* old_item = mHeldItemModel; + mHeldItemModel = field_0x0710; + field_0x0710 = old_item; + + J3DModel* old_item2 = field_0x070c; + field_0x070c = field_0x0714; + field_0x0714 = old_item2; + } } -#pragma pop /* 801088A0-801088C8 1031E0 0028+00 6/6 0/0 0/0 .text checkHookshotRoofLv7Boss__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::checkHookshotRoofLv7Boss() { - nofralloc -#include "asm/d/a/d_a_alink/checkHookshotRoofLv7Boss__9daAlink_cFv.s" +BOOL daAlink_c::checkHookshotRoofLv7Boss() { + return mCargoCarryActor.getActor() != NULL && fopAcM_GetName(mCargoCarryActor.getActor()) == PROC_B_DR; } -#pragma pop /* 801088C8-80108980 103208 00B8+00 2/2 0/0 0/0 .text checkChaseHookshot__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::checkChaseHookshot() { - nofralloc -#include "asm/d/a/d_a_alink/checkChaseHookshot__9daAlink_cFv.s" +BOOL daAlink_c::checkChaseHookshot() { + if (field_0x2804 == NULL) { + if (mTargetedActor != NULL) { + field_0x2804 = mTargetedActor; + } else { + field_0x2804 = this; + } + } else if (field_0x2804 != mTargetedActor) { + field_0x2804 = this; + } + + if (mTargetedActor != NULL) { + s16 actorName = fopAcM_GetName(mTargetedActor); + return field_0x2804 == mTargetedActor && (checkBossOctaIealRoom() || actorName == PROC_Obj_FallObj || actorName == PROC_B_DR || actorName == PROC_E_PH); + } + + return false; } -#pragma pop /* 80108980-801089E8 1032C0 0068+00 2/2 0/0 0/0 .text checkOctaIealSpecialCollect__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::checkOctaIealSpecialCollect() { - nofralloc -#include "asm/d/a/d_a_alink/checkOctaIealSpecialCollect__9daAlink_cFv.s" +BOOL daAlink_c::checkOctaIealSpecialCollect() { + return mActionID == 0xC6 && checkHookshotItem(mEquipItem) && checkBossOctaIealRoom(); } -#pragma pop /* 801089E8-80108A18 103328 0030+00 5/5 0/0 0/0 .text checkBossOctaIealRoom__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::checkBossOctaIealRoom() { - nofralloc -#include "asm/d/a/d_a_alink/checkBossOctaIealRoom__9daAlink_cFv.s" +BOOL daAlink_c::checkBossOctaIealRoom() { + return checkStageName("D_MN01A"); } -#pragma pop /* 80108A18-80108A3C 103358 0024+00 19/19 0/0 0/0 .text checkHookshotWait__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::checkHookshotWait() const { - nofralloc -#include "asm/d/a/d_a_alink/checkHookshotWait__9daAlink_cCFv.s" +BOOL daAlink_c::checkHookshotWait() const { + return mHookshotMode == 0 || mHookshotMode == 1; } -#pragma pop /* 80108A3C-80108A90 10337C 0054+00 1/1 0/0 0/0 .text setHookshotCatchNow__9daAlink_cFv */ +// matches with literals +#ifdef NONMATCHING +void daAlink_c::setHookshotCatchNow() { + field_0x3026 = 5; + dComIfGp_getVibration().StartShock(4, 1, cXyz(0.0f, 1.0f, 0.0f)); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -28197,27 +28178,78 @@ asm void daAlink_c::setHookshotCatchNow() { #include "asm/d/a/d_a_alink/setHookshotCatchNow__9daAlink_cFv.s" } #pragma pop +#endif /* 80108A90-80108B34 1033D0 00A4+00 1/0 0/0 0/0 .text setHookshotCarryOffset__9daAlink_cFUiPC4cXyz */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::setHookshotCarryOffset(unsigned int param_0, cXyz const* param_1) { - nofralloc -#include "asm/d/a/d_a_alink/setHookshotCarryOffset__9daAlink_cFUiPC4cXyz.s" +bool daAlink_c::setHookshotCarryOffset(unsigned int actorID, cXyz const* offset) { + if (i_dComIfGp_checkPlayerStatus1(0, 0x10000)) { + fopAc_ac_c* carryActor = mCargoCarryActor.getActor(); + + if (carryActor != NULL && fopAcM_checkHookCarryNow(carryActor) && actorID == mCargoCarryActor.getID()) { + field_0x37c8 = *offset; + return true; + } + } + + fopAc_ac_c* actor = field_0x284c.getActor(); + if (actor != NULL && fopAcM_checkHookCarryNow(actor) && actorID == field_0x284c.getID()) { + field_0x37f8 = *offset; + return true; + } + + return false; } -#pragma pop /* 80108B34-80108DB4 103474 0280+00 1/1 0/0 0/0 .text setHookshotModel__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::setHookshotModel() { - nofralloc -#include "asm/d/a/d_a_alink/setHookshotModel__9daAlink_cFv.s" +void daAlink_c::setHookshotModel() { + J3DAnmTransform* bck = (J3DAnmTransform*)mAnmHeap9.loadDataIdx(0x17E); + + JKRHeap* heap = setItemHeap(); + field_0x730.init(bck, 0, 2, lit_6040, 0, -1, false); + + J3DModelData* heldItem_modelData = loadAramBmd(0x316, 0x5C00); + mHeldItemModel = initModel(heldItem_modelData, 0x80000, 0); + + J3DModelData* modelData = loadAramBmd(0x318, 0x3800); + field_0x070c = initModel(modelData, 0x80000, 0); + field_0x0710 = initModel(mHeldItemModel->getModelData(), 0x80000, 0); + field_0x0714 = initModel(field_0x070c->getModelData(), 0x80000, 0); + + field_0x0768 = loadAramBmd(0x317, 0x1000); + field_0x770 = new hsChainShape_c(); + field_0x076c = new Z2SoundObjSimple(); + + mpHookshotLinChk = new dBgS_ObjLinChk(); + mpHookshotLinChk->OffFullGrp(); + mpHookshotLinChk->OnWaterGrp(); + + J3DAnmTransform* bck2 = (J3DAnmTransform*)loadAram(0x17F, 0x800); + field_0x74C.init(bck2, 0, 2, lit_6040, 0, -1, false); + mDoExt_setCurrentHeap(heap); + + resetHookshotMode(); + field_0x770->setUserArea((u32)this); + field_0x2f94 = 1; + if (mEquipItem == W_HOOKSHOT) { + field_0x2f95 = 6; + } + + field_0x3020 = 0; + field_0x3024 = 0; + + field_0x122C[0].SetAtSpl(dCcG_At_Spl_UNK_0); + field_0x122C[0].OffAtNoHitMark(); + field_0x122C[0].SetAtAtp(0); + field_0x122C[0].SetR(lit_7808); + field_0x122C[0].SetAtSe(8); + field_0x122C[0].SetAtType(0x4000); + field_0x122C[0].SetAtHitMark(1); + field_0x122C[0].OnAtSetBit(); + field_0x122C[0].SetAtHitCallback(daAlink_hookshotAtHitCallBack); + field_0x122C[0].SetAtMtrl(0); + field_0x076c->init(&mHookshotTopPos, 1); } -#pragma pop /* 80108DB4-80108EEC 1036F4 0138+00 6/6 0/0 0/0 .text setHookshotSight__9daAlink_cFv */ #pragma push @@ -28230,24 +28262,37 @@ asm void daAlink_c::setHookshotSight() { #pragma pop /* 80108EEC-80108F64 10382C 0078+00 1/1 0/0 0/0 .text cancelHookshotShot__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::cancelHookshotShot() { - nofralloc -#include "asm/d/a/d_a_alink/cancelHookshotShot__9daAlink_cFv.s" +void daAlink_c::cancelHookshotShot() { + if (checkHookshotItem(mEquipItem) && (mHookshotMode == 3 || mHookshotMode == 5 || mHookshotMode == 4)) { + if (mActionID != 0xC5 && mActionID != 0xC6 && mActionID != 0xC4) { + mHookshotMode = 6; + } + } } -#pragma pop /* 80108F64-8010903C 1038A4 00D8+00 4/4 0/0 0/0 .text cancelHookshotMove__9daAlink_cFv */ +// checkAttentionLock has weird codegen +#ifdef NONMATCHING +bool daAlink_c::cancelHookshotMove() { + if (mFastShotTime == 0 && mHookshotMode == 0) { + if (checkHookshotAnime() && (mTargetedActor == NULL && !i_checkAttentionLock() || !itemButton())) { + resetUpperAnime(UPPER_NOW, -1.0f); + return 1; + } + } + + return 0; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::cancelHookshotMove() { +asm bool daAlink_c::cancelHookshotMove() { nofralloc #include "asm/d/a/d_a_alink/cancelHookshotMove__9daAlink_cFv.s" } #pragma pop +#endif /* 8010903C-80109070 10397C 0034+00 2/2 0/0 0/0 .text * checkHookshotReadyMaterialOffMode__9daAlink_cCFv */ @@ -32159,10 +32204,6 @@ asm void daAlink_c::checkWolfLandAction(int param_0) { } #pragma pop -inline bool i_dComIfGp_checkPlayerStatus1(int param_0, u32 flag) { - return g_dComIfG_gameInfo.play.checkPlayerStatus(param_0, 1, flag); -} - /* 80129958-801299A8 124298 0050+00 1/1 0/0 1/1 .text checkMidnaUseAbility__9daAlink_cCFv */ BOOL daAlink_c::checkMidnaUseAbility() const { @@ -35893,8 +35934,8 @@ bool daPy_py_c::getDpdFarFlg() const { } /* 8014188C-80141894 13C1CC 0008+00 1/0 0/0 0/0 .text getHookshotTopPos__9daPy_py_cFv */ -bool daPy_py_c::getHookshotTopPos() { - return false; +cXyz* daPy_py_c::getHookshotTopPos() { + return NULL; } /* 80141894-8014189C 13C1D4 0008+00 1/0 0/0 0/0 .text checkHookshotReturnMode__9daPy_py_cCFv */ diff --git a/src/d/a/d_a_npc.cpp b/src/d/a/d_a_npc.cpp index 5a1f3575e8..54088d85d9 100644 --- a/src/d/a/d_a_npc.cpp +++ b/src/d/a/d_a_npc.cpp @@ -37,80 +37,6 @@ struct daNpcT_MatAnm_c { /* 8014D24C */ ~daNpcT_MatAnm_c(); }; -struct daNpcF_c { - struct daNpcF_anmPlayData {}; - - /* 80152014 */ void execute(); - /* 801522AC */ void draw(int, int, f32, _GXColorS10*, int); - /* 80152614 */ void tgHitCallBack(fopAc_ac_c*, dCcD_GObjInf*, fopAc_ac_c*, dCcD_GObjInf*); - /* 80152654 */ void srchAttnActor1(void*, void*); - /* 801526E8 */ void srchActor(void*, void*); - /* 8015276C */ void setMtx(); - /* 801527FC */ void setMtx2(); - /* 801528C8 */ void initialize(); - /* 80152B2C */ void getTrnsfrmKeyAnmP(char*, int); - /* 80152B68 */ void getTexPtrnAnmP(char*, int); - /* 80152BA4 */ void getTexSRTKeyAnmP(char*, int); - /* 80152BE0 */ void getTevRegKeyAnmP(char*, int); - /* 80152C1C */ void setMcaMorfAnm(J3DAnmTransformKey*, f32, f32, int, int, int); - /* 80152C80 */ void setBckAnm(J3DAnmTransform*, f32, int, int, int, bool); - /* 80152CC4 */ void setBtpAnm(J3DAnmTexPattern*, J3DModelData*, f32, int); - /* 80152D04 */ void setBtkAnm(J3DAnmTextureSRTKey*, J3DModelData*, f32, int); - /* 80152D44 */ void setBrkAnm(J3DAnmTevRegKey*, J3DModelData*, f32, int); - /* 80152D84 */ void setEnvTevColor(); - /* 80152DE0 */ void setRoomNo(); - /* 80152E24 */ void chkEndAnm(f32); - /* 80152EC4 */ void chkEndAnm(J3DFrameCtrl*, f32); - /* 80152F40 */ void playAllAnm(); - /* 80153150 */ void playExpressionAnm(daNpcF_c::daNpcF_anmPlayData***); - /* 80153264 */ void playMotionAnm(daNpcF_c::daNpcF_anmPlayData***); - /* 8015337C */ void setLookatMtx(int, int*, f32); - /* 80153578 */ void hitChk2(dCcD_Cyl*, int, int); - /* 80153658 */ void setDamage(int, int, int); - /* 80153718 */ void ctrlMsgAnm(int&, int&, fopAc_ac_c*, int); - /* 8015387C */ void orderEvent(int, char*, u16, u16, u8, u16); - /* 80153954 */ void changeEvent(char*, char*, u16, u16); - /* 801539F0 */ void chkActorInSight(fopAc_ac_c*, f32); - /* 80153A78 */ void chkActorInArea(fopAc_ac_c*, cXyz, cXyz, s16); - /* 80153BDC */ void chkActorInAttnArea(fopAc_ac_c*, fopAc_ac_c*, int); - /* 80153D1C */ void initTalk(int, fopAc_ac_c**); - /* 80153D84 */ void talkProc(int*, int, fopAc_ac_c**); - /* 80153EF4 */ void turn(s16, f32, int); - /* 801540A4 */ void step(s16, int, int, int); - /* 80154250 */ void setAngle(s16); - /* 80154278 */ void getDistTableIdx(int, int); - /* 801542A0 */ void getEvtAreaTagP(int, int); - /* 8015436C */ void getAttnActorP(int, void* (*)(void*, void*), f32, f32, f32, f32, s16, int, - int); - /* 80154730 */ void chkActorInSight2(fopAc_ac_c*, f32, s16); - /* 80154834 */ void chkPointInArea(cXyz, cXyz, f32, f32, f32, s16); - /* 801548F4 */ void chkPointInArea(cXyz, cXyz, cXyz, s16); - /* 8015496C */ void getAttentionPos(fopAc_ac_c*); - /* 801549E0 */ void chkFindPlayer2(int, s16); - /* 80154BD8 */ void setHitodamaPrtcl(); - /* 80155BB4 */ void setCollisions(); - /* 80155BB8 */ void setAttnPos(); - /* 80155BBC */ void adjustShapeAngle(); - /* 80155BC0 */ bool main(); - /* 80155BC8 */ void setParam(); - /* 80155BCC */ void drawOtherMdls(); - /* 80155BD0 */ bool drawDbgInfo(); - /* 80155BD8 */ bool ctrlBtk(); - /* 80155BE0 */ bool setExpressionAnm(int, bool); - /* 80155BE8 */ void setMotionAnm(int, f32); - /* 80155BEC */ void setMotion(int, f32, int); - /* 80155BF0 */ void setExpression(int, f32); - /* 80155BF4 */ ~daNpcF_c(); - /* 80155EC8 */ bool setExpressionBtp(int); - - static u8 const mCcDObjInfo[48]; - static u8 mCcDCyl[68]; - static u8 mCcDSph[64]; - static u8 mFindActorPList[400]; - static u8 mFindCount[4]; - static u8 mSrchActorName[2 + 2 /* padding */]; -}; - struct dPath {}; struct daNpcF_SPCurve_c { @@ -163,15 +89,6 @@ struct daNpcF_Lookat_c { /* 80151FE0 */ void clrRotAngle(); }; -struct daNpcF_ActorMngr_c { - /* 801506B0 */ void initialize(); - /* 801506D8 */ void entry(unsigned int); - /* 801506BC */ void entry(fopAc_ac_c*); - /* 801506E0 */ void remove(); - /* 801506EC */ void getActorP(); - /* 80155E40 */ ~daNpcF_ActorMngr_c(); -}; - struct daBaseNpc_path_c { /* 8014D998 */ daBaseNpc_path_c(); /* 8014D9A8 */ void isPath(); @@ -4762,7 +4679,8 @@ void daNpcF_c::setExpression(int param_0, f32 param_1) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm daNpcF_c::~daNpcF_c() { +// asm daNpcF_c::~daNpcF_c() { +extern "C" asm void __dt__8daNpcF_cFv() { nofralloc #include "asm/d/a/d_a_npc/__dt__8daNpcF_cFv.s" } @@ -4772,7 +4690,8 @@ asm daNpcF_c::~daNpcF_c() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm daNpcF_ActorMngr_c::~daNpcF_ActorMngr_c() { +// asm daNpcF_ActorMngr_c::~daNpcF_ActorMngr_c() { +extern "C" asm void __dt__18daNpcF_ActorMngr_cFv() { nofralloc #include "asm/d/a/d_a_npc/__dt__18daNpcF_ActorMngr_cFv.s" } diff --git a/src/d/bg/d_bg_s.cpp b/src/d/bg/d_bg_s.cpp index 5516f14d1e..fb90040c4f 100644 --- a/src/d/bg/d_bg_s.cpp +++ b/src/d/bg/d_bg_s.cpp @@ -671,7 +671,7 @@ bool dBgS::GetPolyAttackThrough(cBgS_PolyInfo const& poly) { } /* 800751F8-8007524C 06FB38 0054+00 0/0 1/1 0/0 .text ChkPolyHSStick__4dBgSFRC13cBgS_PolyInfo */ -bool dBgS::ChkPolyHSStick(cBgS_PolyInfo const& poly) { +u32 dBgS::ChkPolyHSStick(cBgS_PolyInfo const& poly) { int bg_index = poly.GetBgIndex(); if (m_chk_element[bg_index].ChkUsed()) { return m_chk_element[bg_index].m_bgw_base_ptr->GetPolyHSStick(poly.GetPolyIndex()); diff --git a/src/d/bg/d_bg_w.cpp b/src/d/bg/d_bg_w.cpp index ba90aee54a..9676d73678 100644 --- a/src/d/bg/d_bg_w.cpp +++ b/src/d/bg/d_bg_w.cpp @@ -1076,7 +1076,7 @@ asm void dBgW::GetPolyArrowThrough(int param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm bool dBgW::GetPolyHSStick(int param_0) { +asm u32 dBgW::GetPolyHSStick(int param_0) { nofralloc #include "asm/d/bg/d_bg_w/GetPolyHSStick__4dBgWFi.s" } diff --git a/src/d/bg/d_bg_w_kcol.cpp b/src/d/bg/d_bg_w_kcol.cpp index 8b47c5a3a9..a35621f5b4 100644 --- a/src/d/bg/d_bg_w_kcol.cpp +++ b/src/d/bg/d_bg_w_kcol.cpp @@ -686,7 +686,7 @@ asm void dBgWKCol::GetPolyArrowThrough(int param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dBgWKCol::GetPolyHSStick(int param_0) { +asm u32 dBgWKCol::GetPolyHSStick(int param_0) { nofralloc #include "asm/d/bg/d_bg_w_kcol/GetPolyHSStick__8dBgWKColFi.s" } diff --git a/src/d/d_drawlist.cpp b/src/d/d_drawlist.cpp index 6deebb62d9..936ab7279b 100644 --- a/src/d/d_drawlist.cpp +++ b/src/d/d_drawlist.cpp @@ -263,7 +263,6 @@ extern "C" extern void* __vt__9J3DPacket[5]; extern "C" u8 now__14mDoMtx_stack_c[48]; extern "C" u8 mClipper__14mDoLib_clipper[92]; extern "C" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" extern u8 g_env_light[4880]; extern "C" extern u8 g_envHIO[68]; extern "C" u8 sincosTable___5JMath[65536]; extern "C" u8 mBackColor__13mDoGph_gInf_c[4]; diff --git a/src/d/d_lib.cpp b/src/d/d_lib.cpp index ad09b0485c..3030b34766 100644 --- a/src/d/d_lib.cpp +++ b/src/d/d_lib.cpp @@ -163,19 +163,19 @@ asm void STControl::Yinit() { #endif f32 STControl::getValueStick() { - return mDoCPd_c::getStickValue(mDoCPd_c::PAD_0); + return mDoCPd_c::getStickValue(PAD_1); } s16 STControl::getAngleStick() { - return mDoCPd_c::getStickAngle(mDoCPd_c::PAD_0); + return mDoCPd_c::getStickAngle(PAD_1); } f32 CSTControl::getValueStick() { - return mDoCPd_c::getSubStickValue(mDoCPd_c::PAD_0); + return mDoCPd_c::getSubStickValue(PAD_1); } s16 CSTControl::getAngleStick() { - return mDoCPd_c::getSubStickAngle(mDoCPd_c::PAD_0); + return mDoCPd_c::getSubStickAngle(PAD_1); } /* 8003219C-8003242C 02CADC 0290+00 0/0 24/24 0/0 .text checkTrigger__9STControlFv */ diff --git a/src/d/d_resorce.cpp b/src/d/d_resorce.cpp index d735f1a7ec..c2d2534697 100644 --- a/src/d/d_resorce.cpp +++ b/src/d/d_resorce.cpp @@ -154,7 +154,6 @@ extern "C" void _restgpr_29(); extern "C" void memcmp(); extern "C" extern void* __vt__14J3DMaterialAnm[4]; extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" extern u8 g_env_light[4880]; extern "C" u8 mFrameBufferTimg__13mDoGph_gInf_c[4]; extern "C" u8 mZbufferTimg__13mDoGph_gInf_c[4]; extern "C" u8 sCurrentHeap__7JKRHeap[4]; diff --git a/src/d/kankyo/d_kankyo.cpp b/src/d/kankyo/d_kankyo.cpp index 21e0ab0ef0..bcf72b3f7a 100644 --- a/src/d/kankyo/d_kankyo.cpp +++ b/src/d/kankyo/d_kankyo.cpp @@ -5,7 +5,6 @@ #include "d/kankyo/d_kankyo.h" #include "MSL_C/MSL_Common/Src/mem.h" -#include "Z2AudioLib/Z2EnvSeMgr.h" #include "d/com/d_com_inf_game.h" #include "d/kankyo/d_kankyo_data.h" #include "d/msg/d_msg_object.h" @@ -1934,7 +1933,6 @@ asm void dScnKy_env_light_c::settingTevStruct_plightcol_plus(cXyz* param_0, dKy_ #pragma pop /* 8042DD70-8042E07C 05AA90 030C+00 1/2 8/8 9/9 .bss g_mEnvSeMgr */ -extern Z2EnvSeMgr g_mEnvSeMgr; Z2EnvSeMgr g_mEnvSeMgr; /* 8042E07C-8042E7BC 05AD9C 0740+00 5/4 0/0 0/0 .bss lightStatusData */ diff --git a/src/d/menu/d_menu_collect.cpp b/src/d/menu/d_menu_collect.cpp index e843e45287..a6a90f09f7 100644 --- a/src/d/menu/d_menu_collect.cpp +++ b/src/d/menu/d_menu_collect.cpp @@ -427,7 +427,6 @@ extern "C" extern void* __vt__8J3DModel[9]; extern "C" extern void* __vt__14J3DMaterialAnm[4]; extern "C" u8 now__14mDoMtx_stack_c[48]; extern "C" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" extern u8 g_env_light[4880]; extern "C" extern u8 g_drawHIO[3880]; extern "C" extern u8 g_meter2_info[248]; extern "C" f32 Zero__4cXyz[3]; diff --git a/src/d/menu/d_menu_window.cpp b/src/d/menu/d_menu_window.cpp index d4bee51560..af15b9a5d8 100644 --- a/src/d/menu/d_menu_window.cpp +++ b/src/d/menu/d_menu_window.cpp @@ -277,15 +277,15 @@ inline BOOL dComIfGp_event_runCheck() { } BOOL dMw_UP_TRIGGER() { - return (bool)mDoCPd_c::getTrigUp(mDoCPd_c::PAD_0); + return (bool)mDoCPd_c::getTrigUp(PAD_1); } bool dMw_DOWN_TRIGGER() { - return mDoCPd_c::getTrigDown(mDoCPd_c::PAD_0); + return mDoCPd_c::getTrigDown(PAD_1); } BOOL dMw_LEFT_TRIGGER() { - if (mDoCPd_c::getTrigLeft(mDoCPd_c::PAD_0) && !dMw_UP_TRIGGER()) { + if (mDoCPd_c::getTrigLeft(PAD_1) && !dMw_UP_TRIGGER()) { return true; } else { return false; @@ -293,7 +293,7 @@ BOOL dMw_LEFT_TRIGGER() { } BOOL dMw_RIGHT_TRIGGER() { - if (mDoCPd_c::getTrigRight(mDoCPd_c::PAD_0) && !dMw_UP_TRIGGER()) { + if (mDoCPd_c::getTrigRight(PAD_1) && !dMw_UP_TRIGGER()) { return true; } else { return false; @@ -301,19 +301,19 @@ BOOL dMw_RIGHT_TRIGGER() { } bool dMw_A_TRIGGER() { - return mDoCPd_c::getTrigA(mDoCPd_c::PAD_0); + return mDoCPd_c::getTrigA(PAD_1); } BOOL dMw_B_TRIGGER() { - return (bool)mDoCPd_c::getTrigB(mDoCPd_c::PAD_0); + return (bool)mDoCPd_c::getTrigB(PAD_1); } bool dMw_Z_TRIGGER() { - return mDoCPd_c::getTrigZ(mDoCPd_c::PAD_0); + return mDoCPd_c::getTrigZ(PAD_1); } BOOL dMw_START_TRIGGER() { - return (bool)mDoCPd_c::getTrigStart(mDoCPd_c::PAD_0); + return (bool)mDoCPd_c::getTrigStart(PAD_1); } void dMw_onPauseWindow() { @@ -2011,9 +2011,9 @@ void dMw_c::dMw_collect_create() { mpMenuCollect = new dMenu_Collect_c(mpHeap, mpStick, mpCStick); mpMenuCollect->_create(); - if (mDoCPd_c::getHoldLockL(mDoCPd_c::PAD_0)) { + if (mDoCPd_c::getHoldLockL(PAD_1)) { dMw_onButtonBit(1); - } else if (mDoCPd_c::getHoldLockR(mDoCPd_c::PAD_0)) { + } else if (mDoCPd_c::getHoldLockR(PAD_1)) { dMw_onButtonBit(2); } } diff --git a/src/d/particle/d_particle.cpp b/src/d/particle/d_particle.cpp index f2f0d51860..b581e837dd 100644 --- a/src/d/particle/d_particle.cpp +++ b/src/d/particle/d_particle.cpp @@ -474,7 +474,6 @@ extern "C" u8 j_o_id__8dPa_name[10 + 2 /* padding */]; extern "C" u8 s_o_id__8dPa_name[28]; extern "C" u8 mClipper__14mDoLib_clipper[92]; extern "C" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" extern u8 g_env_light[4880]; extern "C" u8 sincosTable___5JMath[65536]; extern "C" extern u32 g_whiteColor; extern "C" u8 mFrameBufferTimg__13mDoGph_gInf_c[4]; diff --git a/src/f_op/f_op_actor.cpp b/src/f_op/f_op_actor.cpp index ea987b19bb..21578c3f41 100644 --- a/src/f_op/f_op_actor.cpp +++ b/src/f_op/f_op_actor.cpp @@ -126,7 +126,6 @@ extern "C" void __construct_array(); extern "C" void _savegpr_29(); extern "C" void _restgpr_29(); extern "C" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" extern u8 g_env_light[4880]; extern "C" f32 Zero__4cXyz[3]; extern "C" extern u8 g_dComIfAc_gameInfo[8]; extern "C" u8 m_object__7dDemo_c[4]; diff --git a/src/m_Do/m_Do_DVDError.cpp b/src/m_Do/m_Do_DVDError.cpp index 6fc91edc2a..64b2811856 100644 --- a/src/m_Do/m_Do_DVDError.cpp +++ b/src/m_Do/m_Do_DVDError.cpp @@ -4,120 +4,71 @@ // #include "m_Do/m_Do_DVDError.h" +#include "m_Do/m_Do_dvd_thread.h" +#include "m_Do/m_Do_reset.h" +#include "m_Do/m_Do_ext.h" #include "dol2asm.h" #include "dolphin/types.h" -// -// Types: -// - -struct mDoDvdThd { - /* 800158B4 */ void suspend(); -}; - -struct OSThread {}; - -struct OSContext {}; - -struct OSAlarm {}; - -struct JKRThread { - /* 802D16B8 */ JKRThread(OSThread*, int); - /* 802D1758 */ ~JKRThread(); -}; - -struct JKRHeap { - /* 802CE438 */ void becomeCurrentHeap(); -}; - -// -// Forward References: -// - -extern "C" void mDoDvdErr_ThdInit__Fv(); -extern "C" void mDoDvdErr_ThdCleanup__Fv(); -extern "C" static void mDoDvdErr_Watch__FPv(); -extern "C" static void AlarmHandler__FP7OSAlarmP9OSContext(); - -// -// External References: -// - -extern "C" void mDoExt_getAssertHeap__Fv(); -extern "C" void suspend__9mDoDvdThdFv(); -extern "C" void becomeCurrentHeap__7JKRHeapFv(); -extern "C" void __ct__9JKRThreadFP8OSThreadi(); -extern "C" void __dt__9JKRThreadFv(); -extern "C" void OSCreateAlarm(); -extern "C" void OSSetPeriodicAlarm(); -extern "C" void OSCancelAlarm(); -extern "C" void OSDisableInterrupts(); -extern "C" void OSGetCurrentThread(); -extern "C" void OSCreateThread(); -extern "C" void OSCancelThread(); -extern "C" void OSResumeThread(); -extern "C" void OSSuspendThread(); -extern "C" void OSGetThreadPriority(); -extern "C" void OSGetTime(); -extern "C" void DVDGetDriveStatus(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_29(); -extern "C" extern u8 data_80450C88[8]; - // // Declarations: // /* ############################################################################################## */ /* 803DECC0-803DEFE0 00B9E0 0318+08 4/4 0/0 0/0 .bss DvdErr_thread */ -static u8 DvdErr_thread[792 + 8 /* padding */]; +static OSThread DvdErr_thread; /* 803DEFE0-803DFBE0 00BD00 0C00+00 0/1 0/0 0/0 .bss DvdErr_stack */ #pragma push #pragma force_active on -static u8 DvdErr_stack[3072]; +static u8 DvdErr_stack[3072] ALIGN_DECL(16); #pragma pop /* 803DFBE0-803DFC20 00C900 0028+18 1/2 0/0 0/0 .bss Alarm */ -static u8 Alarm[40 + 24 /* padding */]; +static OSAlarm Alarm; /* 8001659C-8001665C 010EDC 00C0+00 0/0 1/1 0/0 .text mDoDvdErr_ThdInit__Fv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void mDoDvdErr_ThdInit() { - nofralloc -#include "asm/m_Do/m_Do_DVDError/mDoDvdErr_ThdInit__Fv.s" +void mDoDvdErr_ThdInit() { + if (!data_80450C88) { + OSTime time = OSGetTime(); + OSThread* curThread = OSGetCurrentThread(); + s32 priority = OSGetThreadPriority(curThread); + + OSCreateThread(&DvdErr_thread, mDoDvdErr_Watch, NULL, DvdErr_stack + sizeof(DvdErr_stack), sizeof(DvdErr_stack), priority - 3, 1); + OSResumeThread(&DvdErr_thread); + OSCreateAlarm(&Alarm); + OSSetPeriodicAlarm(&Alarm, time, OS_BUS_CLOCK / 4, AlarmHandler); + + data_80450C88 = 1; + } } -#pragma pop /* 8001665C-800166A4 010F9C 0048+00 0/0 1/1 0/0 .text mDoDvdErr_ThdCleanup__Fv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void mDoDvdErr_ThdCleanup() { - nofralloc -#include "asm/m_Do/m_Do_DVDError/mDoDvdErr_ThdCleanup__Fv.s" +void mDoDvdErr_ThdCleanup() { + if (data_80450C88) { + OSCancelThread(&DvdErr_thread); + OSCancelAlarm(&Alarm); + data_80450C88 = 0; + } } -#pragma pop /* 800166A4-80016704 010FE4 0060+00 1/1 0/0 0/0 .text mDoDvdErr_Watch__FPv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void mDoDvdErr_Watch(void* param_0) { - nofralloc -#include "asm/m_Do/m_Do_DVDError/mDoDvdErr_Watch__FPv.s" +static void mDoDvdErr_Watch(void*) { + OSDisableInterrupts(); + { JKRThread thread(OSGetCurrentThread(), 0); } + + mDoExt_getAssertHeap()->becomeCurrentHeap(); + + do { + if (DVDGetDriveStatus() == DVD_STATE_FATAL_ERROR) { + mDoDvdThd::suspend(); + } + OSSuspendThread(&DvdErr_thread); + } while (true); } -#pragma pop /* 80016704-8001672C 011044 0028+00 1/1 0/0 0/0 .text AlarmHandler__FP7OSAlarmP9OSContext */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void AlarmHandler(OSAlarm* param_0, OSContext* param_1) { - nofralloc -#include "asm/m_Do/m_Do_DVDError/AlarmHandler__FP7OSAlarmP9OSContext.s" +static void AlarmHandler(OSAlarm*, OSContext*) { + OSResumeThread(&DvdErr_thread); } -#pragma pop diff --git a/src/m_Do/m_Do_Reset.cpp b/src/m_Do/m_Do_Reset.cpp index 5abaa68cea..e1996726ef 100644 --- a/src/m_Do/m_Do_Reset.cpp +++ b/src/m_Do/m_Do_Reset.cpp @@ -4,40 +4,17 @@ // #include "m_Do/m_Do_Reset.h" +#include "m_Do/m_Do_DVDError.h" +#include "m_Do/m_Do_Audio.h" +#include "m_Do/m_Do_MemCard.h" #include "dol2asm.h" #include "dolphin/gx/GX.h" #include "dolphin/types.h" - -// -// Types: -// - -struct Z2AudioMgr { - /* 802CDA6C */ void hasReset() const; - - static u8 mAudioMgrPtr[4 + 4 /* padding */]; -}; - -struct JUTXfb { - /* 802E5214 */ void clearIndex(); - - static u8 sManager[4 + 4 /* padding */]; -}; - -struct JUTVideo { - /* 802E4CAC */ void destroyManager(); -}; - -struct JUTGamePad { - struct C3ButtonReset { - static u8 sCallback[4]; - static u8 sCallbackArg[4 + 4 /* padding */]; - }; -}; - -struct JASTaskThread { - /* 8028FE88 */ void pause(bool); -}; +#include "JSystem/JUtility/JUTGamePad.h" +#include "JSystem/JUtility/JUTVideo.h" +#include "JSystem/JUtility/JUTXfb.h" +#include "JSystem/JAudio2/JASDvdThread.h" +#include "SSystem/SComponent/c_API_controller_pad.h" // // Forward References: @@ -51,13 +28,11 @@ extern "C" u32 getResetData__6mDoRstFv(); extern "C" extern char const* const m_Do_m_Do_Reset__stringBase0; extern "C" u8 mResetData__6mDoRst[4 + 4 /* padding */]; extern "C" extern u8 struct_80450C80; -extern "C" extern u8 data_80450C88[8]; // // External References: // -extern "C" void OSAttention(); extern "C" void mDoDvdErr_ThdCleanup__Fv(); extern "C" void cAPICPad_recalibrate__Fv(); extern "C" void pause__13JASTaskThreadFb(); @@ -66,29 +41,15 @@ extern "C" void hasReset__10Z2AudioMgrCFv(); extern "C" void destroyManager__8JUTVideoFv(); extern "C" void clearIndex__6JUTXfbFv(); extern "C" void LCDisable(); -extern "C" void OSDisableInterrupts(); -extern "C" void OSRestoreInterrupts(); -extern "C" void OSSetSaveRegion(); -extern "C" void OSResetSystem(); -extern "C" void OSGetCurrentThread(); -extern "C" void OSCancelThread(); -extern "C" void OSDetachThread(); -extern "C" void OSSuspendThread(); -extern "C" void DVDGetDriveStatus(); -extern "C" void DVDCheckDisk(); extern "C" void VIWaitForRetrace(); extern "C" void VIFlush(); -extern "C" void VISetBlack(s32); extern "C" void GXFlush(); extern "C" void GXAbortFrame(); extern "C" void GXDrawDone(); extern "C" void _savegpr_27(); -extern "C" extern u8 g_mDoMemCd_control[8192]; -extern "C" extern u8 struct_80450BB8[4]; extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; extern "C" u8 sCallback__Q210JUTGamePad13C3ButtonReset[4]; extern "C" u8 sCallbackArg__Q210JUTGamePad13C3ButtonReset[4 + 4 /* padding */]; -extern "C" extern u8 struct_80451500[4]; extern "C" u8 sManager__6JUTXfb[4 + 4 /* padding */]; // @@ -100,7 +61,7 @@ static void my_OSCancelAlarmAll() { } static void destroyVideo() { - destroyManager__8JUTVideoFv(); + JUTVideo::destroyManager(); GXSetDrawDoneCallback(NULL); VISetBlack(1); VIFlush(); @@ -108,40 +69,30 @@ static void destroyVideo() { return; } -/* ############################################################################################## */ -/* 80374198-80374198 0007F8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80374198 = "DVD_STATE_BUSY\n"; -#pragma pop - /* 80450C78-80450C80 000178 0004+04 3/2 42/42 2/2 .sbss mResetData__6mDoRst */ mDoRstData* mDoRst::mResetData; /* 80015614-8001574C 00FF54 0138+00 0/0 3/3 0/0 .text mDoRst_reset__FiUli */ -#ifdef NONMATCHING -void mDoRst_reset(int p1, u32 p2, int p3) { - mDoCPd_c* pmVar1; - u32 uVar2; - DVDState DVar3; - OSThread* thread; - s32 enable; - /* sManager */ lbl_80451550->clearIndex(); - mDoDvdErr_ThdCleanup__Fv(); - cAPICPad_recalibrate__Fv(); - if (lbl_80450BB8 != false) { +void mDoRst_reset(int param_0, u32 param_1, int param_2) { + JUTXfb::getManager()->clearIndex(); + mDoDvdErr_ThdCleanup(); + cAPICPad_recalibrate(); + + if (mDoAud_zelAudio_c::isInitFlag()) { + bool audioReset; do { - uVar2 = lbl_80451368->hasReset(); - } while ((uVar2 & 0xff) == 0); + audioReset = Z2AudioMgr::getInterface()->hasReset(); + } while (!audioReset); } - if ((s32)DVDGetDriveStatus() == (s32)DVD_STATE_BUSY) { - OSAttention(lbl_80374198); + if (DVDGetDriveStatus() == DVD_STATE_BUSY) { + OSAttention("DVD_STATE_BUSY\n"); } - JASTaskThread* task_thread = getThreadPointer__6JASDvdFv(); + + JASTaskThread* task_thread = JASDvd::getThreadPointer(); if (task_thread != NULL) { - pause__13JASTaskThreadFb(task_thread, true); - thread = task_thread->thread; + task_thread->pause(true); + OSThread* thread = task_thread->getThreadRecord(); if (thread != NULL) { OSSuspendThread(thread); OSDetachThread(thread); @@ -152,79 +103,57 @@ void mDoRst_reset(int p1, u32 p2, int p3) { VIWaitForRetrace(); VIWaitForRetrace(); - thread = GXGetCurrentGXThread(); - enable = OSDisableInterrupts(); - OSThread* ourThread = OSGetCurrentThread(); - if (thread != ourThread) { - OSCancelThread(thread); + OSThread* gxThread = GXGetCurrentGXThread(); + s32 enable = OSDisableInterrupts(); + + if (gxThread != OSGetCurrentThread()) { + OSCancelThread(gxThread); GXSetCurrentGXThread(); } + GXFlush(); GXAbortFrame(); GXDrawDone(); - OSRestoreInterrupts(enable); destroyVideo(); - while (mDoMemCd_isCardCommNone() != 0) { + while (!mDoMemCd_isCardCommNone()) { VIWaitForRetrace(); } my_OSCancelAlarmAll(); LCDisable(); - // probably false match; check out 80015728 or thereabouts in Ghidra - OSSetSaveRegion(mDoRst::mResetData, (u8*)(&mDoRst::getResetData()) + 0x18); - OSResetSystem(p1, p2, p3); + OSSetSaveRegion(mDoRst::mResetData, (u8*)&mDoRst::getResetData + 0x18); + OSResetSystem(param_0, param_1, param_2); + do { VIWaitForRetrace(); } while (true); } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void mDoRst_reset(int param_0, u32 param_1, int param_2) { - nofralloc -#include "asm/m_Do/m_Do_Reset/mDoRst_reset__FiUli.s" -} -#pragma pop -#endif /* 8001574C-800157F4 01008C 00A8+00 0/0 3/3 0/0 .text mDoRst_resetCallBack__FiPv */ -// fix JUTGamePad data -#ifdef NONMATCHING -void mDoRst_resetCallBack(int port, void* p2) { +void mDoRst_resetCallBack(int port, void*) { if (!mDoRst::isReset()) { if (port == -1) { - cAPICPad_recalibrate__Fv(); + cAPICPad_recalibrate(); } else { - if (mDoRst::is3ButtonReset() != 0) { - lbl_80451501 = false; - /* sCallback */ lbl_804514EC = &mDoRst_resetCallBack; - /* sCallbackArg */ lbl_804514F0 = 0; + if (mDoRst::is3ButtonReset()) { + struct_80451501 = false; + JUTGamePad::C3ButtonReset::sCallback = mDoRst_resetCallBack; + JUTGamePad::C3ButtonReset::sCallbackArg = NULL; return; } mDoRst::on3ButtonReset(); mDoRst::set3ButtonResetPort(port); - cAPICPad_recalibrate__Fv(); + cAPICPad_recalibrate(); } - if ((DVDCheckDisk() == 0) && (DVDGetDriveStatus() != DVD_STATE_FATAL_ERROR)) { + if (DVDCheckDisk() == 0 && DVDGetDriveStatus() != DVD_STATE_FATAL_ERROR) { mDoRst::onReturnToMenu(); } mDoRst::onReset(); } } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void mDoRst_resetCallBack(int param_0, void* param_1) { - nofralloc -#include "asm/m_Do/m_Do_Reset/mDoRst_resetCallBack__FiPv.s" -} -#pragma pop -#endif /* 800157F4-800157FC -00001 0008+00 0/0 0/0 0/0 .text getResetData__6mDoRstFv */ mDoRstData* mDoRst::getResetData() { @@ -253,7 +182,6 @@ u8 struct_80450C87; #pragma pop /* 80450C88-80450C90 000188 0008+00 0/0 2/2 0/0 .sbss None */ -extern u8 data_80450C88[8]; -u8 data_80450C88[8]; +u8 data_80450C88; /* 80374198-80374198 0007F8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ diff --git a/src/m_Do/m_Do_audio.cpp b/src/m_Do/m_Do_audio.cpp index b5365c30af..2ae9e42e30 100644 --- a/src/m_Do/m_Do_audio.cpp +++ b/src/m_Do/m_Do_audio.cpp @@ -6,23 +6,14 @@ #include "m_Do/m_Do_audio.h" #include "dol2asm.h" #include "dolphin/types.h" +#include "m_Do/m_Do_Reset.h" +#include "m_Do/m_Do_dvd_thread.h" +#include "d/com/d_com_inf_game.h" // // Types: // -struct mDoRst { - static u8 mResetData[4 + 4 /* padding */]; -}; - -struct mDoDvdThd_toMainRam_c { - /* 80016394 */ void create(char const*, u8, JKRHeap*); -}; - -struct mDoDvdThd_mountXArchive_c { - /* 800161E0 */ void create(char const*, u8, JKRArchive::EMountMode, JKRHeap*); -}; - struct JAIStreamDataMgr { /* 802A3AD8 */ ~JAIStreamDataMgr(); }; @@ -96,7 +87,6 @@ extern "C" extern void* __vt__14Z2SoundStarter[5 + 1 /* padding */]; extern "C" extern void* __vt__11Z2SoundInfo[20]; extern "C" extern void* __vt__15Z2SpeechStarter[5]; extern "C" extern void* __vt__10Z2AudioMgr[3]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; extern "C" extern u8 data_80450B40[4]; extern "C" extern u8 data_80450B48[4]; extern "C" extern u8 data_80450B4C[4]; @@ -112,7 +102,7 @@ extern "C" extern u8 data_80450B80[4]; extern "C" extern u8 data_80450B84[4]; extern "C" extern u8 data_80450B88[4]; extern "C" u8 mResetData__6mDoRst[4 + 4 /* padding */]; -extern "C" extern u8 struct_80450C80[8]; +extern "C" extern bool struct_80450C80; extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; extern "C" u8 sCurrentHeap__7JKRHeap[4]; @@ -140,18 +130,6 @@ void mDoAud_zelAudio_c::reset() { data_80450bba = false; } -/* ############################################################################################## */ -/* 80373D68-80373D68 0003C8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80373D68 = "/Audiores/Z2Sound.baa"; -SECTION_DEAD static char const* const stringBase_80373D7E = "/Audiores/Seqs/Z2SoundSeqs.arc"; -SECTION_DEAD static char const* const stringBase_80373D9D = - "ヒープ確保失敗につきオーディオ初期化できません\n"; -/* @stringBase0 padding */ -SECTION_DEAD static char const* const pad_80373DCD = "\0\0"; -#pragma pop - /* 803DBF40-803DBF4C 008C60 000C+00 1/1 0/1 0/0 .bss @3620 */ static u8 lit_3620[12]; @@ -168,24 +146,58 @@ static mDoDvdThd_toMainRam_c* l_affCommand; static mDoDvdThd_mountXArchive_c* l_arcCommand; /* 80006FC0-80007164 001900 01A4+00 1/1 0/0 0/0 .text mDoAud_Create__Fv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void mDoAud_Create() { - nofralloc -#include "asm/m_Do/m_Do_audio/mDoAud_Create__Fv.s" +static void mDoAud_Create() { + if (l_affCommand == NULL) { + l_affCommand = mDoDvdThd_toMainRam_c::create("/Audiores/Z2Sound.baa", 2, NULL); + + if (l_affCommand == NULL) { + return; + } + } + + if (l_arcCommand == NULL) { + l_arcCommand = mDoDvdThd_mountXArchive_c::create("/Audiores/Seqs/Z2SoundSeqs.arc", 0, JKRArchive::MOUNT_DVD, NULL); + + if (l_arcCommand == NULL) { + return; + } + } + + if (l_affCommand->sync() && l_arcCommand->sync()) { + if (g_mDoAud_audioHeap != NULL) { + s32 groupID = JKRHeap::sCurrentHeap->changeGroupID(5); + (*(mDoAud_zelAudio_c*)g_mDoAud_zelAudio).mAudioMgr.init(g_mDoAud_audioHeap, 0xA00000, l_affCommand->getMemAddress(), l_arcCommand->getArchive()); + JKRHeap::sCurrentHeap->changeGroupID(groupID); + g_mDoAud_audioHeap->adjustSize(); + } else { + // "Cannot initialize audio due to heap allocation failure\n" + OSReport_Error("ヒープ確保失敗につきオーディオ初期化できません\n"); + } + + (*(mDoAud_zelAudio_c*)g_mDoAud_zelAudio).mAudioMgr.mStatusMgr.setEventBit(dComIfGs_getPEventBit()); + (*(mDoAud_zelAudio_c*)g_mDoAud_zelAudio).reset(); + + u32 soundMode = OSGetSoundMode(); + Z2AudioMgr::getInterface()->setOutputMode(soundMode); + JKRHeap::free(l_affCommand->getMemAddress(), NULL); + l_affCommand->destroy(); + l_arcCommand->destroy(); + + mDoAud_zelAudio_c::onInitFlag(); + struct_80450C80 = true; + } } -#pragma pop /* 80007164-800071BC 001AA4 0058+00 0/0 1/1 0/0 .text mDoAud_Execute__Fv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void mDoAud_Execute() { - nofralloc -#include "asm/m_Do/m_Do_audio/mDoAud_Execute__Fv.s" +void mDoAud_Execute() { + if (!mDoAud_zelAudio_c::isInitFlag()) { + if (!mDoRst::isShutdown() && !mDoRst::isReturnToMenu()) { + mDoAud_Create(); + } + } else { + (*(mDoAud_zelAudio_c*)g_mDoAud_zelAudio).mAudioMgr.gframeProcess(); + } } -#pragma pop /* 800071BC-800071F8 001AFC 003C+00 0/0 3/3 0/0 .text mDoAud_setSceneName__FPCcll */ void mDoAud_setSceneName(char const* spot, s32 room, s32 layer) { diff --git a/src/m_Do/m_Do_graphic.cpp b/src/m_Do/m_Do_graphic.cpp index 4718a4deae..5008983ab4 100644 --- a/src/m_Do/m_Do_graphic.cpp +++ b/src/m_Do/m_Do_graphic.cpp @@ -140,13 +140,11 @@ extern "C" void _restgpr_28(); extern "C" extern void* __vt__14J2DGrafContext[10]; extern "C" extern void* __vt__13J2DOrthoGraph[10]; extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" extern u8 g_env_light[4880]; extern "C" f32 Zero__4cXyz[3]; extern "C" u8 mPadStatus__10JUTGamePad[48]; extern "C" u8 sincosTable___5JMath[65536]; extern "C" extern s8 data_80450580; extern "C" void* mRenderModeObj__15mDoMch_render_c[1 + 1 /* padding */]; -; extern "C" u8 systemConsole__9JFWSystem[4]; extern "C" u8 sManager__10JFWDisplay[4]; extern "C" u8 sCurrentHeap__7JKRHeap[4]; diff --git a/src/m_Do/m_Do_main.cpp b/src/m_Do/m_Do_main.cpp index 9e206cc8ca..86f291d94c 100644 --- a/src/m_Do/m_Do_main.cpp +++ b/src/m_Do/m_Do_main.cpp @@ -17,14 +17,8 @@ #include "m_Do/m_Do_controller_pad.h" #include "m_Do/m_Do_dvd_thread.h" #include "m_Do/m_Do_graphic.h" - -// -// Types: -// - -struct DynamicModuleControlBase { - /* 80262470 */ void dump(); -}; +#include "m_Do/m_Do_machine.h" +#include "DynamicLink.h" // // Forward References: @@ -220,21 +214,21 @@ static HeapCheck CommandHeapCheck; /* 8000578C-80005848 0000CC 00BC+00 1/1 0/0 0/0 .text CheckHeap__FUl */ void CheckHeap(u32 i_padNo) { - mDoMch_HeapCheckAll__Fv(); + mDoMch_HeapCheckAll(); OSCheckActiveThreads(); bool comboCheck = false; - // if L + R + Z is pressed... + // if L + R + Z is pressed if ((mDoCPd_c::getHold(i_padNo) & ~CButton::Z) == (CButton::L + CButton::R) && mDoCPd_c::getTrig(i_padNo) & CButton::Z) { comboCheck = true; } - int unk2 = comboCheck; + int saveRel = comboCheck; for (int i = 0; i < 8; i++) { HeapCheckTable[i]->CheckHeap1(); - if (unk2) { + if (saveRel) { HeapCheckTable[i]->saveRelBase(); } } @@ -266,59 +260,24 @@ void HeapCheck::heapDisplay() const { s32 total_free_size = mHeap->getTotalFreeSize(); s32 heap_free_size = mHeap->getFreeSize(); - JUTReport(0x64, 0xd4, "[%sName]", mName); - JUTReport(0x64, 0xe3, "HeapSize %8ld", heap_size); - JUTReport(0x64, 0xf0, "TargetHeapSize %8ld", mTargetHeapSize); - JUTReport(0x64, 0xfd, "TotalFree %8ld", total_free_size - used_count); - JUTReport(0x64, 0x10a, "FreeSize %8ld", heap_free_size - used_count); - JUTReport(0x64, 0x117, "TotalUsedSize %8ld", total_used_size); - JUTReport(0x64, 0x124, "TotalUsedRate %3ld%%", + JUTReport(100, 212, "[%sName]", mName); + JUTReport(100, 227, "HeapSize %8ld", heap_size); + JUTReport(100, 240, "TargetHeapSize %8ld", mTargetHeapSize); + JUTReport(100, 253, "TotalFree %8ld", total_free_size - used_count); + JUTReport(100, 266, "FreeSize %8ld", heap_free_size - used_count); + JUTReport(100, 279, "TotalUsedSize %8ld", total_used_size); + JUTReport(100, 292, "TotalUsedRate %3ld%%", (int)(total_used_size * 0x64) / (int)mTargetHeapSize); - JUTReport(0x64, 0x131, "MaxTotalUsedSize %8ld", mMaxTotalUsedSize); - JUTReport(0x64, 0x13e, "MaxTotalUsedRate %3ld%%", + JUTReport(100, 305, "MaxTotalUsedSize %8ld", mMaxTotalUsedSize); + JUTReport(100, 318, "MaxTotalUsedRate %3ld%%", (mMaxTotalUsedSize * 0x64) / (int)mTargetHeapSize); - JUTReport(0x64, 0x14b, "MinFreeSize %8ld", mMaxTotalFreeSize - used_count); - JUTReport(0x64, 0x158, "MinFreeRate %3ld%%", + JUTReport(100, 331, "MinFreeSize %8ld", mMaxTotalFreeSize - used_count); + JUTReport(100, 344, "MinFreeRate %3ld%%", ((mMaxTotalFreeSize - used_count) * 0x64) / (int)mTargetHeapSize); used_count = countUsed(mHeap); - JUTReport(0x64, 0x165, "UsedCount %3ld%", used_count); + JUTReport(100, 357, "UsedCount %3ld%", used_count); } -/* ############################################################################################## */ -/* 803739A0-803739A0 000000 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80373AEF = ""; -SECTION_DEAD static char const* const stringBase_80373AF0 = "TotalFree"; -SECTION_DEAD static char const* const stringBase_80373AFA = "MaxUsed "; -SECTION_DEAD static char const* const stringBase_80373B04 = "Used "; -SECTION_DEAD static char const* const stringBase_80373B0E = "RelUsed "; -SECTION_DEAD static char const* const stringBase_80373B18 = "/ MaxFree"; -SECTION_DEAD static char const* const stringBase_80373B22 = "/HeapSize"; -SECTION_DEAD static char const* const stringBase_80373B2C = "Blk/Bytes"; -SECTION_DEAD static char const* const stringBase_80373B36 = "ARAM Free"; -SECTION_DEAD static char const* const stringBase_80373B40 = "%d"; -SECTION_DEAD static char const* const stringBase_80373B43 = "%s"; -SECTION_DEAD static char const* const stringBase_80373B46 = " [%s]"; -SECTION_DEAD static char const* const stringBase_80373B4C = "%10d"; -#pragma pop - -/* 803A2F14-803A2F28 -00001 0014+00 0/1 0/0 0/0 .data desc1$3717 */ -#pragma push -#pragma force_active on -SECTION_DATA static char* desc1[5] = { - "", "TotalFree", "MaxUsed ", "Used ", "RelUsed ", -}; -#pragma pop - -/* 803A2F28-803A2F40 -00001 0014+04 0/1 0/0 0/0 .data desc2$3718 */ -#pragma push -#pragma force_active on -SECTION_DATA static char* desc2[5] = { - "", "/ MaxFree", "/HeapSize", "Blk/Bytes", "Blk/Bytes", -}; -#pragma pop - /* 80450580-80450584 000000 0004+00 3/3 6/6 0/0 .sdata None */ SECTION_SDATA s8 data_80450580 = 0xFF; @@ -326,10 +285,7 @@ SECTION_SDATA s8 data_80450580 = 0xFF; SECTION_SDATA u32 mDoMain::memMargin = 0xFFFFFFFF; /* 80450588-80450590 000008 0008+00 2/2 0/0 0/0 .sdata None */ -// 0x04 is mDoMain::mHeapBriefType -SECTION_SDATA static u8 data_80450588[8] = { - 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; +SECTION_SDATA u8 mDoMain::mHeapBriefType = 4; /* 80450B00-80450B08 000000 0008+00 1/1 0/0 0/0 .sbss None */ static u8 data_80450B00; @@ -344,201 +300,135 @@ OSTime mDoMain::sHungUpTime; /* 80450B18 0001+00 data_80450B18 None */ /* 80450B19 0001+00 data_80450B19 None */ /* 80450B1A 0002+00 data_80450B1A None */ -static u8 struct_80450B18[2]; - -static u8 data_80450B1A; -static u8 data_80450B1B; +static bool struct_80450B18; // sDisplayHeapDebug +static u8 sDisplayHeap; +static bool sCheckHeap; /* 80005AD8-80005D4C 000418 0274+00 1/1 0/0 0/0 .text debugDisplay__Fv */ -#ifdef NONMATCHING -void debugDisplay(void) { - int tmp1; - int tmp2; +void debugDisplay() { + static char* desc1[5] = { + "", "TotalFree", "MaxUsed ", "Used ", "RelUsed ", + }; - if (struct_80450B18[1] >= 1 && struct_80450B18[1] <= 6) { - HeapCheckTable[struct_80450B18[1]]->heapDisplay(); + static char* desc2[5] = { + "", "/ MaxFree", "/HeapSize", "Blk/Bytes", "Blk/Bytes", + }; + + if (sDisplayHeap >= 1 && sDisplayHeap <= 6) { + HeapCheckTable[sDisplayHeap - 1]->heapDisplay(); } - if (data_80450588[0] == 5) { + if (mDoMain::mHeapBriefType == 5) { JKRAramHeap* heap = JKRAram::getAramHeap(); if (heap) { - JUTReport(0x1db, 100, "ARAM Free"); - JUTReport(0x1db, 0x72, "%d", heap->getFreeSize()); - JUTReport(0x1db, 0x80, "TotalFree"); - JUTReport(0x1db, 0x8e, "%d", heap->getTotalFreeSize()); + JUTReport(475, 100, "ARAM Free"); + JUTReport(475, 114, "%d", heap->getFreeSize()); + JUTReport(475, 128, "TotalFree"); + JUTReport(475, 142, "%d", heap->getTotalFreeSize()); + return; } - } else { - if (data_80450588[0] != 0) { - JUTReport(0x1db, 100, "%s", desc1[data_80450588[0]]); - JUTReport(0x1db, 0x72, "%s", lbl_803A2F28[data_80450588[0]]); + } else if (mDoMain::mHeapBriefType != 0) { + JUTReport(475, 100, "%s", desc1[mDoMain::mHeapBriefType]); + JUTReport(475, 114, "%s", desc2[mDoMain::mHeapBriefType]); - int k = 0; - for (int i = 0; i < 8; i++, k += 0x2C) { - HeapCheck* heap_check = HeapCheckTable[i]; + for (int i = 0; i < 8; i++) { + HeapCheck* heap_check = HeapCheckTable[i]; + JKRExpHeap* expHeap = heap_check->getHeap(); - switch (data_80450588[0]) { - case 3: { - tmp1 = heap_check->getUsedCount(); - tmp2 = heap_check->getHeap()->getTotalUsedSize(); - break; - } - case 1: { - tmp1 = heap_check->getHeap()->getTotalFreeSize(); - tmp2 = heap_check->getHeap()->getFreeSize(); - break; - } - case 2: { - tmp1 = heap_check->getMaxTotalUsedSize(); - tmp2 = heap_check->getHeap()->getSize(); - break; - } - case 4: { - tmp1 = heap_check->getUsedCount() - heap_check->getUsedCountRef(); - tmp2 = heap_check->getHeap()->getTotalUsedSize() - - heap_check->getTotalUsedSizeRef(); - break; - } - - JUTReport(0x1db, k + 0x96, " [%s]", heap_check->getName()); - JUTReport(0x1db, k + 0xA4, "%10d", tmp1); - JUTReport(0x1db, k + 0xB2, "%10d", tmp2); - } + s32 check1; + s32 check2; + switch (mDoMain::mHeapBriefType) { + case 1: + check1 = expHeap->getTotalFreeSize(); + check2 = expHeap->getFreeSize(); + break; + case 2: + check1 = heap_check->getMaxTotalUsedSize(); + check2 = expHeap->getHeapSize(); + break; + case 3: + check1 = heap_check->getUsedCount(); + check2 = expHeap->getTotalUsedSize(); + break; + case 4: + check1 = heap_check->getRelUsedCount(); + check2 = heap_check->getRelTotalUsedSize(); + break; } + + JUTReport(475, (i * 44) + 150, " [%s]", heap_check->getName()); + JUTReport(475, (i * 44) + 164, "%10d", check1); + JUTReport(475, (i * 44) + 178, "%10d", check2); } } } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void debugDisplay() { - nofralloc -#include "asm/m_Do/m_Do_main/debugDisplay__Fv.s" -} -#pragma pop -#endif - -/* ############################################################################################## */ -/* 803739A0-803739A0 000000 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80373B51 = "Press X+Y+START to CLEAR console."; -SECTION_DEAD static char const* const stringBase_80373B73 = "3DStick UP/Down to scroll"; -SECTION_DEAD static char const* const stringBase_80373B8D = - "Press A to output terminal from console."; -SECTION_DEAD static char const* const stringBase_80373BB6 = "SCROLL:%3d %3d %3d Output=%1x"; -SECTION_DEAD static char const* const stringBase_80373BD5 = "Press L+R trigger to control console."; -SECTION_DEAD static char const* const stringBase_80373BFB = - "Press [Z] trigger to close this window."; -#pragma pop - -/* 80450B1C-80450B20 00001C 0004+00 1/1 0/0 0/0 .sbss console_position_x$3776 */ -static f32 console_position_x; - -/* 80450B20-80450B24 000020 0004+00 1/1 0/0 0/0 .sbss None */ -static s8 data_80450B20; - -/* 80450B24-80450B28 000024 0004+00 1/1 0/0 0/0 .sbss console_position_y$3779 */ -static f32 console_position_y; - -/* 80450B28-80450B2C 000028 0004+00 1/1 0/0 0/0 .sbss None */ -static s8 data_80450B28; - -/* 80450B2C-80450B30 00002C 0004+00 1/1 0/0 0/0 .sbss console_scroll$3782 */ -static f32 console_scroll; - -/* 80450B30-80450B34 000030 0004+00 1/1 0/0 0/0 .sbss None */ -static s8 data_80450B30; - -/* 80451A00-80451A04 000000 0004+00 1/1 0/0 0/0 .sdata2 @3884 */ -SECTION_SDATA2 static f32 lit_3884 = 20.0f; - -/* 80451A04-80451A08 000004 0004+00 1/1 0/0 0/0 .sdata2 @3885 */ -SECTION_SDATA2 static f32 lit_3885 = 30.0f; - -/* 80451A08-80451A0C 000008 0004+00 1/1 0/0 0/0 .sdata2 @3886 */ -SECTION_SDATA2 static u8 lit_3886[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; - -/* 80451A0C-80451A10 00000C 0004+00 1/1 0/0 0/0 .sdata2 @3887 */ -SECTION_SDATA2 static f32 lit_3887 = 1.0f; - -/* 80451A10-80451A18 000010 0004+04 1/1 0/0 0/0 .sdata2 @3888 */ -SECTION_SDATA2 static f32 lit_3888[1 + 1 /* padding */] = { - -1.0f, - /* padding */ - 0.0f, -}; - -/* 80451A18-80451A20 000018 0008+00 1/1 0/0 0/0 .sdata2 @3890 */ -SECTION_SDATA2 static f64 lit_3890 = 4503601774854144.0 /* cast s32 to float */; /* 80005D4C-8000614C 00068C 0400+00 1/1 0/0 0/0 .text Debug_console__FUl */ -// middle section has lots of issues -#ifdef NONMATCHING bool Debug_console(u32 i_padNo) { - float tmp2; - float tmp3; - int tmp6; + static f32 console_position_x; + static s8 console_x_init; + + static f32 console_position_y; + static s8 console_y_init; + + static f32 console_scroll; + static s8 console_scroll_init; JUTConsole* console = JFWSystem::getSystemConsole(); if (console) { - if (!data_80450B20) { + if (!console_x_init) { console_position_x = 20.0f; - data_80450B20 = 1; + console_x_init = 1; } - if (!data_80450B28) { + if (!console_y_init) { console_position_y = 30.0f; - data_80450B28 = 1; + console_y_init = 1; } - if (!data_80450B30) { + if (!console_scroll_init) { console_scroll = 0.0f; - data_80450B30 = 1; + console_scroll_init = 1; } - if (mDoCPd_c::getTrig(i_padNo) & CButton::Z && - !(mDoCPd_c::getHold(i_padNo) & ~CButton::Z)) { - bool visible = console->isVisible() == false; - console->setVisible(visible); + if (mDoCPd_c::getTrig(i_padNo) & CButton::Z && !(mDoCPd_c::getHold(i_padNo) & ~CButton::Z)) { + console->setVisible(console->isVisible() == false); JUTAssertion::setMessageCount(0); } if (console->isVisible()) { - // if R and L are pressed - if ((mDoCPd_c::getHold(i_padNo) & CButton::L && - mDoCPd_c::getHold(i_padNo) & CButton::R) || - ((mDoCPd_c::getAnalogL(i_padNo) > 0.0f && - (0.0f > mDoCPd_c::getAnalogR(i_padNo))))) { - if (mDoCPd_c::getTrig(i_padNo) & (CButton::Y | CButton::X) && + u32 holdButtons = mDoCPd_c::getHold(i_padNo); + if ((holdButtons & CButton::L && holdButtons & CButton::R) || + ((mDoCPd_c::getAnalogL(i_padNo) > 0.0f && mDoCPd_c::getAnalogR(i_padNo) > 0.0f))) { + f32 stick_x = mDoCPd_c::getStickX(i_padNo); + f32 stick_y = mDoCPd_c::getStickY(i_padNo); + + if (holdButtons & (CButton::Y | CButton::X) && mDoCPd_c::getTrig(i_padNo) & CButton::START) { console->clear(); } if (!(mDoCPd_c::getHold(i_padNo) & (CButton::Y | CButton::X))) { - // subtract console scroll value from stick Y - console_scroll -= mDoCPd_c::getStickY(i_padNo); - int tmp; - if (1.0f <= console_scroll) { - -1.0f <= console_scroll ? tmp = 0 : tmp = -console_scroll; + console_scroll -= stick_y; + + int scrollAmount; + if (console_scroll > 1.0f) { + scrollAmount = console_scroll; + } else if (console_scroll < -1.0f) { + scrollAmount = -(int)-console_scroll; } else { - tmp = mDoCPd_c::getStickX(i_padNo) - mDoCPd_c::getStickY(i_padNo); + scrollAmount = 0; } - if (tmp) { - console_scroll -= tmp; - console->scroll(tmp); + if (scrollAmount != 0) { + console_scroll -= scrollAmount; + console->scroll(scrollAmount); } } else { if (mDoCPd_c::getHold(i_padNo) & CButton::X) { - console_position_x += mDoCPd_c::getStickX(i_padNo); + console_position_x += stick_x; } if (mDoCPd_c::getHold(i_padNo) & CButton::Y) { - console_position_y -= mDoCPd_c::getStickY(i_padNo); + console_position_y -= stick_y; } } @@ -547,54 +437,46 @@ bool Debug_console(u32 i_padNo) { console->setOutput(JUTConsole::OUTPUT_OSREPORT | JUTConsole::OUTPUT_CONSOLE); } - JUTReport(0x1E, 0x186, 1, "Press X+Y+START to CLEAR console."); - JUTReport(0x1E, 400, 1, "3DStick UP/Down to scroll"); - JUTReport(0x1E, 0x19A, 1, "Press A to output terminal from console."); - JUTReport(0x1E, 0x1A4, 1, "SCROLL:%3d %3d %3d Output=%1x", + JUTReport(30, 390, 1, "Press X+Y+START to CLEAR console."); + JUTReport(30, 400, 1, "3DStick UP/Down to scroll"); + JUTReport(30, 410, 1, "Press A to output terminal from console."); + JUTReport(30, 420, 1, "SCROLL:%3d %3d %3d Output=%1x", console->getLineOffset(), console->getPositionX(), console->getPositionY(), console->getOutput()); - } - } else { - if (mDoCPd_c::getTrig(i_padNo) & CButton::DPAD_DOWN) { - g_HIO.mDisplayMeter ^= 1; - } + } else { + u32 pressButtons = mDoCPd_c::getTrig(i_padNo); - if (mDoCPd_c::getTrig(i_padNo) & CButton::DPAD_LEFT) { - if (JKRAram::getAramHeap()) { - JKRAram::getAramHeap()->dump(); + if (pressButtons & CButton::DPAD_DOWN) { + g_HIO.mDisplayMeter ^= 1; } - dump__24DynamicModuleControlBaseFv(); - g_dComIfG_gameInfo.mResControl.dump(); - } + if (pressButtons & CButton::DPAD_LEFT) { + if (JKRAram::getAramHeap()) { + JKRAram::getAramHeap()->dump(); + } - if (mDoCPd_c::getTrig(i_padNo) & CButton::DPAD_RIGHT) { - JKRHeap::getSystemHeap()->dump_sort(); - } + dump__24DynamicModuleControlBaseFv(); + g_dComIfG_gameInfo.mResControl.dump(); + } - if (mDoCPd_c::getTrig(i_padNo) & CButton::DPAD_UP) { - zeldaHeap->dump_sort(); - gameHeap->dump_sort(); - archiveHeap->dump_sort(); + if (mDoCPd_c::getTrig(i_padNo) & CButton::DPAD_RIGHT) { + JKRHeap::getSystemHeap()->dump_sort(); + } + + if (mDoCPd_c::getTrig(i_padNo) & CButton::DPAD_UP) { + zeldaHeap->dump_sort(); + gameHeap->dump_sort(); + archiveHeap->dump_sort(); + } + JUTReport(30, 440, 1, "Press L+R trigger to control console."); + JUTReport(30, 450, 1, "Press [Z] trigger to close this window."); } - JUTReport(0x1E, 0x1B8, 1, "Press L+R trigger to control console."); - JUTReport(0x1E, 0x1C2, 1, "Press [Z] trigger to close this window."); + console->setPosition(console_position_x, console_position_y); + return 1; } - console->setPosition(console_position_x, console_position_y); - return 1; } return 0; } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void Debug_console(u32 param_0) { - nofralloc -#include "asm/m_Do/m_Do_main/Debug_console__FUl.s" -} -#pragma pop -#endif /* ############################################################################################## */ /* 803739A0-803739A0 000000 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ @@ -633,25 +515,25 @@ asm void* LOAD_COPYDATE(void* param_0) { static void debug() { if (data_80450580) { - if (data_80450B1A) { - CheckHeap(2); + if (sCheckHeap) { + CheckHeap(PAD_3); } - if ((mDoCPd_c::getGamePad(2)->getButton() & ~CButton::Z) == CButton::R && - mDoCPd_c::getGamePad(2)->testTrigger(CButton::Z)) { - struct_80450B18[0] ^= 0x1; + if ((mDoCPd_c::getGamePad(PAD_3)->getButton() & ~CButton::Z) == CButton::R && + mDoCPd_c::getGamePad(PAD_3)->testTrigger(CButton::Z)) { + struct_80450B18 ^= 1; } - if (struct_80450B18[0]) { - if ((mDoCPd_c::getGamePad(2)->getButton() & ~CButton::Z) == CButton::L && - mDoCPd_c::getGamePad(2)->testTrigger(CButton::Z)) { - data_80450588[0] < 0x5 ? data_80450588[0]++ : data_80450588[0] = 0x1; + if (struct_80450B18) { + if ((mDoCPd_c::getGamePad(PAD_3)->getButton() & ~CButton::Z) == CButton::L && + mDoCPd_c::getGamePad(PAD_3)->testTrigger(CButton::Z)) { + mDoMain::mHeapBriefType < 5 ? mDoMain::mHeapBriefType++ : mDoMain::mHeapBriefType = 1; } debugDisplay(); } - Debug_console(2); + Debug_console(PAD_3); } } @@ -660,7 +542,7 @@ static void debug() { static u32 frame; /* 8000628C-80006454 000BCC 01C8+00 1/1 0/0 0/0 .text main01__Fv */ -// almost +// only issue is output check section with weird code gen #ifdef NONMATCHING void main01(void) { mDoMch_Create__Fv(); @@ -708,18 +590,18 @@ void main01(void) { } JUTConsole* console = JFWSystem::getSystemConsole(); - u32 output = JUTConsole::OUTPUT_OSREPORT | JUTConsole::OUTPUT_CONSOLE; + s32 output = 0; if (data_80450580 != 0) { - data_80450580 = JUTConsole::OUTPUT_NONE; + output = JUTConsole::OUTPUT_OSREPORT | JUTConsole::OUTPUT_CONSOLE; } - console->setOutput(output); + console->setOutput(output); console->setPosition(32, 42); mDoDvdThd_callback_c::create(LOAD_COPYDATE, NULL); fapGm_Create__Fv(); fopAcM_initManager__Fv(); - struct_80450B18[0] = 0; + struct_80450B18 = 0; cDyl_InitAsync__Fv(); g_mDoAud_audioHeap = JKRSolidHeap::create(0x14D800, JKRHeap::getCurrentHeap(), false); @@ -761,7 +643,7 @@ static OSThread mainThread; /* 80006454-800065D8 000D94 0184+00 0/0 1/1 0/0 .text main */ void main() { OSThread* current_thread = OSGetCurrentThread(); - u8* stack = &mainThreadStack[0]; + u8* stack = mainThreadStack; mDoMain::sPowerOnTime = OSGetTime(); OSReportInit(); version_check(); @@ -795,7 +677,7 @@ void main() { data_80450580 = 1; } else if (disk_id->game_version > 0x80) { u32 consoleType = OSGetConsoleType(); - data_80450580 = (consoleType >> 0x1c) & 1; + data_80450580 = (consoleType >> 0x1C) & 1; } else { data_80450580 = 0; }