Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
Loading...
Searching...
No Matches
HBMBase.h
Go to the documentation of this file.
1#ifndef HOMEBUTTON_BASE_H
2#define HOMEBUTTON_BASE_H
3
4#include <revolution/ax.h>
5#include <revolution/axfx.h>
6#include <revolution/wpad.h>
7#include "HBMCommon.h"
8#include "HBMController.h"
9#include "HBMGUIManager.h"
10#include "nw4hbm/lyt/drawInfo.h"
11#include "nw4hbm/lyt/layout.h"
18
19
20#include <new>
21
22namespace homebutton {
23 static void initgx();
24 static void drawBlackPlate(f32 left, f32 top, f32 right, f32 bottom);
25 static u32 get_comma_length(char* pBuf);
26 static void SpeakerCallback(OSAlarm* alm, OSContext* ctx);
27 static void MotorCallback(OSAlarm* alm, OSContext* ctx);
28 static void RetrySimpleSyncCallback(OSAlarm* alm, OSContext* ctx);
29 static void SimpleSyncCallback(s32 result, s32 num);
30} // namespace homebutton
31
32namespace nw4hbm {
33
34 namespace lyt {
35 class ArcResourceAccessor;
36 class ArcResourceLink;
37 class Layout;
38 class MultiArcResourceAccessor;
39 class Pane;
40 } // namespace lyt
41
42 namespace ut {
43 class ResFont;
44 }
45
46} // namespace nw4hbm
47
48namespace homebutton {
49
50 class HomeButton;
51 class Controller;
52 class GroupAnmController;
53 class RemoteSpk;
54
56 public:
58
59 /* 0x08 */ virtual void onEvent(u32 uID, u32 uEvent, void* pData);
60
62
63 private:
64 /* 0x00 (base) */
66 }; // size = 0x0C
67
68 class HomeButton {
69 private:
70 typedef enum {
71 /* 0 */ eSeq_Normal,
72 /* 1 */ eSeq_Control,
73 /* 2 */ eSeq_Cmn,
74 } eSeq;
75
76 class BlackFader {
77 public:
78 BlackFader(int maxFrame) {
79 init(maxFrame);
80 setColor(0, 0, 0);
81 }
82
83 void setColor(u8 r, u8 g, u8 b) {
84 red_ = r;
85 green_ = g;
86 blue_ = b;
87 }
88
89 int getFrame() const { return frame_; }
90 int getMaxFrame() const { return maxFrame_; }
91 void start() { state_ = 1; }
92 GXColor GetColor(u8 alpha) { return (GXColor){red_, green_, blue_, alpha}; }
93
94 bool isDone();
95 void init(int maxFrame);
96 void calc();
97 void draw();
98
99 private:
100 /* 0x00 */ int frame_;
101 /* 0x04 */ int maxFrame_;
102 /* 0x08 */ int state_;
103 /* 0x0D */ u8 red_;
104 /* 0x0E */ u8 green_;
105 /* 0x0F */ u8 blue_;
106 }; // size = 0x10
107
108 public:
109 HomeButton(const HBMDataInfo* dataInfo);
110 ~HomeButton();
111
112 int getVolume();
114 bool isActive() const;
115 bool isUpBarActive() const;
116 bool isDownBarActive();
117 void setAdjustFlag(int flag);
118 void setForcusSE();
119 void setSimpleSyncAlarm(int type);
120 void setSpeakerAlarm(int chan, int msec);
121 void setVolume(int vol);
122 bool getVibFlag();
123 int getPaneNo(const char*);
124 void setVibFlag(bool flag);
125 void create();
126 void init();
127 void calc(const HBMControllerData* pController);
128 void draw();
129 void update(const HBMControllerData* pController);
130 void updateTrigPane();
131 void startPointEvent(const char* pPane, void* pData);
132 void startLeftEvent(const char* pPane);
133 void startTrigEvent(const char* pPane);
134 int findAnimator(int pane, int anm);
135 int findGroupAnimator(int pane, int anm);
136 void callSimpleSyncCallback(s32 result, s32 num);
137 void startBlackOut();
138
140 Controller* getController(int chan) { return mpController[chan]; }
141 const char* getFuncPaneName(int no) { return scFuncTouchPaneName[no]; }
142 const char* getPaneName(int no) { return scBtnName[no]; }
143 bool getReassignedFlag() const { return mReassignedFlag; }
149
150 static void createInstance(const HBMDataInfo* dataInfo);
152 static void deleteInstance();
153
154 private:
155 void init_battery(const HBMControllerData* pController);
156 void calc_battery(int chan);
157 void reset_battery();
158
159 void init_sound();
160 void fadeout_sound(f32 gain);
161
162 void init_msg();
163 void init_vib();
164 void init_volume();
165
166 void set_config();
167 void set_text();
168
169 void calc_fadeoutAnm();
170
171 void update_controller(int id);
172 void update_posController(int id);
173
174 void reset_btn();
175 void reset_control();
176 void reset_guiManager(int num);
177 void reset_window();
178
179 public:
180 void play_sound(int id);
181 void createSound(nw4hbm::snd::NandSoundArchive* pNandSoundArchive, bool bCreateSoundHeap);
182 void deleteSound();
183 void draw_impl();
185 void setSoundVolume(f32 volume);
186 inline void stopSound(bool checkFlag);
187 void initSound(const char* path);
188 void updateSound();
189
190 void PlaySeq(int num) {
191 if (mpSoundArchivePlayer != NULL && mpSoundHandle != NULL) {
194 }
195 }
196
197 private:
198 /* 0x000 */ eSeq mSequence;
199 /* 0x004 */ const HBMDataInfo* mpHBInfo;
200 /* 0x008 */ int mButtonNum;
201 /* 0x00C */ int mAnmNum;
202 /* 0x010 */ int mState;
203 /* 0x014 */ int mSelectAnmNum;
204 /* 0x018 */ int mMsgCount;
205 /* 0x01C */ int mPaneCounter[14];
206 /* 0x054 */ int mPadDrawTime[WPAD_MAX_CONTROLLERS];
207 /* 0x064 */ int mForcusSEWaitTime;
208 /* 0x068 */ int mBar0AnmRev;
209 /* 0x06C */ int mBar1AnmRev;
210 /* 0x070 */ int mBar0AnmRevHold;
211 /* 0x074 */ int mBar1AnmRevHold;
212 /* 0x078 */ int mGetPadInfoTime;
213 /* 0x07C */ bool mControllerFlag[WPAD_MAX_CONTROLLERS];
214 /* 0x080 */ int mVolumeNum;
215 /* 0x084 */ bool mVibFlag;
216 /* 0x085 */ bool mControlFlag;
217 /* 0x086 */ bool mLetterFlag;
218 /* 0x087 */ bool mAdjustFlag;
219 /* 0x088 */ bool mReassignedFlag;
220 /* 0x089 */ bool mSimpleSyncFlag;
221 /* 0x08A */ bool mEndSimpleSyncFlag;
222 /* 0x08B */ bool mInitFlag;
223 /* 0x08C */ bool mForceSttInitProcFlag;
224 /* 0x08D */ bool mForceSttFadeInProcFlag;
225 /* 0x08E */ bool mEndInitSoundFlag;
226 /* 0x08F */ bool mForceStopSyncFlag;
227 /* 0x090 */ bool mForceEndMsgAnmFlag;
228#if HBM_REVISION > 1
229 /* 0x094 */ int mSoundRetryCnt;
230#endif
231 /* 0x098 */ int mDialogFlag[4];
232 /* 0x0A8 */ char* mpLayoutName;
233 /* 0x0AC */ char* mpAnmName;
235 /* 0x0B4 */ wchar_t* mpText[7][6];
236 /* 0x15C */ WPADInfo mWpadInfo[WPAD_MAX_CONTROLLERS];
238 /* 0x1CC */ f32 mOnPaneVibFrame[4];
239 /* 0x1DC */ f32 mOnPaneVibWaitFrame[4];
240 /* 0x1E0 */ int mWaitStopMotorCount;
242 /* 0x1E8 */ nw4hbm::lyt::Layout* mpCursorLayout[WPAD_MAX_CONTROLLERS];
247 /* 0x258 */ Controller* mpController[WPAD_MAX_CONTROLLERS];
248 /* 0x268 */ RemoteSpk* mpRemoteSpk;
252 /* 0x400 */ BlackFader mFader;
253 /* 0x410 */ OSAlarm mAlarm[WPAD_MAX_CONTROLLERS];
254 /* 0x4D0 */ OSAlarm mSpeakerAlarm[WPAD_MAX_CONTROLLERS];
262 /* 0x5D8 */ u16 mAppVolume[3];
267 /* 0x74C */ void* mpAuxContext;
268 /* 0x750 */ f32 mFadeOutSeTime;
269
270 // static members
271 private:
273
274 static const char* scCursorLytName[WPAD_MAX_CONTROLLERS];
275 static const char* scCursorPaneName;
276 static const char* scCursorRotPaneName;
277 static const char* scCursorSRotPaneName;
278
279 static const char* scBtnName[4];
280 static const char* scTxtName[4];
281 static const char* scGrName[8];
282 static const char* scAnimName[3];
283 static const char* scPairGroupAnimName[15];
284 static const char* scPairGroupName[15];
285 static const char* scGroupAnimName[22];
286 static const char* scGroupName[35];
287 static const char* scFuncPaneName[5];
288 static const char* scFuncTouchPaneName[10];
289 static const char* scFuncTextPaneName[3];
290 static const char* scBatteryPaneName[WPAD_MAX_CONTROLLERS][4];
291 }; // size = 0x740
292
293} // namespace homebutton
294
295#endif
static BOOL flag
Definition DEMOAVX.c:20
Definition HBMController.h:26
Definition HBMAnmController.h:15
Definition HBMBase.h:55
virtual void onEvent(u32 uID, u32 uEvent, void *pData)
Definition HBMBase.cpp:2695
HomeButton * mpHomeButton
Definition HBMBase.h:65
HomeButtonEventHandler(homebutton::HomeButton *pHomeButton)
Definition HBMBase.h:57
homebutton::HomeButton * getHomeButton()
Definition HBMBase.h:61
Definition HBMBase.h:76
BlackFader(int maxFrame)
Definition HBMBase.h:78
u8 red_
Definition HBMBase.h:103
int getFrame() const
Definition HBMBase.h:89
int frame_
Definition HBMBase.h:100
bool isDone()
Definition HBMBase.cpp:294
int maxFrame_
Definition HBMBase.h:101
int getMaxFrame() const
Definition HBMBase.h:90
u8 blue_
Definition HBMBase.h:105
GXColor GetColor(u8 alpha)
Definition HBMBase.h:92
int state_
Definition HBMBase.h:102
void calc()
Definition HBMBase.cpp:280
u8 green_
Definition HBMBase.h:104
void setColor(u8 r, u8 g, u8 b)
Definition HBMBase.h:83
void start()
Definition HBMBase.h:91
Definition HBMBase.h:68
char * mpAnmName
Definition HBMBase.h:233
void setSoundVolume(f32 volume)
Definition HBMBase.cpp:371
nw4hbm::snd::NandSoundArchive * mpNandSoundArchive
Definition HBMBase.h:259
void calc_battery(int chan)
Definition HBMBase.cpp:1495
HomeButton(const HBMDataInfo *dataInfo)
Definition HBMBase.cpp:412
int mPaneCounter[14]
Definition HBMBase.h:205
void init_sound()
Definition HBMBase.cpp:895
void setEndSimpleSyncFlag(bool flag)
Definition HBMBase.h:146
void set_text()
Definition HBMBase.cpp:740
int mMsgCount
Definition HBMBase.h:204
AXFXFreeHook mAxFxFree
Definition HBMBase.h:264
Controller * mpController[WPAD_MAX_CONTROLLERS]
Definition HBMBase.h:247
HBMSelectBtnNum getSelectBtnNum()
Definition HBMBase.cpp:341
nw4hbm::snd::DvdSoundArchive * mpDvdSoundArchive
Definition HBMBase.h:257
static const char * scAnimName[3]
Definition HBMBase.h:282
bool mControllerFlag[WPAD_MAX_CONTROLLERS]
Definition HBMBase.h:213
int mVolumeNum
Definition HBMBase.h:214
void init_battery(const HBMControllerData *pController)
Definition HBMBase.cpp:928
void startTrigEvent(const char *pPane)
Definition HBMBase.cpp:2236
bool isActive() const
Definition HBMBase.cpp:2574
HomeButtonEventHandler * mpHomeButtonEventHandler
Definition HBMBase.h:245
static const char * scPairGroupName[15]
Definition HBMBase.h:284
int mAnmNum
Definition HBMBase.h:201
nw4hbm::snd::SoundHeap * mpSoundHeap
Definition HBMBase.h:260
void reset_btn()
Definition HBMBase.cpp:2501
int findAnimator(int pane, int anm)
Definition HBMBase.cpp:2631
int findGroupAnimator(int pane, int anm)
Definition HBMBase.cpp:331
void create()
Definition HBMBase.cpp:500
int mForcusSEWaitTime
Definition HBMBase.h:207
int mDialogFlag[4]
Definition HBMBase.h:231
char * mpLayoutName
Definition HBMBase.h:232
bool mLetterFlag
Definition HBMBase.h:217
~HomeButton()
Definition HBMBase.cpp:443
bool mForceSttInitProcFlag
Definition HBMBase.h:223
void updateSound()
Definition HBMBase.cpp:156
f32 mOnPaneVibWaitFrame[4]
Definition HBMBase.h:239
bool mControlFlag
Definition HBMBase.h:216
static const char * scCursorLytName[WPAD_MAX_CONTROLLERS]
Definition HBMBase.h:274
void update_posController(int id)
Definition HBMBase.cpp:1889
static HomeButton * getInstance()
Definition HBMBase.h:151
bool getVibFlag()
Definition HBMBase.cpp:2691
int mBar0AnmRevHold
Definition HBMBase.h:210
nw4hbm::lyt::Layout * mpLayout
Definition HBMBase.h:241
bool getReassignedFlag() const
Definition HBMBase.h:143
void updateSoundArchivePlayer()
Definition HBMBase.cpp:349
int mGetPadInfoTime
Definition HBMBase.h:212
nw4hbm::snd::SoundHandle * mpSoundHandle
Definition HBMBase.h:261
void startLeftEvent(const char *pPane)
Definition HBMBase.cpp:2118
nw4hbm::snd::MemorySoundArchive * mpMemorySoundArchive
Definition HBMBase.h:258
eSeq mSequence
Definition HBMBase.h:198
bool mVibFlag
Definition HBMBase.h:215
void startPointEvent(const char *pPane, void *pData)
Definition HBMBase.cpp:1960
int mState
Definition HBMBase.h:202
void reset_window()
Definition HBMBase.cpp:2543
void setSimpleSyncFlag(bool flag)
Definition HBMBase.h:148
HBMSelectBtnNum mSelectBtnNum
Definition HBMBase.h:234
int mSelectAnmNum
Definition HBMBase.h:203
WPADInfo mWpadInfo[WPAD_MAX_CONTROLLERS]
Definition HBMBase.h:236
void draw_impl()
Definition HBMBase.cpp:310
HomeButtonEventHandler * getEventHandler() const
Definition HBMBase.h:144
void createSound(nw4hbm::snd::NandSoundArchive *pNandSoundArchive, bool bCreateSoundHeap)
Definition HBMBase.cpp:2830
int mButtonNum
Definition HBMBase.h:200
bool mForceSttFadeInProcFlag
Definition HBMBase.h:224
OSAlarm mAlarm[WPAD_MAX_CONTROLLERS]
Definition HBMBase.h:253
static void deleteInstance()
Definition HBMBase.cpp:268
void startBlackOut()
Definition HBMBase.cpp:2720
void init_volume()
Definition HBMBase.cpp:854
const HBMDataInfo * getHBMDataInfo()
Definition HBMBase.h:139
void setVolume(int vol)
Definition HBMBase.cpp:2679
void setSpeakerAlarm(int chan, int msec)
Definition HBMBase.cpp:1544
void PlaySeq(int num)
Definition HBMBase.h:190
AXAuxCallback mAuxCallback
Definition HBMBase.h:266
void setVibFlag(bool flag)
Definition HBMBase.cpp:2687
void * mpAuxContext
Definition HBMBase.h:267
int getPaneNo(const char *)
Definition HBMBase.cpp:2610
void play_sound(int id)
Definition HBMBase.cpp:381
void reset_battery()
Definition HBMBase.cpp:2553
void fadeout_sound(f32 gain)
Definition HBMBase.cpp:355
WPADSimpleSyncCallback mSimpleSyncCallback
Definition HBMBase.h:237
static const char * scGroupName[35]
Definition HBMBase.h:286
nw4hbm::lyt::DrawInfo mDrawInfo
Definition HBMBase.h:246
bool mReassignedFlag
Definition HBMBase.h:219
gui::PaneManager * mpPaneManager
Definition HBMBase.h:244
bool isDownBarActive()
Definition HBMBase.cpp:2590
static const char * scTxtName[4]
Definition HBMBase.h:280
GroupAnmController * mpPairGroupAnmController[15]
Definition HBMBase.h:251
void setSimpleSyncAlarm(int type)
Definition HBMBase.cpp:1579
nw4hbm::lyt::Layout * mpCursorLayout[WPAD_MAX_CONTROLLERS]
Definition HBMBase.h:242
int mBar1AnmRev
Definition HBMBase.h:209
void set_config()
Definition HBMBase.cpp:695
static const char * scFuncTouchPaneName[10]
Definition HBMBase.h:288
nw4hbm::snd::SoundArchivePlayer * GetSoundArchivePlayer()
Definition HBMBase.h:145
int mBar1AnmRevHold
Definition HBMBase.h:211
Controller * getController(int chan)
Definition HBMBase.h:140
void calc_fadeoutAnm()
Definition HBMBase.cpp:1477
void update(const HBMControllerData *pController)
Definition HBMBase.cpp:1591
static const char * scFuncPaneName[5]
Definition HBMBase.h:287
void reset_guiManager(int num)
Definition HBMBase.cpp:2563
void setForcusSE()
Definition HBMBase.cpp:2641
void deleteSound()
Definition HBMBase.cpp:2873
RemoteSpk * mpRemoteSpk
Definition HBMBase.h:248
eSeq
Definition HBMBase.h:70
@ eSeq_Control
Definition HBMBase.h:72
@ eSeq_Cmn
Definition HBMBase.h:73
@ eSeq_Normal
Definition HBMBase.h:71
void updateTrigPane()
Definition HBMBase.cpp:1903
bool mForceStopSyncFlag
Definition HBMBase.h:226
bool mInitFlag
Definition HBMBase.h:222
const char * getFuncPaneName(int no)
Definition HBMBase.h:141
void stopSound(bool checkFlag)
Definition HBMBase.cpp:393
f32 mFadeOutSeTime
Definition HBMBase.h:268
bool isUpBarActive() const
Definition HBMBase.cpp:2578
int mSoundRetryCnt
Definition HBMBase.h:229
const char * getPaneName(int no)
Definition HBMBase.h:142
int mPadDrawTime[WPAD_MAX_CONTROLLERS]
Definition HBMBase.h:206
void update_controller(int id)
Definition HBMBase.cpp:1763
nw4hbm::lyt::ArcResourceAccessor * mpResAccessor
Definition HBMBase.h:243
const HBMDataInfo * mpHBInfo
Definition HBMBase.h:199
void init_vib()
Definition HBMBase.cpp:876
OSAlarm mSpeakerAlarm[WPAD_MAX_CONTROLLERS]
Definition HBMBase.h:254
AXFXAllocHook mAxFxAlloc
Definition HBMBase.h:263
int mBar0AnmRev
Definition HBMBase.h:208
BlackFader mFader
Definition HBMBase.h:252
static const char * scPairGroupAnimName[15]
Definition HBMBase.h:283
void setReassignedFlag(bool flag)
Definition HBMBase.h:147
void setAdjustFlag(int flag)
Definition HBMBase.cpp:2650
AXFX_REVERBHI mAxFxReverb
Definition HBMBase.h:265
int getVolume()
Definition HBMBase.cpp:2683
f32 mOnPaneVibFrame[4]
Definition HBMBase.h:238
static const char * scCursorPaneName
Definition HBMBase.h:275
static const char * scBtnName[4]
Definition HBMBase.h:279
bool mSimpleSyncFlag
Definition HBMBase.h:220
void initSound(const char *path)
Definition HBMBase.cpp:133
void callSimpleSyncCallback(s32 result, s32 num)
Definition HBMBase.cpp:1585
static const char * scBatteryPaneName[WPAD_MAX_CONTROLLERS][4]
Definition HBMBase.h:290
void calc(const HBMControllerData *pController)
Definition HBMBase.cpp:963
wchar_t * mpText[7][6]
Definition HBMBase.h:235
static HomeButton * spHomeButtonObj
Definition HBMBase.h:272
bool mForceEndMsgAnmFlag
Definition HBMBase.h:227
static void createInstance(const HBMDataInfo *dataInfo)
Definition HBMBase.cpp:262
static const char * scCursorRotPaneName
Definition HBMBase.h:276
void reset_control()
Definition HBMBase.cpp:2534
bool mAdjustFlag
Definition HBMBase.h:218
nw4hbm::snd::SoundArchivePlayer * mpSoundArchivePlayer
Definition HBMBase.h:256
u16 mAppVolume[3]
Definition HBMBase.h:262
bool mEndSimpleSyncFlag
Definition HBMBase.h:221
void init()
Definition HBMBase.cpp:766
static const char * scCursorSRotPaneName
Definition HBMBase.h:277
static const char * scGroupAnimName[22]
Definition HBMBase.h:285
GroupAnmController * mpAnmController[12]
Definition HBMBase.h:249
void init_msg()
Definition HBMBase.cpp:841
OSAlarm mSimpleSyncAlarm
Definition HBMBase.h:255
static const char * scFuncTextPaneName[3]
Definition HBMBase.h:289
int mWaitStopMotorCount
Definition HBMBase.h:240
static const char * scGrName[8]
Definition HBMBase.h:281
bool mEndInitSoundFlag
Definition HBMBase.h:225
GroupAnmController * mpGroupAnmController[74]
Definition HBMBase.h:250
Definition HBMRemoteSpk.h:11
Definition HBMGUIManager.h:39
Definition HBMGUIManager.h:170
Definition arcResourceAccessor.h:53
Definition drawInfo.h:13
Definition layout.h:23
Definition DvdSoundArchive.h:15
Definition MemorySoundArchive.h:12
Definition NandSoundArchive.h:12
Definition SoundArchivePlayer.h:46
Definition SoundHandle.h:12
void DetachSound()
Definition snd_SoundHandle.cpp:8
Definition SoundHeap.h:16
bool StartSound(SoundHandle *soundHandle, u32 id)
Definition SoundStartable.h:62
Definition ResFont.h:57
r
Definition e_acos.c:105
HBMSelectBtnNum
Definition hbm.h:13
unsigned long u32
Definition types.h:12
float f32
Definition types.h:25
unsigned short int u16
Definition types.h:10
signed long s32
Definition types.h:11
unsigned char u8
Definition types.h:8
Definition HBMAnmController.cpp:6
static void MotorCallback(OSAlarm *alm, OSContext *)
Definition HBMBase.cpp:1538
static void SpeakerCallback(OSAlarm *alm, OSContext *)
Definition HBMBase.cpp:1524
static u32 get_comma_length(char *pBuf)
Definition HBMBase.cpp:683
static void RetrySimpleSyncCallback(OSAlarm *alm, OSContext *)
Definition HBMBase.cpp:1550
static void SimpleSyncCallback(s32 result, s32 num)
Definition HBMBase.cpp:1571
static void drawBlackPlate(f32 left, f32 top, f32 right, f32 bottom)
Definition HBMBase.cpp:2774
static void initgx()
Definition HBMBase.cpp:2792
Definition HBMAnmController.h:6
void(* AXAuxCallback)(void *chans, void *context)
Definition ax.h:261
void *(* AXFXAllocHook)(size_t size)
Definition axfx.h:83
void(* AXFXFreeHook)(void *block)
Definition axfx.h:84
Definition axfx.h:95
Definition hbm.h:88
Definition hbm.h:66
Definition OSAlarm.h:15
Definition OSContext.h:140
Definition wpad.h:159
Definition GXStruct.h:30
Definition d_a_npc_ks.cpp:47
void(* WPADSimpleSyncCallback)(s32 result, s32 num)
Definition wpad.h:153