C-Engine/otherlib/FonctionC.c

98 lines
2.1 KiB
C
Raw Normal View History

2016-06-09 17:07:38 +02:00
#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<66>rents appels
do
{
fps = RTC_getTicks(); // on enregistre les ticks
Sleep(1); // permet d'<27>conomiser de la batterie
}
while(fps < fps_count + fpsWish); // tant que ceux-ci ne se sont pas suffisamment <20>coul<75>s
fps_count = RTC_getTicks(); // on met <20> jour les derni<6E>res valeurs
}
int getDelay( int ms)
{
static int time=0;
if(RTC_getTicks() - time > (ms / 7.8125)) // si il s'est <20>coul<75> une seconde compl<70>te
{
time = RTC_getTicks(); // et on se rappelle du nombre de ticks de la derni<6E>re seconde <20>coul<75>e
return 1;
}
return 0;
}
2016-06-14 15:39:24 +02:00
int mod(int a, int b)
{
return a % b;
}
2016-06-09 17:07:38 +02:00
int getFps()
{
// variables utilis<69>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 <20>coul<75> une seconde compl<70>te
{
disp_fps = fps; // alors on r<>cup<75>re le nombre de FPS
fps = 0; // on remet <20> 0 le compteur
time = RTC_getTicks(); // et on se rappelle du nombre de ticks de la derni<6E>re seconde <20>coul<75>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<75>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;
}