Mario Kart 64
Loading...
Searching...
No Matches
main.c File Reference
#include <ultra64.h>
#include <PR/os.h>
#include <PR/ucode.h>
#include <macros.h>
#include <decode.h>
#include <mk64.h>
#include "profiler.h"
#include "main.h"
#include "racing/memory.h"
#include "menus.h"
#include <segments.h>
#include <common_structs.h>
#include <defines.h>
#include "buffers.h"
#include "camera.h"
#include "race_logic.h"
#include "skybox_and_splitscreen.h"
#include "render_objects.h"
#include "effects.h"
#include "code_80281780.h"
#include "audio/external.h"
#include "code_800029B0.h"
#include "code_80280000.h"
#include "podium_ceremony_actors.h"
#include "code_80091750.h"
#include "code_80057C60.h"
#include "player_controller.h"
#include "render_player.h"
#include "render_courses.h"
#include "actors.h"
#include "staff_ghosts.h"
#include <debug.h>
#include "crash_screen.h"
#include "buffers/gfx_output_buffer.h"
Include dependency graph for main.c:

Macros

#define D_800DC510_AS_U16
 

Functions

void func_80091B78 (void)
 
void audio_init ()
 
void create_debug_thread (void)
 
void start_debug_thread (void)
 
struct SPTaskcreate_next_audio_frame_task (void)
 
void create_thread (OSThread *thread, OSId id, void(*entry)(void *), void *arg, void *sp, OSPri pri)
 
void isPrintfInit (void)
 
void main_func (void)
 
void thread1_idle (void *arg)
 
void setup_mesg_queues (void)
 
void start_sptask (s32 taskType)
 
void create_gfx_task_structure (void)
 
void init_controllers (void)
 
void update_controller (s32 index)
 
void read_controllers (void)
 
void func_80000BEC (void)
 
void dispatch_audio_sptask (struct SPTask *spTask)
 
void exec_display_list (struct SPTask *spTask)
 
void init_rcp (void)
 
void end_master_display_list (void)
 
void * clear_framebuffer (s32 color)
 
void rendering_init (void)
 
void config_gfx_pool (void)
 
void display_and_vsync (void)
 
void init_segment_ending_sequences (void)
 
void init_segment_racing (void)
 
void dma_copy (u8 *dest, u8 *romAddr, size_t size)
 
void setup_game_memory (void)
 
void game_init_clear_framebuffer (void)
 
void race_logic_loop (void)
 
void game_state_handler (void)
 
void interrupt_gfx_sptask (void)
 
void receive_new_tasks (void)
 
void set_vblank_handler (s32 index, struct VblankHandler *handler, OSMesgQueue *queue, OSMesg *msg)
 
void start_gfx_sptask (void)
 
void handle_vblank (void)
 
void handle_dp_complete (void)
 
void handle_sp_complete (void)
 
void thread3_video (UNUSED void *arg0)
 
void func_800025D4 (void)
 
void func_80002600 (void)
 
void func_8000262C (void)
 
void func_80002658 (void)
 
void update_gamestate (void)
 
void thread5_game_loop (UNUSED void *arg)
 
void thread4_audio (UNUSED void *arg)
 

Variables

struct VblankHandlergVblankHandler1 = NULL
 
struct VblankHandlergVblankHandler2 = NULL
 
struct SPTaskgActiveSPTask = NULL
 
struct SPTasksCurrentAudioSPTask = NULL
 
struct SPTasksCurrentDisplaySPTask = NULL
 
struct SPTasksNextAudioSPTask = NULL
 
struct SPTasksNextDisplaySPTask = NULL
 
struct Controller gControllers [NUM_PLAYERS]
 
struct ControllergControllerOne = &gControllers[0]
 
struct ControllergControllerTwo = &gControllers[1]
 
struct ControllergControllerThree = &gControllers[2]
 
struct ControllergControllerFour = &gControllers[3]
 
struct ControllergControllerFive = &gControllers[4]
 
struct ControllergControllerSix = &gControllers[5]
 
struct ControllergControllerSeven = &gControllers[6]
 
struct ControllergControllerEight = &gControllers[7]
 
