Reply 180 of 240, by furan
- Rank
- Member
Gona wrote on 2021-02-11, 21:02:I have bought a Diamond Fire GL 1000 card for reasonable price. I just finished with CGL testings. We have only the "Integer Reg […]
I have bought a Diamond Fire GL 1000 card for reasonable price. I just finished with CGL testings. We have only the "Integer Register" type driver, so "Integer Stack" and "Float Register" applications cannot find appropriate driver. Diamond Fire GL 1000 also can not work as "2nd VGA" (add-on 3D accelerator mode), or this CGL driver not support this, so BattleRace; Fatal Racing/Whiplash are switches over to nothing and no signal. (3D Blaster PCI with CGL API can works as add-on 3D accelerator but with other APIs like Speedy3D API, works only as primary card).
Diamond Fire GL 1000 has a weak DOS VBE (2D) compatibility, there are 2D problems with Battle Arena Toshinden, Actua Soccer and Euro 96. With Battle Arena Toshinden it is temporary and easily playable, but with Actua Soccer and Euro 96 serious, it was a bit hard to me to get to 3D part.
Euro96_2D_on_Diamond_Fire_GL_1000.png
I think these problems caused by the BIOS of the Diamond Fire GL 1000 card, because with my Leadtek WinFast 3D L2200 (also a Permedia NT card) there is no problem with 2D parts of these games.
Nice work! I was looking at this stuff a bit today and figured I'd pull up the thread to see if there were updates. Looks like. 😀
A couple things:
- I think these "second 2d card requred" games are fixable so that they don't require 2 cards in the system. When I looked at Battle Arena, they do this weird thing before they even initialize CGL, they put the VGA into text mode. I think it might be possible that this stops the CGL library from working on some cards when it is the only device in the system, so nopping this code out might fix it.
- Do you have BIOS dumps for the FireGL 1000 and the Leadtek? I think it would be interesting to take a look. 😀
- Today I am working on patching the "21st century digital boy" demo so it works for all CGL boards. When those guys sent me their CGL headers and lib they also sent me the source file for just how they interacted with CGL (not the drawing, just the routines). They have a special check for the Verite like so:
//
// Rutinas con el interface PCI de Yann, porque si no, las CGL no
// detectan la presencia de una 3D Blaster :-?
int Detect3DBlaster() //verite
{
PCI_Init();
if (!IsPCI) return(0);
Device3DB=PCI_FindDevice(0x1163, 1, 0);
if (Device3DB==0xFFFF) return (0);
Is3DB=1;
return 1;
}
and then when they initialize, they specify they only support the Verite card:
#ifdef HOTCGL
#ifdef CGLFLOAT
ErrorCode=cglLoad("", CGL_BOARD_VERITE_REV01, CGL_CDL_FLOAT);
if (ErrorCode != CGL_SUCCESS) return(fnBad);
#else
ErrorCode=cglLoad("", CGL_BOARD_VERITE_REV01, CGL_CDL_FIXED);
if (ErrorCode != CGL_SUCCESS) return(fnBad);
#endif
#endif
Where the board IDs are:
//-- Board IDs for HotCGL
#define CGL_BOARD_AUTO 0x0000
#define CGL_BOARD_GIGI_REV01 0x0001 <- GiGi
#define CGL_BOARD_PERMEDIA_REV01 0x0002
#define CGL_BOARD_GLINTTX_REV01 0x0003
#define CGL_BOARD_PERDELTA_REV01 0x0004
#define CGL_BOARD_VERITE_REV01 0x0010
#define CGL_BOARD_CIRRUS_REV01 0x0101
#define CGL_BOARD_LAGUNA5464_REV01 0x0102
#define CGL_BOARD_MULTI_AUTO 0xFFFF
Something interesting here is it looks like there were 7 chips supported in total for this version of the SDK, and it looks like we are missing CGL drivers for:
CGL_BOARD_PERMEDIA_REV01: Permedia (no Delta)
CGL_BOARD_GLINTTX_REV01: GLINT TX (maybe the early PCI prototype board for 3DB VLB game developers)
CGL_BOARD_CIRRUS_REV01: a mystery Cirrus Logic that isn't the 5464
So I think I can patch the demo to ignore the PCI VID/DID check and support any CGL driver (with varying results, of course). Right now my problem is since I don't have full source, I need to patch the binary, and it is packed with PMWLITE - I'm not sure how to unpack it.