|
|
Line 1: |
Line 1: |
− | Stunts cars are made of four different [[Resource file format|resource files]]. For the original Stunts cars, all of the car graphics are stored in the [[Compression|compressed]] st*.p3s, stda*.pvs, stdb*.pvs files ('*' stands for a four-letter abbreviation shared by files of the same car). On many custom cars, .p3s and .pvs files are replaced by their uncompressed counterparts, with extensions .3sh and .vsh respectively. The fourth file, car*.res, contains numerical and text parameters, including data about car performance essential to the creation of [[Cheated Cars|tuned cars]].
| + | We need more insights like this in this thared. |
− | | |
− | ==Graphics files (.p3s/.pvs)==
| |
− | | |
− | Different aspects of a car's appearance are stored in each of the graphic files:
| |
− | | |
− | *'''st*.p3s''' - [[Resource file format#3d shapes|3d shape resource]] file that stores the graphical 3D models of the car, including their colour data.
| |
− | *'''stda*.pvs''' - [[Resource file format#Bitmap images|Bitmap resource]] file that contains the dashboard image, including the shifting stick's base.
| |
− | *'''stdb*.pvs''' - [[Resource file format#Bitmap images|Bitmap resource]] file that contains the shifting knob. For the [[Corvette ZR1|Corvette]], it also stores the digital speedometer graphics.
| |
− | | |
− | Each of the files contain a number of independent resources, used on different places or in-game situations. Here a rundown of those resources contained within each file will be presented. For an explanation of internal structure of the resources, applicable to all files here discussed, check the [[Resource file format]] article. It is important to emphasize all graphics files are [[Compression|compressed]], and thus any visualization or edition of the original cars' graphics calls for prior decompression. As a consequence, custom cars with modified graphics have the compressed .p3s and .pvs files substituted by their uncompressed .3sh and .vsh counterparts.
| |
− | | |
− | ===3D shapes (st*.p3s)===
| |
− | [[image:Resdifcar0car1.png|240px|right|thumb|An illustration of the resolution differences between car0 and car1 shapes. On this image, car0 was used instead of the usual car1 to render the Indycar on-track. The screenshot was taken with the car on the ground, and under F3 camera fully zoomed out.]]
| |
− | Standard st*.p3s files contain seven 3D shape resources, each being used in different circumstances:
| |
− | | |
− | *'''car0''' shape is the one used in the car selection screen. It is richly detailed for Stunts usual standards, and has pretty high internal resolution.
| |
− | *'''car1''' shape corresponds to the car actually rendered on-track. Its resolution is much smaller than the car0 shape, the scaling down factor being 1:20, thus explaining why many fine details seen on the "showroom" car are not seen on-track.
| |
− | *'''car2''' shape is the very long distance model, used only for the initial zoom-in animation that precedes the "Fasten your seatbelt!" message at the start of a race. It has very low resolution, to the point of being barely recognizable.
| |
− | *'''exp0''', '''exp1''', '''exp2''' and '''exp3''' aren't really proper 3D shapes, but rather individual lines and polygons that make up the bits of debris seen after a crash.
| |
− | | |
− | ===Dashboard static parts (stda*.pvs)===
| |
− | | |
− | A car dashboard is composed by a number of separate bitmaps, not of them being used by all cars:
| |
− | | |
− | *'''!cg0''' and '''!eg0''' are alternative palettes for non-VGA graphic modes.
| |
− | *'''dash''' is the base panel of the dashboard, covering most of its drawn area.
| |
− | *'''dast''' complements the top of the dash bitmap with curved areas, as seen on the [[Porsche March Indy|Indy]] for instance. Since all bitmap resources correspond, naturally, to rectangular areas, there's an additional bitmap, '''dasm''', which acts as an alpha mask in order to have the proper looks of a curved surface instead of a rectangular block.
| |
− | *'''roof''' is the strip seen atop above the windshield for a number of cars - for instance, the ones containing "PORSCHE" or "JAGUAR" inscriptions on the [[IMSA]] cars.
| |
− | *'''whl2''' is the centered steering wheel bitmap. The internal pixel coordinates of it are used to define steering wheel dot positions in the car*.res.
| |
− | *'''whl1''' and '''whl3''' are graphics for the wheel steered left and right respectively.
| |
− | *'''ins2''' corresponds to the meters - tachometer and/or analog speedometer. Although the bitmap itself is redundant for all default cars, since the meter graphics are included in dash as well, ins2 has an actual purpose: define the internal coordinates for speedometer/tachometer needle render, controlled by car*.res.
| |
− | *'''ins1''' and '''ins3''' are complementary graphics corresponding to small sections of the dashboard uncovered when the wheel is steered left or right (and so they are complementary to whl1 and whl3, in that order). Since the images are not rectangular, alpha masks '''inm1''' and '''inm3''' are needed, just like dasm was for dast.
| |
− | *'''gbox''' is the shifting stick base. Coordinates for shifting knob positions are defined within the reference frame of this bitmap.
| |
− | | |
− | I don't even know what to say, this made things so much easeir!
| |
− | | |
− | ===Editing and combining car graphics===
| |
− | | |
− | Graphic files of different cars are independent, and thus can be mixed freely when constructing a new car. The main point of concern when doing so usually is adjusting car*.res so that moving parts of the dashboard behave properly. The classical example of this mix-and-match approach is [[Alan Rotoi]]'s famous [[Melange]].
| |
− | The actual edition of the graphics was a long-standing goal of the community that for many years was deemed impossible due the lack of information about the format employed by the developers to compress the files. In March 2008, this riddle was finally solved by [[dstien]], and since then the possibilities for modding have grown a lot (see [[Car files#Tools|Tools]] section further down the article). As mentioned before, cars with custom graphics use uncompressed .3sh and .vsh resource files . Stunts 1.1 is able to read these uncompressed files correctly; however, if there are any compressed (.p3s and .pvs) files for the same car (that is, sharing the four-letter abbreviation) in the game folder these will be loaded in expense of the uncompressed files.
| |
− | | |
− | ==Car behaviour (car*.res)==
| |
− | | |
− | All adjustable aspects of a car behaviour are stored in car*.res, a miscellaneous data resource file. It contains both physics data, such as power curves, and visual parameters, like car height in cockpit view or speedometer behaviour. Also, the file also contains the text data displayed at the car selection screen. Data in car*.res may be read and modified by any hex editor, or more conveniently by a specially-designed graphical editor (see the Tools section ahead).
| |
− | | |
− | The function of a large fraction of car*.res hex addresses was elucidated over the years, allowing modifications of many car aspects. Here is a quick reference for those addresses, originally based on the chart available at [http://www.kalpen.de/luke/4dinfo.html#cs Lukas Loehrer's site]. A more throughout discussion on the effects and quirks of the parameters is available at [[Car parameters]]; clicking on a parameter description will lead to the corresponding entry there.
| |
− | | |
− | {| class="wikitable"
| |
− | |-
| |
− | ! Byte offset !! Function
| |
− | |-
| |
− | | 26h || [[Car_parameters#Number_of_gears|Number of gears]]
| |
− | |-
| |
− | | 28h/29h || [[Car_parameters#Car_mass|Car mass]]
| |
− | |-
| |
− | | 2Ah/2Bh || [[Car parameters#Braking effectiveness|Braking effectiveness]]
| |
− | |-
| |
− | | 2Ch/2Dh || [[Car parameters#Idle rpm|Idle rpm]]
| |
− | |-
| |
− | | 2Eh/2Fh || [[Car parameters#Downshift rpm|Downshift rpm (auto transm.)]]
| |
− | |-
| |
− | | 30h/31h || [[Car parameters#Upshift rpm|Upshift rpm (auto transm.)]]
| |
− | |-
| |
− | | 32h/33h || [[Car parameters#Maximum rpm|Maximum rpm]]
| |
− | |-
| |
− | | 36h-41h || [[Car parameters#Gear ratios|Gear ratios]]
| |
− | |-
| |
− | | 44h-5Ch || [[Car parameters#Shifting knob positions|Shifting knob coordinates]]
| |
− | |-
| |
− | | 5Dh/5Eh || [[Car parameters#Aerodynamic resistance|Aerodynamic resistance]]
| |
− | |-
| |
− | | 60h || [[Car parameters#Idle rpm torque|Idle rpm torque]]
| |
− | |-
| |
− | | 61h-C8h || [[Car parameters#Torque curve|Torque curve]]
| |
− | |-
| |
− | | CAh/CBh || [[Car parameters#Grip|Grip]]
| |
− | |-
| |
− | | DCh-E3h || [[Car parameters#Surface grip modifiers|Surface grip modifiers]]
| |
− | |-
| |
− | | EEh-F5h || [[Car parameters#Dimensions for car-car collisions|Dimensions for car-car collisions]]
| |
− | |-
| |
− | | F6h/F7h || [[Car parameters#Apparent Car height|Car height (from inside view)]]
| |
− | |-
| |
− | | F8h-109h || [[Car parameters#Car dimensions|Wheel coordinates / external dimensions]]
| |
− | |-
| |
− | | 110h-14Dh || [[Car parameters#Steering wheel dot movement|Steering wheel dot movement]]
| |
− | |-
| |
− | | 14Eh-223h || [[Car parameters#Speedometer needle movement|Speedometer needle movement]]
| |
− | |-
| |
− | | 154h-159h || [[Car parameters#Digital speedometer|Digital speedometer]]
| |
− | |-
| |
− | | 224h-32Dh || [[Car parameters#Rev meter needle movement|Rev meter needle movement]]
| |
− | |-
| |
− | | 32Eh-EOF || [[Car parameters#Text data|Text data (car selection screen and high score table)]]
| |
− | |-
| |
− | |}
| |
− | | |
− | The actual structure of car*.res consists of four resources:
| |
− | *'''simd''', which contains all the numerical parameters;
| |
− | *'''edes''', a [[Resource file format#Plain text|text resource]] containing the description displayed in the car selection screen;
| |
− | *'''gsna''', the 4-letter scoreboard abbreviation stored as a text resource; and
| |
− | *'''gnam''', the scoreboard car name.
| |
− | | |
− | ==Version compatibility==
| |
− | | |
− | Cars that use graphic files from Stunts 1.0 do not work properly on 1.1 versions, and vice-versa. Attempting to exchange cars between versions will cause crashes in the car selection screen due to file format incompatibilities. The simpler and naturally uncompressed car*.res files may be exchanged between versions, although car performance won't be the same due to the known differences between [[Game versions|game versions]] in that respect.
| |
− | | |
− | More posts of this quality. Not the usual c***, plesae
| |
− | | |
− | ==See also==
| |
− | | |
− | * [[Car_parameters|Car parameters]]<br>
| |
− | * [[Car model physics]]<br>
| |
− | * [[Cheated_cars|Cheated cars]]
| |
− | | |
− | ==External Links==
| |
− | | |
− | *[http://code.google.com/p/stuntstools/ dstien's stuntstools Google Code project]
| |
− | | |
− | | |
− | [[Category:Modding]]
| |