VOGONS


Fun with CGL (Creative Graphics Library) on 3D Blaster

Topic actions

Reply 240 of 258, by mt777

User metadata
Rank Member
Rank
Member

Some times ago I also wanted to get any info about memory upgrade - for replicate purpose.
I sent message to Creative but unfortunately (and what could be expected) they won't help and redirected to forum.

Maybe someone tried reach somehow to old Creative employee?

Reply 241 of 258, by RaVeN-05

User metadata
Rank Oldbie
Rank
Oldbie

Hello. Please help in development of Creative 3D Blaster VLB wrapper/emulator.

Original Message RReady (Rendition Verite wrapper) Test Build (Alpha 1)

"Quick test for someone with a 3D Blaster VLB:

https://nirvtek.com/downloads/SMODEVLB.20250522.001.7z
MD5: 4fa8357c9ddd9b4afa8e06adb075f08d

Run SMODEVLB > vlb.txt.

Attach the VLB file or its contents or share it somehow."

https://www.youtube.com/user/whitemagicraven
https://go.twitch.tv/whitemagicraventv

Reply 242 of 258, by bschicht86

User metadata
Rank Newbie
Rank
Newbie
Gona wrote on 2020-08-26, 14:21:

I have bought a rare Permedia NT card (Permedia + Delta): Leadtek WinFast 3D L2200.

I know, it's a old post, but if you still have this card, can you please create a image from her BIOS? I found this card but without BIOS chip.

Reply 243 of 258, by Gona

User metadata
Rank Member
Rank
Member
bschicht86 wrote on 2025-11-29, 14:45:
Gona wrote on 2020-08-26, 14:21:

I have bought a rare Permedia NT card (Permedia + Delta): Leadtek WinFast 3D L2200.

I know, it's a old post, but if you still have this card, can you please create a image from her BIOS? I found this card but without BIOS chip.

Sure. Here it is

Video card compatibility matrix for DOS games | ATI3DCIF compatibility matrix | CGL API compatibility matrix

Reply 244 of 258, by Putas

User metadata
Rank Oldbie
Rank
Oldbie
RaVeN-05 wrote on 2025-05-22, 06:22:
Hello. Please help in development of Creative 3D Blaster VLB wrapper/emulator. […]
Show full quote

Hello. Please help in development of Creative 3D Blaster VLB wrapper/emulator.

Original Message RReady (Rendition Verite wrapper) Test Build (Alpha 1)

"Quick test for someone with a 3D Blaster VLB:

https://nirvtek.com/downloads/SMODEVLB.20250522.001.7z
MD5: 4fa8357c9ddd9b4afa8e06adb075f08d

Run SMODEVLB > vlb.txt.

Attach the VLB file or its contents or share it somehow."

Here you go. It seems like it read the primary adapter, though.

Reply 245 of 258, by RaVeN-05

User metadata
Rank Oldbie
Rank
Oldbie

@gona
You didn't mention, and this is also interesting.
I am tried to run
Battle arena toshinden as 2nd works.
Rebel Moon as 2nd works.
Actua soccer as 2nd works.
Hi-octane as 2nd works. At the moment of exiting game it doesn't deactivate CGL api, last frame will be always shown.
Euro 96 does not activate CGL as 2nd uses soft render
Flight Unlimited as 2nd works.
Screamer rally as 2nd works.
Screamer 2 as 2nd works.

This makes me think that CGL tries to find PCI Id, vendor ID where it could be activated, not just bios.

The euro 96 I really doubt CGL is ever activated, coz shadows need to be solid.

Would be cool if in some reality CGL add on 3d card exist in form of powervr pcx, as PCI pass trough.

EDIT:
Please help on how to activate CGL on PCI for those games:
Euro 96
Whiplash
Fatal Racing
Battle Race
?

P.S. First VGA boot from verite 2200 agp
2nd is Creative 3D Blaster PCI

EDIT2:
activated EURO96 looks same way as actua soccer
activated battle race, well not just agp card needed its wrong, you actually need two pci cards, or maybe agp verite reports same vendor id and confuses battle race . i think its seek vendor id

still can't activate fatal racing.

EDIT3:
activated fatal racing/whiplash by deleting all the *.cgl files from fatdata folder and placing here only 170 beta 7 all cgl files.
and using only PCI as primary , black menus.

