Super Mario 64 Source
A Super Mario 64 decompilation, brought to you by a bunch of clever folks.
Macros | Functions | Variables
main.c File Reference
#include <ultra64.h>
#include "sm64.h"
#include "audio/external.h"
#include "game.h"
#include "memory.h"
#include "sound_init.h"
#include "profiler.h"
#include "buffers.h"
#include "segments.h"
#include "main.h"

Macros

#define MESG_SP_COMPLETE   100
 
#define MESG_DP_COMPLETE   101
 
#define MESG_VI_VBLANK   102
 
#define MESG_START_GFX_SPTASK   103
 
#define MESG_NMI_REQUEST   104
 

Functions

void handle_debug_key_sequences (void)
 
void Unknown80246170 (void)
 
void Dummy802461CC (void)
 
void Dummy802461DC (void)
 
void Dummy802461EC (void)
 
void setup_mesg_queues (void)
 
void AllocPool (void)
 
void create_thread (OSThread *thread, OSId id, void(*entry)(void *), void *arg, void *sp, OSPri pri)
 
void handle_nmi_request (void)
 
void receive_new_tasks (void)
 
void start_sptask (s32 taskType)
 
void interrupt_gfx_sptask (void)
 
void start_gfx_sptask (void)
 
void pretend_audio_sptask_done (void)
 
void handle_vblank (void)
 
void handle_sp_complete (void)
 
void handle_dp_complete (void)
 
void thread3_main (UNUSED void *arg)
 
void set_vblank_handler (s32 index, struct VblankHandler *handler, OSMesgQueue *queue, OSMesg *msg)
 
void SendMessage (OSMesg *msg)
 
void dispatch_audio_sptask (struct SPTask *spTask)
 
void send_display_list (struct SPTask *spTask)
 
void turn_on_audio (void)
 
void turn_off_audio (void)
 
void thread1_idle (UNUSED void *arg)
 Initialize hardware, start main thread, then idle. More...
 
void Main (void)
 

Variables

OSThread D_80339210
 
OSThread gIdleThread
 
OSThread gMainThread
 
OSThread gGameLoopThread
 
OSThread gSoundThread
 
OSMesgQueue gPIMesgQueue
 
OSMesgQueue gIntrMesgQueue
 
OSMesgQueue gSPTaskMesgQueue
 
OSMesg gDmaMesgBuf [1]
 
OSMesg gPIMesgBuf [32]
 
OSMesg gSIEventMesgBuf [1]
 
OSMesg gIntrMesgBuf [16]
 
OSMesg gUnknownMesgBuf [16]
 
OSIoMesg gDmaIoMesg
 
OSMesg D_80339BEC
 
OSMesgQueue gDmaMesgQueue
 
OSMesgQueue gSIEventMesgQueue
 
struct VblankHandlergVblankHandler1 = NULL
 
struct VblankHandlergVblankHandler2 = NULL
 
struct SPTaskgActiveSPTask = NULL
 
struct SPTasksCurrentAudioSPTask = NULL
 
struct SPTasksCurrentDisplaySPTask = NULL
 
struct SPTasksNextAudioSPTask = NULL
 
struct SPTasksNextDisplaySPTask = NULL
 
s8 sAudioEnabled = 1
 
u32 sNumVblanks = 0
 
s8 gResetTimer = 0
 
s8 D_8032C648 = 0
 
s8 gDebugLevelSelect = 0
 
s8 D_8032C650 = 0
 
s8 gShowProfiler = FALSE
 
s8 gShowDebugText = FALSE
 

Macro Definition Documentation

◆ MESG_DP_COMPLETE

#define MESG_DP_COMPLETE   101

◆ MESG_NMI_REQUEST

#define MESG_NMI_REQUEST   104

◆ MESG_SP_COMPLETE

#define MESG_SP_COMPLETE   100

◆ MESG_START_GFX_SPTASK

#define MESG_START_GFX_SPTASK   103

◆ MESG_VI_VBLANK

#define MESG_VI_VBLANK   102

Function Documentation

◆ AllocPool()

void AllocPool ( void  )

◆ create_thread()

void create_thread ( OSThread thread,
OSId  id,
void(*)(void *)  entry,
void arg,
void sp,
OSPri  pri 
)

◆ dispatch_audio_sptask()

