# Configuration file for 3Dfx Interactive's Voodoo Graphics # # Below each [Voodoo2] section is a description of environment variables passed # to the Voodoo Graphics initialization code. Environment variables are # specified in the format "ENV_NAME=ENV_VALUE", where ENV_NAME is the # name of the environment variable, and ENV_VALUE is the value to be # associated with ENV_NAME. An example [Voodoo2] section is as follows: # # [Voodoo2] # SST_GAMMA=1.20 # SST_MEMFIFO=1 # # Below each [DAC] section is a description of how to program a particular # dac. The manufacturer's name is specified in the format "manufacturer=MVAL", # where MVAL is the name of the manufacturer. The part number is specified # in the format "device=DVAL", where DVAL is the device number. Video # resolutions and refresh rates are specified in the format # "sstVideo=WIDTH;HEIGHT;REFRESH_RATE;CMD_SEQUENCE", where WIDTH is the # video display width (in pixels), HEIGHT is the video display height (in # scanlines), REFRESH_RATE is the video refresh rate, and CMD_SEQUENCE # is a sequence of writes and reads to properly setup the dac for a # particular video resolution/refresh rate. A command sequence, CMD_SEQUENCE, # is of the form CMD();CMD();CMD(), etc. A "setVideo" declaration can have # up to 256 dac read/write commands in its CMD_SEQUENCE field. The CMD # fields which compose a CMD_SEQUENCE are as follows: # dacRd(ADDR) - Read an 8-bit value from dac address ADDR # dacRd(ADDR, DATA) - Read an 8-bit value from dac address ADDR and # compare the results with the expected DATA # dacWr(ADDR, DATA) - Write the 8-bit value DATA to the dac at # address ADDR # dacRdWr(ADDR, mask, DATA) - Read an 8-bit value from dac address ADDR, # mask (i.e. bitwise AND) the returned value # with MASK, bitwise OR with DATA, and store # the result back to the dac at address ADDR # Memory clocks are specified in the format "setMemClk=FREQ;CMD_SEQUENCE", # where FREQ is the desired clock frequency and CMD_SEQUENCE is the sequence # of dac reads and writes to set the specified frequency. # A particular dac is detected/sensed by "detect=CMD_SEQUENCE", where # CMD_SEQUENCE is the command sequence of dac reads and writes required to # properly detect the existence of a particular dac. An example [DAC] # section is as follows: # # [DAC] # manufacturer=DAC_COMPANY # device=DAC_DEVICE # detect=dacWr(0x3,0x3);dacWr(0x2,0xff);dacRd(0x3);dacRd(0x2,0xfe) # setVideo=640;480;60;dacWr(0x6,0xfe);dacWr(0x3,0x1);dacRdWr(0x0,0x1,0x2) # setVideo=640;480;75;dacWr(0x6,0xca);dacWr(0x3,0xee) # setMemClk=16;dacWr(0x6,0xfe);dacWr(0xbb,0xaa);dacRdWr(0xc,0x00,0x1) [Voodoo2] [DAC] manufacturer=ICS device=ICS5342 [DAC] manufacturer=TI device=TVP3409 detect=dacWr(0x0,0x0);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacWr(0x0,0x0);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacWr(0x2,0x3);dacWr(0x0,0x2);dacRd(0x2,0x97);dacWr(0x0,0x3);dacRd(0x2,0x9);dacWr(0x0,0x1);dacRdWr(0x2,0xfe,0x0) setMemClk=16;dacWr(0x0,0x0);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacRdPush(0x2);dacWr(0x0,0x0);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacWrPop(0x2,0xf0,0x3);dacWr(0x0,0x2);dacRd(0x2,0x97);dacWr(0x0,0x3);dacRd(0x2,0x9);dacWr(0x0,0x6c);dacWr(0x2,0x7b);dacWr(0x0,0x6d);dacWr(0x2,0xcc);dacWr(0x0,0x6e);dacWr(0x2,0xa6);dacWr(0x0,0x6);dacRdWr(0x2,0xff,0x0b);dacWr(0x0,0x1);dacRdWr(0x2,0xfe,0x0) setMemClk=50;dacWr(0x0,0x0);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacRdPush(0x2);dacWr(0x0,0x0);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacWrPop(0x2,0xf0,0x3);dacWr(0x0,0x2);dacRd(0x2,0x97);dacWr(0x0,0x3);dacRd(0x2,0x9);dacWr(0x0,0x6c);dacWr(0x2,0x28);dacWr(0x0,0x6d);dacWr(0x2,0x81);dacWr(0x0,0x6e);dacWr(0x2,0x84);dacWr(0x0,0x6);dacRdWr(0x2,0xff,0x0b);dacWr(0x0,0x1);dacRdWr(0x2,0xfe,0x0) setVideoMode=1;dacWr(0x0,0x0);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacRdPush(0x2);dacWr(0x0,0x0);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacWrPop(0x2,0xf0,0x3);dacWr(0x0,0x2);dacRd(0x2,0x97);dacWr(0x0,0x3);dacRd(0x2,0x9);dacWr(0x0,0x1);dacRdWr(0x2,0x0f,0x31);dacWr(0x0,0x1);dacRdWr(0x2,0xfe,0x0) setVideoMode=0;dacWr(0x0,0x0);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacRdPush(0x2);dacWr(0x0,0x0);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacWrPop(0x2,0xf0,0x3);dacWr(0x0,0x2);dacRd(0x2,0x97);dacWr(0x0,0x3);dacRd(0x2,0x9);dacWr(0x0,0x1);dacRdWr(0x2,0x0f,0x51);dacWr(0x0,0x1);dacRdWr(0x2,0xfe,0x0) setVideo=640;480;60;0;dacWr(0x0,0x0);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacRdPush(0x2);dacWr(0x0,0x0);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacWrPop(0x2,0xf0,0x3);dacWr(0x0,0x2);dacRd(0x2,0x97);dacWr(0x0,0x3);dacRd(0x2,0x9);dacWr(0x0,0x4c);dacWr(0x2,0x7d);dacWr(0x0,0x4d);dacWr(0x2,0x87);dacWr(0x0,0x4e);dacWr(0x2,0x84);dacWr(0x0,0x6);dacRdWr(0x2,0xff,0xb0);dacWr(0x0,0x6);dacWr(0x0,0x1);dacRdWr(0x2,0xfe,0x0) setVideo=800;600;60;0;dacWr(0x0,0x0);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacRdPush(0x2);dacWr(0x0,0x0);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacWrPop(0x2,0xf0,0x3);dacWr(0x0,0x2);dacRd(0x2,0x97);dacWr(0x0,0x3);dacRd(0x2,0x9);dacWr(0x0,0x4c);dacWr(0x2,0x79);dacWr(0x0,0x4d);dacWr(0x2,0x49);dacWr(0x0,0x4e);dacWr(0x2,0xa8);dacWr(0x0,0x6);dacRdWr(0x2,0xff,0xb0);dacWr(0x0,0x6);dacWr(0x0,0x1);dacRdWr(0x2,0xfe,0x0) [DAC] manufacturer=ATT device=ATT20C409 detect=dacWr(0x0,0x0);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacWr(0x0,0x0);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacWr(0x2,0x3);dacWr(0x0,0x2);dacRd(0x2,0x84);dacWr(0x0,0x3);dacRd(0x2,0x9);dacWr(0x0,0x1);dacRdWr(0x2,0xfe,0x0) setMemClk=16;dacWr(0x0,0x0);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacRdPush(0x2);dacWr(0x0,0x0);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacWrPop(0x2,0xf0,0x3);dacWr(0x0,0x2);dacRd(0x2,0x84);dacWr(0x0,0x3);dacRd(0x2,0x9);dacWr(0x0,0x6c);dacWr(0x2,0x7b);dacWr(0x0,0x6d);dacWr(0x2,0xcc);dacWr(0x0,0x6e);dacWr(0x2,0xa6);dacWr(0x0,0x6);dacRdWr(0x2,0xff,0x0b);dacWr(0x0,0x1);dacRdWr(0x2,0xfe,0x0) setMemClk=50;dacWr(0x0,0x0);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacRdPush(0x2);dacWr(0x0,0x0);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacWrPop(0x2,0xf0,0x3);dacWr(0x0,0x2);dacRd(0x2,0x84);dacWr(0x0,0x3);dacRd(0x2,0x9);dacWr(0x0,0x6c);dacWr(0x2,0x28);dacWr(0x0,0x6d);dacWr(0x2,0x81);dacWr(0x0,0x6e);dacWr(0x2,0x84);dacWr(0x0,0x6);dacRdWr(0x2,0xff,0x0b);dacWr(0x0,0x1);dacRdWr(0x2,0xfe,0x0) setVideoMode=1;dacWr(0x0,0x0);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacRdPush(0x2);dacWr(0x0,0x0);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacWrPop(0x2,0xf0,0x3);dacWr(0x0,0x2);dacRd(0x2,0x84);dacWr(0x0,0x3);dacRd(0x2,0x9);dacWr(0x0,0x1);dacRdWr(0x2,0x0f,0x31);dacWr(0x0,0x1);dacRdWr(0x2,0xfe,0x0) setVideoMode=0;dacWr(0x0,0x0);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacRdPush(0x2);dacWr(0x0,0x0);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacWrPop(0x2,0xf0,0x3);dacWr(0x0,0x2);dacRd(0x2,0x84);dacWr(0x0,0x3);dacRd(0x2,0x9);dacWr(0x0,0x1);dacRdWr(0x2,0x0f,0x51);dacWr(0x0,0x1);dacRdWr(0x2,0xfe,0x0) setVideo=640;480;60;0;dacWr(0x0,0x0);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacRdPush(0x2);dacWr(0x0,0x0);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacWrPop(0x2,0xf0,0x3);dacWr(0x0,0x2);dacRd(0x2,0x84);dacWr(0x0,0x3);dacRd(0x2,0x9);dacWr(0x0,0x4c);dacWr(0x2,0x7d);dacWr(0x0,0x4d);dacWr(0x2,0x87);dacWr(0x0,0x4e);dacWr(0x2,0x84);dacWr(0x0,0x6);dacRdWr(0x2,0xff,0xb0);dacWr(0x0,0x6);dacWr(0x0,0x1);dacRdWr(0x2,0xfe,0x0) setVideo=800;600;60;0;dacWr(0x0,0x0);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacRdPush(0x2);dacWr(0x0,0x0);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacRd(0x2);dacWrPop(0x2,0xf0,0x3);dacWr(0x0,0x2);dacRd(0x2,0x84);dacWr(0x0,0x3);dacRd(0x2,0x9);dacWr(0x0,0x4c);dacWr(0x2,0x79);dacWr(0x0,0x4d);dacWr(0x2,0x49);dacWr(0x0,0x4e);dacWr(0x2,0xa8);dacWr(0x0,0x6);dacRdWr(0x2,0xff,0xb0);dacWr(0x0,0x6);dacWr(0x0,0x1);dacRdWr(0x2,0xfe,0x0)