VOGONS


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

Topic actions

Reply 3220 of 3238, by sharangad

User metadata
Rank l33t
Rank
l33t
RaVeN-05 wrote on 2025-12-02, 18:55:

yes old build is 26 fps max at starting position of Scorched planet vs 33 fps max at last build.
DMA still faster

Thanks Raven! It's better but not great.

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

Reply 3221 of 3238, by sharangad

User metadata
Rank l33t
Rank
l33t
RaVeN-05 wrote on 2025-12-02, 18:55:

yes old build is 26 fps max at starting position of Scorched planet vs 33 fps max at last build.
DMA still faster

Try adding this to the joystick section. On dual core machines this needs to be added. I don't know what the situation will be on your machine.
[joystick]
multithreaded=false

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

Reply 3222 of 3238, by sharangad

User metadata
Rank l33t
Rank
l33t

[EDIT] Nope does not work[/EDIT]

For VRITB170.CGL Chat GPT suggested this, function id and name pointer table:

cglInitScreen_        ordinal  4  entry_offset 0x01EA  name_offset 0x01ED
cglQueryScreen_ ordinal 5 entry_offset 0x01FB name_offset 0x01FE
cglClearScreen_ ordinal 6 entry_offset 0x020C name_offset 0x020F
cglCloseScreen_ ordinal 7 entry_offset 0x021D name_offset 0x0220
cglSetWindowClip_ ordinal 8 entry_offset 0x022E name_offset 0x0231
cglInitPan_ ordinal 9 entry_offset 0x0245 name_offset 0x0248
cglPanPos_ ordinal 10 entry_offset 0x0253 name_offset 0x0256
cglSetLineStyle_ ordinal 11 entry_offset 0x0260 name_offset 0x0263
cglSetFillPattern_ ordinal 12 entry_offset 0x0272 name_offset 0x0275
cglSetStipplePattern_ ordinal 13 entry_offset 0x0287 name_offset 0x028A
cglSetDepthMode_ ordinal 14 entry_offset 0x029C name_offset 0x029F
cglSetStencilMode_ ordinal 15 entry_offset 0x02AE name_offset 0x02B1
cglGetDepthResult_ ordinal 16 entry_offset 0x02C1 name_offset 0x02C4
cglWaitVerticalBlank_ ordinal 17 entry_offset 0x02D5 name_offset 0x02D8
cglPlot_ ordinal 18 entry_offset 0x02EC name_offset 0x02EF
cglGetPixel_ ordinal 19 entry_offset 0x02FA name_offset 0x02FD
cglDrawLine_ ordinal 20 entry_offset 0x030B name_offset 0x030E
cglDrawRect_ ordinal 21 entry_offset 0x031B name_offset 0x031E
cglFillRect_ ordinal 22 entry_offset 0x0329 name_offset 0x032C

cglClearBuffer_ ordinal 23 entry_offset 0x0362 name_offset 0x0365
cglSetConstant_ ordinal 24 entry_offset 0x0374 name_offset 0x0377
cglSwapBuffer_ ordinal 25 entry_offset 0x0386 name_offset 0x0389
cglUpLoad_ ordinal 26 entry_offset 0x0397 name_offset 0x039A
cglDownLoad_ ordinal 27 entry_offset 0x03A4 name_offset 0x03A7
cglSetPalette_ ordinal 28 entry_offset 0x03B3 name_offset 0x03B6
cglGetPalette_ ordinal 29 entry_offset 0x03C4 name_offset 0x03C7
cglSetPickRegion_ ordinal 30 entry_offset 0x03D5 name_offset 0x03D8
cglGetPickResult_ ordinal 31 entry_offset 0x03E9 name_offset 0x03EC
cglSetExtent_ ordinal 32 entry_offset 0x03FD name_offset 0x0400
cglGetExtentResult_ ordinal 33 entry_offset 0x040D name_offset 0x0410
cglGetConfig_ ordinal 34 entry_offset 0x0423 name_offset 0x0426
cglSetCursor_ ordinal 35 entry_offset 0x0433 name_offset 0x0436
cglSetCursorPos_ ordinal 36 entry_offset 0x0443 name_offset 0x0446
cglSetupInterrupt_ ordinal 37 entry_offset 0x0456 name_offset 0x0459
cglReleaseInterrupt_ ordinal 38 entry_offset 0x046B name_offset 0x046E
cglBoardPresent_ ordinal 39 entry_offset 0x0482 name_offset 0x0485
cglQueryFeature_ ordinal 40 entry_offset 0x0495 name_offset 0x0498
cglEventRegister_ ordinal 41 entry_offset 0x04A8 name_offset 0x04AB
cglEventDeregister_ ordinal 42 entry_offset 0x04BC name_offset 0x04BF
cglBoardConfigure_ ordinal 43 entry_offset 0x04D2 name_offset 0x04D5

