/*{{{ about this code*/ /* This is the shading function of the EMC's in C it is really so I can get a handle on how much work is needed in the back-end for end of frame and end of texture The shading function is pixel_colour = (fog_colour * fog_fade) + ((1 - fog_fade) * ((instrinsic_colour * diffuse_shading) * texture_colour) + (specular_colour * light_colour)); */ /*}}} */ #include #include #include "igctypes.h" #include "pxlmem.h" #include "igcops.h" /*{{{ texture memory !*/ int *texture; /*}}} */ /*{{{ void test_access ( pixel_memory *t )*/ void test_access ( pixel_memory *t ) { printf ("Starting - t empty\n" ); write_pixmem_bit ( t, 0, 1 ); printf ( "bit 0 now %d should be 1\n", read_pixmem_bit ( t, 0 )); write_pixmem_bit ( t, 0, 0 ); printf ( "bit 0 now %d should be 0\n", read_pixmem_bit ( t, 0 )); write_pixmem_bit ( t, 10, 1 ); printf ( "bit 10 now %d should be 1\n", read_pixmem_bit ( t, 10 )); printf ( "and bit 0 now %d\n", read_pixmem_bit ( t, 0 )); printf ( "about to write 7 sig bits of -11 into bit 29\n" ); write_pixmem_word ( t, 29, 7, -11 ); printf ( "and read back %d\n", read_pixmem_word ( t, 29, 7, 1 )); printf ( "about to write 13 sig bits of -196 into bit 79\n" ); write_pixmem_word ( t, 79, 13, -196 ); printf ( "and read back %d\n", read_pixmem_word ( t, 79, 13, 1 )); } /*}}} */ /*{{{ pixel_tile *create_pixmem()*/ pixel_tile *create_pixmem() { int i; pixel_tile *tile; tile=(pixel_tile *) malloc ( sizeof ( pixel_tile )); printf ("Creating pixel memory\n" ); for (i=0; i<64*128; i++ ) { pixel_memory *pixel; pixel=(pixel_memory *) malloc ( sizeof ( pixel_memory )); if (pixel) tile->array[i]=pixel; else { printf ("NULL Pixel in malloc at i=%d\n", i ); exit (666); } } printf ("Created pixel memory\n" ); return tile; } /*}}} */ /*{{{ int *create_texture()*/ int *create_texture() { int *tex; tex=(int *) malloc ( 512 * 512 * sizeof (int)); if (tex) printf ("Created texture memory\n" ); else { printf ("Failed to malloc texture RAM\n"); exit (666); } return tex; } /*}}} */ int main ( int argc, char **argv ) { int i, j, k, p=0; printf ("Off we go\n" ); pixtile=create_pixmem(); texture=create_texture(); printf ("Now the big one - clearing 64x128x208 a BIT AT A TIME!\n"); for (i=0; i<128; i++ ) { for (j=0; j<64; j++ ) { for (k=0; k<208; k++ ) { write_pixmem_bit ( t->array[p], k, 0 ); } p++; } } printf ("DONE !!!\n"); }