C-Engine/otherlib/FonctionC.c

98 lines
2.1 KiB
C

#include "MonochromeLib.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "FonctionC.h"
PrintV(int x, int y, int v)
{
char txt[10];
sprintf(txt,"%d",v);
PrintMini(x,y,txt,0);
}
void setFps(int fpsWish)
{
static unsigned int fps = 0, fps_count = 0; // "static" permet de garder les valeurs en mémoire entre les différents appels
do
{
fps = RTC_getTicks(); // on enregistre les ticks
Sleep(1); // permet d'économiser de la batterie
}
while(fps < fps_count + fpsWish); // tant que ceux-ci ne se sont pas suffisamment écoulés
fps_count = RTC_getTicks(); // on met à jour les dernières valeurs
}
int getDelay( int ms)
{
static int time=0;
if(RTC_getTicks() - time > (ms / 7.8125)) // si il s'est écoulé une seconde complète
{
time = RTC_getTicks(); // et on se rappelle du nombre de ticks de la dernière seconde écoulée
return 1;
}
return 0;
}
int mod(int a, int b)
{
return a % b;
}
int getFps()
{
// variables utilisées (en static, pour pouvoir garder en mémoire les valeurs)
static int disp_fps=0, fps=1, time=0;
if(RTC_getTicks() - time > 128) // si il s'est écoulé une seconde complète
{
disp_fps = fps; // alors on récupère le nombre de FPS
fps = 0; // on remet à 0 le compteur
time = RTC_getTicks(); // et on se rappelle du nombre de ticks de la dernière seconde écoulée
}
fps++; // on monte la valeur des FPS
return disp_fps;
}
int rand_int(int max)
{
return rand() % max;
}
int rand_int_ab(int min, int max)
{
return rand() % (max - min) + min;
}
static int SysCallCode[] = {0xD201422B,0x60F20000,0x80010070};
static int (*SysCall)( int R4, int R5, int R6, int R7, int FNo ) = (void*)&SysCallCode;
int RTC_getTicks(void)
{
return (*SysCall)(0, 0, 0, 0, 0x3B); // on déclare la fonction voulue selon son numéro (ici 0x3B)
}
float ABS( float v)
{
if(v < 0) return -v;
return v;
}
double degretorad(float v)
{
return v * 3.1415 / 180;
}
double radtodegre(float v)
{
return v * 180 / 3.1415;
}