TempleOSCD_160707.ISO
This commit is contained in:
1 parent
353eac0dbe
commit
c5954d3371
55 files changed
+511
-270
No files matched your search
Binary file not shown.
@@ -15,8 +15,8 @@ I64 Mount2(U8 boot_drv_let,CDoc *_doc,Bool repartition)
|
|||||||
"\n****** Mount Drives ******\n"
|
"\n****** Mount Drives ******\n"
|
||||||
"$$GREEN$$A$$FG$$-$$GREEN$$B$$FG$$ are RAM drives.\n"
|
"$$GREEN$$A$$FG$$-$$GREEN$$B$$FG$$ are RAM drives.\n"
|
||||||
"$$GREEN$$C$$FG$$-$$GREEN$$L$$FG$$ are ATA hard drives.\n"
|
"$$GREEN$$C$$FG$$-$$GREEN$$L$$FG$$ are ATA hard drives.\n"
|
||||||
"$$GREEN$$M$$FG$$-$$GREEN$$P$$FG$$ are file read drives.\n"
|
"$$GREEN$$M$$FG$$-$$GREEN$$P$$FG$$ are ISO file read drives.\n"
|
||||||
"$$GREEN$$Q$$FG$$-$$GREEN$$S$$FG$$ are file write drives.\n"
|
"$$GREEN$$Q$$FG$$-$$GREEN$$S$$FG$$ are ISO file write drives.\n"
|
||||||
"$$GREEN$$T$$FG$$-$$GREEN$$Z$$FG$$ are ATAPI CD/DVD drives.\n"
|
"$$GREEN$$T$$FG$$-$$GREEN$$Z$$FG$$ are ATAPI CD/DVD drives.\n"
|
||||||
"\nDrive Letter ($$PURPLE$$<ENTER>$$FG$$ to exit):";
|
"\nDrive Letter ($$PURPLE$$<ENTER>$$FG$$ to exit):";
|
||||||
drv_let=ToUpper(GetChar);
|
drv_let=ToUpper(GetChar);
|
||||||
@@ -36,11 +36,11 @@ I64 Mount2(U8 boot_drv_let,CDoc *_doc,Bool repartition)
|
|||||||
case BDT_RAM:
|
case BDT_RAM:
|
||||||
"Addr of RAM disk ($$PURPLE$$<ENTER>$$FG$$ to MAlloc):";
|
"Addr of RAM disk ($$PURPLE$$<ENTER>$$FG$$ to MAlloc):";
|
||||||
GetS(addr_buf,STR_LEN);
|
GetS(addr_buf,STR_LEN);
|
||||||
case BDT_FILE_WRITE:
|
case BDT_ISO_FILE_WRITE:
|
||||||
"Blks of 512 bytes:";
|
"Blks of 512 bytes:";
|
||||||
GetS(blks_buf,STR_LEN);
|
GetS(blks_buf,STR_LEN);
|
||||||
break;
|
break;
|
||||||
case BDT_FILE_READ:
|
case BDT_ISO_FILE_READ:
|
||||||
filename=GetStr("File Name:");
|
filename=GetStr("File Name:");
|
||||||
break;
|
break;
|
||||||
case BDT_ATA:
|
case BDT_ATA:
|
||||||
@@ -84,11 +84,11 @@ I64 Mount2(U8 boot_drv_let,CDoc *_doc,Bool repartition)
|
|||||||
case BDT_RAM:
|
case BDT_RAM:
|
||||||
if (!*addr_buf) StrCpy(addr_buf,"0");
|
if (!*addr_buf) StrCpy(addr_buf,"0");
|
||||||
DocPrint(doc,"bd->RAM_dsk=%s;\n",addr_buf);
|
DocPrint(doc,"bd->RAM_dsk=%s;\n",addr_buf);
|
||||||
case BDT_FILE_WRITE:
|
case BDT_ISO_FILE_WRITE:
|
||||||
if (!*blks_buf) StrCpy(blks_buf,"0");
|
if (!*blks_buf) StrCpy(blks_buf,"0");
|
||||||
DocPrint(doc,"bd->max_blk=(%s)-1;\n",blks_buf);
|
DocPrint(doc,"bd->max_blk=(%s)-1;\n",blks_buf);
|
||||||
break;
|
break;
|
||||||
case BDT_FILE_READ:
|
case BDT_ISO_FILE_READ:
|
||||||
filename2=FileNameAbs(filename);
|
filename2=FileNameAbs(filename);
|
||||||
DocPrint(doc,"bd->file_dsk_name=AStrNew(\"%s\");\n",filename2);
|
DocPrint(doc,"bd->file_dsk_name=AStrNew(\"%s\");\n",filename2);
|
||||||
DocPrint(doc,"bd->drv_offset=19<<2+"
|
DocPrint(doc,"bd->drv_offset=19<<2+"
|
||||||
@@ -137,8 +137,8 @@ public U0 Unmount(U8 drv_let=0)
|
|||||||
public U8 MountFile(U8 *filename)
|
public U8 MountFile(U8 *filename)
|
||||||
{//Mount ISO.C file.
|
{//Mount ISO.C file.
|
||||||
U8 *filename2=DftExt(filename,"ISO.C"),*filename3=FileNameAbs(filename2);
|
U8 *filename2=DftExt(filename,"ISO.C"),*filename3=FileNameAbs(filename2);
|
||||||
CDrv *dv=DrvMakeFreeSlot(DrvNextFreeLet('M')); //First $LK,"BDT_FILE_READ",A="MN:BDT_FILE_READ"$
|
CDrv *dv=DrvMakeFreeSlot(DrvNextFreeLet('M')); //First $LK,"BDT_ISO_FILE_READ",A="MN:BDT_ISO_FILE_READ"$
|
||||||
CBlkDev *bd=BlkDevNextFreeSlot(dv->drv_let,BDT_FILE_READ);
|
CBlkDev *bd=BlkDevNextFreeSlot(dv->drv_let,BDT_ISO_FILE_READ);
|
||||||
bd->drv_offset=19<<2+(DVD_BLK_SIZE*2+DVD_BOOT_LOADER_SIZE)/BLK_SIZE;
|
bd->drv_offset=19<<2+(DVD_BLK_SIZE*2+DVD_BOOT_LOADER_SIZE)/BLK_SIZE;
|
||||||
bd->file_dsk_name=AStrNew(filename3);
|
bd->file_dsk_name=AStrNew(filename3);
|
||||||
BlkDevAdd(bd,TRUE,TRUE);
|
BlkDevAdd(bd,TRUE,TRUE);
|
||||||
|
|||||||
+2
-2
@@ -11,8 +11,8 @@ U0 LoadDocDefines()
|
|||||||
//This is cut and replaced when I generate a distro.
|
//This is cut and replaced when I generate a distro.
|
||||||
//See $LK,"DD_TEMPLEOS_LOC",A="FF:::/Demo/AcctExample/TOSDistro.CPP,DD_TEMPLEOS_LOC"$.
|
//See $LK,"DD_TEMPLEOS_LOC",A="FF:::/Demo/AcctExample/TOSDistro.CPP,DD_TEMPLEOS_LOC"$.
|
||||||
$TR-C,"LineRep"$
|
$TR-C,"LineRep"$
|
||||||
$ID,4$DefinePrint("DD_TEMPLEOS_LOC","121,194");
|
$ID,4$DefinePrint("DD_TEMPLEOS_LOC","121,410");
|
||||||
DefinePrint("DD_TEMPLEOS_LOC_OFFICIAL","81,057");
|
DefinePrint("DD_TEMPLEOS_LOC_OFFICIAL","81,046");
|
||||||
$ID,-4$
|
$ID,-4$
|
||||||
DefinePrint("DD_KERNEL","%08X",bfh);
|
DefinePrint("DD_KERNEL","%08X",bfh);
|
||||||
bfh(I64)+=bfh->file_size-1;
|
bfh(I64)+=bfh->file_size-1;
|
||||||
|
|||||||
+4
-3
@@ -226,17 +226,18 @@ public I64 DCSize(CDC *dc)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public U0 DCDepthBufRst(CDC *dc)
|
public I32 *DCDepthBufRst(CDC *dc)
|
||||||
{//Reset device context depth buf to far away.
|
{//Reset device context depth buf to far away.
|
||||||
if (dc->depth_buf)
|
if (dc->depth_buf)
|
||||||
MemSetU32(dc->depth_buf,MAX_I32,dc->width_internal*dc->height);
|
MemSetU32(dc->depth_buf,MAX_I32,dc->width_internal*dc->height);
|
||||||
|
return dc->depth_buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
public U0 DCDepthBufAlloc(CDC *dc)
|
public I32 *DCDepthBufAlloc(CDC *dc)
|
||||||
{//Alloc a 32-bit depth buffer for device context.
|
{//Alloc a 32-bit depth buffer for device context.
|
||||||
Free(dc->depth_buf);
|
Free(dc->depth_buf);
|
||||||
dc->depth_buf=MAlloc(dc->width_internal*dc->height*sizeof(I32),dc->mem_task);
|
dc->depth_buf=MAlloc(dc->width_internal*dc->height*sizeof(I32),dc->mem_task);
|
||||||
DCDepthBufRst(dc);
|
return DCDepthBufRst(dc);
|
||||||
}
|
}
|
||||||
|
|
||||||
public CDC *DCCopy(CDC *dc,CTask *task=NULL)
|
public CDC *DCCopy(CDC *dc,CTask *task=NULL)
|
||||||
|
|||||||
+28
-40
@@ -26,7 +26,7 @@ public U0 Sprite3(CDC *dc=gr.dc,I64 x,I64 y,I64 z,U8 *elems,
|
|||||||
I32 *ptr;
|
I32 *ptr;
|
||||||
CColorROPU32 old_color=dc->color;
|
CColorROPU32 old_color=dc->color;
|
||||||
CDC *img;
|
CDC *img;
|
||||||
CD3I32 *p;
|
CD3I32 *p,*p2;
|
||||||
CGrSym old_sym;
|
CGrSym old_sym;
|
||||||
MemCpy(&old_sym,&dc->sym,sizeof(CGrSym));
|
MemCpy(&old_sym,&dc->sym,sizeof(CGrSym));
|
||||||
if (dc->flags & DCF_LOCATE_NEAREST) {
|
if (dc->flags & DCF_LOCATE_NEAREST) {
|
||||||
@@ -173,47 +173,39 @@ public U0 Sprite3(CDC *dc=gr.dc,I64 x,I64 y,I64 z,U8 *elems,
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
start:
|
start:
|
||||||
p=&tempg->nu.u;
|
p2=p=MAlloc(tempg->nu.num*sizeof(CD3I32));
|
||||||
for (i=0;i<tempg->nu.num;i++,p++) {
|
MemCpy(p,&tempg->nu.u,tempg->nu.num*sizeof(CD3I32));
|
||||||
p->x+=x;
|
for (i=0;i<tempg->nu.num;i++,p2++) {
|
||||||
p->y+=y;
|
p2->x+=x;
|
||||||
p->z+=z;
|
p2->y+=y;
|
||||||
|
p2->z+=z;
|
||||||
}
|
}
|
||||||
case SPT_BSPLINE2:
|
case SPT_BSPLINE2:
|
||||||
Gr2BSpline3(dc,&tempg->nu.u,tempg->nu.num,FALSE);
|
Gr2BSpline3(dc,p,tempg->nu.num,FALSE);
|
||||||
break;
|
break;
|
||||||
case SPT_BSPLINE3:
|
case SPT_BSPLINE3:
|
||||||
Gr3BSpline3(dc,&tempg->nu.u,tempg->nu.num,FALSE);
|
Gr3BSpline3(dc,p,tempg->nu.num,FALSE);
|
||||||
break;
|
break;
|
||||||
case SPT_BSPLINE2_CLOSED:
|
case SPT_BSPLINE2_CLOSED:
|
||||||
Gr2BSpline3(dc,&tempg->nu.u,tempg->nu.num,TRUE);
|
Gr2BSpline3(dc,p,tempg->nu.num,TRUE);
|
||||||
break;
|
break;
|
||||||
case SPT_BSPLINE3_CLOSED:
|
case SPT_BSPLINE3_CLOSED:
|
||||||
Gr3BSpline3(dc,&tempg->nu.u,tempg->nu.num,TRUE);
|
Gr3BSpline3(dc,p,tempg->nu.num,TRUE);
|
||||||
break;
|
break;
|
||||||
end:
|
end:
|
||||||
p=&tempg->nu.u;
|
Free(p);
|
||||||
for (i=0;i<tempg->nu.num;i++,p++) {
|
|
||||||
p->x-=x;
|
|
||||||
p->y-=y;
|
|
||||||
p->z-=z;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case SPT_MESH:
|
case SPT_MESH:
|
||||||
p=&tempg->mu.u;
|
p2=p=MAlloc(tempg->mu.vertex_cnt*sizeof(CD3I32));
|
||||||
for (i=0;i<tempg->mu.vertex_cnt;i++,p++) {
|
MemCpy(p,&tempg->mu.u,tempg->mu.vertex_cnt*sizeof(CD3I32));
|
||||||
p->x+=x;
|
for (i=0;i<tempg->mu.vertex_cnt;i++,p2++) {
|
||||||
p->y+=y;
|
p2->x+=x;
|
||||||
p->z+=z;
|
p2->y+=y;
|
||||||
|
p2->z+=z;
|
||||||
}
|
}
|
||||||
Gr3Mesh(dc,tempg->mu.vertex_cnt,&tempg->mu.u,tempg->mu.tri_cnt,
|
Gr3Mesh(dc,tempg->mu.vertex_cnt,p,tempg->mu.tri_cnt,
|
||||||
(&tempg->mu.u)(U8 *)+sizeof(CD3I32)*tempg->mu.vertex_cnt);
|
(&tempg->mu.u)(U8 *)+sizeof(CD3I32)*tempg->mu.vertex_cnt);
|
||||||
p=&tempg->mu.u;
|
Free(p);
|
||||||
for (i=0;i<tempg->mu.vertex_cnt;i++,p++) {
|
|
||||||
p->x-=x;
|
|
||||||
p->y-=y;
|
|
||||||
p->z-=z;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case SPT_SHIFTABLE_MESH:
|
case SPT_SHIFTABLE_MESH:
|
||||||
if (dc->flags&DCF_TRANSFORMATION) {
|
if (dc->flags&DCF_TRANSFORMATION) {
|
||||||
@@ -228,20 +220,16 @@ public U0 Sprite3(CDC *dc=gr.dc,I64 x,I64 y,I64 z,U8 *elems,
|
|||||||
y1=tempg->pmu.y+y;
|
y1=tempg->pmu.y+y;
|
||||||
z1=tempg->pmu.z+z;
|
z1=tempg->pmu.z+z;
|
||||||
}
|
}
|
||||||
p=&tempg->pmu.u;
|
p2=p=MAlloc(tempg->pmu.vertex_cnt*sizeof(CD3I32));
|
||||||
for (i=0;i<tempg->pmu.vertex_cnt;i++,p++) {
|
MemCpy(p,&tempg->pmu.u,tempg->pmu.vertex_cnt*sizeof(CD3I32));
|
||||||
p->x+=x1;
|
for (i=0;i<tempg->pmu.vertex_cnt;i++,p2++) {
|
||||||
p->y+=y1;
|
p2->x+=x1;
|
||||||
p->z+=z1;
|
p2->y+=y1;
|
||||||
|
p2->z+=z1;
|
||||||
}
|
}
|
||||||
Gr3Mesh(dc,tempg->pmu.vertex_cnt,&tempg->pmu.u,tempg->pmu.tri_cnt,
|
Gr3Mesh(dc,tempg->pmu.vertex_cnt,p,tempg->pmu.tri_cnt,
|
||||||
(&tempg->pmu.u)(U8 *)+sizeof(CD3I32)*tempg->pmu.vertex_cnt);
|
(&tempg->pmu.u)(U8 *)+sizeof(CD3I32)*tempg->pmu.vertex_cnt);
|
||||||
p=&tempg->pmu.u;
|
Free(p);
|
||||||
for (i=0;i<tempg->pmu.vertex_cnt;i++,p++) {
|
|
||||||
p->x-=x1;
|
|
||||||
p->y-=y1;
|
|
||||||
p->z-=z1;
|
|
||||||
}
|
|
||||||
if (dc->flags&DCF_TRANSFORMATION) {
|
if (dc->flags&DCF_TRANSFORMATION) {
|
||||||
dc->x-=tempg->pmu.x;
|
dc->x-=tempg->pmu.x;
|
||||||
dc->y-=tempg->pmu.y;
|
dc->y-=tempg->pmu.y;
|
||||||
|
|||||||
@@ -131,8 +131,8 @@ public I64 RedSeaISO(U8 *_iso_filename=NULL,U8 *_src_dir,
|
|||||||
I64 i,res,root_cnt,root_dir_blks,bitmap_blks,bitmap_blks1;
|
I64 i,res,root_cnt,root_dir_blks,bitmap_blks,bitmap_blks1;
|
||||||
CDirEntry *tempde,de;
|
CDirEntry *tempde,de;
|
||||||
U8 buf[STR_LEN],*iso_filename,*src_dir,*stage2_filename;
|
U8 buf[STR_LEN],*iso_filename,*src_dir,*stage2_filename;
|
||||||
CDrv *dv=DrvMakeFreeSlot(DrvNextFreeLet('Q')); //First $LK,"BDT_FILE_WRITE",A="MN:BDT_FILE_WRITE"$
|
CDrv *dv=DrvMakeFreeSlot(DrvNextFreeLet('Q')); //First $LK,"BDT_ISO_FILE_WRITE",A="MN:BDT_ISO_FILE_WRITE"$
|
||||||
CBlkDev *bd=BlkDevNextFreeSlot(dv->drv_let,BDT_FILE_WRITE);
|
CBlkDev *bd=BlkDevNextFreeSlot(dv->drv_let,BDT_ISO_FILE_WRITE);
|
||||||
|
|
||||||
if (!_iso_filename)
|
if (!_iso_filename)
|
||||||
_iso_filename=blkdev.dft_iso_filename;
|
_iso_filename=blkdev.dft_iso_filename;
|
||||||
|
|||||||
@@ -327,7 +327,7 @@ public U0 DocBMP(CDoc *doc=NULL,U8 *filename,Bool dither_probability=FALSE,
|
|||||||
Bool use_ms_paint_palette=FALSE)
|
Bool use_ms_paint_palette=FALSE)
|
||||||
{//Put a BMP file into a document as a sprite.
|
{//Put a BMP file into a document as a sprite.
|
||||||
CDC *dc=BMPRead(filename,dither_probability,use_ms_paint_palette);
|
CDC *dc=BMPRead(filename,dither_probability,use_ms_paint_palette);
|
||||||
CSprite *elems=DC2Sprite(dc);
|
U8 *elems=DC2Sprite(dc);
|
||||||
DocSprite(doc,elems);
|
DocSprite(doc,elems);
|
||||||
Free(elems);
|
Free(elems);
|
||||||
DCDel(dc);
|
DCDel(dc);
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -159,7 +159,7 @@ $BG,14$
|
|||||||
|
|
||||||
$BG$class Frame
|
$BG$class Frame
|
||||||
{
|
{
|
||||||
CSprite *img[2];
|
U8 *img[2];
|
||||||
F64 dt;
|
F64 dt;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ U8 *gate_type_lst="NULL\0OUTPUT\0INPUT\0"
|
|||||||
|
|
||||||
#define MAX_SEL_GATES 128
|
#define MAX_SEL_GATES 128
|
||||||
|
|
||||||
CSprite *imgs[GT_NUM_ENTRIES]={NULL,NULL,NULL,
|
U8 *imgs[GT_NUM_ENTRIES]={NULL,NULL,NULL,
|
||||||
$IB,"<NOT>",BI=1$,$IB,"<AND>",BI=2$,$IB,"<OR>",BI=3$,$IB,"<NAND>",BI=4$,$IB,"<NOR>",BI=5$,$IB,"<XOR>",BI=6$,$IB,"<AND3>",BI=7$,$IB,"<OR3>",BI=8$,$IB,"<NAND3>",BI=9$,$IB,"<NOR3>",BI=10$};
|
$IB,"<NOT>",BI=1$,$IB,"<AND>",BI=2$,$IB,"<OR>",BI=3$,$IB,"<NAND>",BI=4$,$IB,"<NOR>",BI=5$,$IB,"<XOR>",BI=6$,$IB,"<AND3>",BI=7$,$IB,"<OR3>",BI=8$,$IB,"<NAND3>",BI=9$,$IB,"<NOR3>",BI=10$};
|
||||||
|
|
||||||
I64 num_inputs_entered,num_outputs_entered;
|
I64 num_inputs_entered,num_outputs_entered;
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ $ID,-8$
|
|||||||
F64 psm_durations[PSM_NUM_DURATIONS+1]={
|
F64 psm_durations[PSM_NUM_DURATIONS+1]={
|
||||||
2*.25/3,.25,2*.5/3,.5,2.0/3.0,0.5*1.5,1.0,1.5,2.0,3.0,4.0,6.0,1000000.0};
|
2*.25/3,.25,2*.5/3,.5,2.0/3.0,0.5*1.5,1.0,1.5,2.0,3.0,4.0,6.0,1000000.0};
|
||||||
U8 *psm_duration_lst="st\0s\0et\0e\0qt\0e.\0q\0q.\0h\0h.\0w\0w.\0";
|
U8 *psm_duration_lst="st\0s\0et\0e\0qt\0e.\0q\0q.\0h\0h.\0w\0w.\0";
|
||||||
CSprite *psm_duration_imgs[PSM_NUM_DURATIONS]={$IB,"<1>",BI=1$,$IB,"<1>",BI=1$,$IB,"<2>",BI=2$,
|
U8 *psm_duration_imgs[PSM_NUM_DURATIONS]={$IB,"<1>",BI=1$,$IB,"<1>",BI=1$,$IB,"<2>",BI=2$,
|
||||||
$IB,"<2>",BI=2$,$IB,"<3>",BI=3$,$IB,"<2>",BI=2$,$IB,"<3>",BI=3$,$IB,"<3>",BI=3$,
|
$IB,"<2>",BI=2$,$IB,"<3>",BI=3$,$IB,"<2>",BI=2$,$IB,"<3>",BI=3$,$IB,"<3>",BI=3$,
|
||||||
$IB,"<4>",BI=4$,$IB,"<4>",BI=4$,$IB,"<5>",BI=5$,$IB,"<5>",BI=5$};
|
$IB,"<4>",BI=4$,$IB,"<4>",BI=4$,$IB,"<5>",BI=5$,$IB,"<5>",BI=5$};
|
||||||
Bool psm_triplet_durations[PSM_NUM_DURATIONS]={TRUE,FALSE,TRUE,
|
Bool psm_triplet_durations[PSM_NUM_DURATIONS]={TRUE,FALSE,TRUE,
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ $BG,14$
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
CSprite *friendly_imgs[4]={$IB,"<3>",BI=3$,$IB,"<2>",BI=2$,$IB,"<3>",BI=3$,$IB,"<4>",BI=4$};
|
U8 *friendly_imgs[4]={$IB,"<3>",BI=3$,$IB,"<2>",BI=2$,$IB,"<3>",BI=3$,$IB,"<4>",BI=4$};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -75,7 +75,7 @@ CSprite *friendly_imgs[4]={$IB,"<3>",BI=3$,$IB,"<2>",BI=2$,$IB,"<3>",BI=3$,$IB,"
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
CSprite *friendly_hacking_imgs[4]={$IB,"<6>",BI=6$,$IB,"<5>",BI=5$,$IB,"<6>",BI=6$,$IB,"<7>",BI=7$};
|
U8 *friendly_hacking_imgs[4]={$IB,"<6>",BI=6$,$IB,"<5>",BI=5$,$IB,"<6>",BI=6$,$IB,"<7>",BI=7$};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -92,7 +92,7 @@ CSprite *friendly_hacking_imgs[4]={$IB,"<6>",BI=6$,$IB,"<5>",BI=5$,$IB,"<6>",BI=
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
CSprite *enemy_imgs[4]={$IB,"<9>",BI=9$,$IB,"<8>",BI=8$,$IB,"<9>",BI=9$,$IB,"<10>",BI=10$};
|
U8 *enemy_imgs[4]={$IB,"<9>",BI=9$,$IB,"<8>",BI=8$,$IB,"<9>",BI=9$,$IB,"<10>",BI=10$};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -112,7 +112,7 @@ CSprite *enemy_imgs[4]={$IB,"<9>",BI=9$,$IB,"<8>",BI=8$,$IB,"<9>",BI=9$,$IB,"<10
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
CSprite *enemy_hacking_imgs[4]={$IB,"<12>",BI=12$,$IB,"<11>",BI=11$,$IB,"<12>",BI=12$,$IB,"<13>",BI=13$};
|
U8 *enemy_hacking_imgs[4]={$IB,"<12>",BI=12$,$IB,"<11>",BI=11$,$IB,"<12>",BI=12$,$IB,"<13>",BI=13$};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -155,7 +155,7 @@ CSprite *enemy_hacking_imgs[4]={$IB,"<12>",BI=12$,$IB,"<11>",BI=11$,$IB,"<12>",B
|
|||||||
|
|
||||||
$BG$
|
$BG$
|
||||||
|
|
||||||
CSprite *landscape_imgs[LANDSCAPE_TYPES]=
|
U8 *landscape_imgs[LANDSCAPE_TYPES]=
|
||||||
{$IB,"<tree>",BI=14$,$IB,"<rock>",BI=15$,$IB,"<mountain>",BI=16$,$IB,"<castle>",BI=17$};
|
{$IB,"<tree>",BI=14$,$IB,"<rock>",BI=15$,$IB,"<mountain>",BI=16$,$IB,"<castle>",BI=17$};
|
||||||
|
|
||||||
#define MAX_LANDSCAPE 64
|
#define MAX_LANDSCAPE 64
|
||||||
@@ -173,7 +173,7 @@ U0 MPDrawMen(CDC *dc2)
|
|||||||
I64 i,r[16],lo=Gs->num*MAX_MAN/mp_cnt,hi=(Gs->num+1)*MAX_MAN/mp_cnt,
|
I64 i,r[16],lo=Gs->num*MAX_MAN/mp_cnt,hi=(Gs->num+1)*MAX_MAN/mp_cnt,
|
||||||
yy,phase,scroll_y=MAP_HEIGHT-100-100*(tS-t0);
|
yy,phase,scroll_y=MAP_HEIGHT-100-100*(tS-t0);
|
||||||
Man *tempm;
|
Man *tempm;
|
||||||
CSprite *temps,**_temps;
|
U8 *temps,**_temps;
|
||||||
F64 tt,ts=tS;
|
F64 tt,ts=tS;
|
||||||
|
|
||||||
for (i=lo;i<hi;i++) {
|
for (i=lo;i<hi;i++) {
|
||||||
@@ -215,7 +215,7 @@ U0 DrawIt(CTask *task,CDC *dc)
|
|||||||
F64 tt,ts=tS;
|
F64 tt,ts=tS;
|
||||||
Man *tempm;
|
Man *tempm;
|
||||||
Bullet *tempb;
|
Bullet *tempb;
|
||||||
CSprite *temps;
|
U8 *temps;
|
||||||
|
|
||||||
for (i=0;i<MAX_LANDSCAPE;i++) {
|
for (i=0;i<MAX_LANDSCAPE;i++) {
|
||||||
yy=(ls[i].y-scroll_y)&(MAP_HEIGHT-1);
|
yy=(ls[i].y-scroll_y)&(MAP_HEIGHT-1);
|
||||||
|
|||||||
Binary file not shown.
@@ -48,8 +48,6 @@ $WW,1$$FG,5$$TX+CX,"TODO"$$FG$
|
|||||||
|
|
||||||
* $LK,"::/Demo/Games/FlatTops.CPP"$ is torpedo, not bombs.
|
* $LK,"::/Demo/Games/FlatTops.CPP"$ is torpedo, not bombs.
|
||||||
|
|
||||||
* $LK,"::/Demo/Games/EagleDive.CPP"$ foreground clipping issues.
|
|
||||||
|
|
||||||
* Reset MPs with $LK,"Core0StartMP",A="MN:Core0StartMP"$() after boot. Free old task memory?
|
* Reset MPs with $LK,"Core0StartMP",A="MN:Core0StartMP"$() after boot. Free old task memory?
|
||||||
|
|
||||||
* Use pen_width and pen_height when clipping with pen_width>1.
|
* Use pen_width and pen_height when clipping with pen_width>1.
|
||||||
@@ -69,7 +67,7 @@ $WW,1$$FG,5$$TX+CX,"TODO"$$FG$
|
|||||||
|
|
||||||
* Change %h*c so the character is not a arg?
|
* Change %h*c so the character is not a arg?
|
||||||
|
|
||||||
* $LK,"GrLineFat3",A="MN:GrLineFat3"$() needs work.
|
* $LK,"GrLineFat3",A="MN:GrLineFat3"$() needs a little work.
|
||||||
|
|
||||||
|
|
||||||
$FG,5$$TX+CX,"TODO? Meh"$$FG$
|
$FG,5$$TX+CX,"TODO? Meh"$$FG$
|
||||||
@@ -406,13 +404,13 @@ Moses gets Aaron $TX,"Exodus 4:10-16",HTML="http://www.biblegateway.com/passag
|
|||||||
There is no council against the Lord $TX,"Proverbs 21:30",HTML="http://www.biblegateway.com/verse/en/Proverbs%2021:30"$
|
There is no council against the Lord $TX,"Proverbs 21:30",HTML="http://www.biblegateway.com/verse/en/Proverbs%2021:30"$
|
||||||
Human help is worthless $TX,"Psalm 108:12",HTML="http://www.biblegateway.com/verse/en/Psalm%20108:12"$
|
Human help is worthless $TX,"Psalm 108:12",HTML="http://www.biblegateway.com/verse/en/Psalm%20108:12"$
|
||||||
Do not seek your own wealth $TX,"1 Corinthians 10:24",HTML="http://www.biblegateway.com/verse/en/1%20Corinthians%2010:24"$
|
Do not seek your own wealth $TX,"1 Corinthians 10:24",HTML="http://www.biblegateway.com/verse/en/1%20Corinthians%2010:24"$
|
||||||
The stone rejected is conrerstone $TX,"Matthew 21:42",HTML="http://www.biblegateway.com/verse/en/Matthew%2021:42"$
|
The stone rejected is cornerstone $TX,"Matthew 21:42",HTML="http://www.biblegateway.com/verse/en/Matthew%2021:42"$
|
||||||
New wineskins $TX,"Mark 2:22",HTML="http://www.biblegateway.com/verse/en/Mark%202:22"$
|
New wineskins $TX,"Mark 2:22",HTML="http://www.biblegateway.com/verse/en/Mark%202:22"$
|
||||||
|
|
||||||
$FG,5$$TX+CX,"Misc Notes"$$FG$
|
$FG,5$$TX+CX,"Misc Notes"$$FG$
|
||||||
Intel CEO's name: Brian Krzanich
|
Intel CEO's name: Brian Krzanich
|
||||||
>$FG,2$lspci -v$FG$
|
>$FG,2$lspci -v$FG$
|
||||||
Size:$TX,"17408 KB",D="DD_TEMPLEOSCD_K_SIZE"$
|
Size:$TX,"17412 KB",D="DD_TEMPLEOSCD_K_SIZE"$
|
||||||
|
|
||||||
$FG,5$$TX+CX,"My Web Bookmarks"$$FG$$WW,0$
|
$FG,5$$TX+CX,"My Web Bookmarks"$$FG$$WW,0$
|
||||||
$TX,"My FireFox Bookmarks",HTML="http://www.templeos.org/Wb/Home/Downloads/Blog/Bookmarks"$
|
$TX,"My FireFox Bookmarks",HTML="http://www.templeos.org/Wb/Home/Downloads/Blog/Bookmarks"$
|
||||||
|
|||||||
@@ -10,40 +10,40 @@ $ID,-2$$TR,"CircleTrace"$
|
|||||||
$ID,2$F64 best_score=4.9425;
|
$ID,2$F64 best_score=4.9425;
|
||||||
$ID,-2$$TR,"DiningStars"$
|
$ID,-2$$TR,"DiningStars"$
|
||||||
$ID,2$F64 best_score=9999.0000;
|
$ID,2$F64 best_score=9999.0000;
|
||||||
$ID,-2$$TR,"DunGen"$
|
|
||||||
$ID,2$F64 best_score=20.5295;
|
|
||||||
$ID,-2$$TR,"Staff"$
|
$ID,-2$$TR,"Staff"$
|
||||||
$ID,2$#define PERSONAL_INITIALS "TAD"
|
$ID,2$#define PERSONAL_INITIALS "TAD"
|
||||||
#define MACHINE_CFG 0
|
#define MACHINE_CFG 0
|
||||||
$ID,-2$$TR,"RawHide"$
|
|
||||||
$ID,2$F64 best_score=96.1279;
|
|
||||||
$ID,-2$$TR,"BlackDiamond"$
|
$ID,-2$$TR,"BlackDiamond"$
|
||||||
$ID,2$I64 best_score=9;
|
$ID,2$I64 best_score=9;
|
||||||
|
$ID,-2$$TR,"DunGen"$
|
||||||
|
$ID,2$F64 best_score=20.5295;
|
||||||
|
$ID,-2$$TR,"ZoneOut"$
|
||||||
|
$ID,2$F64 best_score=8.1373;
|
||||||
|
$ID,-2$$TR,"Varoom"$
|
||||||
|
$ID,2$F64 best_score=46.2643;
|
||||||
$ID,-2$$TR,"FlapBat"$
|
$ID,-2$$TR,"FlapBat"$
|
||||||
$ID,2$F64 best_score=16.4090;
|
$ID,2$F64 best_score=16.4090;
|
||||||
|
$ID,-2$$TR,"TimeOut"$
|
||||||
|
$ID,2$I64 best_score=22202;
|
||||||
|
$ID,-2$$TR,"RawHide"$
|
||||||
|
$ID,2$F64 best_score=96.1279;
|
||||||
|
$ID,-2$$TR,"KeepAway"$
|
||||||
|
$ID,2$I64 best_score0=68,best_score1=30;
|
||||||
|
$ID,-2$$TR,"XCaliber"$
|
||||||
|
$ID,2$I64 best_score=248;
|
||||||
|
I64 msg_flags=1;
|
||||||
$ID,-2$$TR,"Wenceslas"$
|
$ID,-2$$TR,"Wenceslas"$
|
||||||
$ID,2$F64 best_score=43.9944;
|
$ID,2$F64 best_score=43.9944;
|
||||||
$ID,-2$$TR,"BomberGolf"$
|
$ID,-2$$TR,"BomberGolf"$
|
||||||
$ID,2$I64 best_score=175;
|
$ID,2$I64 best_score=175;
|
||||||
$ID,-2$$TR,"TimeOut"$
|
|
||||||
$ID,2$I64 best_score=22202;
|
|
||||||
$ID,-2$$TR,"ZoneOut"$
|
|
||||||
$ID,2$F64 best_score=8.1373;
|
|
||||||
$ID,-2$$TR,"KeepAway"$
|
|
||||||
$ID,2$I64 best_score0=68,best_score1=30;
|
|
||||||
$ID,-2$$TR,"Varoom"$
|
|
||||||
$ID,2$F64 best_score=46.2643;
|
|
||||||
$ID,-2$$TR,"CastleFrankenstein"$
|
$ID,-2$$TR,"CastleFrankenstein"$
|
||||||
$ID,2$F64 best_score=33.8405;
|
$ID,2$F64 best_score=33.8405;
|
||||||
$ID,-2$$TR,"XCaliber"$
|
|
||||||
$ID,2$I64 best_score=248;
|
|
||||||
I64 msg_flags=1;
|
|
||||||
$ID,-2$$TR,"EagleDive"$
|
$ID,-2$$TR,"EagleDive"$
|
||||||
$ID,2$I64 best_score=8;
|
$ID,2$I64 best_score=8;
|
||||||
$ID,-2$$ID,-2$$TR,"DemoCompany"$
|
$ID,-2$$ID,-2$$TR,"DemoCompany"$
|
||||||
$ID,2$
|
$ID,2$
|
||||||
$TR,"Game1"$
|
$TR,"Game1"$
|
||||||
$ID,2$F64 best_score=166.57305;
|
$ID,2$F64 best_score=168.87967;
|
||||||
$TR,"SimpleVal"$
|
$TR,"SimpleVal"$
|
||||||
$ID,2$1329;
|
$ID,2$1330;
|
||||||
$ID,-2$$ID,-2$
|
$ID,-2$$ID,-2$
|
||||||
@@ -68,6 +68,6 @@ U0 TOSInit()
|
|||||||
#define TOS_DVD_CFG "Tb\n0x20000\nt \n\n\nAutoMountIDE\nCT\n"
|
#define TOS_DVD_CFG "Tb\n0x20000\nt \n\n\nAutoMountIDE\nCT\n"
|
||||||
#define TOS_DVD_DBG_CFG "A" CFG_BOOT_RESCUE_DRV\
|
#define TOS_DVD_DBG_CFG "A" CFG_BOOT_RESCUE_DRV\
|
||||||
"b\nScale2Mem(2048,0x40000)\n\n\n"\
|
"b\nScale2Mem(2048,0x40000)\n\n\n"\
|
||||||
"DontProbe\nBootRescueDrv\n"\
|
"NoMP\nTextMode\nDontProbe\nBootRescueDrv\n"\
|
||||||
"C:" CFG_BOOT_RESCUE_DRV_FILE "\n"\
|
"C:" CFG_BOOT_RESCUE_DRV_FILE "\n"\
|
||||||
CFG_BOOT_RESCUE_DRV_START "\n\n"
|
CFG_BOOT_RESCUE_DRV_START "\n\n"
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -141,7 +141,7 @@ U0 DrawIt(CTask *task,CDC *dc)
|
|||||||
c,x1w,y1w,x1h,y1h,xh,yh,zh,
|
c,x1w,y1w,x1h,y1h,xh,yh,zh,
|
||||||
cx=task->pix_width/2,
|
cx=task->pix_width/2,
|
||||||
cy=task->pix_height/2;
|
cy=task->pix_height/2;
|
||||||
CSprite *temps;
|
U8 *temps;
|
||||||
F64 tt;
|
F64 tt;
|
||||||
CD3I32 poly[4];
|
CD3I32 poly[4];
|
||||||
Monster *tempm;
|
Monster *tempm;
|
||||||
|
|||||||
+349
-108
@@ -24,20 +24,31 @@ RegExeBranch("TempleOS/EagleDive");
|
|||||||
//Too big makes off-screen draws take place.
|
//Too big makes off-screen draws take place.
|
||||||
#define MAX_PANEL_SIZE 16
|
#define MAX_PANEL_SIZE 16
|
||||||
|
|
||||||
class Panel
|
|
||||||
{
|
|
||||||
Panel *next;
|
|
||||||
I32 n, //num polygon sides
|
|
||||||
num; //panel number
|
|
||||||
CD3I32 *pts;
|
|
||||||
I64 color,cnt;
|
|
||||||
};
|
|
||||||
|
|
||||||
class Fish
|
|
||||||
{
|
|
||||||
Fish *next,*last;
|
|
||||||
CD3I64 p;
|
|
||||||
} fish_root;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -48,23 +59,233 @@ $SP,"<1>",BI=1$
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
I64 critical_section_flag;
|
|
||||||
|
|
||||||
/*These are $BK,1$NOT$BK,0$ dealloced after the program ends,
|
|
||||||
but I did them this way for your benefit
|
|
||||||
so 2D array indexing is not done by hand.
|
|
||||||
You can type "EagleDive;" at the command line
|
|
||||||
to rerun without new allocations.
|
|
||||||
Normally, just spawn a popup task,
|
|
||||||
run it and kill it using an icon.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$SP,"<2>",BI=2$
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$SP,"<3>",BI=3$
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$SP,"<4>",BI=4$
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class Obj
|
||||||
|
{
|
||||||
|
Obj *next,*last;
|
||||||
|
CD3I64 p;
|
||||||
|
U8 *img;
|
||||||
|
Bool fish;
|
||||||
|
};
|
||||||
|
|
||||||
|
class Panel
|
||||||
|
{//Polygon or Obj
|
||||||
|
Panel *next;
|
||||||
|
CD3I32 *pts;
|
||||||
|
I64 cnt;
|
||||||
|
U16 update,num_sides;
|
||||||
|
CColorROPU32 color;
|
||||||
|
Obj *next_obj,*last_obj;
|
||||||
|
} *panel_root,*panels[MAP_HEIGHT][MAP_WIDTH];
|
||||||
|
|
||||||
|
I64 critical_section_flag;
|
||||||
I16 elevations[MAP_HEIGHT][MAP_WIDTH];
|
I16 elevations[MAP_HEIGHT][MAP_WIDTH];
|
||||||
CD3 normals[MAP_HEIGHT][MAP_WIDTH];
|
CD3 normals[MAP_HEIGHT][MAP_WIDTH];
|
||||||
Panel *panels[MAP_HEIGHT][MAP_WIDTH];
|
|
||||||
|
|
||||||
I64 num_panels;
|
|
||||||
Panel *panel_root;
|
|
||||||
U8 *panels_processed_bitmap;
|
|
||||||
|
|
||||||
F64 game_t0,è,é1,é2,speed;
|
F64 game_t0,è,é1,é2,speed;
|
||||||
|
|
||||||
@@ -84,12 +305,13 @@ U0 EDTransform(CDC *dc,I64 *x,I64 *y,I64 *z)
|
|||||||
Mat4x4MulXYZ(dc->r,x,y,z);
|
Mat4x4MulXYZ(dc->r,x,y,z);
|
||||||
*z=zz=-*z;
|
*z=zz=-*z;
|
||||||
if (zz>0) {
|
if (zz>0) {
|
||||||
*x = *x * DISPLAY_SCALE/ zz; //Foreshortening
|
*x = dc->x + *x * DISPLAY_SCALE/zz; //Foreshortening
|
||||||
*y = *y * DISPLAY_SCALE/ zz;
|
*y = dc->y - *y * DISPLAY_SCALE/zz;
|
||||||
}
|
} else {
|
||||||
*x+=dc->x;
|
*x = dc->x + *x;
|
||||||
*y = dc->y - *y;
|
*y = dc->y - *y;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
U0 CalcNormals()
|
U0 CalcNormals()
|
||||||
{/*Find the normal vect with a curl.
|
{/*Find the normal vect with a curl.
|
||||||
@@ -137,7 +359,7 @@ U0 MPDoPanels(CTask *task)
|
|||||||
Bool cont;
|
Bool cont;
|
||||||
Panel *tempp,*start_ptr=NULL,*end_ptr=NULL;
|
Panel *tempp,*start_ptr=NULL,*end_ptr=NULL;
|
||||||
CD3I32 *poly;
|
CD3I32 *poly;
|
||||||
Fish *tempf;
|
Obj *tempo;
|
||||||
lo=Gs->num*(MAP_HEIGHT-1)/mp_cnt;
|
lo=Gs->num*(MAP_HEIGHT-1)/mp_cnt;
|
||||||
hi=(Gs->num+1)*(MAP_HEIGHT-1)/mp_cnt;
|
hi=(Gs->num+1)*(MAP_HEIGHT-1)/mp_cnt;
|
||||||
for (threshold=8;threshold>=1;threshold--)
|
for (threshold=8;threshold>=1;threshold--)
|
||||||
@@ -159,7 +381,7 @@ U0 MPDoPanels(CTask *task)
|
|||||||
} while (cont);
|
} while (cont);
|
||||||
if (w>=threshold || h>=threshold) {
|
if (w>=threshold || h>=threshold) {
|
||||||
tempp=CAlloc(sizeof(Panel),task);
|
tempp=CAlloc(sizeof(Panel),task);
|
||||||
lock {tempp->num=num_panels++;}
|
QueInit(&tempp->next_obj);
|
||||||
l=elevations[j][i];
|
l=elevations[j][i];
|
||||||
if (l<=WATER_ELEVATION*MAP_SCALE &&
|
if (l<=WATER_ELEVATION*MAP_SCALE &&
|
||||||
elevations[j][i+w-1]<=WATER_ELEVATION*MAP_SCALE &&
|
elevations[j][i+w-1]<=WATER_ELEVATION*MAP_SCALE &&
|
||||||
@@ -167,48 +389,66 @@ U0 MPDoPanels(CTask *task)
|
|||||||
elevations[j+h-1][i+w-1]<=WATER_ELEVATION*MAP_SCALE) {
|
elevations[j+h-1][i+w-1]<=WATER_ELEVATION*MAP_SCALE) {
|
||||||
tempp->color=BLUE;
|
tempp->color=BLUE;
|
||||||
if (Rand<0.05) {
|
if (Rand<0.05) {
|
||||||
tempf=MAlloc(sizeof(Fish),task);
|
tempo=MAlloc(sizeof(Obj),task);
|
||||||
tempf->p.x=(i+w/2)*MAP_SCALE;
|
tempo->p.x=(i+w/2)*MAP_SCALE;
|
||||||
tempf->p.y=(j+h/2)*MAP_SCALE;
|
tempo->p.y=(j+h/2)*MAP_SCALE;
|
||||||
tempf->p.z=l;
|
if (Rand<0.2) {
|
||||||
while (LBts(&critical_section_flag,0))
|
tempo->fish=FALSE;
|
||||||
Yield;
|
if (RandI16&1)
|
||||||
QueIns(tempf,fish_root.last);
|
tempo->img=$IB,"<2>",BI=2$; //Boat
|
||||||
LBtr(&critical_section_flag,0);
|
else
|
||||||
|
tempo->img=$IB,"<3>",BI=3$; //Boat
|
||||||
|
tempo->p.z=(WATER_ELEVATION+1)*MAP_SCALE;
|
||||||
|
} else {
|
||||||
|
tempo->fish=TRUE;
|
||||||
|
tempo->img=$IB,"<1>",BI=1$; //Fish
|
||||||
|
tempo->p.z=WATER_ELEVATION*MAP_SCALE;
|
||||||
|
}
|
||||||
|
QueIns(tempo,tempp->last_obj);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (RandI16&1) {
|
if (l<ROCK_ELEVATION*MAP_SCALE) {
|
||||||
if (l<ROCK_ELEVATION*MAP_SCALE)
|
if (RandI16&1)
|
||||||
tempp->color=LTGREEN;
|
tempp->color=LTGREEN;
|
||||||
else if (l<SNOW_ELEVATION*MAP_SCALE) {
|
else
|
||||||
if (!(RandU16&3))
|
tempp->color=GREEN+LTGREEN<<16+ROPF_DITHER;
|
||||||
|
if (Rand<0.03) {
|
||||||
|
tempo=MAlloc(sizeof(Obj),task);
|
||||||
|
tempo->p.x=(i+w/2)*MAP_SCALE;
|
||||||
|
tempo->p.y=(j+h/2)*MAP_SCALE;
|
||||||
|
tempo->p.z=l;
|
||||||
|
tempo->img=$IB,"<4>",BI=4$; //Tree
|
||||||
|
tempo->fish=FALSE;
|
||||||
|
QueIns(tempo,tempp->last_obj);
|
||||||
|
}
|
||||||
|
} else if (l<SNOW_ELEVATION*MAP_SCALE) {
|
||||||
|
if (!(RandU16&3)) {
|
||||||
|
if (RandI16&1)
|
||||||
tempp->color=LTGRAY;
|
tempp->color=LTGRAY;
|
||||||
else
|
else
|
||||||
tempp->color=LTGREEN;
|
tempp->color=DKGRAY+LTGRAY<<16+ROPF_DITHER;
|
||||||
} else {
|
} else {
|
||||||
if (!(RandU16&3))
|
if (RandI16&1)
|
||||||
|
tempp->color=LTGREEN;
|
||||||
|
else
|
||||||
|
tempp->color=GREEN+LTGREEN<<16+ROPF_DITHER;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (!(RandU16&3)) {
|
||||||
|
if (RandI16&1)
|
||||||
tempp->color=WHITE;
|
tempp->color=WHITE;
|
||||||
else
|
else
|
||||||
tempp->color=LTGRAY;
|
tempp->color=LTGRAY;
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
if (l<ROCK_ELEVATION*MAP_SCALE)
|
if (RandI16&1)
|
||||||
tempp->color=GREEN+LTGREEN<<16+ROPF_DITHER;
|
|
||||||
else if (l<SNOW_ELEVATION*MAP_SCALE) {
|
|
||||||
if (!(RandU16&3))
|
|
||||||
tempp->color=DKGRAY+LTGRAY<<16+ROPF_DITHER;
|
|
||||||
else
|
|
||||||
tempp->color=GREEN+LTGREEN<<16+ROPF_DITHER;
|
|
||||||
} else {
|
|
||||||
if (!(RandU16&3))
|
|
||||||
tempp->color=LTGRAY+WHITE<<16+ROPF_DITHER;
|
tempp->color=LTGRAY+WHITE<<16+ROPF_DITHER;
|
||||||
else
|
else
|
||||||
tempp->color=DKGRAY+LTGRAY<<16+ROPF_DITHER;
|
tempp->color=DKGRAY+LTGRAY<<16+ROPF_DITHER;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
tempp->n=4;
|
tempp->num_sides=4;
|
||||||
poly=tempp->pts=MAlloc(sizeof(CD3I32)*tempp->n,task);
|
poly=tempp->pts=MAlloc(sizeof(CD3I32)*tempp->num_sides,task);
|
||||||
poly[0].x=MAP_SCALE*i;
|
poly[0].x=MAP_SCALE*i;
|
||||||
poly[0].y=MAP_SCALE*j;
|
poly[0].y=MAP_SCALE*j;
|
||||||
poly[0].z=elevations[j][i];
|
poly[0].z=elevations[j][i];
|
||||||
@@ -284,13 +524,11 @@ for each spot.
|
|||||||
MemSet(panels,0,sizeof(panels));
|
MemSet(panels,0,sizeof(panels));
|
||||||
CalcNormals;
|
CalcNormals;
|
||||||
panel_root=NULL;
|
panel_root=NULL;
|
||||||
num_panels=0;
|
|
||||||
mp.init_not_done_flags=1<<mp_cnt-1;
|
mp.init_not_done_flags=1<<mp_cnt-1;
|
||||||
for (i=0;i<mp_cnt;i++)
|
for (i=0;i<mp_cnt;i++)
|
||||||
Spawn(&MPDoPanels,Fs,"Do Panels",i);
|
Spawn(&MPDoPanels,Fs,"Do Panels",i);
|
||||||
while (mp.init_not_done_flags)
|
while (mp.init_not_done_flags)
|
||||||
Sleep(1);
|
Sleep(1);
|
||||||
panels_processed_bitmap=MAlloc((num_panels+7)>>3);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
F64 claws_down;
|
F64 claws_down;
|
||||||
@@ -301,8 +539,8 @@ F64 claws_down;
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
$SP,"<2>",BI=2$
|
$SP,"<5>",BI=5$
|
||||||
$SP,"<3>",BI=3$
|
$SP,"<6>",BI=6$
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -327,9 +565,9 @@ U0 ClawDraw(CDC *dc,I64 x1,I64 y1,I64 x2,I64 y2,I64 w,I64 segments,Bool talon)
|
|||||||
}
|
}
|
||||||
if (talon) {
|
if (talon) {
|
||||||
if (y1<y2)
|
if (y1<y2)
|
||||||
Sprite3B(dc,x1,y1,0,$IB,"<2>",BI=2$);
|
Sprite3B(dc,x1,y1,0,$IB,"<5>",BI=5$);
|
||||||
else
|
else
|
||||||
Sprite3B(dc,x1,y1,0,$IB,"<3>",BI=3$);
|
Sprite3B(dc,x1,y1,0,$IB,"<6>",BI=6$);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -350,7 +588,6 @@ U0 ClawsDraw(CTask *task,CDC *dc)
|
|||||||
}
|
}
|
||||||
|
|
||||||
CDC *main_dc;
|
CDC *main_dc;
|
||||||
|
|
||||||
U0 DrawIt(CTask *task,CDC *dc)
|
U0 DrawIt(CTask *task,CDC *dc)
|
||||||
{
|
{
|
||||||
main_dc->flags|=DCF_NO_TRANSPARENTS;
|
main_dc->flags|=DCF_NO_TRANSPARENTS;
|
||||||
@@ -360,7 +597,7 @@ U0 DrawIt(CTask *task,CDC *dc)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
$SP,"<4>",BI=4$
|
$SP,"<7>",BI=7$
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -379,7 +616,7 @@ $SP,"<4>",BI=4$
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
$SP,"<5>",BI=5$
|
$SP,"<8>",BI=8$
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -423,12 +660,13 @@ I64 update_jiffy_limit;
|
|||||||
|
|
||||||
U0 MPDrawIt(CTask *task,CDC *dc)
|
U0 MPDrawIt(CTask *task,CDC *dc)
|
||||||
{
|
{
|
||||||
I64 j,strip_width,*s2w,x1,y1,z1, xx,yy,
|
I64 j,update=winmgr.updates&65535,strip_width,*s2w,x1,y1,z1,xx,yy,
|
||||||
xh,yh,zh,yh2,xh2,x1h,y1h,x1wa,y1wa,x1wb,y1wb,
|
xh,yh,zh,yh2,xh2,x1h,y1h,x1wa,y1wa,x1wb,y1wb,
|
||||||
x3,y3,z3,dd,dd_old,
|
x3,y3,z3,dd,dd_old,
|
||||||
cx=task->pix_width>>1,
|
cx=task->pix_width>>1,
|
||||||
cy=task->pix_height>>1;
|
cy=task->pix_height>>1;
|
||||||
Panel reg *tempp;
|
Panel reg *tempp;
|
||||||
|
Obj *tempo;
|
||||||
Bool w_on_map,h_on_map;
|
Bool w_on_map,h_on_map;
|
||||||
|
|
||||||
xx=x/(MAP_SCALE*COORDINATE_SCALE);
|
xx=x/(MAP_SCALE*COORDINATE_SCALE);
|
||||||
@@ -515,13 +753,18 @@ U0 MPDrawIt(CTask *task,CDC *dc)
|
|||||||
for (j=0;j<strip_height && cnts.jiffies<update_jiffy_limit;j++) {
|
for (j=0;j<strip_height && cnts.jiffies<update_jiffy_limit;j++) {
|
||||||
x1=x1h>>8; y1=y1h>>8;
|
x1=x1h>>8; y1=y1h>>8;
|
||||||
if (0<=x1<MAP_WIDTH && 0<=y1<MAP_HEIGHT) {
|
if (0<=x1<MAP_WIDTH && 0<=y1<MAP_HEIGHT) {
|
||||||
if ((tempp=panels[y1][x1]) &&
|
if ((tempp=panels[y1][x1]) && tempp->update!=update) {
|
||||||
!LBts(panels_processed_bitmap,tempp->num)) {
|
tempp->update=update;
|
||||||
if (tempp->cnt>8*(1.1-Gs->idle_factor)) {
|
if (tempp->cnt>8*(1.1-Gs->idle_factor)) {
|
||||||
dc->color=tempp->color;
|
dc->color=tempp->color;
|
||||||
tempp->cnt=GrFillPoly3(dc,tempp->n,tempp->pts);
|
tempp->cnt=GrFillPoly3(dc,tempp->num_sides,tempp->pts);
|
||||||
} else
|
} else
|
||||||
tempp->cnt++;
|
tempp->cnt++;
|
||||||
|
tempo=tempp->next_obj;
|
||||||
|
while (tempo!=&tempp->next_obj) {
|
||||||
|
Sprite3(dc,tempo->p.x,tempo->p.y,tempo->p.z,tempo->img);
|
||||||
|
tempo=tempo->next;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
h_on_map=TRUE;
|
h_on_map=TRUE;
|
||||||
} else if (h_on_map)
|
} else if (h_on_map)
|
||||||
@@ -676,10 +919,8 @@ U0 Core0EagleDive()
|
|||||||
CDC *dc=DCAlias(main_dc,Fs);
|
CDC *dc=DCAlias(main_dc,Fs);
|
||||||
I64 i,xx,yy,elev,height,bkcolor,cx=Fs->pix_width>>1,cy=Fs->pix_height>>1;
|
I64 i,xx,yy,elev,height,bkcolor,cx=Fs->pix_width>>1,cy=Fs->pix_height>>1;
|
||||||
F64 min_strip_width,roll,pitch,heading;
|
F64 min_strip_width,roll,pitch,heading;
|
||||||
Fish *tempf;
|
|
||||||
|
|
||||||
update_jiffy_limit=cnts.jiffies+JIFFY_FREQ/40;
|
update_jiffy_limit=cnts.jiffies+JIFFY_FREQ/40;
|
||||||
MemSet(panels_processed_bitmap,0,(num_panels+7)>>3);
|
|
||||||
|
|
||||||
xx=x/(MAP_SCALE*COORDINATE_SCALE);
|
xx=x/(MAP_SCALE*COORDINATE_SCALE);
|
||||||
yy=y/(MAP_SCALE*COORDINATE_SCALE);
|
yy=y/(MAP_SCALE*COORDINATE_SCALE);
|
||||||
@@ -711,15 +952,6 @@ U0 Core0EagleDive()
|
|||||||
mp.update_not_done_flags=1<<mp_cnt-1;
|
mp.update_not_done_flags=1<<mp_cnt-1;
|
||||||
MPDrawIt(Fs,dc);
|
MPDrawIt(Fs,dc);
|
||||||
|
|
||||||
xx=x/COORDINATE_SCALE;
|
|
||||||
yy=y/COORDINATE_SCALE;
|
|
||||||
tempf=fish_root.next;
|
|
||||||
while (tempf!=&fish_root) {
|
|
||||||
if (SqrI64(tempf->p.x-xx)+SqrI64(tempf->p.y-yy)<MAP_SCALE*MAP_SCALE*20*20)
|
|
||||||
Sprite3(dc,tempf->p.x,tempf->p.y,tempf->p.z,$IB,"<1>",BI=1$);
|
|
||||||
tempf=tempf->next;
|
|
||||||
}
|
|
||||||
|
|
||||||
while (mp.update_not_done_flags)
|
while (mp.update_not_done_flags)
|
||||||
Sleep(1);
|
Sleep(1);
|
||||||
|
|
||||||
@@ -770,18 +1002,24 @@ U0 Core0EagleDive()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Fish *FishFind(I64 x1,I64 y1,I64 *_dd)
|
Obj *FishFind(I64 x1,I64 y1,I64 *_dd)
|
||||||
{
|
{
|
||||||
I64 dd,best_dd=MAX_I64;
|
I64 dd,best_dd=MAX_I64;
|
||||||
Fish *res=NULL,*tempf;
|
Obj *res=NULL,*tempo;
|
||||||
tempf=fish_root.next;
|
Panel *tempp=panel_root;
|
||||||
while (tempf!=&fish_root) {
|
while (tempp) {
|
||||||
dd=SqrI64(tempf->p.x-x1)+SqrI64(tempf->p.y-y1);
|
tempo=tempp->next_obj;
|
||||||
|
while (tempo!=&tempp->next_obj) {
|
||||||
|
if (tempo->fish) {
|
||||||
|
dd=SqrI64(tempo->p.x-x1)+SqrI64(tempo->p.y-y1);
|
||||||
if (dd<best_dd) {
|
if (dd<best_dd) {
|
||||||
best_dd=dd;
|
best_dd=dd;
|
||||||
res=tempf;
|
res=tempo;
|
||||||
}
|
}
|
||||||
tempf=tempf->next;
|
}
|
||||||
|
tempo=tempo->next;
|
||||||
|
}
|
||||||
|
tempp=tempp->next;
|
||||||
}
|
}
|
||||||
*_dd=best_dd;
|
*_dd=best_dd;
|
||||||
return res;
|
return res;
|
||||||
@@ -793,7 +1031,7 @@ U0 AnimateTask(I64)
|
|||||||
{//Steadily moves the airplane fwd.
|
{//Steadily moves the airplane fwd.
|
||||||
I64 *s2w,x1,y1,z1,dx,dy,dz,dd;
|
I64 *s2w,x1,y1,z1,dx,dy,dz,dd;
|
||||||
F64 t0=tS,mS,é,d,pitch;
|
F64 t0=tS,mS,é,d,pitch;
|
||||||
Fish *tempf;
|
Obj *tempo;
|
||||||
while (TRUE) {
|
while (TRUE) {
|
||||||
mS=1000*(tS-t0);
|
mS=1000*(tS-t0);
|
||||||
t0=tS;
|
t0=tS;
|
||||||
@@ -823,10 +1061,10 @@ U0 AnimateTask(I64)
|
|||||||
è+=mS/1000.0*Sign(-3*ã/8-è);
|
è+=mS/1000.0*Sign(-3*ã/8-è);
|
||||||
}
|
}
|
||||||
speed=1.0;
|
speed=1.0;
|
||||||
if (tempf=FishFind(x1,y1,&dd)) {
|
if (tempo=FishFind(x1,y1,&dd)) {
|
||||||
d=Sqrt(dd);
|
d=Sqrt(dd);
|
||||||
x1-=tempf->p.x;
|
x1-=tempo->p.x;
|
||||||
y1-=tempf->p.y;
|
y1-=tempo->p.y;
|
||||||
é=ACos((dx*x1+dy*y1)/(d*1<<16));
|
é=ACos((dx*x1+dy*y1)/(d*1<<16));
|
||||||
if (é>0 && d<MAP_SCALE*4)
|
if (é>0 && d<MAP_SCALE*4)
|
||||||
claws_down=Saw(d,MAP_SCALE*4);
|
claws_down=Saw(d,MAP_SCALE*4);
|
||||||
@@ -836,8 +1074,8 @@ U0 AnimateTask(I64)
|
|||||||
game_score++;
|
game_score++;
|
||||||
if (game_score>best_score)
|
if (game_score>best_score)
|
||||||
best_score=game_score;
|
best_score=game_score;
|
||||||
QueRem(tempf);
|
QueRem(tempo);
|
||||||
Free(tempf);
|
Free(tempo);
|
||||||
music.mute=TRUE;
|
music.mute=TRUE;
|
||||||
Snd(1000); Sleep(200); Snd(0);
|
Snd(1000); Sleep(200); Snd(0);
|
||||||
music.mute=FALSE;
|
music.mute=FALSE;
|
||||||
@@ -894,7 +1132,6 @@ U0 Init()
|
|||||||
game_score=0;
|
game_score=0;
|
||||||
|
|
||||||
MemSet(&mp,0,sizeof(MPCtrl));
|
MemSet(&mp,0,sizeof(MPCtrl));
|
||||||
QueInit(&fish_root);
|
|
||||||
InitMap;
|
InitMap;
|
||||||
DCDepthBufAlloc(main_dc);
|
DCDepthBufAlloc(main_dc);
|
||||||
|
|
||||||
@@ -921,24 +1158,15 @@ U0 Init()
|
|||||||
|
|
||||||
U0 CleanUp()
|
U0 CleanUp()
|
||||||
{
|
{
|
||||||
Fish *tempf=fish_root.next,*tempf1;
|
|
||||||
Panel *tempp=panel_root,*tempp1;
|
Panel *tempp=panel_root,*tempp1;
|
||||||
|
|
||||||
MPEnd;
|
MPEnd;
|
||||||
|
|
||||||
while (tempf!=&fish_root) {
|
|
||||||
tempf1=tempf->next;
|
|
||||||
QueRem(tempf);
|
|
||||||
Free(tempf);
|
|
||||||
tempf=tempf1;
|
|
||||||
}
|
|
||||||
while (tempp) {
|
while (tempp) {
|
||||||
tempp1=tempp->next;
|
tempp1=tempp->next;
|
||||||
|
QueDel(&tempp->next_obj);
|
||||||
Free(tempp->pts);
|
Free(tempp->pts);
|
||||||
Free(tempp);
|
Free(tempp);
|
||||||
tempp=tempp1;
|
tempp=tempp1;
|
||||||
}
|
}
|
||||||
Free(panels_processed_bitmap);
|
|
||||||
DCDel(main_dc);
|
DCDel(main_dc);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1025,4 +1253,17 @@ EagleDive;
|
|||||||
| |||||||