mirror of
https://github.com/openmoh/openmohaa.git
synced 2025-04-28 21:57:57 +03:00
122 lines
No EOL
2.5 KiB
C
122 lines
No EOL
2.5 KiB
C
#include "..\nonport.h"
|
|
#include "screen.h"
|
|
#include "key.h"
|
|
#include "wireless.h"
|
|
#include "touch.h"
|
|
#include "backup.h"
|
|
|
|
static void Startup(void)
|
|
{
|
|
/* System */
|
|
// init the OS system - internally initializes:
|
|
// arena - OS_InitArenaEx()
|
|
// communication system between preprocessors - PXI_Init()
|
|
// lock system - OS_InitLock()
|
|
// IRQ interrupt tables - OS_InitIrqTable()
|
|
// exception display system - OS_InitException()
|
|
// both WRAMs to the ARM7 - MI_SetWramBank()
|
|
// V count alarm system - OS_InitVAlarm()
|
|
// thread system - OS_InitThread()
|
|
// reset system - OS_InitReset()
|
|
// Game Pak library - CTRDG_Init()
|
|
// Card library - CARD_Init()
|
|
// power control system - PM_Init()
|
|
OS_Init();
|
|
|
|
/* Time */
|
|
// init the system tick count
|
|
OS_InitTick();
|
|
|
|
// init the alarm
|
|
// this is needed for OS_Sleep()
|
|
OS_InitAlarm();
|
|
|
|
/* RTC */
|
|
RTC_Init();
|
|
|
|
/* FIFO */
|
|
PXI_InitFifo();
|
|
|
|
/* Screen */
|
|
ScreenInit();
|
|
Printf("Screen initialized\n");
|
|
|
|
SetTopScreenLineCentered(SCREEN_HEIGHT / 2, SCWhite, "Starting GameSpy Sample");
|
|
|
|
/* Keys */
|
|
KeyInit();
|
|
Printf("Input initialized\n");
|
|
|
|
/* Touch */
|
|
TouchInit();
|
|
Printf("Touch initialized\n");
|
|
|
|
/* Interrupts */
|
|
OS_EnableIrq();
|
|
OS_EnableInterrupts();
|
|
Printf("Interrupts initialized\n");
|
|
|
|
/* Heap */
|
|
{
|
|
u32 nHeapAdrs = 0;
|
|
u32 nHeapSize = 1 * 1024 * 1024;
|
|
OSHeapHandle hHeap;
|
|
|
|
OS_SetMainArenaLo(OS_InitAlloc(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi(), 1));
|
|
nHeapAdrs = (u32)OS_AllocFromMainArenaLo(nHeapSize, 32);
|
|
hHeap = OS_CreateHeap(OS_ARENA_MAIN, (void*)(nHeapAdrs), (void*)(nHeapAdrs + nHeapSize));
|
|
OS_SetCurrentHeap(OS_ARENA_MAIN, hHeap);
|
|
}
|
|
Printf("Heap initialized\n");
|
|
|
|
/* Backup */
|
|
BackupInit();
|
|
|
|
/* Wireless */
|
|
WirelessInit();
|
|
}
|
|
|
|
static void Shutdown(void)
|
|
{
|
|
// close down wireless
|
|
Printf("Wireless cleanup\n");
|
|
WirelessCleanup();
|
|
|
|
// ClearScreens();
|
|
// SetTopScreenLineCentered(SCREEN_HEIGHT / 2, SCWhite, "GameSpy Sample Shutdown");
|
|
// SVC_WaitVBlankIntr();
|
|
|
|
// terminate the os system
|
|
Printf("Terminating OS\n");
|
|
OS_Terminate();
|
|
}
|
|
|
|
extern int test_main(int argc, char ** argv);
|
|
|
|
static void Run(void)
|
|
{
|
|
SetPrintMode(PRINT_TO_SCREEN|PRINT_TO_DEBUGGER);
|
|
|
|
Printf("\n");
|
|
Printf("GameSpy Test App Starting\n");
|
|
Printf("-------------------------\n");
|
|
|
|
test_main(0, NULL);
|
|
|
|
Printf("------------------------\n");
|
|
Printf("GameSpy Test App Exiting\n");
|
|
|
|
SetPrintMode(PRINT_TO_DEBUGGER);
|
|
}
|
|
|
|
void NitroMain(void)
|
|
{
|
|
// startup everything we need
|
|
Startup();
|
|
|
|
// do stuff
|
|
Run();
|
|
|
|
// shutdown the system
|
|
Shutdown();
|
|
} |