summaryrefslogtreecommitdiff
path: root/include/m_Do/m_Do_graphic.h
blob: d2f9e43b2dd33f913c749227c2d072e58b609e5d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
#ifndef M_DO_M_DO_GRAPHIC_H
#define M_DO_M_DO_GRAPHIC_H

#include "JSystem/JFramework/JFWDisplay.h"
#include "m_Do/m_Do_mtx.h"
#include "global.h"

#define FB_WIDTH_BASE (608)
#define FB_HEIGHT_BASE (448)
#if WIDESCREEN_SUPPORT
#define FB_WIDTH  (640)
#define FB_HEIGHT (456)
#else
#define FB_WIDTH  FB_WIDTH_BASE
#define FB_HEIGHT FB_HEIGHT_BASE
#endif

int mDoGph_Create();
void mDoGph_drawFilterQuad(s8 param_0, s8 param_1);

struct ResTIMG;
class JKRSolidHeap;
class mDoGph_gInf_c {
public:
    class bloom_c {
    public:
        bloom_c() { m_buffer = NULL; }
        void create();
        void remove();
        void draw();

        u8 getEnable() { return mEnable; }
        void setEnable(u8 i_enable) { mEnable = i_enable; }
        GXColor* getMonoColor() { return &mMonoColor; }
        GXColor* getBlendColor() { return &mBlendColor; }
        void setPoint(u8 i_point) { mPoint = i_point; }
        void setBlureSize(u8 i_size) { mBlureSize = i_size; }
        void setBlureRatio(u8 i_ratio) { mBlureRatio = i_ratio; }
        void setBlendColor(GXColor i_color) { mBlendColor = i_color; }
        void setMonoColor(GXColor i_color) { mMonoColor = i_color; }
        void setMode(u8 i_mode) { mMode = i_mode; }
        void* getBuffer() { return m_buffer; }
        u8 getPoint() { return mPoint; }
        u8 getBlureSize() { return mBlureSize; }
        u8 getBlureRatio() { return mBlureRatio; }

        /* 0x00 */ GXColor mBlendColor;
        /* 0x04 */ GXColor mMonoColor;
        /* 0x08 */ u8 mEnable;
        /* 0x09 */ u8 mMode;
        /* 0x0A */ u8 mPoint;
        /* 0x0B */ u8 mBlureSize;
        /* 0x0C */ u8 mBlureRatio;
        /* 0x10 */ void* m_buffer;
    };

    #if PLATFORM_WII || PLATFORM_SHIELD
    class csr_c {
    public:
        virtual ~csr_c() {}
        virtual void draw(f32, f32) = 0;
        virtual bool isPointer() { return true; }

        static void particleExecute();
        static u32 getBlurID() { return m_blurID; }

        static u32 m_blurID;
        static cXyz m_oldEffPos;
        static cXyz m_oldOldEffPos;
        static cXyz m_nowEffPos;
    };

    static void entryBaseCsr(csr_c*);
    static void releaseCsr(void);
    static void entryCsr(csr_c*);
    #endif

    static void create();
    static void beginRender();
    static void fadeOut(f32);
    static void fadeOut(f32, _GXColor&);
    static void fadeIn(f32 fadeSpeed, _GXColor& fadeColor) {
        fadeOut(-fadeSpeed, fadeColor);
    }
    static void fadeOut_f(f32, _GXColor&);
    static void onBlure(const Mtx);
    static void onBlure();
    static void calcFade();

    static void fadeIn(f32 fadeSpeed) {
        fadeOut(-fadeSpeed);
    }

    static JUTFader* getFader() { return mFader; }
    static void setFader(JUTFader* fader) {
        JFWDisplay::getManager()->setFader(fader);
        mFader = fader;
    }

    static int startFadeOut(int param_0) { return JFWDisplay::getManager()->startFadeOut(param_0); }
    static int startFadeIn(int param_0) { return JFWDisplay::getManager()->startFadeIn(param_0); }
    static void setFadeColor(JUtility::TColor& color) { mFader->setColor(color); }
    static void setClearColor(JUtility::TColor color) { JFWDisplay::getManager()->setClearColor(color); }
    static void setBackColor(GXColor& color) { mBackColor = color; }
    static void endFrame() { JFWDisplay::getManager()->endFrame(); }
    static void offFade() { mFade = 0; }
    static u8 isFade() { return mFade; }
    static void fadeIn_f(f32 i_fadeSpeed, _GXColor& i_fadeColor) { fadeOut_f(-i_fadeSpeed, i_fadeColor); }
    static void offBlure() { mBlureFlag = false; }
    static u8 isBlure() { return mBlureFlag; }
    static void setBlureRate(u8 i_rate) { mBlureRate = i_rate; }
    static u8 getBlureRate() { return mBlureRate; }
    static MtxP getBlureMtx() { return mBlureMtx; }
    static void offAutoForcus() { mAutoForcus = 0; }
    static BOOL isAutoForcus() { return mAutoForcus; }
    static void setTickRate(u32 rate) { JFWDisplay::getManager()->setTickRate(rate); }
    static void waitBlanking(int wait) { JFWDisplay::getManager()->waitBlanking(wait); }

    static void setBlureMtx(const Mtx m) {
        cMtx_copy(m, mBlureMtx);
    }

    static f32 getWidthF() {
        #if WIDESCREEN_SUPPORT
        return m_widthF;
        #else
        return FB_WIDTH;
        #endif
    }

    static f32 getHeightF() {
        #if WIDESCREEN_SUPPORT
        return m_heightF;
        #else
        return FB_HEIGHT;
        #endif
    }

