Mon premier jet sur la Lynx. Ayant toujours rêvé de coder sur Lynx, voilà qui est fait. Et on va pas s'arrêter là

C'est une release preview... je ne me donne pas d'échéance, et c'est pour tester/explorer les fonctions.
Il faudra :
- mettre un peu de zizique
- essayer d'utiliser les calculs de matrice de Suzy (pour les vector balls qui sont très lentes)
- essayer d'utiliser qu'un plan au lieu de quatre pour les lettres
- etc
#include <lynx.h>
#include <lynxlib.h>
#include <stdlib.h>
// Bug in cc65? Needs real code before C++ comments occur?
extern char balldata[];
extern char BALL01[];
extern char BALL02[];
extern char BALL03[];
extern char BALL04[];
extern char BALL05[];
extern char BALL06[];
extern char BALL07[];
extern char BALL08[];
extern char BALL09[];
extern char BALL10[];
extern char BALL11[];
extern char BALL12[];
extern char BALL13[];
extern char BALL14[];
extern char BALL15[];
extern char BALL16[];
extern char BALL17[];
extern char BALL18[];
extern char BALL19[];
extern char BALL20[];
extern char ft000000[];
extern char ft000001[];
extern char ft000002[];
extern char ft000003[];
extern char ft000004[];
extern char ft000005[];
extern char ft000006[];
extern char ft000007[];
extern char ft000008[];
extern char ft000009[];
extern char ft000010[];
extern char ft000011[];
extern char ft000012[];
extern char ft000013[];
extern char ft000014[];
extern char ft000015[];
extern char ft000016[];
extern char ft000017[];
extern char ft000018[];
extern char ft000019[];
extern char ft000020[];
extern char ft000021[];
extern char ft000022[];
extern char ft000023[];
extern char ft000024[];
extern char ft000025[];
extern char ft000026[];
extern char LETTER01[];
extern char LETTER02[];
extern char LETTER03[];
extern char LETTER04[];
extern char LETTER05[];
extern char LETTER06[];
extern char LETTER07[];
extern char LETTER08[];
extern char LETTER09[];
extern char LETTER10[];
extern char LETTER11[];
extern char LETTER12[];
extern char LETTER13[];
extern char LETTER14[];
extern char LETTER15[];
extern char LETTER16[];
extern char LETTER17[];
extern char LETTER18[];
extern char LETTER19[];
extern char LETTER20[];
#asm
_BALL01 dc.b $c4,$10,$20
dc.w _BALL02
dc.w _balldata
dc.w 9,9
dc.w $100,$100
dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
_BALL02 dc.b $c4,$10,$20
dc.w _BALL03
dc.w _balldata
dc.w 9,9
dc.w $100,$100
dc.b $01,$23,$45,$67,$89,$Ab,$cd,$ef
_BALL03 dc.b $c4,$10,$20
dc.w _BALL04
dc.w _balldata
dc.w 9,9
dc.w $100,$100
dc.b $01,$23,$45,$67,$89,$Ab,$cd,$ef
_BALL04 dc.b $c4,$10,$20
dc.w _BALL05
dc.w _balldata
dc.w 9,9
dc.w $100,$100
dc.b $01,$23,$45,$67,$89,$Ab,$cd,$ef
_BALL05 dc.b $c4,$10,$20
dc.w _BALL06
dc.w _balldata
dc.w 9,9
dc.w $100,$100
dc.b $01,$23,$45,$67,$89,$Ab,$cd,$ef
_BALL06 dc.b $c4,$10,$20
dc.w _BALL07
dc.w _balldata
dc.w 9,9
dc.w $100,$100
dc.b $01,$23,$45,$67,$89,$Ab,$cd,$ef
_BALL07 dc.b $c4,$10,$20
dc.w _BALL08
dc.w _balldata
dc.w 9,9
dc.w $100,$100
dc.b $01,$23,$45,$67,$89,$Ab,$cd,$ef
_BALL08 dc.b $c4,$10,$20
dc.w _BALL09
dc.w _balldata
dc.w 9,9
dc.w $100,$100
dc.b $01,$23,$45,$67,$89,$Ab,$cd,$ef
_BALL09 dc.b $c4,$10,$20
dc.w _BALL10
dc.w _balldata
dc.w 9,9
dc.w $100,$100
dc.b $01,$23,$45,$67,$89,$Ab,$cd,$ef
_BALL10 dc.b $c4,$10,$20
dc.w _BALL11
dc.w _balldata
dc.w 9,9
dc.w $100,$100
dc.b $01,$23,$45,$67,$89,$Ab,$cd,$ef
_BALL11 dc.b $c4,$10,$20
dc.w _BALL12
dc.w _balldata
dc.w 9,9
dc.w $100,$100
dc.b $01,$23,$45,$67,$89,$Ab,$cd,$ef
_BALL12 dc.b $c4,$10,$20
dc.w _BALL13
dc.w _balldata
dc.w 9,9
dc.w $100,$100
dc.b $01,$23,$45,$67,$89,$Ab,$cd,$ef
_BALL13 dc.b $c4,$10,$20
dc.w _BALL14
dc.w _balldata
dc.w 9,9
dc.w $100,$100
dc.b $01,$23,$45,$67,$89,$Ab,$cd,$ef
_BALL14 dc.b $c4,$10,$20
dc.w _BALL15
dc.w _balldata
dc.w 9,9
dc.w $100,$100
dc.b $01,$23,$45,$67,$89,$Ab,$cd,$ef
_BALL15 dc.b $c4,$10,$20
dc.w _BALL16
dc.w _balldata
dc.w 9,9
dc.w $100,$100
dc.b $01,$23,$45,$67,$89,$Ab,$cd,$ef
_BALL16 dc.b $c4,$10,$20
dc.w _BALL17
dc.w _balldata
dc.w 9,9
dc.w $100,$100
dc.b $01,$23,$45,$67,$89,$Ab,$cd,$ef
_BALL17 dc.b $c4,$10,$20
dc.w _BALL18
dc.w _balldata
dc.w 9,9
dc.w $100,$100
dc.b $01,$23,$45,$67,$89,$Ab,$cd,$ef
_BALL18 dc.b $c4,$10,$20
dc.w _BALL19
dc.w _balldata
dc.w 9,9
dc.w $100,$100
dc.b $01,$23,$45,$67,$89,$Ab,$cd,$ef
_BALL19 dc.b $c4,$10,$20
dc.w _BALL20
dc.w _balldata
dc.w 9,9
dc.w $100,$100
dc.b $01,$23,$45,$67,$89,$Ab,$cd,$ef
_BALL20 dc.b $c4,$10,$20
dc.w 0
dc.w _balldata
dc.w 9,9
dc.w $100,$100
dc.b $01,$23,$45,$67,$89,$Ab,$cd,$ef
_LETTER01 dc.b $c4,$10,$20
dc.w _LETTER02
dc.w 0,0,0,$100,$100
dc.b $01,$23,$45,$67,$89,$Ab,$cd,$ef
_LETTER02 dc.b $c4,$10,$20
dc.w _LETTER03
dc.w 0,0,0,$100,$100
dc.b $01,$23,$45,$67,$89,$Ab,$cd,$ef
_LETTER03 dc.b $c4,$10,$20
dc.w _LETTER04
dc.w 0,0,0,$100,$100
dc.b $01,$23,$45,$67,$89,$Ab,$cd,$ef
_LETTER04 dc.b $c4,$10,$20
dc.w _LETTER05
dc.w 0,0,0,$100,$100
dc.b $01,$23,$45,$67,$89,$Ab,$cd,$ef
_LETTER05 dc.b $c4,$10,$20
dc.w _LETTER06
dc.w 0,0,0,$100,$100
dc.b $01,$23,$45,$67,$89,$Ab,$cd,$ef
_LETTER06 dc.b $c4,$10,$20
dc.w _LETTER07
dc.w 0,0,0,$100,$100
dc.b $01,$23,$45,$67,$89,$Ab,$cd,$ef
_LETTER07 dc.b $c4,$10,$20
dc.w _LETTER08
dc.w 0,0,0,$100,$100
dc.b $01,$23,$45,$67,$89,$Ab,$cd,$ef
_LETTER08 dc.b $c4,$10,$20
dc.w _LETTER09
dc.w 0,0,0,$100,$100
dc.b $01,$23,$45,$67,$89,$Ab,$cd,$ef
_LETTER09 dc.b $c4,$10,$20
dc.w _LETTER10
dc.w 0,0,0,$100,$100
dc.b $01,$23,$45,$67,$89,$Ab,$cd,$ef
_LETTER10 dc.b $c4,$10,$20
dc.w _LETTER11
dc.w 0,0,0,$100,$100
dc.b $01,$23,$45,$67,$89,$Ab,$cd,$ef
_LETTER11 dc.b $c4,$10,$20
dc.w _LETTER12
dc.w 0,0,0,$100,$100
dc.b $01,$23,$45,$67,$89,$Ab,$cd,$ef
_LETTER12 dc.b $c4,$10,$20
dc.w _LETTER13
dc.w 0,0,0,$100,$100
dc.b $01,$23,$45,$67,$89,$Ab,$cd,$ef
_LETTER13 dc.b $c4,$10,$20
dc.w _LETTER14
dc.w 0,0,0,$100,$100
dc.b $01,$23,$45,$67,$89,$Ab,$cd,$ef
_LETTER14 dc.b $c4,$10,$20
dc.w _LETTER15
dc.w 0,0,0,$100,$100
dc.b $01,$23,$45,$67,$89,$Ab,$cd,$ef
_LETTER15 dc.b $c4,$10,$20
dc.w _LETTER16
dc.w 0,0,0,$100,$100
dc.b $01,$23,$45,$67,$89,$Ab,$cd,$ef
_LETTER16 dc.b $c4,$10,$20
dc.w _LETTER17
dc.w 0,0,0,$100,$100
dc.b $01,$23,$45,$67,$89,$Ab,$cd,$ef
_LETTER17 dc.b $c4,$10,$20
dc.w _LETTER18
dc.w 0,0,0,$100,$100
dc.b $01,$23,$45,$67,$89,$Ab,$cd,$ef
_LETTER18 dc.b $c4,$10,$20
dc.w _LETTER19
dc.w 0,0,0,$100,$100
dc.b $01,$23,$45,$67,$89,$Ab,$cd,$ef
_LETTER19 dc.b $c4,$10,$20
dc.w _LETTER20
dc.w 0,0,0,$100,$100
dc.b $01,$23,$45,$67,$89,$Ab,$cd,$ef
_LETTER20 dc.b $c4,$10,$20
dc.w 0
dc.w 0,0,0,$100,$100
dc.b $01,$23,$45,$67,$89,$Ab,$cd,$ef
#endasm
char *BALL[20] = {BALL01, BALL02, BALL03, BALL04, BALL05,
BALL06, BALL07, BALL08, BALL09, BALL10,
BALL11, BALL12, BALL13, BALL14, BALL15,
BALL16, BALL17, BALL18, BALL19, BALL20};
char *fontes[27] = {ft000000, ft000001, ft000002, ft000003, ft000004,
ft000005, ft000006, ft000007, ft000008, ft000009,
ft000010, ft000011, ft000012, ft000013, ft000014,
ft000015, ft000016, ft000017, ft000018, ft000019,
ft000020, ft000021, ft000022, ft000023, ft000024,
ft000025, ft000026};
char *MESSAGE[20] = {LETTER01, LETTER02, LETTER03, LETTER04, LETTER05,
LETTER06, LETTER07, LETTER08, LETTER09, LETTER10,
LETTER11, LETTER12, LETTER13, LETTER14, LETTER15,
LETTER16, LETTER17, LETTER18, LETTER19, LETTER20};
#include "sinus.h"
#include "cosinus.h"
#include "gotballs.pal"
extern uchar VBLflag;
#asm
_VBLflag = $a0
#endasm
#define VSYNC { ++VBLflag; while(VBLflag) {} }
VBL() interrupt { VBLflag = 0; }
#define NB_POINTS 20
struct Tball {
int point_x, point_y, point_z;
int target_x, target_y, target_z;
int screen_x, screen_y, screen_z;
uchar order_set;
uchar order_val;
} ball[NB_POINTS];
uchar ball_order_val[NB_POINTS];
uchar ball_order_index = 0;
register uchar joy;
void WaitTicks(waitticks) uchar waitticks {
uchar tick;
tick = 0;
while (tick < waitticks) {
VSYNC;
++tick;
}
}
uchar WaitButton() {
uchar key;
while (!(key = joystick)) {}
while (joystick) {}
return key;
}
void Point_add(pi, px, py, pz) uchar pi; int px; int py; int pz; {
if (pi < NB_POINTS) {
ball[pi].point_x = px;
ball[pi].point_y = py;
ball[pi].point_z = pz;
ball[pi].target_x = px;
ball[pi].target_y = py;
ball[pi].target_z = pz;
}
}
int MUL(a, b) int a; int b; {
if (a == 0 || b == 0) { return 0; }
matha = a;
mathb = b;
while(PEEK(0xfc92) & 0x80) {}
return mathe;
}
int mathacc at 0xfc6d;
void ADD_Reset() { POKE(0xfc6c, 0); POKE(0xfc6e, 0); }
void ADD_MUL(a, b) int a; int b; {
if (a == 0 || b == 0) { return 0; }
matha = a;
mathb = b;
while(PEEK(0xfc92) & 0x80) {}
}
int ADD_Get() { return mathacc; }
char mathe1 at 0xfc60;
int mathe2 at 0xfc61;
char mathe3 at 0xfc63;
uchar s;
int MAT(e, c) int e; int c; {
if (e == 0 || c == 0) { return 0; }
s = 0;
if (c & 0x8000) { mathc = -c; s++; } else { mathc = c; }
mathe1 = 0x00;
if (e & 0x8000) { mathe2 = -e; s++; } else { mathe2 = e; }
mathe3 = 0x00;
while(PEEK(0xfc92) & 0x80) {}
if (s & 1) { return -matha; }
return matha;
}
int DIV(e, c) int e; int c; {
if (e == 0 || c == 0) { return 0; }
s = 0;
if (c & 0x8000) { mathc = -c; s++; } else { mathc = c; }
if (e & 0x8000) { mathe = -e; s++; } else { mathe = e; }
mathe = e;
POKE(0xfc62, 0);
while(PEEK(0xfc92) & 0x80) {}
if (s & 1) { return -matha; }
return matha;
}
uint univers_x_rot, univers_y_rot, univers_z_rot;
void Vectors() {
uchar i, j, k;
int xx, yy, y2, zz, pp, mm;
// circle
Point_add( 0, 120, 0, 0);
Point_add( 1, 103, -59, 0);
Point_add( 2, 60,-103, 0);
Point_add( 3, 0,-120, 0);
Point_add( 4, -59,-103, 0);
Point_add( 5,-103, -60, 0);
Point_add( 6,-120, 0, 0);
Point_add( 7,-103, 59, 0);
Point_add( 8,-60, 103, 0);
Point_add( 9, 0, 120, 0);
Point_add(10, 59, 103, 0);
Point_add(11, 103, 60, 0);
// cube
Point_add(12, -20, -20, -10);
Point_add(13, 20, -20, -10);
Point_add(14, 20, 20, -10);
Point_add(15, -20, 20, -10);
Point_add(16, -20, -20, 10);
Point_add(17, 20, -20, 10);
Point_add(18, 20, 20, 10);
Point_add(19, -20, 20, 10);
for (;;) {
for (i = 0; i < NB_POINTS; ++i) {
xx = ball[i].point_x;
yy = ball[i].point_y;
zz = ball[i].point_z;
ADD_Reset();
ADD_MUL(cosinus[univers_z_rot], yy);
ADD_MUL(sinus[univers_z_rot], -xx);
y2 = ADD_Get();
ADD_Reset();
ADD_MUL(cosinus[univers_z_rot], xx);
ADD_MUL(sinus[univers_z_rot], yy);
xx = ADD_Get();
ADD_Reset();
ADD_MUL(cosinus[univers_x_rot], y2);
ADD_MUL(sinus[univers_x_rot], zz);
ball[i].target_y = ADD_Get();
ADD_Reset();
ADD_MUL(cosinus[univers_x_rot], zz);
ADD_MUL(sinus[univers_x_rot], -y2);
zz = ADD_Get();
ADD_Reset();
ADD_MUL(cosinus[univers_y_rot], xx);
ADD_MUL(sinus[univers_y_rot], -zz);
ball[i].target_x = ADD_Get();
ADD_Reset();
ADD_MUL(cosinus[univers_y_rot], zz);
ADD_MUL(sinus[univers_y_rot], xx);
ball[i].target_z = ADD_Get();
// y2 = (MUL(cosinus[univers_z_rot], yy) - MUL(sinus[univers_z_rot], xx)) >> 8;
// xx = (MUL(cosinus[univers_z_rot], xx) + MUL(sinus[univers_z_rot], yy)) >> 8;
//ball[i].target_y = (MUL(cosinus[univers_x_rot], y2) + MUL(sinus[univers_x_rot], zz)) >> 8;
// zz = (MUL(cosinus[univers_x_rot], zz) - MUL(sinus[univers_x_rot], y2)) >> 8;
//ball[i].target_x = (MUL(cosinus[univers_y_rot], xx) - MUL(sinus[univers_y_rot], zz)) >> 8;
//ball[i].target_z = (MUL(cosinus[univers_y_rot], zz) + MUL(sinus[univers_y_rot], xx)) >> 8;
ball[i].screen_x = MAT(ball[i].target_x, ball[i].target_z + 256);
ball[i].screen_y = MAT(ball[i].target_y, ball[i].target_z + 256);
ball[i].screen_z = ball[i].target_z + 1000;
SCBX(BALL[i]) = 80 - (ball[i].screen_x << 1);
SCBY(BALL[i]) = 51 - (ball[i].screen_y << 1);
SCBNEXT(BALL[i]) = 0;
SCBHS(BALL[i]) = 256 + (ball[i].target_z << 1);
SCBVS(BALL[i]) = SCBHS(BALL[i]);
ball[i].order_set = 0;
ball_order_val[i] = 0;
if (joy = joystick) { break; }
}
ball_order_index = 0;
if (!joy) {
for (i = 0; i < NB_POINTS; ++i) {
mm = -1;
pp = 1500;
for (k = 0; k < NB_POINTS; ++k) {
if (ball[k].screen_z < pp && ball[k].order_set == 0) {
pp = ball[k].screen_z;
mm = k;
}
}
if (mm > -1) {
ball_order_val[ball_order_index] = mm;
ball[mm].order_set = 1;
if (ball_order_index < NB_POINTS) { ball_order_index++; }
}
}
for (i = 0; i < NB_POINTS - 1; ++i) {
SCBNEXT(BALL[ball_order_val[i]]) = BALL[ball_order_val[i + 1]];
}
DrawFBox(0, 0, 160, 102, 0);
DrawSprite(BALL[ball_order_val[0]]);
Text_display();
univers_x_rot += 1; if (univers_x_rot >= 255) { univers_x_rot -= 255; }
univers_y_rot += 3; if (univers_y_rot >= 255) { univers_y_rot -= 255; }
univers_z_rot += 5; if (univers_z_rot >= 255) { univers_z_rot -= 255; }
}
if (!joy) {
WaitTicks(1);
SwapBuffers();
}
else {
break;
}
}
}
void Chaos() {
uchar i, j;
for (i = 0; i < NB_POINTS; ++i) {
Point_add(i, random() % 160, random() % 102, (NB_POINTS - i) >> 2);
ball[i].order_val = (random() % 4) + 1;
SCBHS(BALL[i]) = 256 - (ball[i].point_z << 5);
SCBVS(BALL[i]) = SCBHS(BALL[i]);
SCBNEXT(BALL[i]) = 0;
}
for (i = 0; i < NB_POINTS - 1; ++i) {
SCBNEXT(BALL[i]) = BALL[i + 1];
}
for (;;) {
for (i = 0; i < NB_POINTS; ++i) {
j = 5 - ball[i].point_z; if (j == 0) { j = 1; }
switch (ball[i].order_val) {
case 1:
ball[i].point_x += j;
ball[i].point_y += j;
break;
case 2:
ball[i].point_x -= j;
ball[i].point_y -= j;
break;
case 3:
ball[i].point_x -= j;
ball[i].point_y += j;
break;
default:
ball[i].point_x += j;
ball[i].point_y -= j;
break;
}
if (ball[i].point_y < 0 || ball[i].point_y > 102 || ball[i].point_x < 0 || ball[i].point_x > 160) {
Point_add(i, random() % 160, random() % 102, ball[i].point_z);
ball[i].order_val = (random() % 4) + 1;
}
SCBX(BALL[i]) = ball[i].point_x;
SCBY(BALL[i]) = ball[i].point_y;
if (joy = joystick) { break; }
}
if (!joy) {
DrawFBox(0, 0, 160, 102, 0);
DrawSprite(BALL[0]);
Text_display();
}
if (!joy) {
WaitTicks(1);
SwapBuffers();
}
else {
break;
}
}
}
void Boing() {
uchar i;
int j;
for (i = 0; i < NB_POINTS; ++i) {
Point_add(i, random() % 160, 0, (random() % 256));
SCBHS(BALL[i]) = 256;
SCBVS(BALL[i]) = 256;
SCBNEXT(BALL[i]) = 0;
}
for (i = 0; i < NB_POINTS - 1; ++i) {
SCBNEXT(BALL[i]) = BALL[i + 1];
}
for (;;) {
for (i = 0; i < NB_POINTS; ++i) {
j = sinus[ball[i].point_z];
if (j < 0) { j = -j; }
ball[i].point_y = (102 - (MUL(j, 96) >> 7));
if (ball[i].point_y > 90) {
SCBHS(BALL[i]) = 256 + ((ball[i].point_y - 90) << 1);
SCBVS(BALL[i]) = 256 - ((ball[i].point_y - 90) << 4);
}
else {
SCBHS(BALL[i]) = 256;
SCBVS(BALL[i]) = 256;
}
ball[i].point_z += 3;
if (ball[i].point_z >= 255) {
ball[i].point_z -= 255;
}
SCBX(BALL[i]) = ball[i].point_x;
SCBY(BALL[i]) = ball[i].point_y;
if (joy = joystick) { break; }
}
if (!joy) {
DrawFBox(0, 0, 160, 102, 0);
DrawSprite(BALL[0]);
Text_display();
}
if (!joy) {
WaitTicks(1);
SwapBuffers();
}
else {
break;
}
}
}
void Serpent() {
uchar i;
int j, k, l, m;
for (i = 0; i < NB_POINTS; ++i) {
Point_add(i, 0, 0, i << 2);
SCBHS(BALL[i]) = 120 + (i * 8);
if (i > 17) { SCBHS(BALL[i]) = 256; }
SCBVS(BALL[i]) = SCBHS(BALL[i]);
SCBNEXT(BALL[i]) = 0;
}
for (i = 0; i < NB_POINTS - 1; ++i) {
SCBNEXT(BALL[i]) = BALL[i + 1];
}
for (;;) {
for (i = 0; i < NB_POINTS; ++i) {
j = sinus[(ball[i].point_z * 2) % 256];
k = cosinus[(ball[i].point_z * 3) % 256];
ball[i].point_x = 80 - (MUL(j, 140) >> 8);
ball[i].point_y = 51 - (MUL(k, 80) >> 8);
ball[i].point_z += 5;
if (ball[i].point_z >= 255) {
ball[i].point_z -= 255;
}
SCBX(BALL[i]) = ball[i].point_x;
SCBY(BALL[i]) = ball[i].point_y;
if (joy = joystick) { break; }
}
if (!joy) {
DrawFBox(0, 0, 160, 102, 0);
DrawSprite(BALL[0]);
Text_display();
}
if (!joy) {
WaitTicks(1);
SwapBuffers();
}
else {
break;
}
}
}
#define NB_LETTER 20
uchar text_line, text_all;
uchar *text[13] = {
"GOTBALLS ",
"BY RAJAH LONE ",
"PRESS KEY TO CHANGE ",
"BALLS DISPLAY MODE ",
"THANKS TO ",
"COOPER OF PARADIZE ",
"DBUG OF NEXT ",
"KARRI VINCE FADEST ",
"HELLO TO ",
"FROST AND SECTOR ONE",
"MJJPRODS AND DUNE ",
"MINZ SKWEEK ANATA ",
" "};
void Text_set() {
uchar i, j;
text_all = 0;
for (i = 0; i < NB_LETTER; ++i) {
SCBX(MESSAGE[i]) = 2 + (i * 6);
SCBY(MESSAGE[i]) = -10 - (i * 10);
j = PEEK(text[text_line] + i);
if (j > 64 && j < 91) { j -= 64; } else { j = 0; }
SCBDATA(MESSAGE[i]) = fontes[j];
}
}
void Text_display() {
uchar i;
int xt, yt;
for (i = 0; i < NB_LETTER; ++i) {
yt = SCBY(MESSAGE[i]);
if (yt < 70) { yt += 5; }
if (SCBY(LETTER20) == SCBY(LETTER01)) { text_all = 1; }
if (text_all == 1) { yt++; }
SCBY(MESSAGE[i]) = yt;
if (yt > 102) {
text_line++;
if (text_line > 12) { text_line = 0; }
Text_set();
}
}
DrawSprite(LETTER01);
}
void main() {
joy = 0;
InitIRQ();
InstallIRQ(2, VBL);
EnableIRQ(2);
CLI;
_SetRGB(pal);
sprsys = _sprsys |= 0xc0;
SetBuffers(0xa000, 0xc000, 0);
text_line = 0;
Text_set();
univers_x_rot = 0;
univers_y_rot = 0;
univers_z_rot = 0;
while(1) {
Chaos();
while (joy = joystick) {}
Boing();
while (joy = joystick) {}
Serpent();
while (joy = joystick) {}
Vectors();
while (joy = joystick) {}
}
}
est fourni pour apprentissage. A noter que la méthode du DrawFBox est plus secure pour effacer l'écran que la méthode du sprite 1 pixel zoomé à 160*102.
Grand merci au Jedi Coopy qui m'a aidé à tester tout ça, vu que j'ai pas encore codé le logiciel de transfert vers la cartouche de Karri. ça a été codé sur un pseudo ST (NoSTalgia et MagiC) et testé sur Handy MacOSX.
Voilà