void dispatch_audio_sptask ( struct SPTask spTask)

◆ Dummy802461CC()

void Dummy802461CC ( void  )

◆ Dummy802461DC()

void Dummy802461DC ( void  )

◆ Dummy802461EC()

void Dummy802461EC ( void  )

◆ handle_debug_key_sequences()

void handle_debug_key_sequences ( void  )

◆ handle_dp_complete()

void handle_dp_complete ( void  )

◆ handle_nmi_request()

void handle_nmi_request ( void  )

◆ handle_sp_complete()

void handle_sp_complete ( void  )

◆ handle_vblank()

void handle_vblank ( void  )

◆ interrupt_gfx_sptask()

void interrupt_gfx_sptask ( void  )

◆ Main()

void Main ( void  )

◆ pretend_audio_sptask_done()

void pretend_audio_sptask_done ( void  )

◆ receive_new_tasks()

void receive_new_tasks ( void  )

◆ send_display_list()

void send_display_list ( struct SPTask spTask)

◆ SendMessage()

void SendMessage ( OSMesg *  msg)

◆ set_vblank_handler()

void set_vblank_handler ( s32  index,
struct VblankHandler handler,
OSMesgQueue *  queue,
OSMesg *  msg 
)

◆ setup_mesg_queues()

void setup_mesg_queues ( void  )

◆ start_gfx_sptask()

void start_gfx_sptask ( void  )

◆ start_sptask()

void start_sptask ( s32  taskType)

◆ thread1_idle()

void thread1_idle ( UNUSED void arg)

Initialize hardware, start main thread, then idle.

◆ thread3_main()

void thread3_main ( UNUSED void arg)

◆ turn_off_audio()

void turn_off_audio ( void  )

◆ turn_on_audio()

void turn_on_audio ( void  )

◆ Unknown80246170()

void Unknown80246170 ( void  )

Variable Documentation

◆ D_8032C648

s8 D_8032C648 = 0

◆ D_8032C650

s8 D_8032C650 = 0

◆ D_80339210

OSThread D_80339210

◆ D_80339BEC

OSMesg D_80339BEC

◆ gActiveSPTask

struct SPTask* gActiveSPTask = NULL

◆ gDebugLevelSelect

s8 gDebugLevelSelect = 0

◆ gDmaIoMesg

OSIoMesg gDmaIoMesg

◆ gDmaMesgBuf

OSMesg gDmaMesgBuf[1]

◆ gDmaMesgQueue

OSMesgQueue gDmaMesgQueue

◆ gGameLoopThread

OSThread gGameLoopThread

◆ gIdleThread

OSThread gIdleThread

◆ gIntrMesgBuf

OSMesg gIntrMesgBuf[16]

◆ gIntrMesgQueue

OSMesgQueue gIntrMesgQueue

◆ gMainThread

OSThread gMainThread

◆ gPIMesgBuf

OSMesg gPIMesgBuf[32]

◆ gPIMesgQueue

OSMesgQueue gPIMesgQueue

◆ gResetTimer

s8 gResetTimer = 0

◆ gShowDebugText

s8 gShowDebugText = FALSE

◆ gShowProfiler

s8 gShowProfiler = FALSE

◆ gSIEventMesgBuf

OSMesg gSIEventMesgBuf[1]

◆ gSIEventMesgQueue

OSMesgQueue gSIEventMesgQueue

◆ gSoundThread

OSThread gSoundThread

◆ gSPTaskMesgQueue

OSMesgQueue gSPTaskMesgQueue

◆ gUnknownMesgBuf

OSMesg gUnknownMesgBuf[16]

◆ gVblankHandler1

struct VblankHandler* gVblankHandler1 = NULL

◆ gVblankHandler2

struct VblankHandler* gVblankHandler2 = NULL

◆ sAudioEnabled

s8 sAudioEnabled = 1

◆ sCurrentAudioSPTask

struct SPTask* sCurrentAudioSPTask = NULL

◆ sCurrentDisplaySPTask

struct SPTask* sCurrentDisplaySPTask = NULL

◆ sNextAudioSPTask

struct SPTask* sNextAudioSPTask = NULL

◆ sNextDisplaySPTask

struct SPTask* sNextDisplaySPTask = NULL

◆ sNumVblanks

u32 sNumVblanks = 0