Home | History | Annotate | Download | only in nds
      1 /*
      2     SDL - Simple DirectMedia Layer
      3     Copyright (C) 1997-2012 Sam Lantinga
      4 
      5     This library is free software; you can redistribute it and/or
      6     modify it under the terms of the GNU Lesser General Public
      7     License as published by the Free Software Foundation; either
      8     version 2.1 of the License, or (at your option) any later version.
      9 
     10     This library is distributed in the hope that it will be useful,
     11     but WITHOUT ANY WARRANTY; without even the implied warranty of
     12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     13     Lesser General Public License for more details.
     14 
     15     You should have received a copy of the GNU Lesser General Public
     16     License along with this library; if not, write to the Free Software
     17     Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
     18 
     19     Sam Lantinga
     20     slouken (at) libsdl.org
     21 */
     22 #include "SDL_config.h"
     23 
     24 #include "SDL_thread.h"
     25 #include "SDL_timer.h"
     26 #include "SDL_error.h"
     27 #include "../SDL_timer_c.h"
     28 
     29 #include <nds.h>
     30 
     31 #define timers2ms(tlow,thigh)(tlow | (thigh<<16)) >> 5
     32 
     33 
     34 void SDL_StartTicks(void)
     35 {
     36    TIMER0_DATA=0;
     37    TIMER1_DATA=0;
     38    TIMER0_CR=TIMER_ENABLE|TIMER_DIV_1024;
     39    TIMER1_CR=TIMER_ENABLE|TIMER_CASCADE;
     40 }
     41 
     42 Uint32 SDL_GetTicks(void)
     43 {
     44 	return timers2ms(TIMER0_DATA, TIMER1_DATA);
     45 }
     46 
     47 void SDL_Delay(Uint32 ms)
     48 {
     49    Uint32 now;
     50    now=timers2ms(TIMER0_DATA, TIMER1_DATA);
     51    while((Uint32)timers2ms(TIMER0_DATA, TIMER1_DATA)<now+ms);
     52 
     53 }
     54 
     55 /* This is only called if the event thread is not running */
     56 int SDL_SYS_TimerInit(void)
     57 {
     58 	return 0;
     59 }
     60 
     61 void SDL_SYS_TimerQuit(void)
     62 {
     63 }
     64 
     65 int SDL_SYS_StartTimer(void)
     66 {
     67 	SDL_SetError("Timers not implemented on NDS");
     68 	return -1;
     69 }
     70 
     71 void SDL_SYS_StopTimer(void)
     72 {
     73 }
     74