J'ai voulu réaliser une sorte d'image panoramique qui donnerait l'illusion que l'on regarde un paysage à 360°.
Le résulta est plutôt sympa sauf lorsque l'on s'arrête à l’ endroit de la jonction après un déplacement de gauche à droite (bizarrement lors des déplacements de droite à gauche je ne rencontre pas le Pb).
Je vous livre le code et la rom.
Pour vous rendre compte de ce que je veux dire, lancez la rom, appuyez sur « gauche » pendant 2 secondes puis relâchez.
J'ai vu qqpart que Vince tu avais fais une sorte d'image similaire alors si toi ou fadest aviez une idée du pourquoi de ce bug et de comment le corriger...
http://pageperso.aol.fr/firenzemouss/panorama.o
#include <stdlib.h>
#include <lynx.h>
#include <lynxlib.h>
#include "inc\lake.pal"
#define JOY_RIGHT 0x10
#define JOY_LEFT 0x20
#define JOY_DOWN 0x40
#define JOY_UP 0x80
#define BUTTON_OPTION1 0x08
#define BUTTON_OPTION2 0x04
#define BUTTON_INNER 0x02
#define BUTTON_OUTER 0x01
#define BUTTON_PAUSE 0x01
char SCREEN[8160] at (MEMTOP-16320);
char RENDER[8160] at (MEMTOP-8160);
extern char lake[];
extern char SCB[];
#asm
_SCB dc.b $c0,$10,$20
dc.w 0,0
dc.w 0,0,$100,$100
dc.b $01,$23,$45,$67,$89,$ab,$cd,$ef
#endasm
int x,y;
int dir_x;
void Vsync()
{
#asm
vretrace:
lda $fd0a
bne vretrace
#endasm
}
char main()
{
InitIRQ();
CLI;
SetBuffers(SCREEN, RENDER ,0);
SetRGB(pal);
DrawFBox(0,0,160,102,0);
SCBX(SCB) = 0;
SCBY(SCB) = 0;
SCBDATA(SCB) = lake;
x=0;
for( ; ; )
{
x=x+dir_x;
if (joystick & JOY_RIGHT)x--;
if (x<-450) {x=0;}
SCBX(SCB) = x;
DrawSprite(SCB);
SCBX(SCB) = x+450;
DrawSprite(SCB);
if (joystick & JOY_LEFT)x++;
if (x>0) {x=-450;}
SCBX(SCB) = x;
DrawSprite(SCB);
Vsync();
SwapBuffers();
}
}