Here are the exports and their corresponding file offsets (hex, from the start of the .CGL file):

cglVersionControl – offset 0x02350
cglSendStream – offset 0x02434
cglGetPixel – offset 0x03444
cglPutPixel – offset 0x03390
cglInitScreen – offset 0x01878
cglQueryScreen – offset 0x01674
cglClearScreen – offset 0x038C8
cglCloseScreen – offset 0x01F34
cglSetWindowClip – offset 0x03960
cglInitPan – offset 0x02040
cglPanPos – offset 0x021CC
cglSetLineStyle – offset 0x0314C
cglSetFillPattern – offset 0x0315C
cglSetStipplePattern – offset 0x032B8
cglSetDepthMode – offset 0x030CC
cglDrawHorizLine – offset 0x0275C
cglDrawVertLine – offset 0x02884
cglDrawLine – offset 0x02558
cglDrawScanLine – offset 0x029A0
cglDrawRectangle – offset 0x02638
cglDrawTriangle – offset 0x02D28
cglDrawTriangleList – offset 0x02E44
cglDrawPolygon – offset 0x02B38
cglDrawPolygonList – offset 0x02C3C
cglSetPalette – offset 0x03B50
cglSetPaletteEntry – offset 0x03A44
cglInterpPalette – offset 0x03C14
cglSetViperPageMode – offset 0x022C4
cglSwapViperPages – offset 0x03D00
cglAllocateTmiBuffer – offset 0x003D8
cglFreeTmiBuffer – offset 0x004B8
cglDrawBitmap – offset 0x00564
cglSetScreenTransform – offset 0x00A24
cglSetScreenTransformFix – offset 0x009D8
cglSetScreenTransform32 – offset 0x00A6C
cglSetObjectTransform – offset 0x00B5C
cglSetObjectTransformFix – offset 0x00B18
cglSetObjectTransform32 – offset 0x00BA4
cglEnableRescale – offset 0x00C00
cglSetRescale – offset 0x00C30
cglGetRescale – offset 0x00DF0
cglLoadFrame – offset 0x010D4
cglUnloadFrame – offset 0x011F0
cglBoardConfigure – offset 0x000EC

I'm going to try patching VRITB170.CGL function by function to see if I can get it to go.

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

Reply 3223 of 3238, by sharangad

User metadata
Rank l33t
Rank
l33t

A bit of progress.

VRITB170.CGL offset 0x00010551 cglQueryScreen.

Need to decode the other functions and figure out where the function entry points are set.

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

Reply 3224 of 3238, by RaVeN-05

User metadata
Rank Oldbie
Rank
Oldbie

Early Attempts to test Formula 1:
The game can be installed trough otvdm , thanks.
And it seems could not detect Randition, and doesnot installs f1red.exe file.
So i extracted it by UniExtract Tool a archiver which supports way nearly all archive types.
placed f1red.exe into newly installed formula1 game and ready to go.

in Game:

Performance variety goes from 19 fps, average 35 fps, max 60 fps(vsync).
The game seems rendered perfectly.

Only suspicious 2 things:
Wheels at far distance on foggy weather , not fogged , stays dark .
Cars very rarely 'jumps' off of their positions a little bit up.

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

Reply 3225 of 3238, by sharangad

User metadata
Rank l33t
Rank
l33t
RaVeN-05 wrote on 2025-12-06, 17:04:
Early Attempts to test Formula 1: The game can be installed trough otvdm , thanks. And it seems could not detect Randition, and […]
Show full quote

Early Attempts to test Formula 1:
The game can be installed trough otvdm , thanks.
And it seems could not detect Randition, and doesnot installs f1red.exe file.
So i extracted it by UniExtract Tool a archiver which supports way nearly all archive types.
placed f1red.exe into newly installed formula1 game and ready to go.

in Game:

Performance variety goes from 19 fps, average 35 fps, max 60 fps(vsync).
The game seems rendered perfectly.

