GMC_DCL(char**, argv) { boolean Abort, NewFlag; int i; Init_IO(); Init_Err(); Init_Env(); Init_Sigs(FALSE); IPC_Init(); IPC_Action = TopLevelCI; if (IsServer) { Init_Sigs(TRUE); Read_DrvGrf(); Init_Info(&NewFlag); Init_FilHdrs(); Init_FilInps(); Init_FilElms(); Init_FilPrm(); Init_FilHdrTree(); Activate_Client(LocalClient); if (NewFlag) { Write_ENV2(); }/*if*/; }/*if*/; if (IsClient) { IsTTY = GetIsTTY(); Init_Vars(); Init_CWD(); }/*if*/; Read_ENV2(); if (IsClient) { if (VerifyLevel >= 1) Test_All(); if (argc <= 1) { Get_Commands(&Abort); Exit((Abort?1:0)); }/*if*/; for (i=1; i<argc; i+=1) { ;/*select*/{ if (strlen(argv[i]) == 0) { Get_Commands(&Abort); }else{ TopLevelCI(&Abort, argv[i]); };}/*select*/; if (Abort) { Exit(1); }/*if*/; }/*for*/; Exit(0); }/*if*/; IPC_Get_Commands(&Abort, (tp_Str)NIL); Exit((Abort?1:0)); return 0; /*to make lint happy*/ }/*main*/
void LAN() { PA_ResetBgSys(); PA_ResetSpriteSys(); PA_InitText(MAIN_SCREEN, 0); PA_SetTextCol(MAIN_SCREEN, 31, 31, 31); if(!IPC_Init()) { PA_OutputText(MAIN_SCREEN, 0, 0, "IPC INIT FAILED"); while(true) {} } IPC_SetChannelCallback(0, &LWIFI_IPC_Callback); PA_VBLFunctionInit(customVBL); // inits/preps DS <-> DS PA_OutputText(MAIN_SCREEN, 1, 3, "Start Game = Start/nJoin Game = Select"); fadeIn(); while(playernumber == -1) { if(!lobbyinited) { LOBBY_Init(); LOBBY_SetStreamHandler(0x0001, &receive); lobbyinited = true; } // inits liblobby else if(Pad.Newpress.Start) { playernumber = 0; LOBBY_SetOwnName("Host"); LOBBY_CreateRoom(ROOM_NAME, MAX_PLAYERS, GAME_CODE, GAME_VER); } // creates a new game else if(Pad.Newpress.Select) { playernumber = 1; LOBBY_SetOwnName("Client"); LOBBY_JoinRoom(LOBBY_GetRoomByGame(0, GAME_CODE)); } // joins a created game PA_WaitForVBL(); } int max = LOBBY_GetUsercountInRoom(LOBBY_GetRoomByUser(LOBBY_GetUserByID(USERID_MYSELF))); PA_OutputText(MAIN_SCREEN, 1, 3, " "); PA_OutputText(MAIN_SCREEN, 1, 4, " "); PA_OutputText(MAIN_SCREEN, 1, 3, "Waiting for connection"); while(max < 2) { max = LOBBY_GetUsercountInRoom(LOBBY_GetRoomByUser(LOBBY_GetUserByID(USERID_MYSELF))); PA_OutputText(MAIN_SCREEN, 1, 4, "%d", max); PA_WaitForVBL(); } players.push_back(new Kirby(512/2 -96 -32, 256/3 -32, 1, players, &display)); Stage stage = setStage(FINALDESTINATION); PA_InitText(MAIN_SCREEN, 1); // inits text on the main screen (displays time) PA_SetTextCol(MAIN_SCREEN, 31, 31, 31); // text color = white PA_OutputText(MAIN_SCREEN, 1, 3, " "); PA_OutputText(MAIN_SCREEN, 1, 4, " "); while(true) { if(playernumber == 0) { players[0] -> act(); dat[0] = (int)(players[0] -> x); dat[1] = (int)(players[0] -> y); dat[2] = PA_GetSpriteAnimFrame(MAIN_SCREEN, players[0] -> SPRITENUM); LOBBY_SendToUser(LOBBY_GetUserByID(0), 0x0001, (unsigned char *)dat, 10); } scrollScreen(); PA_WaitForVBL(); } }
//--------------------------------------------------------------------------------- int main(int argc, char ** argv) { //--------------------------------------------------------------------------------- readUserSettings(); irqInit(); initClockIRQ(); fifoInit(); SetYtrigger(80); #ifdef USE_WIFI installWifiFIFO(); #endif //installSoundFIFO(); installSystemFIFO(); //TIMER_CR(0) = TIMER_ENABLE | TIMER_IRQ_REQ | TIMER_DIV_1; vcount = 80; irqSet(IRQ_VBLANK, VblankHandler); irqSet(IRQ_VCOUNT, VcountHandler); irqSet(IRQ_HBLANK, hblank_handler); irqEnable(IRQ_VBLANK | IRQ_VCOUNT | IRQ_HBLANK); setPowerButtonCB(powerButtonCB); fifoSetDatamsgHandler(FIFO_9to7, fifo_DataHandler, 0); // irqSet(IRQ_LID, lid); // irqEnable(IRQ_LID); #ifdef IPC_IN_TIMER irqSet(IRQ_TIMER0, handle_ipc); TIMER_DATA(0) = TIMER_FREQ_256(20 * 60); TIMER_CR(0) = TIMER_ENABLE | TIMER_IRQ_REQ | TIMER_DIV_256; #endif #ifdef USE_WIFI #ifndef WIFI_ON_DEMAND wifi_go(); #endif #endif #ifdef USE_ADHOC IPC_Init() ; LWIFI_Init() ; #endif // Keep the ARM7 idle while (!exitflag) { //ARM7_PRINT("arm7 "); if ( 0 == (REG_KEYINPUT & (KEY_SELECT | KEY_START | KEY_L | KEY_R))) { exitflag = true; } #ifdef USE_ADHOC LWIFI_IPC_UpdateNOIRQ() ; #endif if (do_mp3 != 0) { #ifdef USE_MP3 ds_enable_interrupts(0); if (helix_initialised == 0) { ARM7_PRINT("beginning helix init\n"); helix_init(); ARM7_PRINT("helix init done\n"); helix_initialised = 1; } char helix_argv1[100]; char helix_argv2[100]; memset(helix_argv1, 0, 100); memset(helix_argv2, 0, 100); strcpy(helix_argv1, "/jones.mp3"); // sprintf(helix_argv1, "/quake soundtrack/0%d-AudioTrack 0%d.mp3", mp3_track_no, mp3_track_no); // strcpy(helix_argv2, "/jones.pcm"); char *proper_helix_argv[3]; proper_helix_argv[0] = NULL; proper_helix_argv[1] = helix_argv1; // proper_helix_argv[1] = (char *)track_name; proper_helix_argv[2] = helix_argv2; ARM7_PRINT("Starting Helix...\n"); decoder_stopped = 0; ds_enable_interrupts(1); helix_main(3, proper_helix_argv); ds_enable_interrupts(0); decoder_stopped = 1; ARM7_PRINT("out of helix\n"); // ARM7_HALT(); send_mp3_stop_message(); ds_enable_interrupts(1); #endif } // if (REG_KEYXY & (1 << 7)) // { // while (quake_ipc_7to9->message == 0xffffffff); // // quake_ipc_7to9->message_type = kLidHasClosed; // quake_ipc_7to9->message = 0xffffffff; // // while (quake_ipc_7to9->message == 0xffffffff); // // ARM7_PRINT("ARM7: waiting...\n"); // while (REG_IPC_FIFO_CR&IPC_FIFO_RECV_EMPTY); // ARM7_PRINT("ARM7: disabling interrupts\n"); // // irqDisable(IRQ_HBLANK); // irqDisable(IRQ_VBLANK); // irqDisable(IRQ_VCOUNT); // //// irqEnable(IRQ_LID); // // powerOFF(POWER_SOUND); // // swiWaitForVBlank(); //wake up when the lid re-enables the interrupt // } if (arm7_initialised && ((hblanks & 0x3f) == 0)) { arm7_initialised = 1; //ARM7_PRINT("ping"); //while (quake_ipc_7to9->message == 0xffffffff); //quake_ipc_7to9->message_type = kPing; //quake_ipc_7to9->message = 0xffffffff; //while (quake_ipc_7to9->message == 0xffffffff); } // int total = 0; // for (int count = 0 ; count < 16; count++) // if (!is_channel_enabled(count)) // total++; // if (free_time == kFreeTime) // ARM7_PRINTF("%d channels free\n", total); // if (free_time == kFreeTime) // if (needs_defrag()) // { // ARM7_PRINT("NEEDS DEFRAG\n"); // defrag(&free_time); // } // swiWaitForVBlank(); #ifdef IPC_IN_MAIN_THREAD //handle_ipc(); #endif // if (arm7_initialised == true) // { //// temp_test(); // // arm7_initialised = false; // ARM7_PRINT("installing exception handler\n"); // install(); // register unsigned int sp asm ("13"); // ARM7_PRINT("done\nlet\'s try and crash it\n"); // /*ARM7_PRINT_NUMBER(sp);*/ // //// asm("LDR r12,=MyReg2\n" //// "STMIA r12,{r0-r15}\n" //// : //// : //// : "r12"); // //// ARM7_PRINT_NUMBER(MyReg2[12]); // //// for (int count = 0; count < 16; count++) //// ARM7_PRINT_NUMBER(MyReg2[count]); //// ARM7_PRINT("\n"); //// while(1); //// asm (".word 0xffffffff"); //// asm (".word 0x0"); // // //// Exception(); // //// asm (".word 0xe6000010"); // //// asm("LDR r12,=MyReg2\n" //// "STMIA r12,{r0-r15}\n" //// : //// : //// : "r12"); //// //// for (int count = 0; count < 8; count++) //// { //// ARM7_PRINT_NUMBER(MyReg[count + 8]); //// ARM7_PRINT_NUMBER(MyReg2[count + 8]); //// } // // //// asm ("mcr 15,0,r0,c0,c0,0"); //// asm ("bkpt"); //// *(int *)0 = 0; //// asm ("b debugger_hit"); //// debugger_hit(); //// debugger_handle_breakpoint(0,0,0); // //// asm (".word 0xe6000010"); //// asm (".short 0xe801"); // ARM7_PRINT("shouldn\'t make it here\n"); // ARM7_PRINT_NUMBER(ProperCPSR); // while(1); // } swiIntrWait(1, 1); } }