Player gPlayers [NUM_PLAYERS]
 
PlayergPlayerOne = &gPlayers[0]
 
PlayergPlayerTwo = &gPlayers[1]
 
PlayergPlayerThree = &gPlayers[2]
 
PlayergPlayerFour = &gPlayers[3]
 
PlayergPlayerFive = &gPlayers[4]
 
PlayergPlayerSix = &gPlayers[5]
 
PlayergPlayerSeven = &gPlayers[6]
 
PlayergPlayerEight = &gPlayers[7]
 
PlayergPlayerOneCopy = &gPlayers[0]
 
PlayergPlayerTwoCopy = &gPlayers[1]
 
UNUSED PlayergPlayerThreeCopy = &gPlayers[2]
 
UNUSED PlayergPlayerFourCopy = &gPlayers[3]
 
UNUSED s32 D_800FD850 [3]
 
struct GfxPool gGfxPools [2]
 
struct GfxPoolgGfxPool
 
UNUSED s32 gfxPool_padding
 
struct VblankHandler gGameVblankHandler
 
struct VblankHandler sSoundVblankHandler
 
OSMesgQueue gDmaMesgQueue
 
OSMesgQueue gGameVblankQueue
 
OSMesgQueue gGfxVblankQueue
 
OSMesgQueue unused_gMsgQueue
 
OSMesgQueue gIntrMesgQueue
 
OSMesgQueue gSPTaskMesgQueue
 
OSMesgQueue sSoundMesgQueue
 
OSMesg sSoundMesgBuf [1]
 
OSMesg gDmaMesgBuf [1]
 
OSMesg gGameMesgBuf
 
OSMesg gGfxMesgBuf [1]
 
UNUSED OSMesg D_8014F010
 
UNUSED OSMesg D_8014F014
 
OSMesg gIntrMesgBuf [16]
 
OSMesg gSPTaskMesgBuf [16]
 
OSMesg gMainReceivedMesg
 
OSIoMesg gDmaIoMesg
 
OSMesgQueue gSIEventMesgQueue
 
OSMesg gSIEventMesgBuf [3]
 
OSContStatus gControllerStatuses [4]
 
OSContPad gControllerPads [4]
 
u8 gControllerBits
 
CollisionGrid gCollisionGrid [1024]
 
u16 gNumActors
 
u16 gMatrixObjectCount
 
s32 gTickSpeed
 
f32 D_80150118
 
u16 wasSoftReset
 
u16 D_8015011E
 
s32 D_80150120
 
s32 gGotoMode
 
UNUSED s32 D_80150128
 
UNUSED s32 D_8015012C
 
f32 gCameraZoom [4]
 
UNUSED s32 D_80150140
 
UNUSED s32 D_80150144
 
f32 gScreenAspect
 
f32 D_8015014C
 
f32 D_80150150
 
UNUSED f32 D_80150154
 
struct D_80150158 gD_80150158 [16]
 
uintptr_t gSegmentTable [16]
 
Gfx * gDisplayListHead
 
struct SPTaskgGfxSPTask
 
s32 D_801502A0
 
s32 D_801502A4
 
u16gPhysicalFramebuffers [3]
 
uintptr_t gPhysicalZBuffer
 
UNUSED u32 D_801502B8
 
UNUSED u32 D_801502BC
 
Mat4 D_801502C0
 
s32 padding [2048]
 
u16 D_80152300 [4]
 
u16 D_80152308
 
UNUSED OSThread paddingThread
 
OSThread gIdleThread
 
ALIGNED8 u8 gIdleThreadStack [STACKSIZE]
 
OSThread gVideoThread
 
ALIGNED8 u8 gVideoThreadStack [STACKSIZE]
 
UNUSED OSThread D_80156820
 
UNUSED ALIGNED8 u8 D_8015680_Stack [STACKSIZE]
 
OSThread gGameLoopThread
 
ALIGNED8 u8 gGameLoopThreadStack [STACKSIZE]
 
OSThread gAudioThread
 
ALIGNED8 u8 gAudioThreadStack [STACKSIZE]
 
UNUSED OSThread D_8015CD30
 
UNUSED ALIGNED8 u8 D_8015CD30_Stack [STACKSIZE/2]
 
