Paper Mario DX
Paper Mario (N64) modding
 
Loading...
Searching...
No Matches
main.c File Reference

Go to the source code of this file.

Enumerations

enum  { RESET_STATE_NONE = 0 , RESET_STATE_INIT = 1 , RESET_STATE_FADE = 2 }
 

Functions

u8 nuBootStack[0x2000] ALIGNED (8)
 
unsigned char D_800B32E0[0x800] ALIGNED (16)
 
void gfxRetrace_Callback (s32)
 
void gfxPreNMI_Callback (void)
 
void appendGfx_reset_tile_pattern (void)
 
void gfx_draw_frame (void)
 
void gfx_init_state (void)
 
void create_audio_system (void)
 
void load_engine_data (void)
 
void gfx_task_end_callback (void *unk)
 
void boot_main (void *data)
 

Variables

u8 nuYieldBuf [NU_GFX_YIELD_BUF_SIZE]
 
OSThread __osThreadSave
 
s16 D_80074010 = 8
 
s32 ResetGameState
 
u16ResetSavedFrameImg
 
s16 D_80073E08
 
s16 D_80073E0A
 
IMG_BIN ResetTilesImg []
 
DisplayContext DisplayContexts [2]
 
u16ResetFrameBufferArray
 
u16nuGfxZBuffer
 

Enumeration Type Documentation

◆ anonymous enum

Enumerator
RESET_STATE_NONE 
RESET_STATE_INIT 
RESET_STATE_FADE 

Definition at line 26 of file main.c.

26 {
30};
@ RESET_STATE_FADE
Definition main.c:29
@ RESET_STATE_NONE
Definition main.c:27
@ RESET_STATE_INIT
Definition main.c:28

Function Documentation

◆ ALIGNED() [1/2]

u8 nuBootStack[0x2000] ALIGNED ( 8 )

◆ ALIGNED() [2/2]

unsigned char D_800B32E0[0x800] ALIGNED ( 16 )

◆ gfxRetrace_Callback()

void gfxRetrace_Callback ( s32 gfxTaskNum)

Definition at line 98 of file main.c.

