Paper Mario DX
Paper Mario (N64) modding
 
Loading...
Searching...
No Matches
main.c
Go to the documentation of this file.
1#include "common.h"
2#include "nu/nusys.h"
3#include "dx/profiling.h"
4
5// TODO move these somewhere else...
9
10// used in effects/gfx/flame.c
11unsigned char D_800B32E0[0x800] ALIGNED(16);
12unsigned char D_800B3AE0[0x800] ALIGNED(16);
13
14s16 D_80074010 = 8; // might be an array, could be size 1-8
15
16void gfxRetrace_Callback(s32);
17void gfxPreNMI_Callback(void);
19
20void gfx_draw_frame(void);
21void gfx_init_state(void);
22
23void create_audio_system(void);
24void load_engine_data(void);
25
26enum {
30};
31
32// TODO try uniting these two split files
33extern s32 ResetGameState;
34extern u16* ResetSavedFrameImg;
35extern s16 D_80073E08;
36extern s16 D_80073E0A;
37extern IMG_BIN ResetTilesImg[];
39
40#if defined(SHIFT) || VERSION_IQUE
41#define shim_create_audio_system_obfuscated create_audio_system
42#define shim_load_engine_data_obfuscated load_engine_data
43#endif
44
47
51
97
103 if (gfxTaskNum == 0) {
104 u16* fb = (u16*) osViGetCurrentFramebuffer();
106
107 bufferSet[2] = fb;
108 bufferSet[1] = fb;
109 bufferSet[0] = fb;
114 }
115 }
118 }
119 } else {
120 D_80073E0A ^= 1;
121 if (D_80073E0A == 0) {
123 D_80073E08 = 1;
124
125 if (gfxTaskNum < 3) {
126 D_80073E08 = 0;
129 }
130 }
131 }
132}
133
134// on reset, draw a series of animated triangular black tiles emanating from the center of the screen
136 s16 t;
137 s16 i;
138 s16 j;
139 u16* frozenFrame;
140
141 gMatrixListPos = 0;
146
158 gDPSetBlendColor(gMainGfxPos++, 0, 0, 0, 127);
161
162 for (i = 0; i < 20; i++) {
163 for (j = 0; j < 15; j++) {
164 s32 s4 = i + 14;
165 t = (33 - (s4 - j)) / 2 + 15 - D_80074010;
166 if (t >= 16) {
167 continue;
168 }
169 if (t < 0) {
170 continue;
171 }
172 gSPTextureRectangle(gMainGfxPos++, ((i * 8) + 160) * 4,
173 ((j * 8)) * 4,
174 ((i * 8) + 168) * 4,
175 ((j * 8) + 8) * 4,
177 (t * 8) * 32, 0, 0x0400, 0x0400);
178 gSPTextureRectangle(gMainGfxPos++, ((i * 8) + 160) * 4,
179 (232 - (j * 8)) * 4,
180 ((i * 8) + 168) * 4,
181 (240 - (j * 8)) * 4,
183 (t * 8) * 32, 7 * 32, 0x0400, -0x0400);
184 gSPTextureRectangle(gMainGfxPos++, (152 - (i * 8)) * 4,
185 ((j * 8)) * 4,
186 (160 - (i * 8)) * 4,
187 ((j * 8) + 8) * 4,
189 (t * 8 + 7) * 32, 0, -0x0400, 0x0400);
190 gSPTextureRectangle(gMainGfxPos++, (152 - (i * 8)) * 4,
191 (232 - (j * 8)) * 4,
192 (160 - (i * 8)) * 4,
193 (240 - (j * 8)) * 4,
195 (t * 8 + 7) * 32, 7 * 32, -0x0400, -0x0400);
196 }
197 }
198
199 D_80074010++;
204}
205
BSS s32 PopupMenu_SelectedIndex
#define IMG_BIN
Gfx mainGfx[0x2080]
void is_debug_init(void)
Definition is_debug.c:19
void gfx_task_background(void)
Definition main_loop.c:168
void step_game_loop(void)
Definition main_loop.c:53
void load_obfuscation_shims(void)
void shim_create_audio_system_obfuscated(void)
void shim_load_engine_data_obfuscated(void)
void crash_screen_init(void)
unsigned char D_800B3AE0[]
unsigned char D_800B32E0[]
void boot_main(void *data)
Definition main.c:52
@ RESET_STATE_FADE
Definition main.c:29
@ RESET_STATE_NONE
Definition main.c:27
@ RESET_STATE_INIT
Definition main.c:28
s16 D_80073E0A
Definition main_pre.c:7
OSThread __osThreadSave
Definition main.c:7
DisplayContext DisplayContexts[2]
Definition main_loop.c:15
void gfxPreNMI_Callback(void)
Definition main.c:206
void gfx_init_state(void)
void load_engine_data(void)
Definition main_loop.c:284
s16 D_80073E08
Definition main_pre.c:6
void gfx_draw_frame(void)
Definition main_loop.c:186
s32 ResetGameState
Definition main_pre.c:4
u8 nuYieldBuf[NU_GFX_YIELD_BUF_SIZE]
Definition main.c:6
void appendGfx_reset_tile_pattern(void)
Definition main.c:135
u16 * nuGfxZBuffer
Definition main.c:46
s16 D_80074010
Definition main.c:14
void gfxRetrace_Callback(s32)
Definition main.c:98
void create_audio_system(void)
void gfx_task_end_callback(void *unk)
Definition main.c:48
IMG_BIN ResetTilesImg[]
u16 * ResetSavedFrameImg
Definition main_pre.c:5
u16 * ResetFrameBufferArray
Definition main.c:45
@ PROFILER_RSP_GFX
Definition profiling.h:98
#define profiler_rsp_started(which)
Definition profiling.h:160
#define profiler_rsp_completed(which)
Definition profiling.h:161
#define SCREEN_WIDTH
Definition macros.h:109
#define SCREEN_HEIGHT
Definition macros.h:110
#define PANIC()
Definition macros.h:55
#define ALIGNED(x)
Definition macros.h:10
#define PM_CC_RESET_TILES
Definition macros.h:417
GameStatus * gGameStatusPtr
Definition main_loop.c:31
Gfx * gMainGfxPos
Definition cam_main.c:14
u16 gMatrixListPos
Definition main_loop.c:44
u32 gRandSeed
Definition 43F0.c:27
s32 gCurrentDisplayContextIndex
Definition main_loop.c:46
DisplayContext * gDisplayContext
Definition cam_main.c:15