ALIGNED8 u8 gGfxSPTaskYieldBuffer [4352]
 
ALIGNED8 u32 gGfxSPTaskStack [256]
 
OSMesg gPIMesgBuf [32]
 
OSMesgQueue gPIMesgQueue
 
s32 gGamestate = 0xFFFF
 
u16 D_800DC510 = 0
 
u16 D_800DC514 = 0
 
u16 creditsRenderMode = 0
 
u16 gDemoMode = DEMO_MODE_INACTIVE
 
u16 gEnableDebugMode = DEBUG_MODE
 
s32 gGamestateNext = 7
 
UNUSED s32 D_800DC528 = 1
 
s32 gActiveScreenMode = SCREEN_MODE_1P
 
s32 gScreenModeSelection = SCREEN_MODE_1P
 
UNUSED s32 D_800DC534 = 0
 
s32 gPlayerCountSelection1 = 2
 
s32 gModeSelection = GRAND_PRIX
 
s32 D_800DC540 = 0
 
s32 D_800DC544 = 0
 
s32 gCCSelection = CC_50
 
s32 gGlobalTimer = 0
 
UNUSED s32 D_800DC550 = 0
 
UNUSED s32 D_800DC554 = 0
 
UNUSED s32 D_800DC558 = 0
 
u16 sRenderedFramebuffer = 0
 
u16 sRenderingFramebuffer = 0
 
UNUSED u16 D_800DC564 = 0
 
s32 D_800DC568 = 0
 
s32 D_800DC56C [8] = { 0 }
 
s16 sNumVBlanks = 0
 
UNUSED s16 D_800DC590 = 0
 
f32 gVBlankTimer = 0.0f
 
f32 gCourseTimer = 0.0f
 

Macro Definition Documentation

◆ D_800DC510_AS_U16

#define D_800DC510_AS_U16

Function Documentation

◆ audio_init()

void audio_init ( )
Here is the caller graph for this function:

◆ clear_framebuffer()

void * clear_framebuffer ( s32 color)
Todo
Why did void* work for matching
Here is the caller graph for this function:

◆ config_gfx_pool()

void config_gfx_pool ( void )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ create_debug_thread()

void create_debug_thread ( void )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ create_gfx_task_structure()

void create_gfx_task_structure ( void )

Initializes the Fast3D OSTask structure. Loads F3DEX or F3DLX based on the number of players

Here is the call graph for this function:
Here is the caller graph for this function:

◆ create_next_audio_frame_task()

struct SPTask * create_next_audio_frame_task ( void )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ create_thread()

void create_thread ( OSThread * thread,
OSId id,
void(* entry )(void *),
void * arg,
void * sp,
OSPri pri )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ dispatch_audio_sptask()

void dispatch_audio_sptask ( struct SPTask * spTask)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ display_and_vsync()

void display_and_vsync ( void )

Send current master display list for rendering. Tell the VI which colour framebuffer to display. Yields to the VI framerate twice, locking the game at 30 FPS. Selects the next framebuffer to be rendered and displayed.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dma_copy()

void dma_copy ( u8 * dest,
u8 * romAddr,
size_t size )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ end_master_display_list()

void end_master_display_list ( void )

End the master display list and initialize the graphics task structure for the next frame to be rendered.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ exec_display_list()

void exec_display_list ( struct SPTask * spTask)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ func_80000BEC()

void func_80000BEC ( void )
Here is the caller graph for this function:

◆ func_800025D4()

void func_800025D4 ( void )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ func_80002600()

void func_80002600 ( void )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ func_8000262C()

void func_8000262C ( void )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ func_80002658()

void func_80002658 ( void )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ func_80091B78()

void func_80091B78 ( void )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ game_init_clear_framebuffer()

void game_init_clear_framebuffer ( void )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ game_state_handler()

void game_state_handler ( void )

mk64's game loop depends on a series of states. It runs a wide branching series of code based on these states. State 1) Clear framebuffer State 2) Run menus State 3) Process race related logic State 4) Ending sequence State 5) Credits

Note that the state doesn't flip-flop at random but is permanent until the state changes (ie. Exit menus and start a race).

