TempleOSCDV5.01.ISO

This commit is contained in:
Terry A. Davis authored and minexew committed 2018-09-08 21:48:15 +02:00
1 parent f6eacf7744
commit 320c7ee98a
219 files changed
+5211 -4853

No files matched your search

Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+8 -8
View File
@@ -98,13 +98,13 @@ F64 man_
F64 t0,tf;
#define NUM_MONSTERS 10
#define MONSTERS_NUM 10
I64 monsters_left;
class Monster
{
I64 x,y;
Bool dead,pad[7];
} monsters[NUM_MONSTERS];
} monsters[MONSTERS_NUM];
U0 CFTransform(CDC *dc,I64 *x,I64 *y,I64 *z)
{
@@ -308,7 +308,7 @@ U0 DrawIt(CTask *task,CDC *dc)
}
//Draw Monsters
for (i=0,tmpm=monsters;i<NUM_MONSTERS;i++,tmpm++) {
for (i=0,tmpm=monsters;i<MONSTERS_NUM;i++,tmpm++) {
x=tmpm->x;
y=tmpm->y;
if (LOS(x,y,man_xx,man_yy)) {
@@ -350,7 +350,7 @@ U0 DrawIt(CTask *task,CDC *dc)
//Draw Things on heads-up Map
dc->color=LTPURPLE;
for (i=0,tmpm=monsters;i<NUM_MONSTERS;i++,tmpm++)
for (i=0,tmpm=monsters;i<MONSTERS_NUM;i++,tmpm++)
if (!tmpm->dead)
GrPlot3(dc,2*(tmpm->x/SCRN_SCALE),
2*(map_height-1-tmpm->y/SCRN_SCALE),0);
@@ -381,7 +381,7 @@ U0 Fire()
Monster *tmpm;
Noise(100,53,74);
for (i=0,tmpm=monsters;i<NUM_MONSTERS;i++,tmpm++) {
for (i=0,tmpm=monsters;i<MONSTERS_NUM;i++,tmpm++) {
x=tmpm->x;
y=tmpm->y;
if (!tmpm->dead &&
@@ -428,14 +428,14 @@ U0 Init()
man_yy=(map_height-1-MAN_START_Y)*SCRN_SCALE;
man_é=0;
for (i=0,tmpm=monsters;i<NUM_MONSTERS;i++,tmpm++) {
for (i=0,tmpm=monsters;i<MONSTERS_NUM;i++,tmpm++) {
tmpm->dead=FALSE;
do {
tmpm->x=RandU64%((map_width-2)*SCRN_SCALE)+SCRN_SCALE;
tmpm->y=RandU64%((map_height-2)*SCRN_SCALE)+SCRN_SCALE;
} while (!map[(tmpm->y/SCRN_SCALE)*map_width+tmpm->x/SCRN_SCALE]);
}
monsters_left=NUM_MONSTERS;
monsters_left=MONSTERS_NUM;
tf=0;
t0=tS;
}
@@ -447,7 +447,7 @@ U0 AnimateTask(I64)
while (TRUE) {
dd=0.25*SCRN_SCALE*Sin(tS/2);
for (i=0,tmpm=monsters;i<NUM_MONSTERS;i++,tmpm++)
for (i=0,tmpm=monsters;i<MONSTERS_NUM;i++,tmpm++)
if (!tmpm->dead) {
x=tmpm->x;
y=tmpm->y;
Binary file not shown.
+7 -7
View File
@@ -62,13 +62,13 @@ I64 man_x,man_y,man_dx,man_dy;
Bool man_attack;
F64 man_attack_t0;
#define NUM_MONSTERS 10
#define MONSTERS_NUM 10
I64 monsters_left;
class Monster
{
I64 x,y,dx,dy;
Bool dead,pad[7];
} monsters[NUM_MONSTERS];
} monsters[MONSTERS_NUM];
F64 t0,tf;
@@ -176,7 +176,7 @@ U0 DrawIt(CTask *task,CDC *dc)
}
}
for (i=0,tmpm=monsters;i<NUM_MONSTERS;i++,tmpm++)
for (i=0,tmpm=monsters;i<MONSTERS_NUM;i++,tmpm++)
if (!tmpm->dead && LOS(tmpm->x,tmpm->y,man_x,man_y)) {
x1=(tmpm->x-scrn_x)*SCRN_SCALE+SCRN_SCALE/2;
y1=(tmpm->y-scrn_y)*SCRN_SCALE+SCRN_SCALE/2;
@@ -233,7 +233,7 @@ U0 Attack()
man_attack_t0=tS;
Noise(100,53,74);
for (i=0,tmpm=monsters;i<NUM_MONSTERS;i++,tmpm++) {
for (i=0,tmpm=monsters;i<MONSTERS_NUM;i++,tmpm++) {
if (!tmpm->dead &&
man_x+man_dx==tmpm->x && man_y+man_dy==tmpm->y) {
tmpm->dead=TRUE;
@@ -270,7 +270,7 @@ U0 Init()
man_dy=0;
scrn_x=0;
scrn_y=0;
for (i=0,tmpm=monsters;i<NUM_MONSTERS;i++,tmpm++) {
for (i=0,tmpm=monsters;i<MONSTERS_NUM;i++,tmpm++) {
tmpm->dead=FALSE;
tmpm->dx=0;
tmpm->dy=0;
@@ -279,7 +279,7 @@ U0 Init()
tmpm->y=RandU64%(map_height-2)+1;
} while (!map[(tmpm->y)*map_width+tmpm->x]);
}
monsters_left=NUM_MONSTERS;
monsters_left=MONSTERS_NUM;
tf=0;
t0=tS;
}
@@ -296,7 +296,7 @@ U0 AnimateTask(I64)
Monster *tmpm;
while (TRUE) {
for (i=0,tmpm=monsters;i<NUM_MONSTERS;i++,tmpm++)
for (i=0,tmpm=monsters;i<MONSTERS_NUM;i++,tmpm++)
if (!tmpm->dead) {
dx=RandU16%3-1;
dy=RandU16%3-1;
Binary file not shown.
+17 -17
View File
@@ -10,7 +10,7 @@ CTask *main_task;
#define OT_CARRIER 0
#define OT_CRUISER 1
#define OT_FIGHTER 2
#define OT_NUM_TYPES 3
#define OT_TYPES_NUM 3
#define OF_SHIP 1
#define OF_ACTIVE 2
@@ -83,13 +83,13 @@ U0 SquadronRem(Obj *o)
succ->last_in_squadron=pred;
}
#define NUM_PLAYERS 2
#define PLAYERS_NUM 2
I64 num_carriers[NUM_PLAYERS]={2,3},
num_cruisers[NUM_PLAYERS]={2,3},
num_planes_per_squadron[NUM_PLAYERS]={6,5},
num_squadrons_per_carrier[NUM_PLAYERS]={2,3},
num_alive[NUM_PLAYERS],
I64 num_carriers[PLAYERS_NUM]={2,3},
num_cruisers[PLAYERS_NUM]={2,3},
num_planes_per_squadron[PLAYERS_NUM]={6,5},
num_squadrons_per_carrier[PLAYERS_NUM]={2,3},
num_alive[PLAYERS_NUM],
num_squadrons;
Obj *ObjFind(F64 x,F64 y,
@@ -97,7 +97,7 @@ Obj *ObjFind(F64 x,F64 y,
I64 type_mask=-1,I64 player_mask=-1,F64 *_d=NULL)
{
Obj *tmpo=obj_head.next,*best=NULL;
F64 dd,best_dd=MAX_F64;
F64 dd,best_dd=F64_MAX;
while (tmpo!=&obj_head) {
if (tmpo->flags&flag_mask==flag_val &&
Bt(&type_mask,tmpo->type)&&Bt(&player_mask,tmpo->player)) {
@@ -154,7 +154,7 @@ $SP,"<5>",BI=5$
$SP,"<6>",BI=6$
$BG$
U8 *imgs[NUM_PLAYERS][OT_NUM_TYPES]={{$IB,"<1>",BI=1$,$IB,"<2>",BI=2$,$IB,"<3>",BI=3$},{$IB,"<4>",BI=4$,$IB,"<5>",BI=5$,$IB,"<6>",BI=6$}};
U8 *imgs[PLAYERS_NUM][OT_TYPES_NUM]={{$IB,"<1>",BI=1$,$IB,"<2>",BI=2$,$IB,"<3>",BI=3$},{$IB,"<4>",BI=4$,$IB,"<5>",BI=5$,$IB,"<6>",BI=6$}};
U0 DrawIt(CTask *task,CDC *dc)
{
@@ -289,7 +289,7 @@ U0 Init()
launch_t=return_t=set_é_t=0;
main_task=Fs;
num_squadrons=0;
for (player=0;player<NUM_PLAYERS;player++) {
for (player=0;player<PLAYERS_NUM;player++) {
num_alive[player]=0;
for (ship=0;ship<num_cruisers[player];ship++) {
tmpo1=CAlloc(sizeof(Obj));
@@ -380,14 +380,14 @@ U0 CleanUp()
}
Obj *ObjLaunch(I64 player,I64 squadron=-1,
Obj *host=NULL,F64 x=MAX_F64,F64 y=MAX_F64,F64 é=MAX_F64)
Obj *host=NULL,F64 x=F64_MAX,F64 y=F64_MAX,F64 é=F64_MAX)
{
Obj *tmpo;
F64 cur_time=tS;
if (!host)
host=ObjFind(x,y,,,1<<OT_CARRIER,1<<player);
if (host && cur_time>host->next_action_time) {
if (é==MAX_F64)
if (é==F64_MAX)
é=Arg(x-host->x,y-host->y);
tmpo=obj_head.next;
while (tmpo!=&obj_head) {
@@ -401,7 +401,7 @@ Obj *ObjLaunch(I64 player,I64 squadron=-1,
else {
tmpo->flags=tmpo->flags&~OF_RETURNING|OF_ACTIVE;
tmpo->é=host->é;
if (x==MAX_F64 || y==MAX_F64 || Sqr(x-host->x)+Sqr(y-host->y)>3*3)
if (x==F64_MAX || y==F64_MAX || Sqr(x-host->x)+Sqr(y-host->y)>3*3)
tmpo->dé=Wrap(é-tmpo->é,-ã);
else
tmpo->dé=0;
@@ -417,7 +417,7 @@ Obj *ObjLaunch(I64 player,I64 squadron=-1,
return NULL;
}
Squadron *SquadronLaunch(I64 player,F64 x=MAX_F64,F64 y=MAX_F64)
Squadron *SquadronLaunch(I64 player,F64 x=F64_MAX,F64 y=F64_MAX)
{
Squadron *tmps;
Obj *tmpo;
@@ -473,12 +473,12 @@ Squadron *SquadronReturn(I64 player,F64 x,F64 y)
return NULL;
}
Obj *ObjSeté(I64 player,F64 x=MAX_F64,F64 y=MAX_F64,F64 é=MAX_F64)
Obj *ObjSeté(I64 player,F64 x=F64_MAX,F64 y=F64_MAX,F64 é=F64_MAX)
{
Obj *tmpo;
if ((tmpo=ObjFind(x,y,,,,1<<player)) && tmpo->flags&OF_ACTIVE &&
!(tmpo->flags&OF_RETURNING)) {
if (é==MAX_F64)
if (é==F64_MAX)
é=Arg(x-tmpo->x,y-tmpo->y);
tmpo->dé+=Wrap(é-(tmpo->é+tmpo->dé),-ã);
return tmpo;
@@ -486,7 +486,7 @@ Obj *ObjSet
return NULL;
}
Squadron *SquadronSeté(I64 player,F64 x=MAX_F64,F64 y=MAX_F64,F64 é=MAX_F64)
Squadron *SquadronSeté(I64 player,F64 x=F64_MAX,F64 y=F64_MAX,F64 é=F64_MAX)
{
Squadron *tmps;
Obj *tmpo;
+8 -8
View File
@@ -1,8 +1,8 @@
#define NUM_ROAD 512
#define ROAD_NUM 512
#define ROAD_WIDTH_BY_2 200
#define CAR_WIDTH_BY_2 100
I64 road_x[NUM_ROAD],road_trend;
I64 road_x[ROAD_NUM],road_trend;
F64 speed,distance;
I64 road_ptr=0,car_x;
F64 t_last;
@@ -12,11 +12,11 @@ U0 DrawIt(CTask *task,CDC *dc)
{
I64 w=task->pix_width,h=task->pix_height;
I64 i,x,y,xx;
xx=w>>1-car_x+road_x[road_ptr&(NUM_ROAD-1)];
xx=w>>1-car_x+road_x[road_ptr&(ROAD_NUM-1)];
dc->color=LTGRAY;
for (i=0;i<NUM_ROAD;i++) {
x=w>>1-car_x+road_x[(i+road_ptr)&(NUM_ROAD-1)];
for (i=0;i<ROAD_NUM;i++) {
x=w>>1-car_x+road_x[(i+road_ptr)&(ROAD_NUM-1)];
y=h-0.5*i;
if (y<(h+FONT_HEIGHT)>>1) break;
GrPlot(dc,x+ROAD_WIDTH_BY_2-0.4*i,y);
@@ -48,8 +48,8 @@ U0 UpdateRoad()
t_last=t0;
while (distance>1.0) {
road_trend=ClampI64(road_trend+SignI64(RandU16%3-1),-5,5);
road_x[road_ptr&(NUM_ROAD-1)]=
road_x[(road_ptr-1)&(NUM_ROAD-1)]+=road_trend/3;
road_x[road_ptr&(ROAD_NUM-1)]=
road_x[(road_ptr-1)&(ROAD_NUM-1)]+=road_trend/3;
road_ptr++;
distance-=1.0;
}
@@ -65,7 +65,7 @@ U0 Init()
road_trend=0;
road_ptr=0;
car_x=0;
for (i=0;i<NUM_ROAD;i++) {
for (i=0;i<ROAD_NUM;i++) {
road_x[i]=x;
road_trend=ClampI64(road_trend+SignI64(RandU16%3-1),-5,5);
x+=road_trend/3;
+1 -2
View File
@@ -17,8 +17,7 @@ U0 DrawIt(CTask *,CDC *dc)
dc->color=RED;
tmps=ode->next_spring;
while (tmps!=&ode->next_spring) {
GrLine(dc,tmps->end1->x,tmps->end1->y,
tmps->end2->x,tmps->end2->y);
GrLine(dc,tmps->end1->x,tmps->end1->y,tmps->end2->x,tmps->end2->y);
tmps=tmps->next;
}
+9 -9
View File
@@ -1,11 +1,11 @@
I64 sc_1,sc_2;
#define NUM_DROPS 0x2000
#define DROPS_NUM 0x2000
class Drop
{
I32 x,y;
} drops[NUM_DROPS];
} drops[DROPS_NUM];
CDC *cur_dc;
@@ -49,7 +49,7 @@ U0 DrawDrops(CTask *,CDC *dc)
{
I64 i;
dc->color=BLUE;
for (i=0;i<NUM_DROPS;i++)
for (i=0;i<DROPS_NUM;i++)
if (drops[i].y>=0 && GrPeek(dc,drops[i].x,drops[i].y)==WHITE)
GrPlot(dc,drops[i].x,drops[i].y);
}
@@ -80,21 +80,21 @@ U0 AnimateTask(I64)
for (i=0;i<2;i++) {
j=0;
do {
if (++cur_drop>=NUM_DROPS)
if (++cur_drop>=DROPS_NUM)
cur_drop=0;
if (drops[cur_drop].y<0)
break;
j++;
} while (j<=NUM_DROPS);
} while (j<=DROPS_NUM);
drops[cur_drop].x=RandU32%w;
drops[cur_drop].y=0;
}
for (i=0;i<NUM_DROPS;i++) {
for (i=0;i<DROPS_NUM;i++) {
if (drops[i].y>=0) {
if (drops[i].y>=h-1)
drops[i].y=-MAX_I32;
drops[i].y=-I32_MAX;
else {
x0=x1=drops[i].x;
y0=y1=drops[i].y;
@@ -141,8 +141,8 @@ U0 Init()
{
I64 i;
MemSet(drops,0,sizeof(drops));
for (i=0;i<NUM_DROPS;i++)
drops[i].y=-MAX_I32;
for (i=0;i<DROPS_NUM;i++)
drops[i].y=-I32_MAX;
}
U0 RainDrops()
+21 -21
View File
@@ -17,7 +17,7 @@ CDC *map_dc;
#define GATE_HEIGHT 7
F64 gate_é,gate_t;
$BG,10$
$SP,"<1>",BI=1$ $SP,"<2>",BI=2$ $SP,"<3>",BI=3$
@@ -37,7 +37,7 @@ $SP,"<9>",BI=9$
$BG$
#define ANIMAL_WIDTH 20
#define ANIMAL_HEIGHT 16
@@ -45,7 +45,7 @@ U8 *cow_imgs[4] ={$IB,"<1>",BI=1$,$IB,"<2>",BI=2$,$IB,"<3>",BI=3$,$IB,"<2>",BI=
*bull_imgs[4] ={$IB,"<4>",BI=4$,$IB,"<5>",BI=5$,$IB,"<6>",BI=6$,$IB,"<5>",BI=5$},
*horse_imgs[4]={$IB,"<7>",BI=7$,$IB,"<8>",BI=8$,$IB,"<7>",BI=7$,$IB,"<8>",BI=8$};
#define NUM_ANIMALS 100
#define ANIMALS_NUM 100
class Animal
{
@@ -84,8 +84,8 @@ U0 RiverMake()
waterfall_width=r_width[y];
waterfall_x=r_x[y]-waterfall_width/2;
} else {
dx=ClampI64(dx+RandI32/64,-MAX_I32,MAX_I32)-MAX_I32/256;
w=ClampI64(w+RandI32*2,10*MAX_U32,150*MAX_U32);
dx=ClampI64(dx+RandI32/64,-I32_MAX,I32_MAX)-I32_MAX/256;
w=ClampI64(w+RandI32*2,10*U32_MAX,150*U32_MAX);
x+=dx;
}
}
@@ -105,7 +105,7 @@ U0 RiverMake()
map_dc->pen_width=r_width[y]+10;
GrPlot3(map_dc,r_x[y]+x.i32[1],y,0);
}
x=ClampI64(x+RandI32,-6*MAX_U32,6*MAX_U32);
x=ClampI64(x+RandI32,-6*U32_MAX,6*U32_MAX);
}
//Plot water
@@ -219,7 +219,7 @@ U0 DrawIt(CTask *task,CDC *dc)
RiverDropsDraw(dc,cx,cy);
for (i=0;i<NUM_ANIMALS;i++)
for (i=0;i<ANIMALS_NUM;i++)
if (!a[i].dead) {
if (a[i].dx<0) {
dc->flags|=DCF_JUST_MIRROR|DCF_SYMMETRY;
@@ -262,8 +262,8 @@ U0 DrawIt(CTask *task,CDC *dc)
U0 BuddySel(I64 i)
{
I64 b,best_b=i,score,best_score=MAX_I64;
for (b=0;b<NUM_ANIMALS;b++) {
I64 b,best_b=i,score,best_score=I64_MAX;
for (b=0;b<ANIMALS_NUM;b++) {
if (b!=i && !a[b].dead) {
score=RandU32%(512*512)+
SqrI64(a[b].x.i32[1]-a[i].x.i32[1])+
@@ -328,12 +328,12 @@ Bool CheckMap(I64 x,I64 y)
U0 AnimateTask(CTask *parent)
{
I64 i,cx,cy,cursor_x,cursor_y,dd,ddx,ddy,cnt,max_speed=MAX_I64,updates=0,
I64 i,cx,cy,cursor_x,cursor_y,dd,ddx,ddy,cnt,max_speed=I64_MAX,updates=0,
my_outside_cnt;
F64 f,d,dx,dy,s,stress;
Animal *tmpa,*tmpa1;
while (TRUE) {
max_speed=ClampU64(max_speed,MAX_U32/3,200*MAX_U32);
max_speed=ClampU64(max_speed,U32_MAX/3,200*U32_MAX);
cx=(MAP_WIDTH -parent->pix_width)/2,
cy=(MAP_HEIGHT-parent->pix_height)/2;
cursor_x=ms.pos.x+cx-parent->pix_left-parent->scroll_x;
@@ -343,7 +343,7 @@ U0 AnimateTask(CTask *parent)
if (cursor_x<FENCE_WIDTH && cursor_y<FENCE_HEIGHT)
gate_t=tS;
RedrawGate;
for (i=0;i<NUM_ANIMALS;i++) {
for (i=0;i<ANIMALS_NUM;i++) {
tmpa=&a[i];
if (!tmpa->dead) {
//Move away from horse
@@ -353,14 +353,14 @@ U0 AnimateTask(CTask *parent)
d=Sqrt(dd);
dx=ddx/d;
dy=ddy/d;
f=5.0e2*MAX_U32/dd;
f=5.0e2*U32_MAX/dd;
tmpa->dx+=f*dx;
tmpa->dy+=f*dy;
}
//Resel buddy about every NUM_ANIMALS*10ms=5.12 seconds
//Resel buddy about every ANIMALS_NUM*10ms=5.12 seconds
tmpa1=&a[tmpa->buddy];
if (tmpa1->dead || i==updates%NUM_ANIMALS) {
if (tmpa1->dead || i==updates%ANIMALS_NUM) {
BuddySel(i);
tmpa1=&a[tmpa->buddy];
}
@@ -374,7 +374,7 @@ U0 AnimateTask(CTask *parent)
stress+=Abs(s);
dx=ddx/d;
dy=ddy/d;
f=-0.001*s*MAX_U32;
f=-0.001*s*U32_MAX;
tmpa->dx+=f*dx;
tmpa->dy+=f*dy;
}
@@ -438,7 +438,7 @@ U0 AnimateTask(CTask *parent)
stress=0;
if (stress>100.0) {
Yield;
max_speed=stress/5.0*MAX_U32; //Converge faster at start-up
max_speed=stress/5.0*U32_MAX; //Converge faster at start-up
} else {
Sleep(10);
max_speed=0; //Will be set to normal max speed
@@ -487,8 +487,8 @@ U0 ReInit()
for (i=MAP_BORDER;i<=MAP_HEIGHT-MAP_BORDER;i++)
RiverDropsNext(Fs);
MemSet(a,0,NUM_ANIMALS*sizeof(Animal));
for (i=0;i<NUM_ANIMALS;i++) {
MemSet(a,0,ANIMALS_NUM*sizeof(Animal));
for (i=0;i<ANIMALS_NUM;i++) {
a[i].num=i;
do {
a[i].x=(64+RandU32%(MAP_WIDTH-128))<<32;
@@ -501,7 +501,7 @@ U0 ReInit()
a[i].frame0=RandU16&3;
BuddySel(i);
}
outside_cnt=NUM_ANIMALS;
outside_cnt=ANIMALS_NUM;
gate_t=0;
gate_é=0;
t0=tS;
@@ -514,7 +514,7 @@ U0 Init()
rd_lock=0;
QueInit(&rd_head);
map_dc=DCNew(MAP_WIDTH,MAP_HEIGHT);
a=MAlloc(NUM_ANIMALS*sizeof(Animal));
a=MAlloc(ANIMALS_NUM*sizeof(Animal));
ReInit;
}
Binary file not shown.
+10 -11
View File
@@ -23,7 +23,7 @@ RegExe("TempleOS/Talons");
#define SNOW_ELEVATION 55
//Too big makes off-scrn draws take place.
#define MAX_PANEL_SIZE 16
#define PANEL_SIZE_MAX 16
@@ -174,7 +174,7 @@ CD3 normals[MAP_HEIGHT][MAP_WIDTH];
class MPCtrl {
I64 init_not_done_flags,update_not_done_flags,app_not_done_flags;
I64 strip_width[MP_MAX_PROCESSORS];
I64 strip_width[MP_PROCESSORS_NUM];
Bool app_done;
} mp;
@@ -284,11 +284,11 @@ U0 MPDoPanels(CTask *task)
h=1;
do {
cont=FALSE;
if (w<MAX_PANEL_SIZE && TestSameSlope(i,j,w+1,h)) {
if (w<PANEL_SIZE_MAX && TestSameSlope(i,j,w+1,h)) {
w++;
cont=TRUE;
}
if (h<MAX_PANEL_SIZE && TestSameSlope(i,j,w,h+1)) {
if (h<PANEL_SIZE_MAX && TestSameSlope(i,j,w,h+1)) {
h++;
cont=TRUE;
}
@@ -407,7 +407,7 @@ U0 InitElevations()
j=1<<(RandU32%6);
l=0;
while (j--) {
if (!l && RandU16<MAX_U16/4)
if (!l && RandU16<U16_MAX/4)
l=RandU16%(j+1);
if (l) {
x1=ClampI64(x-j,0,MAP_WIDTH-1);
@@ -659,7 +659,7 @@ U0 MPDrawIt(CTask *task,CDC *dc)
xh>>=1; yh>>=1;
xh2>>=1; yh2>>=1;
w_on_map=FALSE;
dd_old=MAX_I64;
dd_old=I64_MAX;
for (strip_width=0;cnts.jiffies<update_jiffy_limit;strip_width++) {
x1h=x1wa;
y1h=y1wa;
@@ -689,7 +689,7 @@ U0 MPDrawIt(CTask *task,CDC *dc)
if (h_on_map)
w_on_map=TRUE;
else if (w_on_map) {
strip_width=MAX_I64;
strip_width=I64_MAX;
break;
}
x1wb-=yh2;
@@ -866,7 +866,7 @@ U0 Core0Talons()
if (0<=xx<MAP_WIDTH && 0<=yy<MAP_HEIGHT)
elev=elevations[yy][xx];
else
elev=MAX_I64;
elev=I64_MAX;
height=z/COORDINATE_SCALE-elev;
if (height<0 && elev>WATER_ELEVATION*MAP_SCALE && !game_tf) {
@@ -892,7 +892,7 @@ U0 Core0Talons()
while (mp.update_not_done_flags)
Sleep(1);
min_strip_width=MAX_F64;
min_strip_width=F64_MAX;
for (i=0;i<mp_cnt;i++)
min_strip_width=Min(min_strip_width,32.0*mp.strip_width[i]/(i+32.0));
strip_height=ClampI64(
@@ -936,7 +936,7 @@ U0 Core0Talons()
Obj *FishFind(I64 x1,I64 y1,I64 *_dd)
{
I64 dd,best_dd=MAX_I64;
I64 dd,best_dd=I64_MAX;
Obj *res=NULL,*tmpo;
Panel *tmpp=panel_head;
while (tmpp) {
@@ -1230,7 +1230,6 @@ U0 Talons()
MenuPop;
}
Seed(1);
Talons;
�
àÿÿÿýÿÿÿ
Binary file not shown.
+29 -29
View File
@@ -3,7 +3,7 @@ U0 InitDefines()
I64 w=GR_WIDTH,h=GR_HEIGHT-FONT_HEIGHT,cols,rows,
size=PopUpRangeI64(1,9,,"Size\n"),rad=16-size;
if (size<0) throw;
DefinePrint("NUM_UNITS","%d",4096/SqrI64(rad)&~1);
DefinePrint("UNITS_NUM","%d",4096/SqrI64(rad)&~1);
DefinePrint("CIRCLE_RAD","%d",rad);
DefinePrint("MOVE_CIRCLES","%d",40/rad);
@@ -19,7 +19,7 @@ class Unit
{
I64 num,x,y,player,link,color;
Bool alive,king;
} u[NUM_UNITS];
} u[UNITS_NUM];
CDC *map_dc;
I64 cur_player,num_alive[2],start_x,start_y,end_x,end_y;
@@ -68,12 +68,12 @@ U0 DrawIt(CTask *task,CDC *dc)
}
GrPrint(dc,2,2,"Player %d",cur_player+1);
for (i=0;i<NUM_UNITS;i++)
for (i=0;i<UNITS_NUM;i++)
if (u[i].alive) {
dc->color=u[i].color;
GrFloodFill(dc,u[i].x,u[i].y);
}
for (i=0;i<NUM_UNITS;i++)
for (i=0;i<UNITS_NUM;i++)
if (u[i].alive && !u[i].king) {
dc->color=BLACK;
GrLine(dc,u[i].x,u[i].y,u[u[i].link].x,u[u[i].link].y);
@@ -98,9 +98,9 @@ U0 DrawIt(CTask *task,CDC *dc)
Unit *UnitFind(I64 x,I64 y,I64 player)
{
I64 i,dd,best_dd=MAX_I64;
I64 i,dd,best_dd=I64_MAX;
Unit *res=NULL;
for (i=0;i<NUM_UNITS;i++) {
for (i=0;i<UNITS_NUM;i++) {
if (u[i].player==player && u[i].alive) {
dd=SqrI64(u[i].x-x)+SqrI64(u[i].y-y);
if (dd<best_dd) {
@@ -116,7 +116,7 @@ U0 KillsChk(I64 x1,I64 y1,I64 player)
{
I64 i,j,x2,y2,dd;
Bool found;
for (i=0;i<NUM_UNITS;i++) {
for (i=0;i<UNITS_NUM;i++) {
if (u[i].player!=player && u[i].alive && !u[i].king) {
x2=(u[i].x+u[u[i].link].x)>>1;
y2=(u[i].y+u[u[i].link].y)>>1;
@@ -127,7 +127,7 @@ U0 KillsChk(I64 x1,I64 y1,I64 player)
num_alive[u[i].player]--;
do {
found=FALSE;
for (j=0;j<NUM_UNITS;j++)
for (j=0;j<UNITS_NUM;j++)
if (u[j].alive && u[j].player!=player && !u[j].king &&
!u[u[j].link].alive) {
found=TRUE;
@@ -208,17 +208,17 @@ U0 Init()
map_dc=DrawHexMap(&w,&h);
cur_player=0;
for (i=0;i<NUM_UNITS/2;i++) {
for (i=0;i<UNITS_NUM/2;i++) {
u[i].num=i;
u[i+NUM_UNITS/2].num=i+NUM_UNITS/2;
u[i+UNITS_NUM/2].num=i+UNITS_NUM/2;
ti_restart:
u[i].y=FloorI64(RandU32%h,CIRCLE_RAD*2)+CIRCLE_RAD;
u[i+NUM_UNITS/2].y=h-1-u[i].y;
u[i+UNITS_NUM/2].y=h-1-u[i].y;
j1=u[i].y/(CIRCLE_RAD*2);
j2=u[i+NUM_UNITS/2].y/(CIRCLE_RAD*2);
j2=u[i+UNITS_NUM/2].y/(CIRCLE_RAD*2);
u[i].y+=BORDER_Y;
u[i+NUM_UNITS/2].y+=BORDER_Y;
u[i+UNITS_NUM/2].y+=BORDER_Y;
if (!i) {
u[i].x=CIRCLE_RAD;
@@ -226,40 +226,40 @@ ti_restart:
goto ti_restart;
} else
u[i].x=FloorI64(RandU32%((w-CIRCLE_RAD*2*2)/2),CIRCLE_RAD*2)+CIRCLE_RAD;
u[i+NUM_UNITS/2].x=w-1-u[i].x;
u[i+UNITS_NUM/2].x=w-1-u[i].x;
if (j1&1)
u[i].x+=CIRCLE_RAD;
if (j2&1)
u[i+NUM_UNITS/2].x+=CIRCLE_RAD;
u[i+UNITS_NUM/2].x+=CIRCLE_RAD;
u[i].x+=BORDER_X;
u[i+NUM_UNITS/2].x+=BORDER_X;
u[i+UNITS_NUM/2].x+=BORDER_X;
S2W(&u[i].x,&u[i].y);
S2W(&u[i+NUM_UNITS/2].x,&u[i+NUM_UNITS/2].y);
S2W(&u[i+UNITS_NUM/2].x,&u[i+UNITS_NUM/2].y);
u[i].player=0;
u[i+NUM_UNITS/2].player=1;
u[i+UNITS_NUM/2].player=1;
u[i].alive=TRUE;
u[i+NUM_UNITS/2].alive=TRUE;
u[i+UNITS_NUM/2].alive=TRUE;
if (!i) {
u[i].color=LTCYAN;
u[i+NUM_UNITS/2].color=LTPURPLE;
u[i+UNITS_NUM/2].color=LTPURPLE;
u[i].king=TRUE;
u[i+NUM_UNITS/2].king=TRUE;
u[i+UNITS_NUM/2].king=TRUE;
} else {
u[i].color=CYAN;
u[i+NUM_UNITS/2].color=PURPLE;
u[i+UNITS_NUM/2].color=PURPLE;
u[i].king=FALSE;
u[i+NUM_UNITS/2].king=FALSE;
u[i+UNITS_NUM/2].king=FALSE;
}
}
for (i=0;i<NUM_UNITS/2;i++) {
for (i=0;i<UNITS_NUM/2;i++) {
if (!u[i].king) {
best_dd=MAX_I64;
for (j=0;j<NUM_UNITS/2;j++) {
best_dd=I64_MAX;
for (j=0;j<UNITS_NUM/2;j++) {
if (i!=j) {
dd=SqrI64(u[i].x-u[j].x)+SqrI64(u[i].y-u[j].y);
if (u[j].x<=u[i].x && dd<best_dd) {
@@ -269,11 +269,11 @@ ti_restart:
}
}
u[i].link=best;
u[i+NUM_UNITS/2].link=best+NUM_UNITS/2;
u[i+UNITS_NUM/2].link=best+UNITS_NUM/2;
}
}
num_alive[0]=NUM_UNITS/2;
num_alive[1]=NUM_UNITS/2;
num_alive[0]=UNITS_NUM/2;
num_alive[1]=UNITS_NUM/2;
}
U0 CleanUp()
+26 -26
View File
@@ -94,11 +94,11 @@ F64 distance,t0,tf;
Bool game_over;
#define BORDER 7500
#define R 10000
#define RADIUS 10000
#define WIDTH 2000
#define SHOULDER 200
#define D_é (2*ã/360) //Curve track slice is one degree.
#define D_S (2*ã*R/360) //Straight track slice is degree at 10000.
#define D_S (2*ã*RADIUS/360) //Straight track is degree at 10000.
#define DIPS 5
#define DIP_DEPTH 50
class Track
@@ -110,34 +110,34 @@ class Track
F64 é,d;
CD3I32 left[4],center[4],right[4];
} track_head,
*track_start[MP_MAX_PROCESSORS],*track_end[MP_MAX_PROCESSORS];
*track_start[MP_PROCESSORS_NUM],*track_end[MP_PROCESSORS_NUM];
CDC *track_map;
#define MAP_BITS 9
I64 t_minx,t_maxx,t_minz,t_maxz;
#define NUM_BUSHES 512
#define BUSHES_NUM 512
class Bush
{
CD3I32 p;
Bool sym,pad[3];
U8 *img;
} b[NUM_BUSHES];
} b[BUSHES_NUM];
#define NUM_CARS 8
#define CARS_NUM 8
class Car
{
CD3I32 p;
F64 é,dé,speed;
U8 *img;
Track *t;
} c[NUM_CARS];
} c[CARS_NUM];
I64 DipY(I64 x,I64 z)
{
F64 m,a;
R2P(&m,&a,x,z);
return DIP_DEPTH*m*Cos(DIPS*a)/R;
return DIP_DEPTH*m*Cos(DIPS*a)/RADIUS;
}
#define CAR_LENGTH 400
@@ -272,26 +272,26 @@ U0 InitTrack()
MemSet(&track_head,0,sizeof(Track));
QueInit(&track_head);
t_minx=t_minz=MAX_I64;
t_maxx=t_maxz=MIN_I64;
t_minx=t_minz=I64_MAX;
t_maxx=t_maxz=I64_MIN;
x=0; z=0; é=0;
for (d=0;d<6*R;d+=D_S)
for (d=0;d<6*RADIUS;d+=D_S)
TrackSlice(&x,&z,é,D_S);
for (i=0;i<180;i++,é+=D_é)
TrackSlice(&x,&z,é,D_é*R);
for (d=0;d<R;d+=D_S)
TrackSlice(&x,&z,é,D_é*RADIUS);
for (d=0;d<RADIUS;d+=D_S)
TrackSlice(&x,&z,é,D_S);
for (i=0;i<90;i++,é-=D_é)
TrackSlice(&x,&z,é,D_é*R);
TrackSlice(&x,&z,é,D_é*RADIUS);
for (i=0;i<180;i++,é+=D_é)
TrackSlice(&x,&z,é,D_é*R);
TrackSlice(&x,&z,é,D_é*RADIUS);
for (i=0;i<90;i++,é-=D_é)
TrackSlice(&x,&z,é,D_é*R);
for (d=0;d<R;d+=D_S)
TrackSlice(&x,&z,é,D_é*RADIUS);
for (d=0;d<RADIUS;d+=D_S)
TrackSlice(&x,&z,é,D_S);
for (i=0;i<180;i++,é+=D_é)
TrackSlice(&x,&z,é,D_é*R);
TrackSlice(&x,&z,é,D_é*RADIUS);
CoupleEnds;
@@ -378,7 +378,7 @@ U0 MPUpdateWin(CDC *dc2)
}
dc->flags|=DCF_TRANSFORMATION;
for (i=Gs->num;i<NUM_BUSHES;i+=mp_cnt) {
for (i=Gs->num;i<BUSHES_NUM;i+=mp_cnt) {
x=b[i].p.x-c[0].p.x; y=b[i].p.y-c[0].p.y; z=b[i].p.z-c[0].p.z;
Mat4x4MulXYZ(r,&x,&y,&z);
if (z>0) {
@@ -394,7 +394,7 @@ U0 MPUpdateWin(CDC *dc2)
dc->flags&=~(DCF_SYMMETRY|DCF_JUST_MIRROR);
}
}
for (i=Gs->num+1;i<NUM_CARS;i+=mp_cnt) {
for (i=Gs->num+1;i<CARS_NUM;i+=mp_cnt) {
tmpc=&c[i];
x=tmpc->p.x-c[0].p.x; y=tmpc->p.y-c[0].p.y; z=tmpc->p.z-c[0].p.z;
Mat4x4MulXYZ(r,&x,&y,&z);
@@ -474,7 +474,7 @@ U0 DrawIt(CTask *task,CDC *dc)
GrBlot(dc,w-track_map->width,h-track_map->height,track_map);
dc->pen_width=2;
for (i=0;i<NUM_CARS;i++) {
for (i=0;i<CARS_NUM;i++) {
if (i)
dc->color=LTPURPLE;
else
@@ -512,7 +512,7 @@ U0 AnimateTask(I64)
Snd(12.0*Log2(c[0].speed/500+0.7));
else
Snd;
for (i=0;i<NUM_CARS;i++) {
for (i=0;i<CARS_NUM;i++) {
tmpc=&c[i];
tmpc->p.x-=0.01*tmpc->speed*Cos(tmpc->é-ã/2);
tmpc->p.z+=0.01*tmpc->speed*Sin(tmpc->é-ã/2);
@@ -539,7 +539,7 @@ U0 AnimateTask(I64)
tmpc->p.y=DipY(tmpc->p.x,tmpc->p.z);
}
if (!game_over && on_track) {
for (i=1;i<NUM_CARS;i++)
for (i=1;i<CARS_NUM;i++)
if (D3I32DistSqr(&c[i].p,&c[0].p)<CAR_LENGTH>>1*CAR_LENGTH>>1) {
game_over=TRUE;
Noise(500,22,34);
@@ -572,7 +572,7 @@ U0 InitBushes()
I64 i,j,x,z;
track_map->color=LTGREEN;
track_map->pen_width=1;
for (i=0;i<NUM_BUSHES;i++) {
for (i=0;i<BUSHES_NUM;i++) {
tmpb=&b[i];
ib_restart:
@@ -602,7 +602,7 @@ U0 Init()
InitTrack;
InitBushes;
tmpt=track_head.next;
for (i=0;i<NUM_CARS;i++) {
for (i=0;i<CARS_NUM;i++) {
tmpc=&c[i];
tmpc->t=tmpt;
tmpc->p.x=tmpt->x;
@@ -617,7 +617,7 @@ U0 Init()
tmpc->img=$IB,"<6>",BI=6$;
tmpc->speed=2500.0;
}
d=(i+1)*track_head.last->d/NUM_CARS;
d=(i+1)*track_head.last->d/CARS_NUM;
while (tmpt->next!=&track_head && tmpt->d<d)
tmpt=tmpt->next;
}
+10 -10
View File
@@ -87,12 +87,12 @@ U8 *king_imgs[4]={$IB,"<2>",BI=2$,$IB,"<1>",BI=1$,$IB,"<2>",BI=2$,$IB,"<3>",BI=3
U8 *peasant_imgs[4]={$IB,"<5>",BI=5$,$IB,"<4>",BI=4$,$IB,"<5>",BI=5$,$IB,"<6>",BI=6$};
#define NUM_TREES 8
#define TREES_NUM 8
class Tree
{
U16 x,y;
I64 fire_frame_idx;
} trees[NUM_TREES];
} trees[TREES_NUM];
U64 snow_x,snow_y,new_snow_mS;
#define SNOW_TILE_SIZE 128
@@ -103,7 +103,7 @@ I64 king_x,king_y,king_mS,king_phase,
F64 king_timeout,king_é,t0,tf,door_open_t0;
I64 animate_mS,animate_phase;
#define NUM_PEASANTS 10
#define PEASANTS_NUM 10
class Peasant
{
Peasant *next,*last;
@@ -127,7 +127,7 @@ U0 DrawIt(CTask *task,CDC *dc)
F64 tt;
dc->pen_width=1;
for (i=0;i<NUM_TREES;i++) {
for (i=0;i<TREES_NUM;i++) {
if (trees[i].y<=h/2) {//Draw trees behind house
if (trees[i].fire_frame_idx) {
if (trees[i].fire_frame_idx++&1)
@@ -144,7 +144,7 @@ U0 DrawIt(CTask *task,CDC *dc)
if (tS<door_open_t0+1.0)
Sprite3(dc,w/2,h/2,0,$IB,"<11>",BI=11$);
for (i=0;i<NUM_TREES;i++) {
for (i=0;i<TREES_NUM;i++) {
if (trees[i].y>h/2) {//Draw trees in front of house
if (trees[i].fire_frame_idx) {
if (trees[i].fire_frame_idx++&1)
@@ -269,7 +269,7 @@ U0 Init()
snow_tile=DCNew(SNOW_TILE_SIZE,SNOW_TILE_SIZE);
SpriteExtents($IB,"<7>",BI=7$,&min_x,&max_x,&min_y,&max_y);
for (i=0;i<NUM_TREES;i++) {
for (i=0;i<TREES_NUM;i++) {
trees[i].x=RandU16%(w-2*BORDER-(max_x-min_x+1))+BORDER-min_x;
trees[i].y=RandU16%(h-2*BORDER-(max_y-min_y+1))+BORDER-min_y;
trees[i].fire_frame_idx=0;
@@ -280,7 +280,7 @@ U0 Init()
SpriteExtents($IB,"<12>",BI=12$,&min_x,&max_x,&min_y,&max_y);
QueInit(&peasant_head);
for (i=0;i<NUM_PEASANTS;i++) {
for (i=0;i<PEASANTS_NUM;i++) {
tmpp=MAlloc(sizeof(Peasant));
tmpp->x=RandU16%(w-2*BORDER-(max_x-min_x+1))+BORDER-min_x;
tmpp->y=RandU16%(h-2*BORDER-(max_y-min_y+1))+BORDER-min_y;
@@ -313,7 +313,7 @@ U0 CleanUp()
U0 Follow(CTask *,Peasant *tmpp)
{
Step *tmps=king_step_head.next;
F64 d,best_d=MAX_F64;
F64 d,best_d=F64_MAX;
while (tmps!=&king_step_head) {
if ((d=Sqr(tmps->x-tmpp->x)+Sqr(tmps->y-tmpp->y)) &&
d<15*15) {
@@ -369,7 +369,7 @@ U0 AnimateTask(I64)
tmpp->stopped=TRUE;
tmpp->door_opened_t0=door_open_t0=tS;
}
for (i=0;i<NUM_TREES;i++) //Hang-out by fire
for (i=0;i<TREES_NUM;i++) //Hang-out by fire
if (trees[i].fire_frame_idx &&
Sqr(tmpp->x-trees[i].x)+Sqr(tmpp->y-trees[i].y)<20*20) {
tmpp->stopped=TRUE;
@@ -429,7 +429,7 @@ U0 AnimateTask(I64)
U0 BurnTrees()
{
I64 i;
for (i=0;i<NUM_TREES;i++)
for (i=0;i<TREES_NUM;i++)
if (Sqr(king_x-trees[i].x)+Sqr(king_y-trees[i].y)<10*10)
trees[i].fire_frame_idx=1;
}
+13 -13
View File
@@ -1,13 +1,13 @@
#define NUM_BALLS 7
#define NUM_SPRINGS 3
#define BALLS_NUM 7
#define SPRINGS_NUM 3
#define STRETCH 500.0
#define GRAVITY 50.0 //not really gravity
#define BALL_RADIUS 5
#define BASE_SIZE 10
CMass balls[NUM_BALLS];
CSpring springs[NUM_SPRINGS];
CMass balls[BALLS_NUM];
CSpring springs[SPRINGS_NUM];
F64 collision_t;
U0 DrawIt(CTask *task,CDC *dc)
@@ -25,7 +25,7 @@ U0 DrawIt(CTask *task,CDC *dc)
GrLine(dc,balls[0].x,balls[0].y,
ms.pos.x-task->pix_left-task->scroll_x,
ms.pos.y-task->pix_top-task->scroll_y);
for (i=0;i<NUM_SPRINGS;i++)
for (i=0;i<SPRINGS_NUM;i++)
GrLine(dc,springs[i].end1->x,springs[i].end1->y,
springs[i].end2->x,springs[i].end2->y);
@@ -35,7 +35,7 @@ U0 DrawIt(CTask *task,CDC *dc)
dc->color=BLACK;
GrCircle(dc,balls[0].x,balls[0].y,BALL_RADIUS);
for (i=1;i<NUM_BALLS;i++) {
for (i=1;i<BALLS_NUM;i++) {
dc->color=LTPURPLE;
GrCircle(dc,balls[i].x,balls[i].y,BALL_RADIUS);
GrFloodFill(dc,balls[i].x,balls[i].y,TRUE);
@@ -65,7 +65,7 @@ U0 MyDerivative(CMathODE *ode,F64 t,COrder2D3 *,COrder2D3 *)
D3AddEqu(&balls[0].DstateDt->DxDt,D3MulEqu(&p2,STRETCH));
D3Equ(&p2,task->pix_width>>1,task->pix_height>>1,0);
for (i=1;i<NUM_BALLS;i++) {
for (i=1;i<BALLS_NUM;i++) {
D3Sub(&p,&p2,&balls[i].state->x);
if (d=D3Norm(&p)) {
//Gravity would be /(d*d*d), but that's too exponential.
@@ -74,8 +74,8 @@ U0 MyDerivative(CMathODE *ode,F64 t,COrder2D3 *,COrder2D3 *)
}
}
for (i=0;i<NUM_BALLS;i++)
for (j=i+1;j<NUM_BALLS;j++) {
for (i=0;i<BALLS_NUM;i++)
for (j=i+1;j<BALLS_NUM;j++) {
D3Sub(&p,&balls[j].state->x,&balls[i].state->x);
dd=D3NormSqr(&p);
if (dd<=(2*BALL_RADIUS)*(2*BALL_RADIUS)) {
@@ -124,14 +124,14 @@ U0 Whap()
ode->drag_v2=0.002;
ode->drag_v3=0.00001;
ode->acceleration_limit=5e3;
MemSet(balls,0,NUM_BALLS*sizeof(CMass));
MemSet(balls,0,BALLS_NUM*sizeof(CMass));
D3Equ(&balls[0].x,100,100,0);
for (i=1;i<NUM_BALLS;i++)
for (i=1;i<BALLS_NUM;i++)
D3Equ(&balls[i].x,
RandI16%500+Fs->pix_width>>1,RandI16%500+Fs->pix_height>>1,0);
balls[0].x=ms.pos.x-Fs->pix_left-Fs->scroll_x;
balls[0].y=ms.pos.y-Fs->pix_top-Fs->scroll_y;
for (i=0;i<NUM_BALLS;i++) {
for (i=0;i<BALLS_NUM;i++) {
balls[i].mass=1.0;
balls[i].drag_profile_factor=1.0;
QueIns(&balls[i],ode->last_mass);
@@ -140,7 +140,7 @@ U0 Whap()
balls[2].y=balls[1].y;
balls[3].x=balls[1].x;
balls[3].y=balls[1].y+15;
MemSet(springs,0,NUM_SPRINGS*sizeof(CSpring));
MemSet(springs,0,SPRINGS_NUM*sizeof(CSpring));
springs[0].end1=&balls[1];
springs[0].end2=&balls[2];
springs[0].rest_len=15;
Binary file not shown.