    static f32 getWidth() { return FB_WIDTH; }
    static f32 getHeight() { return FB_HEIGHT; }

    static f32 getMinYF() {
        #if WIDESCREEN_SUPPORT
        return m_minYF;
        #else
        return 0.0f;
        #endif
    }

    static f32 getMinXF() {
        #if WIDESCREEN_SUPPORT
        return m_minXF;
        #else
        return 0.0f;
        #endif
    }

    static f32 getMaxYF() {
        #if WIDESCREEN_SUPPORT
        return m_maxYF;
        #else
        return FB_HEIGHT;
        #endif
    }

    static f32 getMaxXF() {
        #if WIDESCREEN_SUPPORT
        return m_maxXF;
        #else
        return FB_WIDTH;
        #endif
    }

    static f32 getAspect() {
        #if WIDESCREEN_SUPPORT
        return m_aspect;
        #else
        return 1.3571428f;
        #endif
    }

    static int getMinY() {
        #if WIDESCREEN_SUPPORT
        return m_minY;
        #else
        return 0;
        #endif
    }

    static int getMinX() {
        #if WIDESCREEN_SUPPORT
        return m_minX;
        #else
        return 0;
        #endif
    }

    static int getMaxY() {
        #if WIDESCREEN_SUPPORT
        return m_maxY;
        #else
        return FB_HEIGHT;
        #endif
    }

    static int getMaxX() {
        #if WIDESCREEN_SUPPORT
        return m_maxX;
        #else
        return FB_WIDTH;
        #endif
    }

    static ResTIMG* getFrameBufferTimg() { return mFrameBufferTimg; }
    static ResTIMG* getZbufferTimg() { return mZbufferTimg; }
    static void* getFrameBufferTex() { return mFrameBufferTex; }
    static void* getZbufferTex() { return mZbufferTex; }
    static void setFadeRate(f32 rate) { mFadeRate = rate; }
    static f32 getFadeRate() { return mFadeRate; }
    static bloom_c* getBloom() { return &m_bloom; }
    static GXColor& getFadeColor() { return mFadeColor; }
    static GXColor& getBackColor() { return mBackColor; }
    static void endRender() { JFWDisplay::getManager()->endRender(); }
    static GXTexObj* getZbufferTexObj() { return &mZbufferTexObj; }
    static GXTexObj* getFrameBufferTexObj() { return &mFrameBufferTexObj; }
    static void setFrameRate(u16 i_rate) { JFWDisplay::getManager()->setFrameRate(i_rate); }

    static int getFrameBufferSize() {
        #define RoundUp16b(x)   (u16)(((u16)(x) + 16 - 1) & ~(16 - 1))
        return RoundUp16b(JFWDisplay::getManager()->getEfbWidth()) * JFWDisplay::getManager()->getEfbHeight() * 2;
    }

    static void* getFrameBufferMemory() {
        return JFWDisplay::getManager()->getXfbManager()->getDisplayingXfb();
    }

    static f32 getInvScale() {
        #if WIDESCREEN_SUPPORT
        return m_invScale;
        #else
        return 1.0f;
        #endif
    }

    static f32 getScale() {
        #if WIDESCREEN_SUPPORT
        return m_scale;
        #else
        return 1.0f;
        #endif
    }

    #if WIDESCREEN_SUPPORT
    static void setTvSize();

    static void onWide();
    static void offWide();
    inline static u8 isWide() {
        return mWide == TRUE;
    }

    static void onWideZoom();
    static void offWideZoom();
    static BOOL isWideZoom();

    static void setWideZoomProjection(Mtx44& m);
    static void setWideZoomLightProjection(Mtx& m);
    #endif

    static GXTexObj mFrameBufferTexObj;
    static GXTexObj mZbufferTexObj;
    static bloom_c m_bloom;
    static Mtx mBlureMtx;
    static GXColor mBackColor;
    static GXColor mFadeColor;
    static JUTFader* mFader;
    static ResTIMG* mFrameBufferTimg;
    static void* mFrameBufferTex;
    static ResTIMG* mZbufferTimg;
    static void* mZbufferTex;
    static f32 mFadeRate;
    static f32 mFadeSpeed;
    static u8 mBlureFlag;
    static u8 mBlureRate;
    static u8 mFade;
    static bool mAutoForcus;

    #if PLATFORM_SHIELD
    static JKRHeap* getHeap() {
        return m_heap;
    }

    static void setHeap(JKRSolidHeap* i_heap) {
        m_heap = (JKRHeap*)i_heap;
    }

    static JKRHeap* m_heap;
    #endif

    #if PLATFORM_WII || PLATFORM_SHIELD
    static void resetDimming();

    static csr_c* m_baseCsr;
    static csr_c* m_csr;

    static cXyz m_nowEffPos;
    static cXyz m_oldEffPos;
    static cXyz m_oldOldEffPos;
    #endif

    #if WIDESCREEN_SUPPORT
    static u8 mWide;
    static u8 mWideZoom;
    static ResTIMG* m_fullFrameBufferTimg;
    static void* m_fullFrameBufferTex;
    static GXTexObj m_fullFrameBufferTexObj;

    static f32 m_aspect;
    static f32 m_scale;
    static f32 m_invScale;

    static f32 m_minXF;
    static f32 m_minYF;
    static int m_minX;
    static int m_minY;

    static f32 m_maxXF;
    static f32 m_maxYF;
    static int m_maxX;
    static int m_maxY;

    static int m_width;
    static int m_height;
    static f32 m_heightF;
    static f32 m_widthF;
    #endif
};

#endif /* M_DO_M_DO_GRAPHIC_H */