Here is the call graph for this function:
Here is the caller graph for this function:

◆ handle_dp_complete()

void handle_dp_complete ( void )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ handle_sp_complete()

void handle_sp_complete ( void )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ handle_vblank()

void handle_vblank ( void )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ init_controllers()

void init_controllers ( void )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ init_rcp()

void init_rcp ( void )

Set default RCP (Reality Co-Processor) settings.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ init_segment_ending_sequences()

void init_segment_ending_sequences ( void )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ init_segment_racing()

void init_segment_racing ( void )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ interrupt_gfx_sptask()

void interrupt_gfx_sptask ( void )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ isPrintfInit()

void isPrintfInit ( void )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ main_func()

void main_func ( void )
Here is the call graph for this function:

◆ race_logic_loop()

void race_logic_loop ( void )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ read_controllers()

void read_controllers ( void )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ receive_new_tasks()

void receive_new_tasks ( void )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rendering_init()

void rendering_init ( void )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ set_vblank_handler()

void set_vblank_handler ( s32 index,
struct VblankHandler * handler,
OSMesgQueue * queue,
OSMesg * msg )
Here is the caller graph for this function:

◆ setup_game_memory()

void setup_game_memory ( void )

Setup main segments and framebuffers.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setup_mesg_queues()

void setup_mesg_queues ( void )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ start_debug_thread()

void start_debug_thread ( void )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ start_gfx_sptask()

void start_gfx_sptask ( void )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ start_sptask()

void start_sptask ( s32 taskType)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ thread1_idle()

void thread1_idle ( void * arg)

Initialize hardware, start main thread, then idle.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ thread3_video()

void thread3_video ( UNUSED void * arg0)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ thread4_audio()

void thread4_audio ( UNUSED void * arg)

Sound processing thread. Runs at 50 or 60 FPS according to osTvType.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ thread5_game_loop()

void thread5_game_loop ( UNUSED void * arg)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ update_controller()

void update_controller ( s32 index)
Here is the caller graph for this function:

◆ update_gamestate()

void update_gamestate ( void )

Sets courseId to NULL if

Bug
Reloading this segment makes random_u16() deterministic for player spawn order. In laymens terms, random_u16() outputs the same value every time.
Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ creditsRenderMode

u16 creditsRenderMode = 0

◆ D_800DC510

u16 D_800DC510 = 0

◆ D_800DC514

u16 D_800DC514 = 0

◆ D_800DC528

UNUSED s32 D_800DC528 = 1

◆ D_800DC534

UNUSED s32 D_800DC534 = 0

◆ D_800DC540

s32 D_800DC540 = 0

◆ D_800DC544

s32 D_800DC544 = 0

◆ D_800DC550

UNUSED s32 D_800DC550 = 0

◆ D_800DC554

UNUSED s32 D_800DC554 = 0

◆ D_800DC558

UNUSED s32 D_800DC558 = 0

◆ D_800DC564

UNUSED u16 D_800DC564 = 0

◆ D_800DC568

s32 D_800DC568 = 0

◆ D_800DC56C

s32 D_800DC56C[8] = { 0 }

◆ D_800DC590

UNUSED s16 D_800DC590 = 0

◆ D_800FD850

UNUSED s32 D_800FD850[3]

◆ D_8014F010

UNUSED OSMesg D_8014F010

◆ D_8014F014

UNUSED OSMesg D_8014F014

◆ D_80150118

f32 D_80150118

◆ D_8015011E

u16 D_8015011E

◆ D_80150120

s32 D_80150120

◆ D_80150128

UNUSED s32 D_80150128

◆ D_8015012C

UNUSED s32 D_8015012C

◆ D_80150140

UNUSED s32 D_80150140

◆ D_80150144

UNUSED s32 D_80150144

◆ D_8015014C

f32 D_8015014C

◆ D_80150150

f32 D_80150150

◆ D_80150154

UNUSED f32 D_80150154

◆ D_801502A0

s32 D_801502A0

◆ D_801502A4

s32 D_801502A4

◆ D_801502B8

UNUSED u32 D_801502B8

◆ D_801502BC

UNUSED u32 D_801502BC