Only suspicious 2 things:
Wheels at far distance on foggy weather , not fogged , stays dark .
Cars very rarely 'jumps' off of their positions a little bit up.

Ok, I'll test this on the v2200 tomorrow. The v1000 still has issues rendering file explorer, randomly locks up, with rredline drivers. I saw a post here where someone said v1000 struggles to render the desktop with the full acceleration slider set to max on an Athlon xp, but works fine on older, slower cpus.

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

Reply 3226 of 3238, by sharangad

User metadata
Rank l33t
Rank
l33t
RaVeN-05 wrote on 2025-12-06, 17:04:
Early Attempts to test Formula 1: The game can be installed trough otvdm , thanks. And it seems could not detect Randition, and […]
Show full quote

Early Attempts to test Formula 1:
The game can be installed trough otvdm , thanks.
And it seems could not detect Randition, and doesnot installs f1red.exe file.
So i extracted it by UniExtract Tool a archiver which supports way nearly all archive types.
placed f1red.exe into newly installed formula1 game and ready to go.

in Game:

Performance variety goes from 19 fps, average 35 fps, max 60 fps(vsync).
The game seems rendered perfectly.

Only suspicious 2 things:
Wheels at far distance on foggy weather , not fogged , stays dark .
Cars very rarely 'jumps' off of their positions a little bit up.

There's also a problem with the water spray texture from the rear of cars under wet weather not being sized correctly sometimes. I'm going to try to fix that today.

The cars jumping *might* just be LOD for the model changing. On real hardware it changes, but the framerate is low so it's less dramatic. I'll also see what's up with the fogging on the wheels.

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

Reply 3227 of 3238, by sharangad

User metadata
Rank l33t
Rank
l33t
RaVeN-05 wrote on 2025-12-06, 17:04:

Early Attempts to test Formula 1:
The game can be installed trough otvdm , thanks.
And it seems could not detect Randition, and doesnot installs f1red.exe file.

You have to tick the checkbox manually for all the versions you need. I reinstalled this earlier today, on my W98 machine, because the F1 wrapper, (RReady.V2k), wouldn't work with the reference drivers. I had to revert to Diamond drivers to get this to work. I should probably update the thread F1 V2k.RReady thread.

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

Reply 3228 of 3238, by sharangad

User metadata
Rank l33t
Rank
l33t

If you've got time to kill, I've got a couple of clips for comparison, they're not the same, but might help with identifying issues:
RReady: https://youtu.be/lMIdBnGKQBs
V2100: https://youtu.be/HFhbocqwHoc

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

Reply 3229 of 3238, by sharangad

User metadata
Rank l33t
Rank
l33t