98 {
103 if (gfxTaskNum == 0) {
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}
BSS s32 PopupMenu_SelectedIndex
void gfx_task_background(void)
Definition main_loop.c:167
void step_game_loop(void)
Definition main_loop.c:53
s16 D_80073E0A
Definition main_pre.c:7
s16 D_80073E08
Definition main_pre.c:6
void gfx_draw_frame(void)
Definition main_loop.c:185
s32 ResetGameState
Definition main_pre.c:4
void appendGfx_reset_tile_pattern(void)
Definition main.c:135
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

Referenced by boot_main().

◆ gfxPreNMI_Callback()

void gfxPreNMI_Callback ( void )

Definition at line 206 of file main.c.

Referenced by boot_main().

◆ appendGfx_reset_tile_pattern()

void appendGfx_reset_tile_pattern ( void )

Definition at line 135 of file main.c.

135 {
136 s16 t;
137 s16 i;
138 s16 j;
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}
Gfx mainGfx[0x2080]
DisplayContext DisplayContexts[2]
Definition main_loop.c:15
void gfx_init_state(void)
u16 * nuGfxZBuffer
Definition main.c:46
s16 D_80074010
Definition main.c:14
IMG_BIN ResetTilesImg[]
#define SCREEN_WIDTH
Definition macros.h:109
#define SCREEN_HEIGHT
Definition macros.h:110
#define PM_CC_RESET_TILES
Definition macros.h:426
Gfx * gMainGfxPos
Definition cam_main.c:14
u16 gMatrixListPos
Definition main_loop.c:44
s32 gCurrentDisplayContextIndex
Definition main_loop.c:46
DisplayContext * gDisplayContext
Definition cam_main.c:15

Referenced by gfxRetrace_Callback().

◆ gfx_draw_frame()

void gfx_draw_frame ( void )

Definition at line 185 of file main_loop.c.

185 {
187
188 gMatrixListPos = 0;
190
193 return;
194 }
195
197
199
201
204 }
205
208
215
218 }
219
221
224 }
225
228 ) {
230 }
231
235
238 ) {
240 }
241
243
246 }
247
250 }
251
253
255 switch (SoftResetState) {
256 case 0:
257 case 1:
259 break;
260 }
261 }
262
264
267
268 #if DX_DEBUG_MENU
270 #endif
271
273
276
281}
u16 * nuGfxCfb_ptr
Definition cam_main.c:13
#define ASSERT(condition)
@ OVERLAY_SCREEN_MARIO
Definition enums.h:2381
@ DEBUG_SCRIPTS_NONE
Definition enums.h:3874
@ GLOBAL_OVERRIDES_MESSAGES_OVER_FRONTUI
Definition enums.h:3908
@ GLOBAL_OVERRIDES_SOFT_RESET
Definition enums.h:3909
@ GLOBAL_OVERRIDES_MESSAGES_OVER_CURTAINS
Definition enums.h:3923
@ GLOBAL_OVERRIDES_DISABLE_RENDER_WORLD
Definition enums.h:3906
@ GLOBAL_OVERRIDES_WINDOWS_OVER_CURTAINS
Definition enums.h:3920
@ GLOBAL_OVERRIDES_DISABLE_DRAW_FRAME
Definition enums.h:3907
void render_workers_frontUI(void)
Definition worker.c:150
void render_screen_overlay_backUI(void)
void func_802C3EE4(void)
void render_messages(void)
Definition msg.c:574
void render_workers_backUI(void)
Definition worker.c:163
void player_render_interact_prompts(void)
Definition 77480.c:1027
void render_curtains(void)
Definition curtains.c:223
void crash_screen_set_draw_info(u16 *frameBufPtr, s16 width, s16 height)
void render_frame(s32 flag)
Definition cam_main.c:90
void render_window_root(void)
Definition windows.c:347
void render_screen_overlay_frontUI(void)
void render_effects_UI(void)
Definition effects.c:140
void render_game_mode_backUI(void)
Definition game_modes.c:172
void render_game_mode_frontUI(void)
Definition game_modes.c:180
void render_hud_elements_frontUI(void)
void render_hud_elements_backUI(void)
s16 SoftResetOverlayAlpha
Definition main_loop.c:32
s32 gOverrideFlags
Definition main_loop.c:10
GameStatus * gGameStatusPtr
Definition main_loop.c:31
s16 SoftResetState
Definition main_loop.c:33
u16 gMatrixListPos
Definition main_loop.c:44
s32 gCurrentDisplayContextIndex
Definition main_loop.c:46
Mtx MasterIdentityMtx
Definition main_loop.c:36
void _render_transition_stencil(u8, f32, ScreenOverlay *)
#define GFX_PROFILER_SWITCH(complete, begin)
Definition profiling.h:212
@ PROFILER_TIME_SUB_GFX_HUD_ELEMENTS
Definition profiling.h:67
@ PROFILER_TIME_SUB_GFX_BACK_UI
Definition profiling.h:67
@ PROFILER_TIME_SUB_GFX_FRONT_UI
Definition profiling.h:67
@ PROFILER_TIME_SUB_GFX_UPDATE
Definition profiling.h:67
#define profiler_print_times()
Definition profiling.h:158
#define GFX_PROFILER_COMPLETE(which)
Definition profiling.h:217
#define ARRAY_COUNT(arr)
Definition macros.h:40
void spr_render_init(void)
Definition sprite.c:815

Referenced by gfxRetrace_Callback().

◆ gfx_init_state()

void gfx_init_state ( void )

Definition at line 34 of file background_gfx.c.

Referenced by appendGfx_reset_tile_pattern().

◆ create_audio_system()

void create_audio_system ( void )

Definition at line 37 of file system.c.

