Jump to content
IGNORED

CSGD Graphics Format


pixelpedant

Recommended Posts

Anyone have information or documentation on the data structure of the CSGD clipart format?  Doesn't seem like anything particularly obvious, looking at the binary data.  Presumably something more similar to the TI Artist Instance format than the TI Artist bitmap format (which is just VDP pattern and, optionally, colour data dumps).  Files typically use the NAME/GR naming structure.  But does anyone have documentation on the data structure?

Link to comment
Share on other sites

5 hours ago, pixelpedant said:

Anyone have information or documentation on the data structure of the CSGD clipart format?  Doesn't seem like anything particularly obvious, looking at the binary data.  Presumably something more similar to the TI Artist Instance format than the TI Artist bitmap format (which is just VDP pattern and, optionally, colour data dumps).  Files typically use the NAME/GR naming structure.  But does anyone have documentation on the data structure?

I have some old source code for MS-DOS viewers and converters when I was playing around with a simple C compiler for MS-DOS.  I am not sure where I read about the CSGD format decoding, though.  I think I was working on getting it to work from MS-DOS and then convert it to a Geneve executable, but I don't find my Geneve code.


/* SHOWGR.C - A 'C' PROGRAM TO DISPLAY '_GR' FILES FROM THE MDOS PROMPT */
/* JEFFREY A. KUHLMANN 27FEB94 */


#include "graphics.h"
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#include "io.h"
#include "conio.h"

char infn[81];  /* input file name */
char str1[81];
char buf[10000];
FILE inf;
int arry[20];   /* utility array */
char rows[81];  /* row string */
char cols[81];  /* columns string */
int ctr,end,delim,col,row;
int rctr,cctr,cptr;
int chardat[8],chrptr;
char hexdat[81];
int hex[4];
int blank[4],where,pval,ccc;
int mptr,fd,gm;

main(argc,argv)
int argc;
char **argv;
{
gm=4;
if (argc<2)
{
setvmode(2);
puts("TI-CSGD PICTURE VIEWER FOR MDOS");
puts("Press any key when done");
puts("viewing picture...");
puts("TI-CSGD file name? (w/o _GR)");
gets(infn);
}
else strcpy(infn,argv[1]);

strcat(infn,".GR");
if(argc>2)gm=atoi(argv[2]);
setvmode(gm);
fd=open(infn,O_BINARY);
/* where=bread(infn,0,1,buf); */
mptr=157;

if (!fd) {printf("Can't open %s",infn); setvmode(2);exit(0);}
read(fd,buf,382);
 for(rctr=0;rctr<5;rctr++)
  for(cctr=0;cctr<5;cctr++)
   for(ccc=0;ccc<8;ccc++)
  { pval=buf[mptr++];
    shwpic();
 }
while(!kbhit());    /* wait for keypress */
setvmode(2);
exit(0);
}

shwpic()
{
int lctr,ltemp,ltemp1,one;
one=1;
for(lctr=7;lctr>=0;lctr=lctr-1)
{
if(lctr)ltemp1=one<<lctr;   else ltemp1=1;
pen_color(15);

if(pval>=ltemp1) setpixel(cctr*8+ccc+1,rctr*8+(7-lctr)+1);
pval=pval%ltemp1;
}
return;
}

</code>

 

<code>

/* GR2TIA.C - A 'C' PROGRAM TO CONVERT '_GR' FILES TO TI-Artist FROM THE MDOS PROMPT */
/* JEFFREY A. KUHLMANN 27FEB94 */

#include "dos.h"
#include "graphics.h"
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#include "io.h"
#include "conio.h"

char infn[81];  /* input file name */
char infn1[81];
char str1[81];
char buf[10000];
FILE inf,outf;

int arry[20];   /* utility array */
char rows[81];  /* row string */
char cols[81];  /* columns string */
int ctr,end,delim,col,row;
int rctr,cctr,cptr;
int chardat[8],chrptr;
char hexdat[81];
int hex[4];
int blank[4],where,pval,ccc;
int mptr,fd,gm,fd1;

main(argc,argv)
int argc;
char **argv;
{
gm=6;
if (argc<2)
{
setvmode(2);
puts("TI-CSGD PICTURE VIEWER FOR MDOS");
puts("Press any key when done");
puts("viewing picture...");
puts("TI-CSGD file name? (w/o _GR)");
gets(infn); strcpy(infn1,infn);
}
else {strcpy(infn,argv[1]); strcpy(infn1,infn);}

strcat(infn,".GR");
if(argc>2)gm=atoi(argv[2]);
setvmode(gm);
fd=open(infn,O_BINARY);
/* where=bread(infn,0,1,buf); */
mptr=157;

if (!fd) {printf("Can't open %s",infn); setvmode(2);exit(0);}
read(fd,buf,382);
 for(rctr=0;rctr<5;rctr++)
  for(cctr=0;cctr<5;cctr++)
   for(ccc=0;ccc<8;ccc++)
  { pval=buf[mptr++];
    shwpic();
 }
 sati();             /* save as TI-Artist Instance */
/* poke (0xb800,0,255);
for (pval=0;pval<81;pval++)poke(0xb800,pval,255);
*/
/* while(!kbhit()); */   /* wait for keypress */
setvmode(2);
exit(0);
}

shwpic()
{
int lctr,ltemp,ltemp1,one;
one=1;
for(lctr=7;lctr>=0;lctr=lctr-1)
{
if(lctr)ltemp1=one<<lctr;   else ltemp1=1;
pen_color(15);

if(pval>=ltemp1) setpixel(cctr*8+ccc,rctr*8+(7-lctr));
pval=pval%ltemp1;
}
return;
}

sati()
{
int rctr,cctr,ctr,res;
strcat(infn1,".I");

fd1=fopen(infn1,"w");
fprintf(fd1,"5,5\n");
for(rctr=0;rctr<=4;rctr++)
 for(cctr=0;cctr<=4;cctr++)
  {
  for(ctr=0;ctr<=7;ctr++)
   {res=peekb(0xb800,(rctr*8+ctr)*40+cctr);
/*    res=255; */
    if( ((ctr)) & 1)
      res=peekb(0xba00,(rctr*8+ctr-1)*40+cctr);
    fprintf(fd1,"%d",res); if(ctr<7)fprintf(fd1,",");}
  fprintf(fd1,"\n");
 }
fclose(fd1);
/*
pokeb(0xb800,0,255);
pokeb(0xb800,5,255);
pokeb(0xb800,80*20,255);
pokeb(0xb800,80*20+5,255);  */
return;
}

  • Like 1
Link to comment
Share on other sites

I think the format for the graphics may have actually been in one of the three CSGD manuals. I went looking for mine tonight but I only found my manual set for the Printer's Apprentice and all of my manuals for Asgard's PagePro (There are about 20-30 of the PagePro manuals).

  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...