◆ D_801502C0

Mat4 D_801502C0

◆ D_80152300

u16 D_80152300[4]

◆ D_80152308

u16 D_80152308

◆ D_8015680_Stack

UNUSED ALIGNED8 u8 D_8015680_Stack[STACKSIZE]

◆ D_80156820

UNUSED OSThread D_80156820

◆ D_8015CD30

UNUSED OSThread D_8015CD30

◆ D_8015CD30_Stack

UNUSED ALIGNED8 u8 D_8015CD30_Stack[STACKSIZE/2]

◆ gActiveScreenMode

s32 gActiveScreenMode = SCREEN_MODE_1P

◆ gActiveSPTask

struct SPTask* gActiveSPTask = NULL

◆ gAudioThread

OSThread gAudioThread

◆ gAudioThreadStack

ALIGNED8 u8 gAudioThreadStack[STACKSIZE]

◆ gCameraZoom

f32 gCameraZoom[4]

◆ gCCSelection

s32 gCCSelection = CC_50

◆ gCollisionGrid

CollisionGrid gCollisionGrid[1024]

◆ gControllerBits

u8 gControllerBits

◆ gControllerEight

struct Controller* gControllerEight = &gControllers[7]

◆ gControllerFive

struct Controller* gControllerFive = &gControllers[4]

◆ gControllerFour

struct Controller* gControllerFour = &gControllers[3]

◆ gControllerOne

struct Controller* gControllerOne = &gControllers[0]

◆ gControllerPads

OSContPad gControllerPads[4]

◆ gControllers

struct Controller gControllers[NUM_PLAYERS]

◆ gControllerSeven

struct Controller* gControllerSeven = &gControllers[6]

◆ gControllerSix

struct Controller* gControllerSix = &gControllers[5]

◆ gControllerStatuses

OSContStatus gControllerStatuses[4]

◆ gControllerThree

struct Controller* gControllerThree = &gControllers[2]

◆ gControllerTwo

struct Controller* gControllerTwo = &gControllers[1]

◆ gCourseTimer

f32 gCourseTimer = 0.0f

◆ gD_80150158

struct D_80150158 gD_80150158[16]

◆ gDemoMode

u16 gDemoMode = DEMO_MODE_INACTIVE

◆ gDisplayListHead

Gfx* gDisplayListHead

◆ gDmaIoMesg

OSIoMesg gDmaIoMesg

◆ gDmaMesgBuf

OSMesg gDmaMesgBuf[1]

◆ gDmaMesgQueue

OSMesgQueue gDmaMesgQueue

◆ gEnableDebugMode

u16 gEnableDebugMode = DEBUG_MODE

◆ gfxPool_padding

UNUSED s32 gfxPool_padding

◆ gGameLoopThread

OSThread gGameLoopThread

◆ gGameLoopThreadStack

ALIGNED8 u8 gGameLoopThreadStack[STACKSIZE]

◆ gGameMesgBuf

OSMesg gGameMesgBuf

◆ gGamestate

s32 gGamestate = 0xFFFF

◆ gGamestateNext

s32 gGamestateNext = 7

◆ gGameVblankHandler

struct VblankHandler gGameVblankHandler

◆ gGameVblankQueue

OSMesgQueue gGameVblankQueue

◆ gGfxMesgBuf

OSMesg gGfxMesgBuf[1]

◆ gGfxPool

struct GfxPool* gGfxPool

◆ gGfxPools

struct GfxPool gGfxPools[2]

◆ gGfxSPTask

struct SPTask* gGfxSPTask

◆ gGfxSPTaskStack

ALIGNED8 u32 gGfxSPTaskStack[256]

◆ gGfxSPTaskYieldBuffer

ALIGNED8 u8 gGfxSPTaskYieldBuffer[4352]

◆ gGfxVblankQueue

OSMesgQueue gGfxVblankQueue

◆ gGlobalTimer

s32 gGlobalTimer = 0

◆ gGotoMode

s32 gGotoMode

◆ gIdleThread

OSThread gIdleThread

◆ gIdleThreadStack

ALIGNED8 u8 gIdleThreadStack[STACKSIZE]

