The AGP capability is read from Windows, so a flag will be be set when the game starts.
Just a quick note on the 00 A3 Opcode. If you look at the file dust.3 you will find the following:
header;FFFC3E80000000007FFF00000000000000000000
header;0002000300030000000000000083000700040005
header;000600000000000000200000002000000020000000040030001E
0000;007B0004
0001;0000
0002;00080008
0003;0008056A
0004;0000
0005;
00A30D160006;002700320334
0007;00480000
>>>>>
0238;0000
0239;0001000200030000
0240;
00A303380241;004B00030004
0242;0000
Could this be a jump to the second 00 A3 opcode?
I also noticed that the Header for dust.3 is different on the AGP PC than on the PCI/Glide PC:
header;FFFC
05DC000000007FFF00000000000000000000
header;0002000300030000000000000083000700040005
header;000600000000000000200000002000000020000000040030001E
ie, 8000 vs 16000, maximum visible distance? D3D half that in 3DFx/Glide ?
There are some interesting findings in this file.
0372;00A700A200910075
0373;0047
0101000400000000008000000080008000000080
0374;008800040000000100020003
0375;
00A80376;0000
Considering the opcodes 00 A3, 00 A7 and 00 A8, it appears as if their is a seperate set of Opcodes for specific AGP file system.
I modified the dust.3 files code related to the 00 A7 opcodes: 00A700A200910075
Simply changing the color determinant from 00A2 to 0103 changed the texture color for dust.raw from gold/brown to bright green. In TAW the dust plumes from ground vehicles are now visible as green dust, this is the same code in the .3 files responsible for the colored missile trails, explosions, etc.. I ported the modified dust.3 file to my 3DFx-Glide/PCI PC and the AGP opcodes are not recognized, the dust plumes appear as white 3d objects complete with ground shadows which are not present with the AGP/.raw textures system implementation. It is not yet clear what the 008A opcode does however it could be the AGP system equivalent of 00 00 used to terminate the AGP related blocks of code. The AGP flag determines which block is utilized?
00470101... calls 257h + 1; 258=dust (.raw)