Does anyone know what this means (from here:https://www.felixcloutier.com/x86/intn:into:int3:int1):

Each of the INT n, INTO, and INT3 instructions generates a general-protection exception (#GP) if the CPL is greater than the DPL value in the selected gate descriptor in the IDT. In contrast, the INT1 instruction can deliver a #DB

This seems to be preventing me from patching bits of code out of ICR2.

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

Reply 3230 of 3238, by sharangad

User metadata
Rank l33t
Rank
l33t

It also seems to block port IO, this also throws an exception without every calling my code. There doesn't seem to be any bits of empty space to add code.

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

Reply 3231 of 3238, by RaVeN-05

User metadata
Rank Oldbie
Rank
Oldbie

compared two videos:
Yes everything rendered correctly.

The game rarely CTD.
Do not use Alt+tabbing. Hangs app.

Rarely tire trails on asphalt gets corrupted texture.
Rarely shadow under cars gets corrupted texture.

The performance is variable fps.

Sometimes tire trails seen trough road.
Sometimes water splash effects has seen trough other polygons. Those two probably not fixable due to nature of how Rredline API works.

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

Reply 3232 of 3238, by sharangad

User metadata
Rank l33t
Rank
l33t
RaVeN-05 wrote on 2025-12-10, 18:30:

The game rarely CTD.
Do not use Alt+tabbing. Hangs app.

Thanks Raven for taking a look.

Having task manager running does the same thing, such as when starting a race.

On newer faster CPUs, F1 runs at a solid 60 fps. I think there was a user here who has a 14the gen Intel CPU who gets a solid 60 fps everywhere. It's mostly CPU bound.

There is a problem with the water spray texture having the wrong size. It's intermittent and I have trouble reproducing it. I also can't tweak the performance of this game. Profiler's crash because of the mixed calling convention.

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

Reply 3233 of 3238, by sharangad

User metadata
Rank l33t
Rank
l33t

Still chugging along with widescreen. Progress is a bit slow. The player car can be moved to *almost* match the camera. This mirroring of position will have to be matched exactly:

https://youtu.be/_wn1jfKtNhI

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

Reply 3234 of 3238, by RaVeN-05

User metadata
Rank Oldbie
Rank
Oldbie

Die by the Sword:
Seems everything perfect.
One thing is suspect - game prints messages on top of screen , when text message visible game drops their performance twice.

on your videos this is not happens, it have solid fps, could be drops by VL_LockBuffer and VL_UnLockBuffer?

Also, i have access to my hardware.

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

Reply 3235 of 3238, by sharangad

User metadata
Rank l33t
Rank
l33t
RaVeN-05 wrote on Today, 12:11:

Die by the Sword:
Seems everything perfect.
One thing is suspect - game prints messages on top of screen , when text message visible game drops their performance twice.

Thanks for testing this!

What's the frame rate like? The problem with the text is that it repeatedly calls V_LockBuffer/V_UnlockBuffer to render parts of each character (maybe entire characters at a time). This forces the CPU to stall until the GPU finishes what's it's doing and then the GPU stalls until the CPU calls V_UnlockBuffer. It's used to directly read from or write to GPU RAM. Unlike with DOS where games directly write to video RAM (Descent 2 Speedy3D has a problem with this at the moment) , with RRedline you need to lock the buffer (and stall the GPU and then stall both). Usually this is used with the front buffer and not a texture surface. To make matters worse, DBTS calls this repeatedly per frame. I looked at making this synchronous, but that runs into all sorts of issues with synchronisation. I'll see if I can speed it up a bit tomorrow. Oddly enough this runs without much of an issue on real hardware.

From the RRedline SDK docs (page 52 of the Word doc):

Use of this call can severely hurt performance.  Performance penalties of 50% have been observed due to inappropriate use.  Never use this call to do blits or drawing with the CPU in a scene that the Vérité also draws to.  Either draw everything with the CPU, or draw everything with the Vérité, but absolutely do not attempt to draw with both at the same time.
The problem is that when V_LockBuffer is called, the CPU stalls until the Vérité has finished processing all issued commands. The Vérité stalls while the CPU performs operations on the locked surface. Typically, the Vérité continues to stall while the CPU transforms and lights the next batch of polygons. The Vérité starts working again when the polygon commands are issued. Regardless of the optimization of the assembly code for the CPU, the resulting overall throughput of the graphics system is severely reduced.

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

Reply 3237 of 3238, by sharangad

User metadata
Rank l33t
Rank
l33t
RaVeN-05 wrote on Today, 12:45:

ah this is very frequently used in Quake engine games.
Well game capped at 18 fps and when text prints it halfes fps and then 9 fps.

You can also turn on frame interpolation for this game. On my old sandybridge i7 with a gtx660 it runs at 10 fps all the time.

On a Pentium Gxxx (Haswell) with hd4000 it runs at 4 fps.

On my dev machine, old Ryzen it runs at 18 fps constantly.

Last edited by sharangad on 2025-12-15, 13:44. Edited 1 time in total.

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

Reply 3238 of 3238, by sharangad

User metadata
Rank l33t
Rank
l33t
RaVeN-05 wrote on Today, 12:45:

ah this is very frequently used in Quake engine games.
Well game capped at 18 fps and when text prints it halfes fps and then 9 fps.

VQuake 2 and vHexen 2 call this infrequently. Vq2 uses it for the screenshot function. Vh2's screenshot doesn't work with rready. I think it uses some other win98 way of capturing the screen buffer, which I can't trap. Vq1 has no equivalent of this but it might be querying registers to simulate it. That might be why it's slow.

The v_lockbuffer call doesn't come back until rendering has finished. It returns a pointer in system memory to a copy of the GPU space buffer. Verité has stopped rendering at this point. The app can read or modify what's in the buffer and then call v_unlockbuffer. Verité then updates the buffer in GPU memory with the system buffer and then v_unlockbuffer comes back.

Monster Truck Madness 2 uses it for HUD and hud edge antialiasing (rready cheats here because the game expects a 640x480 16 bit buffer) but calls it only once per frame, so doesn't slowdown. Yes, the game does rendered frame and HUD edge intersection antialiasing using the cpu.

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