To be sure its CGL you could see checker board shadows stipple alpha much like matrox mystique do

https://www.youtube.com/user/whitemagicraven
https://go.twitch.tv/whitemagicraventv

Reply 246 of 258, by Gona

User metadata
Rank Member
Rank
Member
RaVeN-05 wrote on 2026-02-06, 11:33:
@gona You didn't mention, and this is also interesting. I am tried to run Battle arena toshinden as 2nd works. Rebel Moon as 2 […]
Show full quote

@gona
You didn't mention, and this is also interesting.
I am tried to run
Battle arena toshinden as 2nd works.
Rebel Moon as 2nd works.
Actua soccer as 2nd works.
Hi-octane as 2nd works. At the moment of exiting game it doesn't deactivate CGL api, last frame will be always shown.
Euro 96 does not activate CGL as 2nd uses soft render
Flight Unlimited as 2nd works.
Screamer rally as 2nd works.
Screamer 2 as 2nd works.

Yes, I did not mention it because I have never tried it. 😁
I only tested the ones that do not work when the 3DB PCI is primary VGA card.
But it is a good idea, so I added it to the page as a note below the table.

Video card compatibility matrix for DOS games | ATI3DCIF compatibility matrix | CGL API compatibility matrix

Reply 247 of 258, by RaVeN-05

User metadata
Rank Oldbie
Rank
Oldbie

I have idea but can t confirm, since I don't have creative 3d blaster vlb.
I think having two video cards in system makes ultimate CGL support.

The main trouble is to concatenate all video outputs)

And even more ultimate pc build could be done in theory to support as much as possible apis than vetz described a long ago)

EDIT:
You can play rebel Moon using CGL api on Matrox mystique for real.
Re: RReady (Rendition Verite wrapper) Test Build (Alpha 1)

https://www.youtube.com/user/whitemagicraven
https://go.twitch.tv/whitemagicraventv

Reply 248 of 258, by RaVeN-05

User metadata
Rank Oldbie
Rank
Oldbie
Gona wrote on 2024-03-27, 07:13:

I have got a CL-GD5462, a Creative one like this:
http://www.yjfy.com/images/oldhard/video/CT6320_2M.jpg
but CGL driver cannot accept the card, likely because it has not 00D2 but 00D0 device ID.

What if there is simply hex edit DevID from 00D0 to 00D2?

What type of cgl file is used by Star Fighter 3000?

What if GIGTE163.CGL will be used for PCI games to run on VLB? For Screamer 2/Rally .

i see there is no single game which supports FS ? (????I???.CGL FS Float Stack)

looking into Linked games deeply.

MAGIC CARPET & HI_OCTANE

CGL Revision 1.61a
: EAGLE REV 1.0
ist : GLINT300SX REV 1.0
// : C Simulator

NASCAR & REBEL MOON

CGL Revision 1.61
: EAGLE REV 1.0
: GLINT300SX REV 1.0
: C Simulator

NASCAR Only

Unable to begin Creative 640x480 mode: CL1 Error %i
Unable to begin Creative 640x480 mode: Board not found
Unable to set Creative hi-rez mode: CL1 Error %i
80 Creative lo-rez not supported
uCreative Version
lbsMike Newhall

FLIGHT UNLIMITED Only

CGL Revision 1.6
-- : EAGLE REV 1.0
ist : GLINT300SX REV 1.0
// : C Simulator

REBEL MOON Only

%About to cglQueryScreen
Success: QueryScreen returned %d
Initialized eagle
aLoaded the CGL library.
CoCalled InitCGLCache
phiFailure: QueryScreen returned %d
INitCglCache

Makes Flight Unlimited the earliest CGL version game

About Rebel Moon PCI version on PC with two cards Matrox Mystique (1st) and Cirrus Logics CLGD5464 (2nd) with L3DTB170.CGL , this not runs on CGL on matrox Mystique , reason this happens is game checks VenID and Dev ID , it founds those ids in systems and tries to activate CGL on Mystieqe , the QueryScreen fails and it uses SVGA mode with text corruptions and garbage pixels on bottom . So its just Software rendering which bugged, uncompleted .

while -VGA switch is okay.

CGL evolution

GIGTB163.TXT -> GIGTE163.TXT
CGL165IRT.GIG -> CGL165FRT.GIG
cgltir -> cgltfr

