//--------------------------------------------------------------------------------- int main( ) { //--------------------------------------------------------------------------------- readUserSettings( ); irqInit( ); // Start the RTC tracking IRQ initClockIRQ( ); fifoInit( ); touchInit( ); mmInstall( FIFO_MAXMOD ); SetYtrigger( 80 ); installWifiFIFO( ); installSoundFIFO( ); installSystemFIFO( ); irqSet( IRQ_VCOUNT, VcountHandler ); irqSet( IRQ_VBLANK, VblankHandler ); irqEnable( IRQ_VBLANK | IRQ_VCOUNT | IRQ_NETWORK ); setPowerButtonCB( powerButtonCB ); // Keep the ARM7 mostly idle while( !exitflag ) { if( 0 == ( REG_KEYINPUT & ( KEY_SELECT | KEY_START | KEY_L | KEY_R ) ) ) { exitflag = true; } swiWaitForVBlank( ); } return 0; }
int main() { irqInit(); fifoInit(); readUserSettings(); initClockIRQ(); SetYtrigger(80); installSystemFIFO(); irqSet(IRQ_VCOUNT, VCountHandler); irqSet(IRQ_VBLANK, 0); irqEnable(IRQ_VBLANK|IRQ_VCOUNT|IRQ_NETWORK); powerOn(POWER_SOUND); REG_SOUNDCNT = SOUND_ENABLE | SOUND_VOL(127); static Player oPlayer; Player_Init(& oPlayer); while ( 1 ) { swiWaitForVBlank(); Player_Execute(& oPlayer); } return 0; }
void wifi_init() { REG_IPC_FIFO_CR = IPC_FIFO_ENABLE | IPC_FIFO_SEND_CLEAR; /* * Our half of the ARM7 Wifi handshaking: * Send it a pointer to the shared memory area for Wifi. */ REG_IPC_FIFO_TX = IPC_MSG_WIFI_INIT; REG_IPC_FIFO_TX = Wifi_Init(WIFIINIT_OPTION_USELED); /* Disable TIMER3 before setting up its IRQ handler */ TIMER3_CR = 0; irqInit(); irqSet(IRQ_VBLANK, vblank_irq_handler); irqEnable(IRQ_VBLANK); irqSet(IRQ_TIMER3, wifi_timer_handler); irqEnable(IRQ_TIMER3); irqSet(IRQ_FIFO_NOT_EMPTY, fifo_irq_handler); irqEnable(IRQ_FIFO_NOT_EMPTY); REG_IPC_FIFO_CR = IPC_FIFO_ENABLE | IPC_FIFO_RECV_IRQ; Wifi_SetSyncHandler(wifi_sync_handler); /* Program TIMER3 for 50ms intervals */ TIMER3_DATA = TIMER_FREQ_256(1000 / WIFI_TIMER_MS); TIMER3_CR = TIMER_DIV_256 | TIMER_IRQ_REQ; /* Poll for the ARM7 init to finish */ while (!Wifi_CheckInit()) { swiWaitForVBlank(); } }
void arm9_wifiInit() { // send fifo message to initialize the arm7 wifi REG_IPC_FIFO_CR = IPC_FIFO_ENABLE | IPC_FIFO_SEND_CLEAR; // enable & clear FIFO u32 Wifi_pass= Wifi_Init(WIFIINIT_OPTION_USELED); REG_IPC_FIFO_TX=0x12345678; REG_IPC_FIFO_TX=Wifi_pass; *((volatile u16 *)0x0400010E) = 0; // disable timer3 irqSet(IRQ_TIMER3, arm9_wifiTimer); // setup timer IRQ irqEnable(IRQ_TIMER3); irqSet(IRQ_FIFO_NOT_EMPTY, arm9_fifo); // setup fifo IRQ irqEnable(IRQ_FIFO_NOT_EMPTY); REG_IPC_FIFO_CR = IPC_FIFO_ENABLE | IPC_FIFO_RECV_IRQ; // enable FIFO IRQ Wifi_SetSyncHandler(arm9_synctoarm7); // tell wifi lib to use our handler to notify arm7 // set timer3 *((volatile u16 *)0x0400010C) = -(131062*WifiTimerInterval_ms/1000); // 131062 * 256 cycles = ~1000ms; *((volatile u16 *)0x0400010E) = 0x00C2; // enable, irq, 1/256 clock while(Wifi_CheckInit()==0) { // wait for arm7 to be initted successfully WaitVbl(); // wait for vblank } // wifi init complete - wifi lib can now be used! }
//--------------------------------------------------------------------------------- int main(int argc, char ** argv) { //--------------------------------------------------------------------------------- // Reset the clock if needed rtcReset(); //enable sound powerON(POWER_SOUND); SOUND_CR = SOUND_ENABLE | SOUND_VOL(0x7F); IPC->soundData = 0; irqInit(); irqSet(IRQ_VBLANK, VblankHandler); SetYtrigger(80); vcount = 80; irqSet(IRQ_VCOUNT, VcountHandler); irqEnable(IRQ_VBLANK | IRQ_VCOUNT); irqSet(IRQ_TIMER0, playTimerHandler); irqEnable(IRQ_TIMER0); player = new Player(playTimerHandler); player->registerTickCallback(onTick); player->registerPatternChangeCallback(onPatternChange); // Keep the ARM7 idle while (1) swiWaitForVBlank(); }
int main(int argc, char **argv) { REG_IPC_FIFO_CR = IPC_FIFO_ENABLE | IPC_FIFO_SEND_CLEAR ; u32 old_reg = readPowerManagement(PM_CONTROL_REG); writePowerManagement(PM_CONTROL_REG, old_reg |PM_LED_ON); // enable fast // Reset the clock if needed rtcReset(); // Turn on Sound powerON(POWER_SOUND); // Set up sound defaults. SOUND_CR = SOUND_ENABLE | SOUND_VOL(0x7F); IPC->soundData = 0; // Set up the interrupt handler irqInit(); irqSet(IRQ_VBLANK, VblankHandler); irqEnable(IRQ_VBLANK); // Setup FIFO irqSet(IRQ_FIFO_NOT_EMPTY,FifoInterruptHandler); irqEnable(IRQ_FIFO_NOT_EMPTY); REG_IPC_FIFO_CR = IPC_FIFO_ENABLE | IPC_FIFO_SEND_CLEAR | IPC_FIFO_RECV_IRQ ; // Keep the ARM7 out of main RAM while (1) swiWaitForVBlank(); return 0; }
//--------------------------------------------------------------------------------- int main() { //--------------------------------------------------------------------------------- irqInit(); fifoInit(); // read User Settings from firmware readUserSettings(); // Start the RTC tracking IRQ initClockIRQ(); SetYtrigger(80); installWifiFIFO(); installSoundFIFO(); mmInstall(FIFO_MAXMOD); installSystemFIFO(); irqSet(IRQ_VCOUNT, VcountHandler); irqSet(IRQ_VBLANK, VblankHandler); irqEnable( IRQ_VBLANK | IRQ_VCOUNT | IRQ_NETWORK); // Keep the ARM7 mostly idle while (1) swiWaitForVBlank(); }
int main(void) { REG_IPC_FIFO_CR = IPC_FIFO_ENABLE | IPC_FIFO_SEND_CLEAR; IPC->mailData=0; IPC->mailSize=0; PA_SoundBusyInit = 0; PA_Init(); irqInit(); irqSet(IRQ_VBLANK, PA_VBL); irqEnable(IRQ_VBLANK); irqSet(IRQ_TIMER0, timer0); irqEnable(IRQ_TIMER0); SetYtrigger(80); vcount = 80; irqSet(IRQ_VCOUNT, VcountHandler); irqEnable(IRQ_VBLANK | IRQ_VCOUNT); // irqSet(IRQ_TIMER3, ProcessMicrophoneTimerIRQ); // irqEnable(IRQ_TIMER3); //swiWaitForVBlank(); //swiWaitForVBlank(); //supprime pour test irqSet(IRQ_WIFI, Wifi_Interrupt); // set up wifi interrupt irqEnable(IRQ_WIFI); //swiWaitForVBlank(); //swiWaitForVBlank(); //supprime pour test SndInit7 (); u32 fifo_temp; while(1) { // wait for magic number while(REG_IPC_FIFO_CR&IPC_FIFO_RECV_EMPTY) swiWaitForVBlank(); fifo_temp=REG_IPC_FIFO_RX; if(fifo_temp==0x12345678) break; } while(REG_IPC_FIFO_CR&IPC_FIFO_RECV_EMPTY) swiWaitForVBlank(); fifo_temp=REG_IPC_FIFO_RX; // give next value to wifi_init Wifi_Init(fifo_temp); irqSet(IRQ_FIFO_NOT_EMPTY,arm7_fifo); // set up fifo irq irqEnable(IRQ_FIFO_NOT_EMPTY); REG_IPC_FIFO_CR = IPC_FIFO_ENABLE | IPC_FIFO_RECV_IRQ; Wifi_SetSyncHandler(arm7_synctoarm9); // allow wifi lib to notify arm9 // Keep the ARM7 out of main RAM while (1) { swiWaitForVBlank(); } return 0; }
int main() { // REG_WAITCNT = 0x46d6; // lets set some cool waitstates... REG_WAITCNT = 0x46da; // lets set some cool waitstates... irqInit(); irqEnable(IRQ_VBLANK); consoleInit(0, 4, 0, NULL, 0, 15); BG_COLORS[0] = RGB5(0, 0, 0); BG_COLORS[241] = RGB5(31, 31, 31); REG_DISPCNT = MODE_0 | BG0_ON; gbfs_init(1); pimp_sample_bank sb; FILE *fp = fopen("dxn-oopk.xm", "rb"); if (!fp) { fprintf(stderr, "file not found\n"); return 1; } pimp_module *mod = load_module_xm(fp, &sb); fclose(fp); fp = NULL; if (NULL == mod) { fprintf(stderr, "failed to load module\n"); return 1; } pimp_gba_init(mod, sb.data); pimp_gba_set_callback(callback); irqSet(IRQ_TIMER3, timer3); irqEnable(IRQ_TIMER3); REG_TM3CNT_L = 0; REG_TM3CNT_H = TIMER_START | TIMER_IRQ | 2; irqSet(IRQ_VBLANK, vblank); irqEnable(IRQ_VBLANK); while (1) { VBlankIntrWait(); scanKeys(); int keys = keysDown(); if (keys & KEY_UP) pimp_gba_set_pos(0, pimp_gba_get_order() - 1); if (keys & KEY_DOWN) pimp_gba_set_pos(0, pimp_gba_get_order() + 1); if (keys & KEY_RIGHT) pimp_gba_set_pos(pimp_gba_get_row() + 8, pimp_gba_get_order()); if (keys & KEY_LEFT) pimp_gba_set_pos(pimp_gba_get_row() - 8, pimp_gba_get_order()); iprintf("%d %d\n", pimp_gba_get_order(), pimp_gba_get_row()); } pimp_gba_close(); return 0; }
int main() { REG_IPC_FIFO_CR = IPC_FIFO_ENABLE | IPC_FIFO_SEND_CLEAR; IPC->mailData=0; IPC->mailSize=0; PA_SoundBusyInit = 0; PA_Init(); irqInit(); irqSet(IRQ_VBLANK, PA_VBL); irqEnable(IRQ_VBLANK); irqSet(IRQ_TIMER2, timer2); irqEnable(IRQ_TIMER2); SetYtrigger(80); vcount = 80; irqSet(IRQ_VCOUNT, VcountHandler); irqEnable(IRQ_VBLANK | IRQ_VCOUNT); //supprime pour test irqSet(IRQ_WIFI, Wifi_Interrupt); // set up wifi interrupt irqEnable(IRQ_WIFI); //supprime pour test SndInit7 (); // Initialize AS_Lib AS_Init(); u32 fifo_temp; while(1) { // wait for magic number while (REG_IPC_FIFO_CR & IPC_FIFO_RECV_EMPTY) { AS_MP3Engine(); swiWaitForVBlank(); } fifo_temp=REG_IPC_FIFO_RX; if(fifo_temp==0x12345678) break; } while (REG_IPC_FIFO_CR & IPC_FIFO_RECV_EMPTY) swiWaitForVBlank(); fifo_temp = REG_IPC_FIFO_RX; // give next value to wifi_init Wifi_Init(fifo_temp); irqSet(IRQ_FIFO_NOT_EMPTY, arm7_fifo); // set up fifo irq irqEnable(IRQ_FIFO_NOT_EMPTY); REG_IPC_FIFO_CR = IPC_FIFO_ENABLE | IPC_FIFO_RECV_IRQ; Wifi_SetSyncHandler(arm7_synctoarm9); // allow wifi lib to notify arm9 while (1) { AS_MP3Engine(); swiWaitForVBlank(); } return 0; }
int main() { oldFunc = irqSet(IRQ_VBLANK, vbl); for (;;) { swiWaitForVBlank(); if (keysDown() & KEY_START) break; } irqSet(IRQ_VBLANK, oldFunc); return 0; }
int main() { irqInit(); REG_IPC_FIFO_CR = IPC_FIFO_ENABLE | IPC_FIFO_RECV_IRQ; irqSet(IRQ_VBLANK, vblank_irq_handler); irqEnable(IRQ_VBLANK); irqSet(IRQ_FIFO_NOT_EMPTY, fifo_irq_handler); irqEnable(IRQ_FIFO_NOT_EMPTY); while (1) { swiWaitForVBlank(); } }
/* DS_SysInit Initializes DS specific system hardware and interrupts. */ LOCALPROC DS_SysInit(void) { defaultExceptionHandler(); powerOn(POWER_ALL_2D); lcdMainOnTop(); irqSet(IRQ_VBLANK, DS_VBlank_IRQ); irqSet(IRQ_HBLANK, DS_HBlank_IRQ); irqSet(IRQ_TIMER1, DS_Timer1_IRQ); irqEnable(IRQ_VBLANK); irqEnable(IRQ_HBLANK); irqEnable(IRQ_TIMER1); /* This sets up 2 timers as a milisecond counter. TIMER0_DATA Will overflow roughly every 1 msec into TIMER1_DATA. When TIMER1_DATA overflows an interrupt will be generated and DS_Timer1_IRQ will be called. */ TIMER0_DATA = 32768; TIMER0_CR = TIMER_DIV_1 | TIMER_ENABLE; TIMER1_DATA = 0; TIMER1_CR = TIMER_ENABLE | TIMER_CASCADE | TIMER_IRQ_REQ; /* Testing. */ consoleDemoInit(); consoleDebugInit(DebugDevice_NOCASH); /* Use the default keyboard until I design a (good) UI... */ DSKeyboard = keyboardDemoInit(); keyboardShow(); /* Drop back to a read only filesystem embedded in the Mini vMac binary if we cannot open a media device. */ if (! fatInitDefault()) { nitroFSInit(); } }
//--------------------------------------------------------------------------------- int main() { u32 i=0; //--------------------------------------------------------------------------------- readUserSettings(); irqInit(); // Start the RTC tracking IRQ initClockIRQ(); fifoInit(); //mmInstall(FIFO_MAXMOD); InstallSoundSys(); SetYtrigger(80); installWifiFIFO(); installSoundFIFO(); installSystemFIFO(); irqSet(IRQ_VCOUNT, VcountHandler); irqSet(IRQ_VBLANK, VblankHandler); irqEnable( IRQ_VBLANK | IRQ_VCOUNT | IRQ_NETWORK); setPowerButtonCB(powerButtonCB); // Keep the ARM7 mostly idle while (!exitflag) { if ( 0 == (REG_KEYINPUT & (KEY_SELECT | KEY_START | KEY_L | KEY_R))) { exitflag = true; } swiWaitForVBlank(); if(seq_status==STATUS_FADING) { if(i<24) { i+=10; } else { i-=24; ADSR_mastervolume--; if(!ADSR_mastervolume) StopSeq(); } } } return 0; }
/*************************************************** エントリ ***************************************************/ int main (void) { // ゲームパックウェイト&キャッシュ *((vu16 *) 0x04000204) = 0x4317; // BG初期化 init_bg (); // スプライト初期化 init_sprite (); // キー初期化 init_key (); // サウンド初期化 DirectSoundInitialize (); // キャラクタ初期化 init_sprite_chr (); // ハイスコア初期化 init_hiscore (); // ゲーム初期化 init_game (); // タイトル init_title (); // 割り込み初期化 irqInit (); // サウンド用ハンドラ MUSIC / SE irqSet (IRQ_TIMER0, IRQ_Music); irqSet (IRQ_TIMER1, IRQ_Sound); irqEnable (IRQ_VBLANK | IRQ_TIMER0 | IRQ_TIMER1); // タイトル PlayMusic (MUSIC_TITLE, PLAY_LOOP_ON); // メインループ while (1) { // キー入力 scanKeys (); // ゲーム本体 game (); // 割り込み待ち VBlankIntrWait (); } }
int main(int argc, char** argv){ irqSet(IRQ_VBLANK, &vblank); #ifdef TEXTMODE videoSetMode(MODE_0_2D); videoSetModeSub(MODE_0_2D); vramSetBankA(VRAM_A_MAIN_BG); vramSetBankC(VRAM_C_SUB_BG); #endif//TEXTMODE Display::init(); keysSetRepeat(30, 12); srand(time(NULL)); Player P1(FGrave); Player P2(FMidori); ControlLocal C1(P1); ControlAI C2(P2); //DisplayPlayerOverview a(0, 0, 0, 32, 1, P1); //DisplayContainer b(0, 0, 1, 32, 21, P1.hand()); //DisplayCard c(1, 0, 0, 32, 24, P1.hand().at(0), false); Game(&C1, &C2); while(1){ update(); } return 0; }
//--------------------------------------------------------------------------------- int main(void) { //--------------------------------------------------------------------------------- touchPosition touchXY; irqSet(IRQ_VBLANK, Vblank); consoleDemoInit(); iprintf(" Hello DS dev'rs\n"); iprintf(" \x1b[32mwww.devkitpro.org\n"); iprintf(" \x1b[32;1mwww.drunkencoders.com\x1b[39m"); while(1) { swiWaitForVBlank(); touchRead(&touchXY); // print at using ansi escape sequence \x1b[line;columnH iprintf("\x1b[10;0HFrame = %d",frame); iprintf("\x1b[16;0HTouch x = %04X, %04X\n", touchXY.rawx, touchXY.px); iprintf("Touch y = %04X, %04X\n", touchXY.rawy, touchXY.py); } return 0; }
/*-------------------------------------------------------------------------------*/ void cardSpiSetHandler(void (*irqHandler)(void)) { /*-------------------------------------------------------------------------------*/ card_spi_settings.enable_irq = irqHandler == NULL ? 0 : CR1_ENABLE_IRQ; irqSet(IRQ_CARD_LINE, irqHandler); irqEnable(IRQ_CARD_LINE); cardSpiStop(); /* update CR1 register */ }
//--------------------------------------------------------------------------------- int main(int argc, char ** argv) { //--------------------------------------------------------------------------------- // read User Settings from firmware readUserSettings(); REG_IPC_FIFO_CR = IPC_FIFO_ENABLE | IPC_FIFO_SEND_CLEAR; // enable & prepare fifo asap rtcReset(); //enable sound powerON(POWER_SOUND); writePowerManagement(PM_CONTROL_REG, ( readPowerManagement(PM_CONTROL_REG) & ~PM_SOUND_MUTE ) | PM_SOUND_AMP ); SOUND_CR = SOUND_ENABLE | SOUND_VOL(0x7F); irqInit(); // Start the RTC tracking IRQ initClockIRQ(); SetYtrigger(80); irqSet(IRQ_VCOUNT, VcountHandler); irqSet(IRQ_VBLANK, VblankHandler); irqSet(IRQ_WIFI, Wifi_Interrupt); // set up wifi interrupt irqEnable( IRQ_VBLANK | IRQ_VCOUNT | IRQ_WIFI); { // sync with arm9 and init wifi u32 fifo_temp; while(1) { // wait for magic number while(REG_IPC_FIFO_CR&IPC_FIFO_RECV_EMPTY) swiWaitForVBlank(); fifo_temp=REG_IPC_FIFO_RX; if(fifo_temp==0x12345678) break; } while(REG_IPC_FIFO_CR&IPC_FIFO_RECV_EMPTY) swiWaitForVBlank(); fifo_temp=REG_IPC_FIFO_RX; // give next value to wifi_init Wifi_Init(fifo_temp); irqSet(IRQ_FIFO_NOT_EMPTY,arm7_fifo); // set up fifo irq irqEnable(IRQ_FIFO_NOT_EMPTY); REG_IPC_FIFO_CR = IPC_FIFO_ENABLE | IPC_FIFO_RECV_IRQ; Wifi_SetSyncHandler(arm7_synctoarm9); // allow wifi lib to notify arm9 } // arm7 wifi init complete // Keep the ARM7 mostly idle while (1) swiWaitForVBlank(); }
static void setupTimer0(void) { tpl_disable_interrupts(); TIMER0_DATA = TIMER_FREQ_256(1000); /* 1ms */ TIMER0_CR = TIMER_ENABLE | TIMER_IRQ_REQ | TIMER_DIV_256; irqSet(IRQ_TIMER0, tpl_tick_timer0_overflow); irqEnable(IRQ_TIMER0); }
void Timer::initSystemTimer() { TIMER1_CR = 0; TIMER1_DATA = TIMER_FREQ_1024(1000); TIMER1_CR = TIMER_ENABLE | TIMER_DIV_1024 | TIMER_IRQ_REQ; irqSet(IRQ_TIMER1, OnTimer); irqEnable(IRQ_TIMER1); systemTime = 0; }
int main(int argc, char ** argv) { u32 fifo_temp; REG_IPC_FIFO_CR = IPC_FIFO_ENABLE | IPC_FIFO_SEND_CLEAR; // Reset the clock if needed rtcReset(); //enable sound powerON(POWER_SOUND); SOUND_CR = SOUND_ENABLE | SOUND_VOL(0x7F); IPC->soundData = 0; irqInit(); irqSet(IRQ_VBLANK, VblankHandler); SetYtrigger(80); vcount = 80; irqSet(IRQ_VCOUNT, VcountHandler); irqEnable(IRQ_VBLANK | IRQ_VCOUNT); irqSet(IRQ_TIMER0, tob_ProcessMicrophoneTimerIRQ); tob_MIC_On(); irqSet(IRQ_WIFI, Wifi_Interrupt); irqEnable(IRQ_WIFI); // trade some mail, to get a pointer from arm9 while(1) { while(REG_IPC_FIFO_CR&IPC_FIFO_RECV_EMPTY) swiWaitForVBlank(); fifo_temp=REG_IPC_FIFO_RX; if(fifo_temp==0x12345678) break; } while(REG_IPC_FIFO_CR&IPC_FIFO_RECV_EMPTY) swiWaitForVBlank(); fifo_temp=REG_IPC_FIFO_RX; Wifi_Init(fifo_temp); irqSet(IRQ_FIFO_NOT_EMPTY,arm7_fifo); irqEnable(IRQ_FIFO_NOT_EMPTY); REG_IPC_FIFO_CR = IPC_FIFO_ENABLE | IPC_FIFO_RECV_IRQ; Wifi_SetSyncHandler(arm7_synctoarm9); // Keep the ARM7 idle while(1) swiWaitForVBlank(); }
//--------------------------------------------------------------------------------- int main() { //--------------------------------------------------------------------------------- irqInit(); fifoInit(); int channel = -1; // read User Settings from firmware readUserSettings(); // Start the RTC tracking IRQ initClockIRQ(); SetYtrigger(80); installWifiFIFO(); installSoundFIFO(); mmInstall(FIFO_MAXMOD); installSystemFIFO(); irqSet(IRQ_VCOUNT, VcountHandler); irqSet(IRQ_VBLANK, VblankHandler); irqEnable( IRQ_VBLANK | IRQ_VCOUNT | IRQ_NETWORK); //sound play // ARM 7 sweeps up FIFO_USER_01 and plays the notes left there. while (1) { /* while (fifoGetDatamsg(FIFO_USER_01, int buffersize, u8 * destbuffer) != -1) channel = getFreePSGChannel(); BIT(24); BIT(25); swiWaitForVBlank(); */ } }
int main() { int fadeToggle = 1; irqInit(); irqSet( IRQ_TIMER1, kradInterrupt ); // not really needed, as kragInit also enables IRQ_TIMER1 irqEnable( IRQ_TIMER1 ); REG_IME = 1; SetMode( MODE_0 | BG0_ON ); kragInit( KRAG_INIT_STEREO ); // init krawall krapCallback( callback ); krapPlay( &mod_secondpm, 0, 0 ); // play module while( 1 ) { // wait for line 0 while( !REG_VCOUNT ); while( REG_VCOUNT ); // rasterbar start BG_COLORS[0] = rasterbar_color; kramWorker(); // do the stuff // rasterbar stop BG_COLORS[0] = 0; scanKeys(); int keys_pressed = keysDown(); if( keys_pressed & KEY_A ) { if( krapIsPaused() ) { // if resuming, force volume to max krapSetMusicVol( 128, 0 ); krapUnpause(); } else krapPause( 1 ); } if( keys_pressed & KEY_B ) { if( fadeToggle ) { // see callback function, when silence is reached // the tune is paused krapSetMusicVol( 0, 1 ); } else { krapSetMusicVol( 128, 1 ); } fadeToggle ^= 1; } } return 0; }
//--------------------------------------------------------------------------------- int main() { //--------------------------------------------------------------------------------- // clear sound registers dmaFillWords(0, (void*)0x04000400, 0x100); REG_SOUNDCNT |= SOUND_ENABLE; writePowerManagement(PM_CONTROL_REG, ( readPowerManagement(PM_CONTROL_REG) & ~PM_SOUND_MUTE ) | PM_SOUND_AMP ); powerOn(POWER_SOUND); readUserSettings(); ledBlink(0); irqInit(); // Start the RTC tracking IRQ initClockIRQ(); fifoInit(); mmInstall(FIFO_MAXMOD); SetYtrigger(80); installWifiFIFO(); installSoundFIFO(); installSystemFIFO(); irqSet(IRQ_VCOUNT, VcountHandler); irqSet(IRQ_VBLANK, VblankHandler); irqEnable( IRQ_VBLANK | IRQ_VCOUNT | IRQ_NETWORK); setPowerButtonCB(powerButtonCB); // Keep the ARM7 mostly idle while (!exitflag) { if ( 0 == (REG_KEYINPUT & (KEY_SELECT | KEY_START | KEY_L | KEY_R))) { exitflag = true; } swiWaitForVBlank(); } return 0; }
void irqInit() { PIC_IntEnClear = ~0; // disable all IRQ sources PIC_IntSelect = 0; // disable FIQ support SIC_ENCLR = ~0; // disable all SIC IRQ sources SIC_PICENCLR = ~0; // disable weird SIC->PIC IRQ source routing mechanism irqSet(0, BIT(31), isr_SIC); // set ISR for SIC IRQ PIC_IntEnable = BIT(31); // enable SIC PIC IRQ source CpuIrqEnable(); }
void wifiInit() { REG_IPC_FIFO_CR = IPC_FIFO_ENABLE | IPC_FIFO_SEND_CLEAR; u32 Wifi_pass = Wifi_Init(WIFIINIT_OPTION_USELED); REG_IPC_FIFO_TX = 0x12345678; REG_IPC_FIFO_TX = Wifi_pass; *((volatile u16 *)0x0400010E) = 0; irqSet(IRQ_TIMER3, T50); irqEnable(IRQ_TIMER3); irqSet(IRQ_FIFO_NOT_EMPTY, ARM9FIFO); irqEnable(IRQ_FIFO_NOT_EMPTY); REG_IPC_FIFO_CR = IPC_FIFO_ENABLE | IPC_FIFO_RECV_IRQ; Wifi_SetSyncHandler(ARMSYNC); *((volatile u16 *)0x0400010C) = -6553; *((volatile u16 *)0x0400010E) = 0x00C2; while(!Wifi_CheckInit()) swiWaitForVBlank(); }
void configureTimer() { // Initialize timer_ticks timer_ticks = 0; // Configure timer to trigger an interrupt every 100 ms TIMER_CR(0) = TIMER_ENABLE | TIMER_DIV_64 | TIMER_IRQ_REQ; TIMER_DATA(0) = TIMER_FREQ_64(10); // Associate the ISR (timerISR) to the interrupt line and enable it irqSet(IRQ_TIMER0, &timerISR); irqEnable(IRQ_TIMER0); }
int ARM7_MAIN(void) { readUserSettings(); // init irq irqInit(); initClockIRQ(); // init irq callback irqSet(IRQ_VCOUNT, IRQ_VCount); irqSet(IRQ_VBLANK, IRQ_VBlank); irqEnable(IRQ_VBLANK | IRQ_VCOUNT | IRQ_NETWORK); // init fifo system fifoInit(); // install fifo subsystems installWifiFIFO(); installSoundFIFO(); installSystemFIFO(); mmInstall(FIFO_MAXMOD); // init fifo callback for arm9 communication fifoSetDatamsgHandler(FIFO_USER_01, I_PollArm9Messages, 0); SetYtrigger(80); setPowerButtonCB(powerButtonCB); // Keep the ARM7 mostly idle while(!exitflag) { if(0 == (REG_KEYINPUT & (KEY_SELECT | KEY_START | KEY_L | KEY_R))) exitflag = true; swiIntrWait(1, IRQ_FIFO_NOT_EMPTY | IRQ_VBLANK); } return 0; }
//--------------------------------------------------------------------------------- int main(int argc, char ** argv) { //--------------------------------------------------------------------------------- #ifdef WIFI REG_IPC_FIFO_CR = IPC_FIFO_ENABLE | IPC_FIFO_SEND_CLEAR; // enable & prepare fifo asap #endif // Set up the interrupt handler irqInit(); // Start the RTC tracking IRQ initClockIRQ(); irqSet(IRQ_VBLANK, VblankHandler); irqEnable(IRQ_VBLANK); //enable sound arm7_initSoundDevice(); #if 0 irqSet(IRQ_IPC_SYNC, InterruptHandler_IPC_SYNC); REG_IPC_SYNC = IPC_SYNC_IRQ_ENABLE; #endif #ifdef WIFI arm7_initWifi(); #endif // Keep the ARM7 out of main RAM while (1) { swiWaitForVBlank(); // FIXME: réveiller sur d'autres interruptions ? arm7_microProcess(); commandControl(); } return 0; }