This commit is contained in:
flo 2017-01-29 15:45:06 +01:00
parent 5e4e4adf66
commit 02aabf7531
7 changed files with 121 additions and 102 deletions

5
.gitignore vendored Normal file
View File

@ -0,0 +1,5 @@
/obj
/*.bin
/*.elf
/*.g1a
/images

View File

@ -41,7 +41,7 @@ $(NAME).g1a: $(NAME).bin
## Clean up your mess
clean:
$(RM) $(ALLOBJ)
$(RM) $(OBJDIR)
$(RM) $(NAME).elf
$(RM) $(NAME).bin

View File

@ -11,14 +11,13 @@ SRCDIR = ./src
INCDIR = ./include
OBJDIR = ./obj
LIBDIR = ./lib
SCPTDIR = ./scripts
IMGDIR = ./img
# TOOLCHAIN
## Directory maker
MD = mkdir -p
## File remover
RM = rm -f
RM = rm -rf
## Assembler
AS = sh3eb-elf-as
## C compiler

View File

@ -0,0 +1 @@
Adaptation du jeu F1 compilé avec Gcc

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View File

@ -1,22 +1,24 @@
#ifndef _VOITURE
#define _VOITURE
unsigned int key;
char decal=1;
char obstacles[100]; // permet d'avoir de l'aléatoire pondéré pour les obstacles/bonus
typedef struct Obstacles
{
char num_obst;
short coordx;
}Obstacles;
} Obstacles;
int Menu(void);
int Jeu(void);
void draw_lines(int decalx);
void init_obstacle(void);
void mort(int score, int type);
void garage(void);
#endif
#endif

View File

@ -4,58 +4,79 @@
#include "keyboard.h"
#include "stdio.h"
#include "clock.h"
static int SysCallCode[] = {0xD201422B,0x60F20000,0x80010070};
static int (*SysCall)(int R4, int R5, int R6, int R7, int FNo ) = (void*)&SysCallCode;
int RTC_getTicks()
{
return (*SysCall)(0, 0, 0, 0, 0x3B);
}
#include "timer.h"
Obstacles obstacle[4];
void new_frame()
{
extern Image img_formel1;
extern Image img_obstacle;
dclear();
dimage(19, 11*decal, &img_formel1);
dimage(1, 1, &img_obstacle);
dupdate();
}
int Jeu()
{
while(1)
{
timer_start(TIMER_USER, 25, Clock_Hz, new_frame, 0);
while(1)
{
key = getkey();
switch(key)
{
case KEY_UP : decal=(decal<=1 ? 1 : decal-1); break;
case KEY_DOWN : decal=(decal>=4 ? 4 : decal+1); break;
case KEY_EXIT : timer_stop(TIMER_USER); return 1;
}
}
}
}
int main(void)
{
//if(!memory_exists("\\\\fls0\\F1rush.sav")) memory_createfile("\\\\fls0\\F1rush.sav",10); // on creer le fichier
short menu=0;
Menu();
extern Image img_menu;
return 1;
}
while(1)
{
dclear();
int Menu()
{
short menu=0;
char key=0;
dimage(0, 0, &img_menu);
extern Image img_menu;
dreverse_area(62+16*menu,23+21*menu,108+16*menu,39+21*menu);
while(1)
{
dclear();
dupdate();
dimage(0, 0, &img_menu);
key=getkey();
dreverse_area(62+16*menu,23+21*menu,108+16*menu,39+21*menu);
key=getkey();
switch(key)
{
case KEY_UP : case KEY_DOWN : menu=!menu; break;
case KEY_EXE :
switch(menu)
switch(key)
{
case 0 : Jeu(); break;
case 1 : /*garage();*/ break;
}
case KEY_UP : case KEY_DOWN : menu=!menu; break;
case KEY_EXE :
switch(menu)
{
case 0 : Jeu(); break;
case 1 : /*garage();*/ break;
}
break;
case KEY_EXIT : return 1;
}
}
case KEY_EXIT : return 1;
}
}
}
/*void garage(void)
@ -102,8 +123,7 @@ PrintMini(11,17,buffer,0);
}
}*/
int Jeu()
/*int Jeu()
{
extern Image img_formel1;
@ -116,7 +136,7 @@ int speed=50;
unsigned int i=0,j=0;
char appuie=0;
int score=0;
char vie=1;
char vie=10;
int max=100;
int money=0;
short essence=100;
@ -139,7 +159,6 @@ for(j=0;j<4;j++)
if(obstacle[j].coordx<0)
{
srand(RTC_getTicks());
obstacle[j].num_obst=obstacles[rand()%100];
obstacle[j].coordx=128+40*j;
}
@ -158,16 +177,16 @@ for(j=0;j<4;j++)
case 2 : speed+=25; break;
case 3 : speed-=25; break;
case 4 : vie++; break;
case 5 : decalx_car=74; start_time=RTC_getTicks(); obstacle[decal-1].num_obst=0;break;
// case 5 : decalx_car=74; obstacle[decal-1].num_obst=0;break;
case 6 : essence=max; break;
case 7 : money++; break;
case 8 : money+=2; break;
}
if(decalx_car==74 && (int)(RTC_getTicks()-start_time)>192)
{
decalx_car=24;
}
// if(decalx_car==74 && (int)(RTC_getTicks()-start_time)>192)
// {
// decalx_car=24;
// }
obstacle[decal-1].num_obst=0;
}
@ -178,47 +197,44 @@ for(j=0;j<4;j++)
}
essence=(i%26==0 ? essence-10 : essence); //chaque seconde 10 d'essence partent
dupdate();
if(getkey_opt(0x00, 1)==KEY_UP && appuie==0) // KEY_CTRL_UP
{
decal=(decal<=1 ? 1 : decal-1);
appuie=1;
}
else if(getkey_opt(0x00, 1)==KEY_DOWN && appuie==0) //KEY_CTRL_DOWN
{
decal=(decal>=4 ? 4 : decal+1);
appuie=1;
}
else if (getkey_opt(0x00, 1)==KEY_NONE) // permet de ne pas rester appuiyer sur la touche (simule le Getkey())
{
appuie=0;
}
if(getkey_opt(0x00, 1)==KEY_EXIT) //KEY_CTRL_EXIT
{
return 1;
}
/*sprintf(buffer,"metre : %d vie : %d", score, vie);
PrintMini(1,1,buffer,0);*/
//dupdate();
dprint(1, 1, "metre : %d vie : %d", score, vie);
/* sprintf(buffer,"essence %d/%d Argent %d ", essence, max, money);
PrintMini(1,56,buffer,0);*/
dprint(1,56,"essence %d/%d Argent %d ", essence, max, money);
dupdate();
timer_start(TIMER_USER, 80, Clock_Hz, vide, 0);
sleep_us(75000);
//while(1) {
if(key==KEY_UP && appuie==0) // KEY_CTRL_UP
{
decal=(decal<=1 ? 1 : decal-1);
appuie=1;
break;
}
else if(key==KEY_DOWN && appuie==0) //KEY_CTRL_DOWN
{
decal=(decal>=4 ? 4 : decal+1);
appuie=1;
break;
}
else if (key==KEY_NONE) // permet de ne pas rester appuiyer sur la touche (simule le Getkey())
{
appuie=0;
break;
}
if(key==KEY_EXIT) //KEY_CTRL_EXIT
{
timer_stop(TIMER_USER);
return 1;
}
//}
i+=3;
score=(i%4==0 ? score+2: score);
}
return 1;
}
}*/
void mort(int score , int type)
{
@ -240,23 +256,19 @@ return;
void init_obstacle()
{
int i=0;
int i=0,j=0;
char proba[10]={0,30,70,75,80,83,86,95,98,100};
while(i<100)
while(j<9)
{
if(i<30) obstacles[i]=0; // vide
else if (i>=30 && i<70) obstacles[i]=1;
else if (i>=70 && i<75) obstacles[i]=2;
else if (i>=75 && i<80) obstacles[i]=3;
else if (i>=80 && i<83) obstacles[i]=4;
else if (i>=83 && i<86) obstacles[i]=5;
else if (i>=86 && i<95) obstacles[i]=6;
else if (i>=95 && i<98) obstacles[i]=7;
else if (i>=98 /*&& i<100*/) obstacles[i]=8;
i++;
for(i=proba[j];i<proba[j+1];i++)
{
obstacles[i]=j;
}
j++;
}
srand(RTC_getTicks());
//srand(RTC_getTicks());
for(i=0;i<4;i++)
{
@ -277,7 +289,7 @@ for(i=1;i<4;i++)
}
}
dline(10, 1, 128, 1, Color_Black);
dline(1, 10, 128, 10, Color_Black);
dline(1, 54, 128, 54, Color_Black);
dupdate();