GIGTB163.TXT -> GIGTB166.TXT
CGL165IRT.GIG -> CGL166IRT.GIG
CGL Revision 1.63 -> CGL Revision 1.66a
-> APPLE PIE

GIGTB166.TXT -> GIGTB170.TXT
CGL166IRT.GIG -> CGL170IRT.GIG
-> cglQueryFeature_)
-> cglEventRegister_*
-> cglEventDeregister_+
-> cglBoardConfigure_,
CGL Revision 1.66a -> CGL Revision 1.70 Release

(1.70 Revision added 4 new functions )

VRITB165.TXT -> VRITE165.TXT
CGL165IRT.VRI -> CGL165FRT.VRI
cgltir -> cgltfr

VRITB165.TXT -> VRITB166.TXT
CGL165IRT.VRI -> CGL166IRT.VRI
Verite CGL v1.65b -> Verite CGL v1.66c

VRITB166.TXT -> VRITB170.TXT
CGL166IRT.VRI -> CGL170IRT.VRI
-> cglQueryFeature_)
-> cglEventRegister_*
-> cglEventDeregister_+
Verite CGL v1.66c -> Verite CGL 1.70 beta

VRITB170.TXT -> VRITB170.TXT
-> cglBoardConfigure_,
Verite CGL 1.70 beta -> Verite CGL 1.70 beta 4
-> Never
-> nodma

VRITC170.TXT -> VRITI170.TXT
CGL170IST.VRI -> CGL170FST.VRI
cgltis -> cgltfs

VRITB170.TXT -> VRITE170.TXT
CGL170IRT.VRI -> CGL170FRT.VRI
cgltir -> cgltfr

VRITB170.TXT -> VRITC170.TXT
CGL170IRT.VRI -> CGL170IST.VRI
cgltir -> cgltis
(all functions in B and E have underline "_", the C and I do not have it)

VRITB170.TXT -> VRITB170.TXT
Verite CGL 1.70 beta 4 -> Verite CGL 1.70 beta 7
-> usedma

VRITE170.TXT -> VRITE170.TXT
Verite CGL 1.70 beta 4 -> Verite CGL 1.70 beta 7
-> usedma
Show last 5 lines

(C and I same differents, all last 1.70 revisions able to use configurations like use dma or disable for verite)


Creative 3D Blaster PCI

Rebel Moon

init_gfx: about to cglLoad
adinit_gfx(): cglLoad Failed error -- %d
About to cglQueryScreen
t iSuccess: QueryScreen returned %d
g.Initialized eagle
Loaded the CGL library.
Called InitCGLCache
Failure: QueryScreen returned %d
orNo CGL Found!!!!!! Using VESA driver.
INitCglCache
HOTCGL
*.cgl
HOT2

Battle Arena Toshinden

tsdcgl
Unsuccessful CGL Load, result = %d
Cannot find the right .CGL files in "%s".
Copy these files in "%s" or specify the location setting the
environment variable HOTCGL.
e.g. SET HOTCGL=C:\3DBLAST\DLL
Error closing the CGL hardware
Cannot load texture into CGL
Size %ld x %ld
Board memory left %ld
Free byte address %ld
Error code = %d
cglUploadScreenTo failed, error=%d
in CGL_UploadScreen()
cglSendSream failed, error=%d
in CGL_dhb_rect
in CGL_BMP_BitMapStretch0CP()
-cgl : force 3D Blaster detection
-cgl
CREATIVE 3D BLASTER DETECTED
HOTCGL_CFG
HOTCGL
*.cgl
HOTCGL.INI
HOT2

Fatal Racing (looks like a lot of debug info here)