37 {
38 u32 i;
39 u32 outputRate, frameSize;
41
43 nuAuPreNMI = 0;
45 config.num_pvoice = 24;
46 config.num_bus = 4;
48 frameSize = (nusched.retraceCount * outputRate + (VIDEO_FRAMES_PER_SECOND - 1)) / VIDEO_FRAMES_PER_SECOND;
49 config.outputRate = outputRate;
50 config.unused_0C = 0;
51 config.heap = &nuAuHeap;
52 config.dmaNew = nuAuDmaNew;
55
56 for (i = 0; i < ARRAY_COUNT(AlCmdListBuffers); i++) {
58 }
59
60 for (i = 0; i < ARRAY_COUNT(nuAuTasks); i++) {
61 nuAuTasks[i].next = NULL;
62 nuAuTasks[i].msg = 0;
63 nuAuTasks[i].list.t.type = M_AUDTASK;
64#if VERSION_IQUE
65 nuAuTasks[i].list.t.ucode_boot = (u64*) rspbootTextStart;
66 nuAuTasks[i].list.t.ucode_boot_size = (u32) rspbootTextEnd - (u32) rspbootTextStart;
67#else
68 nuAuTasks[i].list.t.ucode_boot = (u64*) rspbootUcodeBuffer;
69 nuAuTasks[i].list.t.ucode_boot_size = 0x100;
70#endif
71 nuAuTasks[i].list.t.ucode = n_aspMain_text_bin;
72 nuAuTasks[i].list.t.ucode_data = n_aspMain_data_bin;
73 nuAuTasks[i].list.t.ucode_data_size = SP_UCODE_DATA_SIZE;
74 nuAuTasks[i].list.t.dram_stack = NULL;
75 nuAuTasks[i].list.t.dram_stack_size = 0;
76 nuAuTasks[i].list.t.output_buff = NULL;
77 nuAuTasks[i].list.t.output_buff_size = 0;
78 nuAuTasks[i].list.t.yield_data_ptr = NULL;
79 nuAuTasks[i].list.t.yield_data_size = 0;
80 }
81
82 for (i = 0; i < ARRAY_COUNT(D_800A3628); i++) {
83 D_800A3628[i] = alHeapAlloc(config.heap, 1, AlFrameSize * 4);
84 }
85
86 nuAuDmaBufList[0].node.next = nuAuDmaBufList[0].node.prev = NULL;
87 for (i = 0; i < ARRAY_COUNT(nuAuDmaBufList) - 1; i++) {
89 nuAuDmaBufList[i].ptr = alHeapAlloc(config.heap, 1, 0x500);
90 }
91 nuAuDmaBufList[i].ptr = alHeapAlloc(config.heap, 1, 0x500);
92
96 au_engine_init(config.outputRate);
99}
#define AUDIO_HEAP_SIZE
Definition audio.h:52
#define AUDIO_SAMPLES
Definition audio.h:16
#define VIDEO_FRAMES_PER_SECOND
Definition audio.h:51
#define HARDWARE_OUTPUT_RATE
Definition audio.h:23
#define AUDIO_MAX_SAMPLES
Definition audio.h:53
#define AUDIO_COMMAND_LIST_BUFFER_SIZE
Definition audio.h:54
void au_driver_init(AuSynDriver *driver, ALConfig *config)
Definition syn_driver.c:25
void au_engine_init(s32 outputRate)
Definition engine.c:36
void * alHeapAlloc(ALHeap *heap, s32 count, s32 size)
Definition syn_driver.c:765
@ THREAD_ID_AUDIO
Definition enums.h:5984
void alHeapInit(ALHeap *hp, u8 *base, s32 len)
Definition syn_driver.c:747
BSS OSThread nuAuMgrThread
Definition system.c:13
u8 AuHeapBase[AUDIO_HEAP_SIZE]
u8 nuAuPreNMI
Definition system.c:5
u64 n_aspMain_data_bin[]
AuSynDriver auSynDriver
Definition system.c:27
BSS NUDMABuffer nuAuDmaBufList[50]
Definition system.c:24
ALHeap nuAuHeap
Definition system.c:26
void alLink(ALLink *element, ALLink *after)
Links a new element into a doubly-linked list.
Definition system.c:345
BSS NUScTask nuAuTasks[3]
Definition system.c:16
BSS s32 AlFrameSize
Definition system.c:18
void nuAuPreNMIProc(NUScMsg mesg_type, u32 frameCounter)
Handles global audio fade-out during system resets (NMI).
Definition system.c:317
BSS OSMesg nuAuDmaMesgBuf[50]
Definition system.c:21
BSS u8 * D_800A3628[3]
Definition system.c:17
void nuAuMgr(void *arg)
Definition system.c:108
BSS u64 AuStack[NU_AU_STACK_SIZE/sizeof(u64)]
Definition system.c:14
u64 n_aspMain_text_bin[]
BSS s32 AlMinFrameSize
Definition system.c:19
u8 nuAuTaskStop
Definition system.c:9
ALDMAproc nuAuDmaNew(NUDMAState **state)
Initializes the audio DMA state and returns the DMA callback.
Definition system.c:265
NUAuPreNMIFunc nuAuPreNMIFunc
Definition system.c:6
BSS Acmd * AlCmdListBuffers[3]
Definition system.c:15
BSS OSMesgQueue nuAuDmaMesgQ
Definition system.c:20

◆ load_engine_data()

void load_engine_data ( void )

Definition at line 283 of file main_loop.c.

