void text_printC(int x, [purple]int[/purple] y, [purple]char[/purple] c, [purple]int[/purple] size, [purple]int[/purple] color)
{
[purple]int[/purple] i, j, byte_width, alpha;
char* data;
[b][blue]if[/blue][/b](c<32 || c>127 || size<1) [b][blue]return[/blue][/b];
byte_width = ((used_font[b]->[/b]width-1)>>3)+1;
data = used_font[b]->[/b]data + byte_width * used_font[b]->[/b]height * (c-32);
alpha = [maroon]32[/maroon] - ((color>>16) % 32);
color &= [maroon]0[/maroon]xFFFF;
[b][blue]for[/blue][/b](i=[maroon]0[/maroon] ; i<used_font[b]->[/b]height ; i++) {
[b][blue]for[/blue][/b](j=[maroon]0[/maroon] ; j<used_font[b]->[/b]width ; j++) {
[b][blue]if[/blue][/b](data[i*byte_width+(j>>3)] & (128>>(j&7)))
text_drawPoint(x+j*size, y+i*size, size, color, alpha);
[b][blue]else[/blue][/b] if(used_font[b]->[/b]flags & ANTIALIASING) { [green]// Antialiasing[/green]
[b][blue]if[/blue][/b](text_readPix(data, j, i-1, used_font[b]->[/b]width, used_font[b]->[/b]height)) {
[b][blue]if[/blue][/b](text_readPix(data, j-1, i, used_font[b]->[/b]width, used_font[b]->[/b]height)) text_antialias(x+j*size, y+i*size, size, color, alpha, [maroon]0[/maroon]);
[b][blue]if[/blue][/b](text_readPix(data, j+1, i, used_font[b]->[/b]width, used_font[b]->[/b]height)) text_antialias(x+j*size, y+i*size, size, color, alpha, [maroon]1[/maroon]);
}
[b][blue]if[/blue][/b](text_readPix(data, j, i+1, used_font[b]->[/b]width, used_font[b]->[/b]height)) {
[b][blue]if[/blue][/b](text_readPix(data, j-1, i, used_font[b]->[/b]width, used_font[b]->[/b]height)) text_antialias(x+j*size, y+i*size, size, color, alpha, [maroon]2[/maroon]);
[b][blue]if[/blue][/b](text_readPix(data, j+1, i, used_font[b]->[/b]width, used_font[b]->[/b]height)) text_antialias(x+j*size, y+i*size, size, color, alpha, [maroon]3[/maroon]);
}
}
}
}
}
void text_print(int x, [purple]int[/purple] y, char* c, [purple]int[/purple] size, [purple]int[/purple] color)
{
[purple]int[/purple] save_x = x;
[b][blue]for[/blue][/b]( ; *c ; c++) {
[b][blue]if[/blue][/b](*c == [gray]'\n'[/gray]) {
x = save_x;
y += (used_font[b]->[/b]height + used_font[b]->[/b]height/2) * size;
} [b][blue]else[/blue][/b] {
text_printC(x, y, *c, size, color);
x += size * text_widthC(*c);
}
}
}
Citer : Posté le 05/10/2013 18:47 | # | Fichier joint
c'est pas une mauvaise idée, voila quelques fonctions par-ci par la
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2
merci a tout le monde pour son soutien
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm
(dont je connais le nom, mais pas vous )Arcuz !Citer : Posté le 05/10/2013 18:56 | #
Merci de ta participation Mais je n'ai pas bien compris le fonctionnement des fonction suivante :
[purple]float[/purple] eps = [maroon]0[/maroon].000005;
[b][blue]return[/blue][/b] d<-eps?-1:d>eps;
}
char* int2str(char* c, [purple]int[/purple] n)
{
[b][blue]if[/blue][/b](n==[maroon]0[/maroon])
{
c[0] = [gray]'0'[/gray];
c[1] = [maroon]0[/maroon];
}
[b][blue]else[/blue][/b]
{
[purple]int[/purple] i, l=[maroon]0[/maroon];
[b][blue]for[/blue][/b](i=n ; i ; i/=[maroon]10[/maroon])
l++;
c[l] = [maroon]0[/maroon];
[b][blue]for[/blue][/b](i=n ; i ; i/=[maroon]10[/maroon])
c[--l] = i%10+[gray]'0'[/gray];
}
[b][blue]return[/blue][/b] c;
}
void CopySpriteMasked(short* bitmap, [purple]int[/purple] x, [purple]int[/purple] y, [purple]int[/purple] width, [purple]int[/purple] height, short mask)
{
short* VRAM = (short*)0xA8000000;
[purple]int[/purple] y_index;
[purple]int[/purple] x_index;
short * base = y * 128*3 + x + VRAM;
[b][blue]for[/blue][/b] (y_index = height; y_index > 0; --y_index, base += [maroon]128[/maroon]*3 - width) {
[b][blue]for[/blue][/b] (x_index = width; x_index > 0; --x_index, ++base, ++bitmap) {
[b][blue]if[/blue][/b] (*bitmap != mask) *base = *bitmap;
}
}
}
[b][green]/*void alphaSprite(int x, [purple]int[/purple] y, [purple]int[/purple] width, [purple]int[/purple] height, short* bitmap, short alpha)
{
short* VRAM = (short*)0xA8000000;
[purple]int[/purple] x_inc = width;
[b][blue]if[/blue][/b] (y < 0)
{
bitmap -= y * width;
height += y;
y = [maroon]0[/maroon];
}
[b][blue]if[/blue][/b] (height > 216 - y) height = [maroon]216[/maroon] - y;
[b][blue]if[/blue][/b] (x < 0)
{
bitmap -= x;
width += x;
x = [maroon]0[/maroon];
}
[b][blue]if[/blue][/b] (width > 128*3 - x) width = [maroon]128[/maroon]*3 - x;
x_inc -= width;
[purple]int[/purple] y_index;
[purple]int[/purple] x_index;
short * base = y * 128*3 + x + VRAM;
[b][blue]for[/blue][/b] (y_index = height; y_index > 0; y_index--, base += [maroon]128[/maroon]*3 - width, bitmap += x_inc)
{
[b][blue]for[/blue][/b] (x_index = width; x_index > 0; x_index--, base++ , bitmap++ )
{
[b][blue]if[/blue][/b] (*bitmap!=alpha && *bitmap!= [maroon]0[/maroon]xffff) *base = *bitmap;
}
}
}*/[/green][/b]
void CopySpriteNbitMasked(const unsigned char* data, [purple]int[/purple] x, [purple]int[/purple] y, [purple]int[/purple] width, [purple]int[/purple] height, const short* palette, short maskColor, [purple]unsigned int[/purple] bitwidth)
{
short* VRAM = (short*)0xA8000000; [green]//ou color_t* VRAM = (color_t*) GetVRAMAddress();[/green]
[purple]int[/purple] offset = [maroon]0[/maroon];
[purple]int[/purple] availbits ;
[purple]int[/purple] j,i;
[purple]unsigned char[/purple] buf;
short thiss;
short color;
VRAM += (128*3*y + x);
[b][blue]for[/blue][/b](j=y; j<y+height; j++)
{
availbits = [maroon]0[/maroon];
[b][blue]for[/blue][/b](i=x; i<x+width; i++)
{
[b][blue]if[/blue][/b] (!availbits)
{
buf = data[offset++];
availbits = [maroon]8[/maroon];
}
thiss = ((short)buf>>(8-bitwidth));
color = palette[thiss];
[b][blue]if[/blue][/b](color != maskColor && i >= [maroon]0[/maroon] && i<384)
{
*VRAM = color;
}
VRAM++;
buf<=bitwidth;
availbits-=bitwidth;
}
VRAM += (128*3-width);
}
}
Zelda de Smashmaster
Super Geek Brothers de Siapran
Pac-Man
Pac-Man Color
Meta Ball
Add-ins Jetpack Joyride et Pac-Man sur PRIZM (les 2 non commencés mais en réflexion)
A la recherche des sprites jetpack Joride si quelqu'un les a en couleur
Citer : Posté le 05/10/2013 19:08 | #
Superbe idée !
Malheureusement je ne pourrais pas trop aider, étant donné que je commence juste à comprendre le fonctionnement de le VRAM et à peine des syscalls...
Je regarderai quand même si je n'ai pas quelques petites fonctions toutes bêtes qui traiteraient.
Sinon, ça serait génial que la communauté de programmeurs sur Prizm s'agrandisse !
Citer : Posté le 05/10/2013 19:09 | #
C'est le but : les attirer en montrant que c'est facile
Zelda de Smashmaster
Super Geek Brothers de Siapran
Pac-Man
Pac-Man Color
Meta Ball
Add-ins Jetpack Joyride et Pac-Man sur PRIZM (les 2 non commencés mais en réflexion)
A la recherche des sprites jetpack Joride si quelqu'un les a en couleur
Citer : Posté le 05/10/2013 19:17 | #
Je viens de penser qu'i l serait aussi possible de proposer une sorte de lib regroupant les diverses fonctions qui apparaîtront ici, en uniformisant bien les noms des fonctions et en les documentant bien! Ça pourrait être sympa non ?
Citer : Posté le 05/10/2013 19:27 | #
pour sgn, moi non plus mais c'est utiliser par monochromelib (et je pense pour la derivée)
int2str ben te transforme un entier en une chaine de caractere (pour l'afficher )
CopySpriteMasked(short* bitmap, int x, int y, int width, int height, short mask) t'affiche un sprite (en 16 bit) en X,Y avec un masque de transparence d'une couleur definie
opySpriteNbitMasked(const unsigned char* data, int x, int y, int width, int height, const short* palette, short maskColor, unsigned int bitwidth)fait la meme chose, mais permet de choisir le nombre de bit
et voila
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2
merci a tout le monde pour son soutien
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm
(dont je connais le nom, mais pas vous )Arcuz !Citer : Posté le 05/10/2013 19:33 | #
Ok merci des précisions et alphaSprite(int x, int y, int width, int height, short* bitmap, short alpha)
il fait quoi lui ?
@Nemhardy: C'est ce que je pensait faire à terme d'avoir trouver les fonctions les plus intéressantes
Zelda de Smashmaster
Super Geek Brothers de Siapran
Pac-Man
Pac-Man Color
Meta Ball
Add-ins Jetpack Joyride et Pac-Man sur PRIZM (les 2 non commencés mais en réflexion)
A la recherche des sprites jetpack Joride si quelqu'un les a en couleur
Citer : Posté le 05/10/2013 19:34 | #
je pense qu'il affiche un sprite 16 bit avec de la transparence (de 0 a 255), mais je ne l'ai jamais reelement utilisé, c'est pour cela qu'il est en commentaire
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2
merci a tout le monde pour son soutien
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm
(dont je connais le nom, mais pas vous )Arcuz !Citer : Posté le 05/10/2013 19:44 | #
Tiens voila la fonction de PierrotLL (c'est pas grave si c'est pas de nous ?) pour savoir si une touche est pressée ou pas :
{
const unsigned short* keyboard_register = (unsigned short*)0xA44B0000;
[purple]int[/purple] row, col, word, bit;
row = basic_keycode%10;
col = basic_keycode/10-1;
word = row>>1;
bit = col + 8*(row&1);
[b][blue]return[/blue][/b] (0 != (keyboard_register[word] & 1<<bit));
}
Avec en argument le code "Basic" (un getkey dans le menu prgm) de la touche et 10 pour Ac/On
Citer : Posté le 05/10/2013 19:46 | #
et voila le .h de cette fonction
#define _KEY
int key_down(int basic_keycode);
/***************/
/** Key codes **/
/***************/
#define K_F1 79
#define K_F2 69
#define K_F3 59
#define K_F4 49
#define K_F5 39
#define K_F6 29
#define K_SHIFT 78
#define K_OPTN 68
#define K_VARS 58
#define K_MENU 48
#define K_LEFT 38
#define K_UP 28
#define K_ALPHA 77
#define K_SQR 67
#define K_EXPO 57
#define K_EXIT 47
#define K_DOWN 37
#define K_RIGHT 27
#define K_THETA 76
#define K_LOG 66
#define K_LN 56
#define K_SIN 46
#define K_COS 36
#define K_TAN 26
#define K_FRAC 75
#define K_FD 65
#define K_LPAR 55
#define K_RPAR 45
#define K_COMMA 35
#define K_STORE 25
#define K_7 74
#define K_8 64
#define K_9 54
#define K_DEL 34
#define K_4 73
#define K_5 63
#define K_6 53
#define K_MULT 43
#define K_DIV 33
#define K_1 72
#define K_2 62
#define K_3 52
#define K_PLUS 42
#define K_MINUS 32
#define K_0 71
#define K_DOT 61
#define K_EXP 51
#define K_NEG 41
#define K_EXE 31
#define K_AC 10
#endif //_KEY
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2
merci a tout le monde pour son soutien
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm
(dont je connais le nom, mais pas vous )Arcuz !Citer : Posté le 05/10/2013 19:51 | # | Fichier joint
et comme je suis gentil, je rajoute une fonction d'affichage de texte (toujours de pierrotLL)
les fonctions setFont et getActualFont ne sont pas utiles, mais textPrint permet d'afficher une chaine de caractere en XY, avec comme message c, dans la taille size, avec la couleur color
Ajouté le 05/10/2013 à 19:53 :
(la taille est equivalente au zoom je crois, donc 1 = taille normale)
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2
merci a tout le monde pour son soutien
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm
(dont je connais le nom, mais pas vous )Arcuz !Citer : Posté le 05/10/2013 20:14 | #
Merci je met à jour rapidement
Ajouté le 05/10/2013 à 20:31 :
Voilà pour cette mise a jour
Edit 300 points
Zelda de Smashmaster
Super Geek Brothers de Siapran
Pac-Man
Pac-Man Color
Meta Ball
Add-ins Jetpack Joyride et Pac-Man sur PRIZM (les 2 non commencés mais en réflexion)
A la recherche des sprites jetpack Joride si quelqu'un les a en couleur
Citer : Posté le 05/10/2013 20:47 | #
Afficher un point avec un canal alpha est t-il vraiment utile ?
Un simple
{
char* VRAM = (char*)0xA8000000;
VRAM += [maroon]2[/maroon]*(y*LCD_WIDTH_PX + x);
*(VRAM++) = (color&0x0000FF00)>>8;
*(VRAM++) = (color&0x000000FF);
[b][blue]return[/blue][/b];
}
La constante LCD_WIDTH_PX est définie entre autres dans <display.h>
Citer : Posté le 05/10/2013 20:55 | #
Ok merci ça marche
Ajouté le 05/10/2013 à 21:06 :
Est-ce que plusieurs bons programmeurs pourraient vérifier si les codes sont bons ?
N'hésitez pas à continuer d'exposez ici vos plus belles découvertes !
Je pense à Smashmaster qui programme Zelda. Il aura surement de bons tuyaux à nous passer
Zelda de Smashmaster
Super Geek Brothers de Siapran
Pac-Man
Pac-Man Color
Meta Ball
Add-ins Jetpack Joyride et Pac-Man sur PRIZM (les 2 non commencés mais en réflexion)
A la recherche des sprites jetpack Joride si quelqu'un les a en couleur
Citer : Posté le 05/10/2013 21:12 | #
une fonction qui regle les fps (utile quand le nombre d'ennemi/objet est variable)
{
static unsigned int fps = 0, fps_count = 0;
do
{
fps = RTC_GetTicks();
}
while(fps < fps_count+fpsWish);
fps_count = RTC_GetTicks();
}
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2
merci a tout le monde pour son soutien
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm
(dont je connais le nom, mais pas vous )Arcuz !Citer : Posté le 06/10/2013 10:36 | #
Il serait en fait peut-être plus judicieux d'appeler la fonction pour "allumer" un pixel pixelOn ou pixel, car c'est plus un pixel qu'un point qu'elle affiche.
Sinon, je viens juste d'adapter cette fonction pour qu'elle marche sur la calto (elle utilise la fonction qui s'appelle "point" pour l'instant, mais il faut voir ,si il y a modification du nom )
{
[purple]int[/purple] er = [maroon]1[/maroon] - rayon;
[purple]int[/purple] erY = [maroon]1[/maroon];
[purple]int[/purple] erX = -2 * rayon;
[purple]int[/purple] x = rayon, y = [maroon]0[/maroon];
point(x0, y0 + rayon, couleur);
point(x0, y0 - rayon, couleur);
point(x0 + rayon, y0, couleur);
point(x0 - rayon, y0, couleur);
[b][blue]while[/blue][/b](y < x)
{
[b][blue]if[/blue][/b](er > 0)
{
x--;
erX += [maroon]2[/maroon];
er += erX;
}
y++;
erY += [maroon]2[/maroon];
er += erY;
point(x0 + x, y0 + y, couleur);
point(x0 - x, y0 + y, couleur);
point(x0 + x, y0 - y, couleur);
point(x0 - x, y0 - y, couleur);
point(x0 + y, y0 + x, couleur);
point(x0 - y, y0 + x, couleur);
point(x0 + y, y0 - x, couleur);
point(x0 - y, y0 - x, couleur);
}
}
Penser à inclure color.h pour les couleurs.
J'ai fait ça vite fait ce matin, après il faut voir si elle peut s'optimiser plus...
Citer : Posté le 06/10/2013 11:05 | #
Ajouté à la liste des meilleurs tutoriels de programmation.
Bon courage pour la mise à jour
Vitesse des fonctions en Basic Casio | 7 days CPC | Casio Universal Wiki | Tutoriel Basic Casio
>>> Give me a click Brother <<< >>> Teste mon générateur de mots nouveaux <<<
>>> Random Youtube Video <<<
Citer : Posté le 06/10/2013 11:33 | #
Merci
Zelda de Smashmaster
Super Geek Brothers de Siapran
Pac-Man
Pac-Man Color
Meta Ball
Add-ins Jetpack Joyride et Pac-Man sur PRIZM (les 2 non commencés mais en réflexion)
A la recherche des sprites jetpack Joride si quelqu'un les a en couleur
Citer : Posté le 06/10/2013 15:46 | #
Quelqu'un est chaud pour faire une ColorLib (comme MonochromeLib) pour la Prizm ?
Citer : Posté le 06/10/2013 15:58 | #
C'est sur quoi je travaille .Ce sera la fxCG20LIb mais je peut changer le mon peut-être si il y a d'autres bonnes propositions.
Ajouté le 06/10/2013 à 16:04 :
Et voici pour l'instant à quoi cela ressemble pour l'instant je reprend les fonctions postées sur PC. Mais je rajouterai surement des fonctions plus personnelles.
/** fxCG20Lib - Color graphic library [b][blue]for[/blue][/b] fx-CG20 - fx-CG10 **/
/** fxCG20Libis a free software **/
/** **/
/** @author Lancelot **/
/** **/
/** @file fxCG20Lib.c **/
/** Code file of fxCG20Lib **/
/** **/
/** @date 10-06-2013 **/
/*************************************************************/
[brown]#include [gray]"fxCG20Lib.h"[/gray][/brown]
[brown]#include <display_syscalls.h>[/brown]
/******************************/
/** Dependencies management **/
/******************************/
[brown]#ifdef CGL_ALL[/brown]
[brown]#define _KEY[/brown]
[brown]#define POINT[/brown]
[brown]#define LINE[/brown]
[brown]#define RANDOM[/brown]
[brown]#define ABS[/brown]
[brown]#define CIRCLE[/brown]
[brown]#endif[/brown]
/***********************/
/**** Functions ****/
/***********************/
[brown]#ifdef _KEY[/brown]
[purple]int[/purple] key_down(int basic_keycode);
/***************/
/** Key codes **/
/***************/[/green][/b]
[brown]#define K_F1 79[/brown]
[brown]#define K_F2 69[/brown]
[brown]#define K_F3 59[/brown]
[brown]#define K_F4 49[/brown]
[brown]#define K_F5 39[/brown]
[brown]#define K_F6 29[/brown]
[brown]#define K_SHIFT 78[/brown]
[brown]#define K_OPTN 68[/brown]
[brown]#define K_VARS 58[/brown]
[brown]#define K_MENU 48[/brown]
[brown]#define K_LEFT 38[/brown]
[brown]#define K_UP 28[/brown]
[brown]#define K_ALPHA 77[/brown]
[brown]#define K_SQR 67[/brown]
[brown]#define K_EXPO 57[/brown]
[brown]#define K_EXIT 47[/brown]
[brown]#define K_DOWN 37[/brown]
[brown]#define K_RIGHT 27[/brown]
[brown]#define K_THETA 76[/brown]
[brown]#define K_LOG 66[/brown]
[brown]#define K_LN 56[/brown]
[brown]#define K_SIN 46[/brown]
[brown]#define K_COS 36[/brown]
[brown]#define K_TAN 26[/brown]
[brown]#define K_FRAC 75[/brown]
[brown]#define K_FD 65[/brown]
[brown]#define K_LPAR 55[/brown]
[brown]#define K_RPAR 45[/brown]
[brown]#define K_COMMA 35[/brown]
[brown]#define K_STORE 25[/brown]
[brown]#define K_7 74[/brown]
[brown]#define K_8 64[/brown]
[brown]#define K_9 54[/brown]
[brown]#define K_DEL 34[/brown]
[brown]#define K_4 73[/brown]
[brown]#define K_5 63[/brown]
[brown]#define K_6 53[/brown]
[brown]#define K_MULT 43[/brown]
[brown]#define K_DIV 33[/brown]
[brown]#define K_1 72[/brown]
[brown]#define K_2 62[/brown]
[brown]#define K_3 52[/brown]
[brown]#define K_PLUS 42[/brown]
[brown]#define K_MINUS 32[/brown]
[brown]#define K_0 71[/brown]
[brown]#define K_DOT 61[/brown]
[brown]#define K_EXP 51[/brown]
[brown]#define K_NEG 41[/brown]
[brown]#define K_EXE 31[/brown]
[brown]#define K_AC 10[/brown]
[purple]int[/purple] keydown(int basic_keycode)
{
const unsigned short* keyboard_register = (unsigned short*)0xA44B0000;
[purple]int[/purple] row, col, word, bit;
row = basic_keycode%10;
col = basic_keycode/10-1;
word = row>>1;
bit = col + 8*(row&1);
[b][blue]return[/blue][/b] (0 != (keyboard_register[word] & 1<<bit));
}
[brown]#endif [green]//_KEY[/brown][/green]
[brown]#ifdef LINE[/brown]
void line(int x1, [purple]int[/purple] y1, [purple]int[/purple] x2, [purple]int[/purple] y2, short color)
{
[purple]int[/purple] i, x, y, dx, dy, sx, sy, cumul;
x = x1;
y = y1;
dx = x2 - x1;
dy = y2 - y1;
sx = sgn(dx);
sy = sgn(dy);
dx = abs(dx);
dy = abs(dy);
Bdisp_SetPoint_VRAM( x, y,(int) color );
[b][blue]if[/blue][/b](dx > dy)
{
cumul = dx / 2;
[b][blue]for[/blue][/b](i=[maroon]1[/maroon] ; i<dx ; i++)
{
x += sx;
cumul += dy;
[b][blue]if[/blue][/b](cumul > dx)
{
cumul -= dx;
y += sy;
}
Bdisp_SetPoint_VRAM( x, y,(int) color );
}
}
[b][blue]else[/blue][/b]
{
cumul = dy / 2;
[b][blue]for[/blue][/b](i=[maroon]1[/maroon] ; i<dy ; i++)
{
y += sy;
cumul += dx;
[b][blue]if[/blue][/b](cumul > dy)
{
cumul -= dy;
x += sx;
}
Bdisp_SetPoint_VRAM(x, y,(int) color);
}
}
}
[brown]#endif [green]//LINE[/brown][/green]
[brown]#ifdef POINT[/brown]
void point(int x, [purple]int[/purple] y, [purple]int[/purple] color)
{
char* VRAM = (char*)0xA8000000;
VRAM += [maroon]2[/maroon]*(y*LCD_WIDTH_PX + x);
*(VRAM++) = (color&0x0000FF00)>>8;
*(VRAM++) = (color&0x000000FF);
[b][blue]return[/blue][/b];
}
[brown]#endif [green]//POINT[/brown][/green]
[brown]#ifdef RANDOM[/brown]
[purple]unsigned int[/purple] random(int seed, [purple]int[/purple] value) [green]// Function from Simon Lothar[/green]
{
static [purple]unsigned int[/purple] lastrandom = [maroon]0[/maroon]x12345678;
[b][blue]if[/blue][/b](seed) lastrandom = seed;
lastrandom = (0x41C64E6D * lastrandom) + 0x3039;
[b][blue]return[/blue][/b] ((lastrandom >> 16) % value);
}
[brown]#endif [green]// RANDOM[/brown][/green]
[brown]#ifdef ABS[/brown]
[purple]int[/purple] abs (int nombre)
{
[b][blue]if[/blue][/b](nombre < 0)return -nombre;
[b][blue]return[/blue][/b] nombre;
}
[brown]#endif [green]// ABS[/brown][/green]
[brown]#ifdef CIRCLE[/brown]
void drawCircle(int x0, [purple]int[/purple] y0, [purple]int[/purple] rayon, [purple]int[/purple] couleur)
{
[purple]int[/purple] er = [maroon]1[/maroon] - rayon;
[purple]int[/purple] erY = [maroon]1[/maroon];
[purple]int[/purple] erX = -2 * rayon;
[purple]int[/purple] x = rayon, y = [maroon]0[/maroon];
point(x0, y0 + rayon, couleur);
point(x0, y0 - rayon, couleur);
point(x0 + rayon, y0, couleur);
point(x0 - rayon, y0, couleur);
[b][blue]while[/blue][/b](y < x)
{
[b][blue]if[/blue][/b](er > 0)
{
x--;
erX += [maroon]2[/maroon];
er += erX;
}
y++;
erY += [maroon]2[/maroon];
er += erY;
point(x0 + x, y0 + y, couleur);
point(x0 - x, y0 + y, couleur);
point(x0 + x, y0 - y, couleur);
point(x0 - x, y0 - y, couleur);
point(x0 + y, y0 + x, couleur);
point(x0 - y, y0 + x, couleur);
point(x0 + y, y0 - x, couleur);
point(x0 - y, y0 - x, couleur);
}
}
[brown]#endif [green]// CIRCLE[/brown][/green]
/** fxCG20Lib - Color graphic library for fx-CG20 - fx-CG10 **/
/** fxCG20Libis a free software **/
/** **/
/** @author Lancelot **/
/** **/
/** @file fxCG20Lib.h **/
/** Include header for fxCG20Lib **/
/** **/
/** @date 10-06-2013 **/
/*************************************************************/
#ifndef fXCG20LIB
#define fXCG20LIB
/****************************************************/
/** uncomment #define of functions you want to use **/
/****************************************************/
// #define CGL_ALL //Auto define all functions
// #define _KEY
// #define LINE
// #define POINT
// #define RANDOM
// #define ABS
// #define CIRCLE
#endif // fXCG20LIB
M'hésiter pas à me signaler les erreurs commises et de possibles améliorations. Mais après il faudrai tester le fonctionnement.
De l'aide sera toujours la bien venue.
Zelda de Smashmaster
Super Geek Brothers de Siapran
Pac-Man
Pac-Man Color
Meta Ball
Add-ins Jetpack Joyride et Pac-Man sur PRIZM (les 2 non commencés mais en réflexion)
A la recherche des sprites jetpack Joride si quelqu'un les a en couleur