Un-ignored: the dev drive is the ground truth the restoration and emulator work constantly reference (DPL3/LIBDPL + VRENDER i860 renderer source, BT/RP live+dev game trees, VGL_LABS pod boot, scene/audio content). Kept in-repo for the pod-owner community. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
87 lines
1.9 KiB
C++
87 lines
1.9 KiB
C++
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <channel.h>
|
|
#include <process.h>
|
|
|
|
/*{{{ defines*/
|
|
#define out_link(i) (Channel *) (0x80000000 | (i<<2))
|
|
#define pixel(r,g,b) ((b&0xff)<<8)|((g&0xff)<<16)|((r&0xff)<<24)
|
|
/*}}} */
|
|
|
|
/*{{{ void boot_grafix ( char *s, int linkno )*/
|
|
void boot_grafix ( char *s, int linkno, int magic )
|
|
{
|
|
FILE *fp;
|
|
char *blk=malloc(256);
|
|
int c, i=0;
|
|
Channel *out=out_link(linkno);
|
|
|
|
if (fp=fopen(s, "rb")) {
|
|
for (c=fgetc(fp); c!=EOF; c=fgetc(fp)) {
|
|
blk[i++]=c;
|
|
if (i==256) {
|
|
ChanOut ( out, blk, 256 );
|
|
i=0;
|
|
}
|
|
}
|
|
if (i!=0) {
|
|
ChanOut ( out, blk, i );
|
|
}
|
|
ChanOut ( out, (char *) &magic, 4 );
|
|
fclose ( fp);
|
|
}
|
|
else
|
|
printf("Couldnt open file %s\n", s);
|
|
free(blk);
|
|
}
|
|
/*}}} */
|
|
/*{{{ void pump_raster ( int link_no, int *raster, int y_coord, int x0, int pixels )*/
|
|
void pump_raster ( int link_no, int *raster, int y_coord, int x0, int pixels )
|
|
{
|
|
Channel *out=out_link(link_no);
|
|
int packet[3];
|
|
|
|
packet[0]=x0;
|
|
packet[1]=y_coord;
|
|
packet[2]=pixels;
|
|
|
|
ChanOut ( out, (char *)&packet, 12 );
|
|
ChanOut ( out, (char *) raster, pixels<<2 );
|
|
|
|
}
|
|
/*}}} */
|
|
/*{{{ void work( link_no)*/
|
|
void work( int link_no)
|
|
{
|
|
unsigned int *raster=(unsigned int *) malloc(768*sizeof(int));
|
|
int i, j;
|
|
|
|
/* compute red = 0..255 in x */
|
|
/* compute green = 255..0 in x */
|
|
/* compute blue = 255..0 in y */
|
|
|
|
for (j=0; j<480; j++ ) {
|
|
for (i=0; i<768; i++) {
|
|
int r, g, b;
|
|
|
|
r=(i*255)/768;
|
|
g=((767-i)*255)/768;
|
|
b=((479-j)*255)/480;
|
|
|
|
raster [i]=pixel(r,g,b);
|
|
}
|
|
pump_raster ( link_no, (int *) raster, j, 0, 768 );
|
|
}
|
|
}
|
|
/*}}} */
|
|
|
|
/*{{{ int main (int argc, char **argv )*/
|
|
int main (int argc, char **argv )
|
|
{
|
|
boot_grafix("..\\HSP\\HSP32.btl", 1, 0x6000481 );
|
|
|
|
work(1);
|
|
}
|
|
/*}}} */
|
|
|