#define NO_EXIT_SUPPORT
#define NO_CALC_DETECT
#define NO_AMS_CHECK
#define USE_TI89
#define OPTIMIZE_ROM_CALLS
#define EXECUTE_IN_GHOST_SPACE
#define fatal(s) ({ST_showHelp(s);return;})
#define Draw1(arg) {DrawStrXY(58,i+13,"Bomber Man",arg);}
#define Draw2(arg) {DrawStrXY(56,i+21,"Bomber Maze",arg);}
#define Draw3(arg) {DrawStrXY(69,i+29,"Kalah",arg);}
#define Draw4(arg) {DrawStrXY(69,i+37,"Tetris",arg);}
#define Draw5(arg) {DrawStrXY(65,i+45,"Ti-Chess",arg);}
#include <tigcclib.h>
short x1,x2,y1,y2,i,key,chx,max,prev;
char *fptr, *cptr;
unsigned short plen;
HANDLE h;
void _main(void)
{
x1=50;
y1=18;
max=5;
LCD_BUFFER buffer;
LCD_save (buffer);
GrayOn();
ClrScr();
LCD_restore (buffer);
FontSetSys(F_4x6);
x2=159-x1;
y2=98-y1;
for(i=y1+8;i<y2-7;i++)
{
DrawClipLine(MakeWinRect(x1+1,i,x2-1,i),ScrRect,A_REVERSE);
}
DrawClipRect(MakeWinRect(x1,y1,x2,y2),ScrRect,A_NORMAL|B_ROUNDED);
x1=x1+6;
x2=x2-6;
i=y1;
do
{
y1=y1+1;
if(y1==i+9){y1=y2-8;}
if(y1==i+2){x1=x1-2;x2=x2+2;}
if(y1==i+3||y1==i+4||y1==i+6){x1=x1-1;x2=x2+1;}
if(y1==y2-5||y1==y2-3||y1==y2-2){x1=x1+1;x2=x2-1;}
if(y1==y2-1){x1=x1+2;x2=x2-2;}
DrawClipLine(MakeWinRect(x1,y1,x2,y1),ScrRect,A_NORMAL);
}while(y1!=y2);
DrawStrXY(61,y2-6,"JBJ © 2002",A_REVERSE);
DrawStrXY(71,i+2,"Jeux",A_REVERSE);
Draw1(A_NORMAL);
Draw2(A_NORMAL);
Draw3(A_NORMAL);
Draw4(A_NORMAL);
Draw5(A_NORMAL);
SetPlane(LIGHT_PLANE);
x1=x1-6;
x2=x2+6;
y1=i;
DrawClipRect(MakeWinRect(x1,y1,x2,y2),ScrRect,A_NORMAL|B_ROUNDED);
x1=x1+6;
x2=x2-6;
do
{
y1=y1+1;
if(y1==i+9){y1=y2-8;}
if(y1==i+2){x1=x1-2;x2=x2+2;}
if(y1==i+3||y1==i+4||y1==i+6){x1=x1-1;x2=x2+1;}
if(y1==y2-5||y1==y2-3||y1==y2-2){x1=x1+1;x2=x2-1;}
if(y1==y2-1){x1=x1+2;x2=x2-2;}
DrawClipLine(MakeWinRect(x1,y1,x2,y1),ScrRect,A_NORMAL);
}while(y1!=y2);
DrawStrXY(61,y2-6,"JBJ © 2002",A_REVERSE);
Draw1(A_NORMAL);
DrawStrXY(71,i+2,"Jeux",A_REVERSE);
chx=1;
do
{
key = ngetchx();
prev = chx;
switch(key)
{
case 340:
if(chx!=max){chx=chx+1;}
else chx=1;
break;
case 337:
if(chx!=1){chx=chx-1;}
else chx=max;
break;
case 13:
GrayOff();
LCD_restore (buffer);
if(chx==1)
{
SYM_ENTRY *SymPtr=DerefSym(SymFind(SYMSTR("eqw")));
if(!SymPtr) fatal("program not found");
if(HeapGetLock(h))
{
cptr=fptr=HeapDeref(h);
h=0;
}
else
{
cptr=fptr=HLock(h);
}
plen=*(short*)(cptr)+3;
if(SymPtr->flags.bits.archived)
{
if(!(cptr=malloc(plen)))
{
if(h) HeapUnlock(h);
fatal ("Out of memory");
}
memcpy(cptr,fptr,plen);
}
EX_patch(cptr+0x40002,cptr+plen+0x3FFFE);
ASM_call(cptr+0x40002);
if(h) HeapUnlock(h);
if(cptr!=fptr) free(cptr);
}
return;
break;
}
if(prev==1){Draw1(A_XOR);}
if(prev==2){Draw2(A_XOR);}
if(prev==3){Draw3(A_XOR);}
if(prev==4){Draw4(A_XOR);}
if(prev==5){Draw5(A_XOR);}
if(chx==1){Draw1(A_NORMAL);}
if(chx==2){Draw2(A_NORMAL);}
if(chx==3){Draw3(A_NORMAL);}
if(chx==4){Draw4(A_NORMAL);}
if(chx==5){Draw5(A_NORMAL);}
}while(key!=264);
GrayOff();
LCD_restore (buffer);
}
Watcha @ka JBJ @ka @ngelfire
ICQ: 109631918