rec.autos.simulators

Question for Jim/Adam about RENDDMA

James Grayso

Question for Jim/Adam about RENDDMA

by James Grayso » Sun, 02 Feb 1997 04:00:00

I have two questions about the upcoming patch from Sierra for NASCAR 2. The
first is the general question of will there be any Rendition work included?
The second is the specific question of will the patch address the problem
of erratic joystick/wheel control when running the RENDDMA version of
Rendition NASCAR 2 on NON-INTEL machines? I realize that you (Jim Sokoloff)
have said the patch is Adam's concern, but if you could either get an
answer from him or get him to post one it would be appreciated. A simple
yes or no is all I'm asking for.

BTW, if the answer is no, I just want to say that the reasoning of the
Cyrix chips have problems with most Rendition games and it is therefore a
Cyrix problem is untrue. Quake and Tomb Raider both work perfectly in
Rendition mode. Additionally, all of my other software works perfectly with
the Cyrix (including regular NASCAR 2) so it is definitely NOT a hardware
issue. And before I get flamed from the outside on this, I do feel that
compatibility is Cyrix's responsibility, but I also feel they have met that
when 99% of the software out there runs fine (which probably isn't that
different a number from Intel's<G>!) Just wanted to make sure that we keep
things on a level playing field and that everyone (including Sierra)
understands that this is a specific problem related to NASCAR 2.

As I have played the game more I realize that it really is a good product
and that my initial judgement was probably too harsh. I enjoy the game
thoroughly and my only request is that Sierra take support of alternative
chips as seriously as id and EIDIOS as well as others have.

Thank you for your time and efforts,

Jim Grayson
Air Traffic Control Specialist - Automation - Memphis ARTCC

Jim Sokolo

Question for Jim/Adam about RENDDMA

by Jim Sokolo » Sun, 02 Feb 1997 04:00:00


I'll ask Adam to continue to provide details when those details are
available... At this time, to the best of my knowledge, Cyrix has not
been able to provide a solution to the problem (see more below)

See my previous post regarding this issue. The Cyrix chip is NOT a
Pentium, and doesn't report itself as a Pentium. We ask at startup if
the CPU is a Pentium and if so, we are able to use an undocumented
Pentium instruction to enable our joystick routines to be more
accurate.

If Cyrix is able and willing to provide us a technical solution, we
are willing to incorporate the special case code at startup to allow
us to take advantage of the more accurate joystick routines.

Two reasons why other games might work: 1) it might not be so critical
if a single joystick read is inaccurate and/or 2) they might know how
to access the same information on the Cyrix chip and have special case
code for the Cyrix.

Translation: if Cyrix provides the information, and if their chip
provides the technical ability for us to solve the problem, it'll get
solved...

---Jim Sokoloff, Papyrus

Jim Sokolo

Question for Jim/Adam about RENDDMA

by Jim Sokolo » Sun, 02 Feb 1997 04:00:00


Actually, it is (sort of) a hardware problem at the root of it all.
The root problem is that the DMA transfer seizes the bus for a short
period of time. This throws off the loop count in the joystick read.
The solution is to use another more accurate method to time the
joystick (if available). There's an undocumented Pentium cycle count
instruction which we use if the CPU reports itself to be a Pentium.
The Cyrix doesn't, and therefore, we can't use this extremely accurate
timebase, but use a loop count instead. The loop count is thrown off
by the DMA transfer, causing erratic joystick reads when using DMA and
a non-Pentium CPU.

I agree with you that compatibility is Cyrix's responsibility. In this
case, they have not acheived that goal 100%. If Cyrix is able to
provide a solution or work-around, we are willing to implement it.

---Jim Sokoloff, Papyrus

Jim Sokolo

Question for Jim/Adam about RENDDMA

by Jim Sokolo » Fri, 07 Feb 1997 04:00:00


After corresponding with a nice gentleman at Software Developer
Support at Cyrix, he informed me that the 5x86 and 6x86 do not support
the Pentium's RDTSC instruction. As such, they do not support the
"more accurate" joystick routines that we enable when we detect a
Pentium. (So, even if we detected the Cyrix chip, we couldn't use
RDTSC, so it wouldn't help the game at all...)

Cyrix SDS reported that the Cyrix M2 will support the RDTSC
instruction, and therefore, the correct joystick behavior will occur.

As the Cyrix chip does not support an instruction that the Pentium
does, and which is required to solve this "bug" report, Papyrus will
be unable to solve this problem as it is a hardware compatibility
issue with the Cyrix 5x86 and 6x86 chips. (They aren't Pentiums.)

---Jim Sokoloff, Papyrus

Jim Sokolo

Question for Jim/Adam about RENDDMA

by Jim Sokolo » Fri, 07 Feb 1997 04:00:00

Someone asked me (by private e-mail) "Why don't other games show this
same problem?" "Don't other developers use RDTSC?" "How about
Quake/TombRaider, etc.?"

I won't post his e-mail or name, as I think that would be rude w/o his
permission, but I'll post the answer I mailed him:

No, we use RDTSC anytime we can. (Why? Because it's more accurate than
just counting the number of times through a loop (while waiting for
the cap in the game card to charge up through the adjustable resistor
(potentiometer) in the joystick)...)

The number of times through a loop per microsecond is pretty constant
SO LONG as you aren't doing DMA over the computer's bus. No
appreciably variable amount of DMA is going on in the normal N2, and
non-DMA (i.e. slow-a**) Rendition mode. However, when we use the DMA
mode on the Rendition (very fast), it "steals" bus cycles from the
CPU, causing the CPU to run slightly slower. That would be fine if it
was a constant amount slower, but the card isn't doing DMA all the
time. The result is that when the card does DMA, our loop count goes
awry. (Note: the count also goes awry for other reasons, like the
serial port, but not nearly as much) But the RDTSC instruction returns
the number of "clocks" since powerup and is constant, no matter what
the CPU and/or video card are doing...

So, the RDTSC method of reading the joystick is dead-on accurate, and
the simple loop-counting method is not particularly accurate when the
video card is doing variable amounts of DMA over the bus...

Why do our games suffer "more" than Quake/Tomb Raider? Simple: our
game is more sensitive to slightly "noisy" joystick readings. (imagine
driving 200 mph and suddenly slamming the wheel 15 degrees to the
left. OK. Now imagine walking at "90%" to the right, and for a 1/10th
of second, only walk at 50% to the right, then resume walking at
90%... Not much noticeable difference (especially with rocket
propelled grenades going off everywhere... :-) )

---Jim Sokoloff, Papyrus

Yoshiki Mo

Question for Jim/Adam about RENDDMA

by Yoshiki Mo » Fri, 07 Feb 1997 04:00:00

Jim, thanks for taking your time to answer the question all the IBM/Cyrix CPU
users have been wondering for a long time.

This is exactly the answer I was looking for (technical and informative, yet
expained in the way that it is understandable), rather than incompetent
"senior" tech support (Hi Jay!) who kept telling me all the info that was on
Intergraph and Sierra Web site.

Keep up the great work.  You guys seems to be the only one who know how to
make racing sims.


"At the beginning of any project, a high level of e***ment
can be found with a low level of execution." - Trevor Harris


rec.autos.simulators is a usenet newsgroup formed in December, 1993. As this group was always unmoderated there may be some spam or off topic articles included. Some links do point back to racesimcentral.net as we could not validate the original address. Please report any pages that you believe warrant deletion from this archive (include the link in your email). RaceSimCentral.net is in no way responsible and does not endorse any of the content herein.