◆ gIntrMesgBuf

OSMesg gIntrMesgBuf[16]

◆ gIntrMesgQueue

OSMesgQueue gIntrMesgQueue

◆ gMainReceivedMesg

OSMesg gMainReceivedMesg

◆ gMatrixObjectCount

u16 gMatrixObjectCount

◆ gModeSelection

s32 gModeSelection = GRAND_PRIX

◆ gNumActors

u16 gNumActors

◆ gPhysicalFramebuffers

u16* gPhysicalFramebuffers[3]

◆ gPhysicalZBuffer

uintptr_t gPhysicalZBuffer

◆ gPIMesgBuf

OSMesg gPIMesgBuf[32]

◆ gPIMesgQueue

OSMesgQueue gPIMesgQueue

◆ gPlayerCountSelection1

s32 gPlayerCountSelection1 = 2

◆ gPlayerEight

Player* gPlayerEight = &gPlayers[7]

◆ gPlayerFive

Player* gPlayerFive = &gPlayers[4]

◆ gPlayerFour

Player* gPlayerFour = &gPlayers[3]

◆ gPlayerFourCopy

UNUSED Player* gPlayerFourCopy = &gPlayers[3]

◆ gPlayerOne

Player* gPlayerOne = &gPlayers[0]

◆ gPlayerOneCopy

Player* gPlayerOneCopy = &gPlayers[0]

◆ gPlayers

Player gPlayers[NUM_PLAYERS]

◆ gPlayerSeven

Player* gPlayerSeven = &gPlayers[6]

◆ gPlayerSix

Player* gPlayerSix = &gPlayers[5]

◆ gPlayerThree

Player* gPlayerThree = &gPlayers[2]

◆ gPlayerThreeCopy

UNUSED Player* gPlayerThreeCopy = &gPlayers[2]

◆ gPlayerTwo

Player* gPlayerTwo = &gPlayers[1]

◆ gPlayerTwoCopy

Player* gPlayerTwoCopy = &gPlayers[1]

◆ gScreenAspect

f32 gScreenAspect

◆ gScreenModeSelection

s32 gScreenModeSelection = SCREEN_MODE_1P

◆ gSegmentTable

uintptr_t gSegmentTable[16]

◆ gSIEventMesgBuf

OSMesg gSIEventMesgBuf[3]

◆ gSIEventMesgQueue

OSMesgQueue gSIEventMesgQueue

◆ gSPTaskMesgBuf

OSMesg gSPTaskMesgBuf[16]

◆ gSPTaskMesgQueue

OSMesgQueue gSPTaskMesgQueue

◆ gTickSpeed

s32 gTickSpeed

◆ gVblankHandler1

struct VblankHandler* gVblankHandler1 = NULL

◆ gVblankHandler2

struct VblankHandler* gVblankHandler2 = NULL

◆ gVBlankTimer

f32 gVBlankTimer = 0.0f

◆ gVideoThread

OSThread gVideoThread

◆ gVideoThreadStack

ALIGNED8 u8 gVideoThreadStack[STACKSIZE]

◆ padding

s32 padding[2048]

◆ paddingThread

UNUSED OSThread paddingThread

◆ sCurrentAudioSPTask

struct SPTask* sCurrentAudioSPTask = NULL

◆ sCurrentDisplaySPTask

struct SPTask* sCurrentDisplaySPTask = NULL

◆ sNextAudioSPTask

struct SPTask* sNextAudioSPTask = NULL

◆ sNextDisplaySPTask

struct SPTask* sNextDisplaySPTask = NULL

◆ sNumVBlanks

s16 sNumVBlanks = 0

◆ sRenderedFramebuffer

u16 sRenderedFramebuffer = 0

◆ sRenderingFramebuffer

u16 sRenderingFramebuffer = 0

◆ sSoundMesgBuf

OSMesg sSoundMesgBuf[1]

◆ sSoundMesgQueue

OSMesgQueue sSoundMesgQueue

◆ sSoundVblankHandler

struct VblankHandler sSoundVblankHandler

◆ unused_gMsgQueue

OSMesgQueue unused_gMsgQueue

◆ wasSoftReset

u16 wasSoftReset