283 {
284 s32 i;
285
292
293 gOverrideFlags = 0;
324 clear_npcs();
339 poll_rumble();
340
341 for (i = 0; i < ARRAY_COUNT(gGameStatusPtr->unk_50); i++) {
342 gGameStatusPtr->unk_50[i] = 3;
343 gGameStatusPtr->unk_48[i] = 12;
344 }
345
348}
Vec2b altViewportOffset
@ INTRO_PART_NONE
Definition enums.h:3589
@ TIME_FREEZE_NONE
Definition enums.h:3498
@ PLAYER_SPRITES_MARIO_WORLD
Definition enums.h:5931
void clear_script_list(void)
void clear_item_entity_data(void)
void create_cameras(void)
Definition cam_main.c:254
void clear_animator_list(void)
Definition animator.c:222
void clear_saved_variables(void)
Definition vars_access.c:5
void clear_screen_overlays(void)
void initialize_curtains(void)
Definition curtains.c:212
void clear_render_tasks(void)
Definition model.c:4534
void clear_model_data(void)
Definition model.c:2364
void clear_trigger_data(void)
Definition trigger.c:13
void clear_character_set(void)
Definition msg.c:192
void clear_sprite_shading_data(void)
void clear_entity_data(b32)
Definition entity.c:787
void func_80028838(void)
Definition input.c:23
void clear_printers(void)
Definition msg.c:196
void clear_player_status(void)
Definition 77480.c:806
void clear_effect_data(void)
Definition effects.c:41
HeapNode * general_heap_create(void)
Definition heap.c:6
void clear_worker_list(void)
Definition worker.c:10
void reset_ambient_sounds(void)
Definition ambience.c:32
void clear_windows(void)
Definition windows.c:135
void clear_player_data(void)
Definition inventory.c:54
void bgm_reset_sequence_players(void)
Definition bgm_control.c:64
void clear_entity_models(void)
void reset_background_settings(void)
Definition background.c:33
void poll_rumble(void)
Definition rumble.c:10
void fio_init_flash(void)
Definition fio.c:232
void clear_game_mode(void)
Definition game_modes.c:150
void set_game_mode(s32 modeID)
Definition game_modes.c:127
@ GAME_MODE_STARTUP
Definition game_modes.h:7
void hud_element_clear_cache(void)
s8 gGameStepDelayCount
Definition main_loop.c:18
s32 gTimeFreezeMode
Definition main_loop.c:11
void clear_npcs(void)
Definition npc.c:59
void init_encounter_status(void)
Definition npc.c:2189
void sfx_clear_sounds(void)
#define DMA_COPY_SEGMENT(segment)
Definition macros.h:538
void spr_init_sprites(s32 playerSpriteSet)
Definition sprite.c:765

Referenced by load_engine_data_obfuscated().

◆ gfx_task_end_callback()

void gfx_task_end_callback ( void * unk)

Definition at line 48 of file main.c.

48 {
50}
#define profiler_rsp_completed(which)
Definition profiling.h:161

Referenced by boot_main().

◆ boot_main()

void boot_main ( void * data)

Definition at line 52 of file main.c.

52 {
53#if VERSION_JP
54 if (osTvType == OS_TV_NTSC) {
59 } else {
60 PANIC();
61 }
62#else // not VERSION_JP
63 if (osTvType == OS_TV_NTSC) {
66 } else if (osTvType == OS_TV_MPAL) {
69 } else {
70 PANIC();
71 }
72
75#endif
76
77#if !VERSION_IQUE
79#endif
80 nuGfxInit();
82
83#if !VERSION_IQUE
85#endif
88
94
95 while (TRUE) {}
96}
void is_debug_init(void)
Definition is_debug.c:19
void load_obfuscation_shims(void)
void shim_create_audio_system_obfuscated(void)
void shim_load_engine_data_obfuscated(void)
void crash_screen_init(void)
void gfxPreNMI_Callback(void)
Definition main.c:206
void gfxRetrace_Callback(s32)
Definition main.c:98
void gfx_task_end_callback(void *unk)
Definition main.c:48
#define PANIC()
Definition macros.h:55
GameStatus * gGameStatusPtr
Definition main_loop.c:31
u32 gRandSeed
Definition 43F0.c:27

Variable Documentation

◆ nuYieldBuf

Definition at line 6 of file main.c.

◆ __osThreadSave

OSThread __osThreadSave

Definition at line 7 of file main.c.

◆ D_80074010

s16 D_80074010 = 8

Definition at line 14 of file main.c.

Referenced by appendGfx_reset_tile_pattern().

◆ ResetGameState

s32 ResetGameState
extern

Definition at line 4 of file main_pre.c.

Referenced by gfxPreNMI_Callback(), and gfxRetrace_Callback().

◆ ResetSavedFrameImg

u16* ResetSavedFrameImg
extern

Definition at line 5 of file main_pre.c.

Referenced by appendGfx_reset_tile_pattern(), and gfxRetrace_Callback().

◆ D_80073E08

s16 D_80073E08
extern

Definition at line 6 of file main_pre.c.

Referenced by gfxRetrace_Callback().

◆ D_80073E0A

s16 D_80073E0A
extern

Definition at line 7 of file main_pre.c.

Referenced by gfxRetrace_Callback().

◆ ResetTilesImg

IMG_BIN ResetTilesImg[]
extern

◆ DisplayContexts

DisplayContext DisplayContexts[2]
extern

Definition at line 15 of file main_loop.c.

Referenced by appendGfx_reset_tile_pattern(), and gfx_task_background().

◆ ResetFrameBufferArray

u16* ResetFrameBufferArray

Definition at line 45 of file main.c.

Referenced by gfxRetrace_Callback().

◆ nuGfxZBuffer