HOTCGL
*.cgl
C:\3DBLAST\HOTCGL\HOT2\CGLCDL.C
C:\3DBLAST\HOTCGL\HOT2\CDL.C
_no_cgl_loaded
_cglVersionControl
_cglSendStream
_cglGetPixel$
_cglPutPixel(
_cglInitScreen,
_cglQueryScreen0
_cglClearScreen4
_cglCloseScreen8
_cglSetWindowClip<
_cglInitPan@
_cglPanPosD
_cglSetLineStyleH
_cglSetFillPatternL
_cglSetStipplePatternP
_cglSetDepthModeT
_cglSetStencilModeX
_cglSetLogicalOpsMode\
_cglSetDepthCueColor`
_cglSetDitherModed
_cglLoadTextureMaph
_cglSelectRenderBufferl
_cglCopyDisplayBufferp
_cglLockBuffert
_cglClearBufferx
_cglSetConstant|
_cglSwapBuffer
_cglUpLoad
_cglDownLoad
_cglSetPalette
_cglGetPalette
_cglSetPickRegion
_cglGetPickResult
_cglSetExtent
_cglGetExtentResult
_cglGetConfig
_cglSetCursor
_cglSetCursorPos@
cglStub_H
cglLoad_L
cglUnload_
_cglSetupInterrupt
_cglReleaseInterrupt
_cglBoardPresent

is internal Fatal Racing functions i guess , they do not exist inside of any *.CGL files
cglStub
cglLoad
cglUnload

21st

  No 3D Blaster found.
3D Blaster CGL mode could not be set.
Problem setting out 3D Blaster CGL mode.
Error calling CGL functions.
Error loading CGL module.
CGL version :
Board ID :
(3D Blaster VESA)
(3D Blaster PCI)
HOTCGL_CFG
HOTCGL
*.cgl
HOTCGL.INI

Screamer Rally, Screamer 2, Flight Unlimited, Battle Arena Toshinden, Hi-Octane,21st,both test's can use HOTCGL.INI file, and forcing dma speedups games.

Last edited by RaVeN-05 on 2026-02-09, 12:36. Edited 2 times in total.

https://www.youtube.com/user/whitemagicraven
https://go.twitch.tv/whitemagicraventv

Reply 249 of 258, by RaVeN-05

User metadata
Rank Oldbie
Rank
Oldbie
furan wrote on 2021-04-04, 18:13:
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. […]
Show full quote
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 […]
Show full quote

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.

Decompression tool found http://justsolve.archiveteam.org/wiki/PMWLITE

also please explain on how you dissassemble *.CGL files, what is need to be used?

Actua Soccer have 1.2 some CGL source code H and LIB files
Urban Assault have 1.2 some CGL source code and they different to Actua Soccer H files
21st demo have 1.60a some CGL source code H and LIB files

the cgl src appears on Joystick Magazine - Numero CD 071 - Mai 1996 on euro soccer 96 aka euro96.

https://www.youtube.com/user/whitemagicraven
https://go.twitch.tv/whitemagicraventv

Reply 250 of 258, by RaVeN-05

User metadata
Rank Oldbie
Rank
Oldbie

More discoverings:
https://vogonsdrivers.com/getfile.php?fileid= … 4&menustate=3,1
this is driver for 3d blaster vlb, inside os dos driver there is TEST3D.EXE which i presume no one tried to capture video from it, not saying no one runs it tho. This is simple CGL app.

in attachments dump of all strings from TEST3D.EXE "CGL Revision 1.62" can be read from it.
and 3db logo from setup, hi-res

From VLB promo we can see games: https://www.youtube.com/watch?v=11WCnP0GG8g
Descent by Interplay (never released)
EF2000 by D.I.D. (never released)
Hi-Octane by Bullfrog Productions
Magic Carpet Plus by Bullfrog Productions
Nascar Racing by Papyrus
Rebel Moon by Fenris Wolf
3D Car by Creative Technology Ltd. (never released)

https://www.youtube.com/user/whitemagicraven
https://go.twitch.tv/whitemagicraventv

Reply 251 of 258, by JarJarStinks

User metadata
Rank Newbie
Rank
Newbie

Does anyone know if there is a Bios dump for the VLB card anywhere? I have searched high and low but cannot seem to find one.

Reply 252 of 258, by Gona

User metadata
Rank Member
Rank
Member

In theory yes, but 3D Blaster PCI not really likes non PnP boards, and 3D Blaster VLB not likes PnP boards, at least in my only PnP board with VLB: SOYO 4SAW2 (a Socket 3 - SiS 496/497 board) 3D Blaster VLB got strange resources. Rebel Moon can't start with it. With my default 3D Blaster VLB board the 3DB PCI not found as 3D Blaster hardware (even if 3D Blaster VLB is not present). Much better to build a separate system to them.

RaVeN-05 wrote on 2026-02-07, 09:16:
I have idea but can t confirm, since I don't have creative 3d blaster vlb. I think having two video cards in system makes ultima […]
Show full quote

I have idea but can t confirm, since I don't have creative 3d blaster vlb.
I think having two video cards in system makes ultimate CGL support.

The main trouble is to concatenate all video outputs)

And even more ultimate pc build could be done in theory to support as much as possible apis than vetz described a long ago)

Video card compatibility matrix for DOS games | ATI3DCIF compatibility matrix | CGL API compatibility matrix

Reply 253 of 258, by Gona

User metadata
Rank Member
Rank
Member

3D Blaster VLB is an add-on card (like Voodoo 1-2). Although have limited 2D, eg. Win 3.1 driver exist (this not too impressive, the average performance in 256 colors, only 60,7% of the top Win 3.1 VLB performer), but the card have no Bios.

JarJarStinks wrote on 2026-04-09, 07:36:

Does anyone know if there is a Bios dump for the VLB card anywhere? I have searched high and low but cannot seem to find one.

Video card compatibility matrix for DOS games | ATI3DCIF compatibility matrix | CGL API compatibility matrix

Reply 254 of 258, by sharangad

User metadata
Rank l33t
Rank
l33t

Managed to get the CGL test app, 3DBInfo running.

These are the file offsets (from the beginning) for the CGL functions used by 3DBINFO from VRITB170.CGL.

cglQueryScreen 0x10551
cglInitScreen correct offset at 0x10755
cglSelectRenderBuffer 0x12B39
cglClearScreen 0x127A5
cglSwapBuffer 0x12AB1
cglGetConfig 0x10E59
cglQueryFeature 0x15A19
cglClose 0x10E11

(Cross-posted to RReady thread: Re: RReady (Rendition Verite wrapper) Test Build (Alpha 1)).

Last edited by sharangad on 2026-05-03, 07:43. Edited 1 time in total.

Developer of RReady - Rendition Verité Wrapper.
https://www.youtube.com/@sharangadayananda\
https://patreon.com/Rready

Reply 255 of 258, by sharangad

User metadata
Rank l33t
Rank
l33t

A plot of the 2 byte pointers following the function name strings suggest CGL code for VRITB170.CGL start at offset 0xEEDD with a slope of 1.

Driver: VRITB170.CGL
File size is 99399 (00018447)
Name table read: current offset 3 (0x00000003)
************************************************
CGL Driver Type: integer operands with register based parameters passing
************************************************
File offset is now 05C5
Function cgltir: offset 2032C, offsetted 208F1
Function cglVersionControl_: offset 2350, offsetted 2915
Function cglSendStream_: offset 2434, offsetted 29F9
Function cglGetPixel_: offset 3444, offsetted 3A09
Function cglPutPixel_: offset 3390, offsetted 3955
Function cglInitScreen_: offset 1878, offsetted 1E3D
Function cglQueryScreen_: offset 1674, offsetted 1C39
Function cglClearScreen_: offset 38C8, offsetted 3E8D
Function cglCloseScreen_: offset 1F34, offsetted 24F9
Function cglSetWindowClip_: offset 3960, offsetted 3F25
Function cglInitPan_: offset 2040, offsetted 2605
Function cglPanPos_: offset 21CC, offsetted 2791
Function cglSetLineStyle_: offset 314C, offsetted 3711
Function cglSetFillPattern_: offset 315C, offsetted 3721
Function cglSetStipplePattern_: offset 32B8, offsetted 387D
Function cglSetDepthMode_: offset 30CC, offsetted 3691
Function cglSetStencilMode_: offset 337C, offsetted 3941
Function cglSetLogicalOpsMode_: offset 31AC, offsetted 3771
Function cglSetDepthCueColor_: offset 307C, offsetted 3641
Function cglSetDitherMode_: offset 3060, offsetted 3625
Function cglLoadTextureMap_: offset 4DD0, offsetted 5395
Function cglSelectRenderBuffer_: offset 3C5C, offsetted 4221
Function cglCopyDisplayBuffer_: offset 3DC8, offsetted 438D
Function cglLockBuffer_: offset 3F58, offsetted 451D
Function cglClearBuffer_: offset 3A60, offsetted 4025
Function cglSetConstant_: offset 36E0, offsetted 3CA5
Function cglSwapBuffer_: offset 3BD4, offsetted 4199
Function cglUpLoad_: offset 479C, offsetted 4D61
Function cglDownLoad_: offset 40B0, offsetted 4675
Function cglSetPalette_: offset 3650, offsetted 3C15
Function cglGetPalette_: offset 36AC, offsetted 3C71
Function cglSetPickRegion_: offset 6B10, offsetted 70D5
Function cglGetPickResult_: offset 6B10, offsetted 70D5
Function cglSetExtent_: offset 6B10, offsetted 70D5
Function cglGetExtentResult_: offset 6B10, offsetted 70D5
Function cglGetConfig_: offset 1F7C, offsetted 2541
Function cglSetCursor_: offset 686C, offsetted 6E31
Function cglSetCursorPos_: offset 67A0, offsetted 6D65
Function cglSetupInterrupt_: offset 2360, offsetted 2925
Function cglReleaseInterrupt_: offset 23A8, offsetted 296D
Function cglBoardPresent_: offset 22A4, offsetted 2869
Function cglQueryFeature_: offset 6B3C, offsetted 7101
Function cglEventRegister_: offset 6BD0, offsetted 7195
Function cglEventDeregister_: offset 6C44, offsetted 7209
Number of functions 44
cglQueryScreen 0x10551
cglInitScreen correct offset at 0x10755
cglSelectRenderBuffer 0x12B39
cglClearScreen 0x127A5
cglSwapBuffer 0x12AB1
cglGetConfig 0x10E59
cglQueryFeature 0x15A19
cglClose 0x10E11

There's a slight byte offset error with one of the decoded streams (cglSelectRenderBuffer or cglClearScreen).

This would suggest cglSendStream should start of 0xEEDD+0x2434 and sure enough at file offset 0x11311 there're opcodes 52 , 51, 56. These are push instructions, which is normal for register based parameter passing.

Similarly cglGetPixel appears to start at 0x12321. Well something does.

Developer of RReady - Rendition Verité Wrapper.
https://www.youtube.com/@sharangadayananda\
https://patreon.com/Rready

Reply 256 of 258, by RaVeN-05

User metadata
Rank Oldbie
Rank
Oldbie

good news, congratulations!
well i reading cgl files by hex-editor, by eyes and source's available to me , struggling, can't say something new for now, you look much further, and already know everything even more than me)

https://www.youtube.com/user/whitemagicraven
https://go.twitch.tv/whitemagicraventv

Reply 257 of 258, by sharangad

User metadata
Rank l33t
Rank
l33t
RaVeN-05 wrote on Yesterday, 13:33:

good news, congratulations!
well i reading cgl files by hex-editor, by eyes and source's available to me , struggling, can't say something new for now, you look much further, and already know everything even more than me)

Hey RaVeN-05!

I think the float version of the library can be made by changing the first function name (string ends with ir, Integer register). Stack should be is and fs. It would be great actually get this working. Exciting times ahead.

21cdb and toshinden don't appear to use ir. I'll do some tests soon and hopefully this can be up and running soon. Vlb games will probably have to be patched. G*. Cgl driver should probably help.

Developer of RReady - Rendition Verité Wrapper.
https://www.youtube.com/@sharangadayananda\
https://patreon.com/Rready

Reply 258 of 258, by sharangad

User metadata
Rank l33t
Rank
l33t

Raven-05,

Ignore this. It fails at cglQueryScreen. The mode number probably doesn't match.

if you still have access to your hardware, you could try patching:
cglBoardPresent_: pointer 22A4, file offset 0x11181

file offset 0x11181 with:
Replaces the bytes here:

0:  31 c0                   xor    eax,eax
2: c3 ret

to see if it runs the CGL apps run on a V2000. I could put in the legwork, but I'm a bit swamped. Forcibly disassembling it with Ghidra does show a series of protected mode calls to INT 1A function 0xb101 (PCI device query).

I don't know whether eax should be set to 0 or 1. I don't have the prototype for this function in the CGL headers that I've got.

Update: I think it should return 0 on success. One of the branches returns 0, the other a something else. DeepSeek seems to think it's a memory allocation when some of the parameters for the int 0x31 call contain 0x1A (real mode interrupt for PCI device query) and 0xb101 (a specific type of subquery, the same one vQuake uses to detect Rendition cards. I'll test this now, instead of wrapping.

If that doesn't work maybe:

0:  b8 01 00 00 00          mov    eax,0x1
5: c3 ret

There maybe other reasons this won't work.

Developer of RReady - Rendition Verité Wrapper.
https://www.youtube.com/@sharangadayananda\
https://patreon.com/Rready