Files
TeslaRel410/sda4/DPL3/VRENDER/PXPL5SUP/IGCOPS.C
T
CydandClaude Fable 5 db7745fcd0 sda4: commit the Glaze developer hard-drive dump
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>
2026-07-04 19:41:15 -05:00

577 lines
12 KiB
C++

/* basic memory operations */
#include "igctypes.h"
#include "emcarray.h"
--{{{ pixel memory access macros
#define read_pixmem_bit(pixel,bit) (1 & (pixel->memory[((bit)>>3)] >> ((bit) & 7)))
#define write_pixmem_bit(pixel,bit,val) \
do { \
if ((val)) \
pixel->memory[((bit)>>3)]|=(1<<((bit)&7)); \
else \
pixel->memory[((bit)>>3)]&=~(1<<((bit)&7)); \
} while (0)
--}}}
--{{{ int read_pixmem_word ( pixel_memory *pixel, int bit0, int bits, int sextend )
int read_pixmem_word ( pixel_memory *pixel, int bit0, int bits, int sextend )
{
int res=0;
register int bitval, bit, shift=0;
for ( bit=0; bit<bits; bit++ ) {
bitval=read_pixmem_bit(pixel, bit0+bit );
res|=bitval<<shift;
shift++;
}
if (sextend && bitval) {
res|=((-1) ^ (((1<<shift)) - 1));
}
return res;
}
--}}}
--{{{ void write_pixmem_word ( pixel_memory *pixel, int bit0, int bits, int val )
void write_pixmem_word ( pixel_memory *pixel, int bit0, int bits, int val )
{
register int bit, shift=0;
for ( bit=0; bit<bits; bit++ ) {
write_pixmem_bit ( pixel, bit0+bit, val&1 );
val>>=1;
}
}
--}}}
--{{{ int eval_ltree ( pixel_memory *pixel, int x, int y, float A, float B, float C )
int eval_ltree ( pixel_memory *pixel, int x, int y, float A, float B, float C )
{
float eval, fx, fy;
fx=(float) x;
fy=(float) y;
eval=(fx*A) + (fy*B) + C;
return (int) eval;
}
--}}}
--{{{ int eval_qtree ( pixel_memory *pixel,
int eval_qtree ( pixel_memory *pixel,
int x, int y,
float A, float B, float C, float D, float E, float F )
{
float eval, fx, fy;
fx=(float) x;
fy=(float) y;
eval=(fx*A) + (fy*B) + C + (fx*fx*D) + (fy*fy*E) + (fx*fy*F);
return (int) eval;
}
--}}}
/* IGC command set ! */
--{{{ INSTRUCTIONS TO MODIFY THE ENABLE REGISTER
/*
how to make this easier? i need to pass a totally general function
to each pixel in the tile, so I need
*/
typedef pixel_function (
--{{{ void FBITS (int n )
void FBITS (int n )
{
fracBits = n;
}
--}}}
--{{{ void CLRENABS ()
void CLRENABS ()
{
int x, y;
for (x=0; x<tile_x; x++ )
for (y=0; y<tile_y; y++ ) {
pixtile->array[x+(y<<tile_x_bits))]->enable=0;
}
}
}
--}}}
--{{{ void SETENABS ()
void SETENABS ()
{
{
int x, y;
for (x=0; x<tile_x; x++ )
for (y=0; y<tile_y; y++ ) {
pixtile->array[x+(y<<tile_x_bits))]->enable=1;
}
}
}
}
--}}}
--{{{ void ENABINV ()
void ENABINV ()
{
{
int x, y;
for (x=0; x<tile_x; x++ )
for (y=0; y<tile_y; y++ ) {
pixtile->array[x+(y<<tile_x_bits))]->enable=^1;
}
}
}
}
--}}}
--{{{ void MEMintoENAB ()
void MEMintoENAB ()
{
}
--}}}
--{{{ void TREEeqZERO ()
void TREEeqZERO ()
{
}
--}}}
--{{{ void TREEqeZERO ()
void TREEqeZERO ()
{
}
--}}}
--{{{ void TREEltZERO ()
void TREEltZERO ()
{
}
--}}}
--{{{ void MESH ( int len )
void MESH ( int len )
{
}
--}}}
--{{{ void GRID ( int len )
void GRID ( int len )
{
}
--}}}
--{{{ void MEMeqZERO ( int src, int slen )
void MEMeqZERO ( int src, int slen )
{
}
--}}}
--{{{ void MEMeqONES ( int src, int slen )
void MEMeqONES ( int src, int slen )
{
}
--}}}
--{{{ void MEMneZERO ( int src, int slen )
void MEMneZERO ( int src, int slen )
{
}
--}}}
--{{{ void MEMeqSCA ( int src, int slen )
void MEMeqSCA ( int src, int slen )
{
}
--}}}
--{{{ void MEMgeSCA ( int src, int slen )
void MEMgeSCA ( int src, int slen )
{
}
--}}}
--{{{ void MEMgtSCA ( int src, int slen )
void MEMgtSCA ( int src, int slen )
{
}
--}}}
--{{{ void MEMeqMEM ( int lsrc, int src, int slen )
void MEMeqMEM ( int lsrc, int src, int slen )
{
}
--}}}
--{{{ void MEMneMEM ( int lsrc, int src, int slen )
void MEMneMEM ( int lsrc, int src, int slen )
{
}
--}}}
--{{{ void MEMgeMEM ( int lsrc, int src, int slen )
void MEMgeMEM ( int lsrc, int src, int slen )
{
}
--}}}
--{{{ void MEMgtMEM ( int lsrc, int src, int slen )
void MEMgtMEM ( int lsrc, int src, int slen )
{
}
--}}}
--{{{ void MEM2geMEM2 ( int lsrc, int src, int slen )
void MEM2geMEM2 ( int lsrc, int src, int slen )
{
}
--}}}
--{{{ void MEM2gtMEM2 ( int lsrc, int src, int slen )
void MEM2gtMEM2 ( int lsrc, int src, int slen )
{
}
--}}}
--{{{ void MEMeqTREE ( int src, int len )
void MEMeqTREE ( int src, int len )
{
}
--}}}
--{{{ void MEMneTREE ( int src, int len )
void MEMneTREE ( int src, int len )
{
}
--}}}
--{{{ void MEMleTREE ( int src, int len )
void MEMleTREE ( int src, int len )
{
}
--}}}
--{{{ void MEMltTREE ( int src, int len )
void MEMltTREE ( int src, int len )
{
}
--}}}
--{{{ void MEMgeTREE ( int src, int len )
void MEMgeTREE ( int src, int len )
{
}
--}}}
--{{{ void MEMgtTREE ( int src, int len )
void MEMgtTREE ( int src, int len )
{
}
--}}}
--{{{ void ENABandeqMEM ( int src )
void ENABandeqMEM ( int src )
{
}
--}}}
--{{{ void ENABandeqMEMBAR ( int src )
void ENABandeqMEMBAR ( int src )
{
}
--}}}
--{{{ void ENABoreqMEM ( int src )
void ENABoreqMEM ( int src )
{
}
--}}}
--{{{ void ENABxoreqMEM ( int src )
void ENABxoreqMEM ( int src )
{
}
--}}}
--{{{ void CRYintoENAB ()
void CRYintoENAB ()
{
}
--}}}
--{{{ void ENABoreqCRY ()
void ENABoreqCRY ()
{
}
--}}}
--}}}
--{{{ INSTRUCTIONS TO STORE THE ENABLE REGISTER
--{{{ void ENABintoMEM ( int dst )
void ENABintoMEM ( int dst )
{
}
--}}}
--{{{ void MEMoreqENAB ( int dst )
void MEMoreqENAB ( int dst )
{
}
--}}}
--{{{ void MEMandeqENAB ( int dst )
void MEMandeqENAB ( int dst )
{
}
--}}}
--{{{ void ENABintoCRY ()
void ENABintoCRY ()
{
}
--}}}
--}}}
--{{{ ARITHMETIC AND LOGICAL INSTRUCTIONS
/* all memory writes are contioned by the enable register */
--{{{ void CLEAR ( int dst, int dlen)
void CLEAR ( int dst, int dlen)
{
}
--}}}
--{{{ void SET ( int dst, int dlen)
void SET ( int dst, int dlen)
{
}
--}}}
--{{{ void CLRCRY ()
void CLRCRY ()
{
}
--}}}
--{{{ void TREEintoMEM ( int dst, int len )
void TREEintoMEM ( int dst, int len )
{
}
--}}}
--{{{ void TREEBARintoMEM ( int dst, int len )
void TREEBARintoMEM ( int dst, int len )
{
}
--}}}
--{{{ void TREEclmpintoMEM ( int dst, int len )
void TREEclmpintoMEM ( int dst, int len )
{
}
--}}}
--{{{ void SCAintoMEM ( int dst, int len )
void SCAintoMEM ( int dst, int len )
{
}
--}}}
--{{{ void CPY ( int dst, int src, int len )
void CPY ( int dst, int src, int len )
{
}
--}}}
--{{{ void SWAP ( int dst, int src, int len )
void SWAP ( int dst, int src, int len )
{
}
--}}}
--{{{ void INC ( int dst, int src, int len )
void INC ( int dst, int src, int len )
{
}
--}}}
--{{{ void DEC ( int dst, int src, int len )
void DEC ( int dst, int src, int len )
{
}
--}}}
--{{{ void SHIFTL ( int dst, int src, int len, int n )
void SHIFTL ( int dst, int src, int len, int n )
{
}
--}}}
--{{{ void SHIFTR ( int dst, int src, int dlen, int slen, int n )
void SHIFTR ( int dst, int src, int dlen, int slen, int n )
{
}
--}}}
--{{{ void INVERT ( int dst, int src, int dlen )
void INVERT ( int dst, int src, int dlen )
{
}
--}}}
--{{{ void NEGATE ( int dst, int src, int dlen )
void NEGATE ( int dst, int src, int dlen )
{
}
--}}}
--{{{ void MEMpluseqSCA ( int dst, int src, int dlen )
void MEMpluseqSCA ( int dst, int src, int dlen )
{
}
--}}}
--{{{ void MEMplusMEM ( int dst, int lsrc, int src, int dlen, int slen )
void MEMplusMEM ( int dst, int lsrc, int src, int dlen, int slen )
{
}
--}}}
--{{{ void MEMpluseqMEM ( int dst, int src, int dlen, int slen )
void MEMpluseqMEM ( int dst, int src, int dlen, int slen )
{
}
--}}}
--{{{ void MEMclmppluseqMEM ( int dst, int src, int dlen, int tmp )
void MEMclmppluseqMEM ( int dst, int src, int dlen, int tmp )
{
}
--}}}
--{{{ void MEMminusMEM ( int dst, int lsrc, int src, int dlen, int slen )
void MEMminusMEM ( int dst, int lsrc, int src, int dlen, int slen )
{
}
--}}}
--{{{ void MEMminuseqMEM ( int dst, int src, int dlen, int slen )
void MEMminuseqMEM ( int dst, int src, int dlen, int slen )
{
}
--}}}
--{{{ void MEMplusMEM2 ( int dst, int lsrc, int src, int dlen, int slen )
void MEMplusMEM2 ( int dst, int lsrc, int src, int dlen, int slen )
{
}
--}}}
--{{{ void MEMpluseqMEM2 ( int dst, int src, int dlen, int slen )
void MEMpluseqMEM2 ( int dst, int src, int dlen, int slen )
{
}
--}}}
--{{{ void MEM2clmppluseqMEM2 ( int dst, int src, int dlen, int tmp )
void MEM2clmppluseqMEM2 ( int dst, int src, int dlen, int tmp )
{
}
--}}}
--{{{ void MEMminusMEM2 ( int dst, int lsrc, int src, int dlen, int slen )
void MEMminusMEM2 ( int dst, int lsrc, int src, int dlen, int slen )
{
}
--}}}
--{{{ void MEMminuseqMEM2 ( int dst, int src, int dlen, int slen )
void MEMminuseqMEM2 ( int dst, int src, int dlen, int slen )
{
}
--}}}
--{{{ void MEMandMEM ( int dst, int lsrc, int src, int dlen )
void MEMandMEM ( int dst, int lsrc, int src, int dlen )
{
}
--}}}
--{{{ void MEMandeqMEM ( int dst, int src, int dlen )
void MEMandeqMEM ( int dst, int src, int dlen )
{
}
--}}}
--{{{ void MEMorMEM ( int dst, int lsrc, int src, int dlen )
void MEMorMEM ( int dst, int lsrc, int src, int dlen )
{
}
--}}}
--{{{ void MEMoreqMEM ( int dst, int src, int dlen )
void MEMoreqMEM ( int dst, int src, int dlen )
{
}
--}}}
--{{{ void MEMxorMEM ( int dst, int lsrc, int src, int dlen )
void MEMxorMEM ( int dst, int lsrc, int src, int dlen )
{
}
--}}}
--{{{ void MEMxoreqMEM ( int dst, int src, int dlen )
void MEMxoreqMEM ( int dst, int src, int dlen )
{
}
--}}}
--{{{ void MEMpluseqTREE ( int dst, int src, int len )
void MEMpluseqTREE ( int dst, int src, int len )
{
}
--}}}
--{{{ void TREEminusMEM ( int dst, int src, int len )
void TREEminusMEM ( int dst, int src, int len )
{
}
--}}}
--{{{ void MEMandTREE ( int dst, int src, int len )
void MEMandTREE ( int dst, int src, int len )
{
}
--}}}
--{{{ void MEMorTREE ( int dst, int src, int len )
void MEMorTREE ( int dst, int src, int len )
{
}
--}}}
--{{{ void MEMxorTREE ( int dst, int src, int len )
void MEMxorTREE ( int dst, int src, int len )
{
}
--}}}
--{{{ void CRYintoMEM ( int dst )
void CRYintoMEM ( int dst )
{
}
--}}}
--}}}
--{{{ SPECIAL INSTRUCTIONS
--{{{ void FTECT ( int dst, int len )
void FTECT ()
{
}
--}}}
--{{{ void FEDGE ()
void FEDGE ()
{
}
--}}}
--{{{ void SEDGE ( int src )
void SEDGE ( int src )
{
}
--}}}
--{{{ void FEDGEBAR ()
void FEDGEBAR ()
{
}
--}}}
--{{{ void SEDGEBAR ( int src )
void SEDGEBAR ( int src )
{
}
--}}}
--{{{ void EDGE2 ()
void EDGE2 ()
{
}
--}}}
--{{{ void STRIPEDGE ( int src, int dst )
void STRIPEDGE ( int src, int dst )
{
}
--}}}
--{{{ void MEMEDGE ( int dst )
void MEMEDGE ( int dst )
{
}
--}}}
--{{{ void FCMEMA ( int src, int len )
void FCMEMA ( int src, int len )
{
}
--}}}
--{{{ void SCMEMA ( int src, int len, int aux )
void SCMEMA ( int src, int len, int aux )
{
}
--}}}
--{{{ void OVFIX ( int dst, int dlen, int tmp )
void OVFIX ( int dst, int dlen, int tmp )
{
}
--}}}
--{{{ void TBLENTRY ( int dst, int src, int dlen, int slen )
void TBLENTRY ( int dst, int src, int dlen, int slen )
{
}
--}}}
--{{{ void SPLAT ( int dst, int len, int tmp )
void SPLAT ( int dst, int len, int tmp )
{
}
--}}}
--}}}
--{{{ INITIALIZATION INSTRUCTIONS - not impl
--}}}