From 02aabf7531d90120f112903734b4733f7b550f26 Mon Sep 17 00:00:00 2001 From: flo Date: Sun, 29 Jan 2017 15:45:06 +0100 Subject: [PATCH] tst --- .gitignore | 5 ++ Makefile | 2 +- Makefile.config | 3 +- README.md | 1 + img/menu.bmp | Bin 24630 -> 24630 bytes include/voiture.h | 18 +++-- src/voiture.c | 194 ++++++++++++++++++++++++---------------------- 7 files changed, 121 insertions(+), 102 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..35e2636 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +/obj +/*.bin +/*.elf +/*.g1a +/images diff --git a/Makefile b/Makefile index ffbe99a..84d8d9f 100644 --- a/Makefile +++ b/Makefile @@ -41,7 +41,7 @@ $(NAME).g1a: $(NAME).bin ## Clean up your mess clean: - $(RM) $(ALLOBJ) + $(RM) $(OBJDIR) $(RM) $(NAME).elf $(RM) $(NAME).bin diff --git a/Makefile.config b/Makefile.config index 80f719b..a17cafd 100644 --- a/Makefile.config +++ b/Makefile.config @@ -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 diff --git a/README.md b/README.md index e69de29..ed4b160 100644 --- a/README.md +++ b/README.md @@ -0,0 +1 @@ +Adaptation du jeu F1 compilé avec Gcc \ No newline at end of file diff --git a/img/menu.bmp b/img/menu.bmp index b4fa99c4371a648048fa9e8b33edec6613ff7332..da142203097559f2c5db9a124841e8b5ae95308c 100644 GIT binary patch delta 1748 zcma)7O=uit7-kwBI`%W)X6z)>Y@O~TE4$h5WIlVXsOaulS><)Z@$^MZGyP4e6!!a@AE$I z^Zv~3rg6JzY<}I1(2%H|wo$qyu{3Q5VfUbc^+FESgbebDwJwB*=Y!s(e;R0}Gx**W zL9ut%z~|?DR9_VMVMrjAb#ZqlN30}WlXSK4)=7!hnJ^Ef zk0i0wCop?_2HzgL8{LOJF6xfr;}Yv)iXveztua`q9NNvHTsl^m6YuC;l{6BS$J1gFEEefY)Tbnt^GXCkAAvjB z$vvTOxmK_|^s<5FbE=Y=NRdambv~=qb*@!bRdo!T1HbiCp6IOc&LV4@;A?#L4zL%v zH++TvxxxLyhlYB<)#7(#dJuTqI2rska^2|K-Q5j78hz;yHpa&GL&r@RR!QfWkM*&N zrt<1%2ihwQ>%MA&i~rkBH8l0X(j|e-6Be4TiEzln)~LXbJ#6%n#NT-nr8$9{9Eklq zRePRi%&AD$Hda`5kUCS_v%irxv659St!;I^+jZ8mY8wkH7g41+X@N1(rA@DeFH6&F$ei`+G#753#eQfW^ z(;rqtfAlrpDUCDuvq9B_D?#jrt(Js~#2XKv$y0Ij8p6Sy3CY-Te1Qi80uLA6sB=pT zIKjf?6X|SSX%kmtQb(^N45^OqEIEtVtRiC_^ncmkUm1lz~S3 zxC5=Nr>c|ss(DuWS`jg=wTA?M>-q6wjI|DobnL5`a!fc5splv`sy%~t6o2!S&AyS? zDoWO#v#4hC4Eyo$WCxbo6>1^x$Li$J9?Mi&KGlcStkt!>y^Wr-Ph5vNcPgj%Q1=Cg zdmtHc*15Wj$<0?~t)e_FV(K1yFH63oHo`fZcP5o~pjN?3`3h>>&QFFjdpOPcDdtZ< zu8eRx-S!I>%8#GNqNj@x8Y3OaN)>pulnD}ZR}azI=W=o|GS1}t=LxI{DKVS#84jVx S*8$%;QPPS`A^3fvX8i+;6FtF#5#5N{AX{54EAIWYAfd>pr2oeaT3n4^A1VWGyLh!pY%fEV)-PxVF=R4Au%#ZGNLv zrBpqqh*?0X-0Czyh;46gTe00Cl?Ki`Y2E2VoR_|PevXOEB3Uxqpl)5INVS1yEmmw^ zvl{g&2ar7hjU25`O6JJ)VqS<%O-)&mc7&FW4E=8;@O6(>b2yW;(b3Uk2wxsW>J+%{ zq|P=2+hq!8%5>j+mrYDeSljWeClI1<^8aS>cpSGLVLPYJJWj4=9`%W6kWlbB2a^K> z161xP;QRag8yg$g9Hh&Ieih8GtgL{0{1AN42P=<)WeT`BJ$>c)RR==~eNiaDasP!u zhDg8}G1GlRqIK@0Zd0Z^Wh%uRos=rN$7W_`s6~Gn$9=~l$5EwGeuY9`m1*fcm&kMj zSgK|yhEjzFIr0=FP|@DIY;JCj+VgY@qpeQ2N>7UGINFs+B#^h!ny#BA`5Y6J$Mv$3(UbPT6k#cmP9W@l&V;)Rb9 z*CFPN4Gs<-+oMnyd_)ZNwM+My(7-Qlzu3#f0R*P4D}zl=PSTiRP-d+jOVzlff3I2~ z*u;nmWQx>jQ3cLWtKg$isz#x`GC8WsuoH#%_xB6un&WjyX#^J*7FJhRF~s15d3X7r>QBiZcZiW6VRA~L0L4H4g+hC2-XDUR6g&wApt8O>$J5Qk* zuo@Zms=^?l;VYaToL8bgF4%C?a+D?1t|7{Zx(%qv;{_fLW-kaC8F19YZ+mD!gz$%i z6giepPWM$9ulS^m$t7Dyv3qVFdQwC;)3c?dP4n(CEHOt11`eS^Xs%~Kpv$y4h?rW` zZ6DS4SlF^D3rFqk?Il;P&e1zzcFBr@w7=UHYYK<1QnMMqX4A3>}bbpuztKEimTS(YpV(w4w`#VRzaQL8MN1#eQpx$o~M&6}=e% diff --git a/include/voiture.h b/include/voiture.h index b77eb7d..7ccc23d 100644 --- a/include/voiture.h +++ b/include/voiture.h @@ -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 \ No newline at end of file + +#endif diff --git a/src/voiture.c b/src/voiture.c index 5ea2a80..2fcc3a8 100644 --- a/src/voiture.c +++ b/src/voiture.c @@ -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