0xd0 – Fix Scenery Texture

By: Tim de Klein (TdK), August, 17th, 2008.
First off all:
This document explains how the 0xd0 command works, and what it can do. I discovered how this command works just by experiment during the making off my Mid-Ohio and Zolder tracks. 
All the 0xd0 commands in the Zolder track have a function, those in the Mid-Ohio track are not all correct, but I can guarantee that everything within this document is for almost 100% accurate.

What 0xd0 does/can do:
It’s an simple command with 3 arguments that can eliminate flashing scenery panels and fences, and wrapping textures on a panel. A panel can be everything. A ribbon, verge, track, fence, etc…
But It can do more. Sometimes a track, or most likely, a pitlane road, gets disturbed. A great example is shown below:
As you can see the yellow lines on the right, but 
particularly on the left are straight!
But for sure this is a corner(!) in the exit of the 
With help of the 0xd0 command, this problem 
can be solved.
This is explained how, later on…
So simply said, it “can” solve every visual imperfection! Which is very useful with track making.

Standard 0xd0 information
The command makes use off 3 arguments. Named in the Track Editor as:
a1 = Unused
a2 = 1st  Ugly Factor – Location Code Type F
a3 = 2nd Ugly Factor – Location Code Type F
As we all know, a1 is the offset. So everything within the track length is allowed. But, a2 and a3 become more difficult. I discovered that:
a2 = Wrapping textures. This is simply a texture that won’t stand still on a panel. It just moves 
        around between the two swivel arms, or the begin and end of an (track)sector.
a3 = Flashing panels. Well, you would say ribbons, banks, verges, fences.. etc. NO! Wrong, 
        a3 only affects the ribbons and banks. So scenery structures.
But what to do if I have a flashing fence or verge?
That’s the weird thing about it. To prevent them from flashing (as you notice it), you need to set a location code in a2, and most off the time in a3. Don’t know why, but it works the best that way. Maybe we see it as flashing, but actually it’s wrapping/moving around within the sector offsets. A bit strange but true…
‘Location Code Type F’
Now we know what to do when. But, how does the “Location Code Type F” work?
From what has been discovered until now, only the codes for the left and right bank are correct. All the other codes are unknowns.
But not anymore! While making the Mid-Ohio track, and the under construction Zolder track, i had a lot off flashing panels, wrapping textures, to much to deal with. There was no reason to make several track sectors for every problem area, or insert more scenery commands to solve the problems. 
So I decided to explore how the 0xd0 command works. Which turned out to be more useful in more than one way. 
Because the track(s) had so many visual imperfections, I was able to find out every code from the “Type F” table.
This is how it should look:
Code Description Code Description
1 Trackside right 2 Trackside left
4 Type B kerbstone 8 Type A kerbstone
16 Right fence 32 Left fence
64 Right verge 128 Right verge (including a texture)
256 Left verge 512 Left verge (Including a texture)
1024 Bank left (Values 0, or below 0)------ 2048 Left bank
4096 Right bank 6144 Ribbon 2
8192 Ribbon 3 16384 Ribbon 4
-1 Ribbon 1(!) -- --
Why is the code from ribbon 1, the value -1?
I think this should be 32768. Only this value can’t be entered into the command. That’s why the -1 gives 32767+1=32768. Strange, but true.
What is a trackside?
The lines around the track. So the white ones on the track, the yellows in the pitlane. When both location codes used,  you will have the location code (3)
for the road.
Do kerbstones flash?
No. But they do deform a lot. That’s why both have a location code. One single value code (4 or 8) works for the left and right side. 
Kerbstone example:
The original MircoProse San Marino track. Track sector 61 has an 0xd0 command to correct the kerbstone. 
On the left is how it looks like with the command. On the right without the command. See how the kerbstone gets disturbed without this helpful command.
a1 = set at: --- 13 --- That’s where the kerbstone may go from a “Type B”, to a “Type A”.
a2 = set at: --- 4 --- The location code for the “Type B” kerbstone.
A verge including a texture?
On verges you place textures a lot. Gravel, tarmac, etc. Mostly in corners this textures can be disturbed. When you have a texture disturbed on a verge, use code value 128 or 512, depending on which side it is placed.
Bank left (Values 0, or below 0):
A strange location code. Only found it in F1ct06, and F1ct04 of the original MicroProse tracks. 
It’s for sure the left bank. But only if the Z value of this bank is 0, or below 0. In F1ct06 it’s used in the river on the left side down the long-curved straight, track sector 62. In F1ct04 it is used in the right-hand corner before “Loews Hairpin”, track sector 32.

Strange code values like 24576:
Maybe most off the track makers know this already, but for those who don’t: 
These kind off “weird” values are created by adding one code to another. 24576 is made out off the location codes from Ribbon 3 (8192) and Ribbon 4 (16384). 
The game itself is smart enough to sort out which panels are included within the “add-on” value. 
48 for an example consists out of both fence codes, 32 and 16.

Now, let’s go back to this:
I’ve already told that the 0xd0 command can do more than stop 
ribbons or fences from flashing and/or wrapping. 
Sometimes, but usually in the pitlane, the road gets disturbed.
When the track is deformed/disturbed, it’s most likely to be seen 
when in camera view.
To solve this type of visual imperfection, the 0xd0 command can be used with the value 39. At least, that’s the value I used within the pitlane off the Zolder track. What does 39 stand for than?
Trackside left ----- 2
Trackside right 1
Fence right 32
Type b kerbstone 4
I used code 4 because I first used this code for use within the track, where there was a type b kerbstone on the inside of that corner. But in the pitlane there’s no kerbstone, but that doesn’t matter. 35 (so all, but without the kerbstone) will give the same effect.

Some final notifications:
1)  Something i didn’t discovered, is how to integrate the -1 value for Ribbon 1, with other values. If you have flashing fences, and a flashing ribbon 1, 48 + -1 = 47, won’t work as an location code. I think it’s best when this happens, to make separate 0xd0 commands in that sector.
2) The Zolder and Mid-Ohio track are created with the Gp2 TrackEditor by Paul Hoad. I think in older versions of the TrackEditor this information is as useful as it is with the newest version, but it’s not tested.
3)  Never insert a 0xd0 command with a scenery location code included, when scenery at that point is turned off. This is the same for fences, when they are turned off. This will give strange effects on other textures. It can affect the cars driving around, or (maybe) the objects. There is even a change of creating GFX bugs.

The reason i wrote this document, was to let other track makers learn how to fix visual bugs/imperfections in their own tracks. 
I can always give (some) assistance, but only if this document doesn’t help, and/or you’ve tried your best to fix the problem.