Home News Forum                            

Play your favorite classic games and more with the GameEx front end. Read more.

tenthdeg: MAME ROM Information.


Tenth Degree (c) 1998 Atari Games.


Atari Vegas hardware

Main CPU : R5000 (@ 200 Mhz)

Sound CPU : ADSP2104 (@ 16 Mhz)

Sound Chips : (2x) DMA-driven (@ 16 Mhz)

Screen orientation : Horizontal

Video resolution : 640 x 480 pixels

Screen refresh : 57.00 Hz

Palette colors : 65536

Players : 2

Control : 8-way Joystick

Buttons : 6


Tenth Degree (originally to be called "Juko Threat") was to be Atari's apparently failed attempt to join the great 3-D fighter genre. Unfortunately for Atari by 1998 Namco had released "Tekken 3" and "Soul Calibur" and Sega were onto "Virtua Fighter 3" and "Fighting Vipers 2", meaning that unless a 3D fighter really stood out it wasn't going to make an impact at all... It was dropped from production as it just didn't take any money during testing, it had nothing that hadn't been seen before, and the competition was just too advanced by the time it would reach full production.


Game's rom.

Machine's picture.

System 16; http://www.system16.com

MAME Info:

0.91u1 [Aaron Giles]

HardDisk required


- 0.119u4: Changed description to 'Tenth Degree (prototype)'.

- 0.102u5: Aaron Giles fixed subtle bug in the MIPS3 recompiler that prevented Tenth Degree from working.

- 21st December 2005: Aaron Giles - Figure out why Tenth Degree no longer worked. It used to, and I was sure it was due to the Voodoo rewrite. I spent quite a bit of time looking into that, assuming I was returning an incorrect value from the status register or something. Turns out I was completely wrong. Instead, an "optimization" I had made to the MIPS dynarec core a while back had a subtle side effect. The problem was literally with the particular opcode: slti r2,r3,$1. In the old dynarec core, that was translated as: mov eax,[r3.lo]; mov edx,[r3.hi]; sub eax,1; sbb edx,0; shr edx,31; mov [r2.hi],0 and mov [r2.lo],edx. The optimization I added was to convert code that subtracted 1 from a register to use the dec opcode instead, since it is more compact. So the new code was: mov eax,[r3.lo]; mov edx,[r3.hi]; dec eax; sbb edx,0; shr edx,31; mov [r2.hi],0 and mov [r2.lo],edx. Which is 4 bytes smaller, taking up less instruction/trace cache space. Multiply this over a lot of generated code and it has an impact. The problem is that dec eax is not quite the same as sub eax,1. Specifically, dec does not set the carry flag, meaning that the sbb instruction that followed would never "borrow" from the high word, messing up the math. So with that, Tenth Degree is working again, and better than ever. One thing I discovered in my recent research is that if certain values (red, green, blue, alpha, Z, and W) overflow during triangle rasterization, they are allowed to wrap in a slightly odd fashion. For example, if the red component increases from $FF to $100 to $101 over the course of several pixels, you would expect it to wrap from $FF to $00 to $01. But the internal microcode in the Voodoo actually checks explicitly for $100 and clamps it to $FF, while allowing $101 to wrap to $01. So what you actually get is a transition from $FF to $FF to $01. Why is this important? Well, let's say you are drawing a triangle such that the leftmost pixel has a red value of 0.0 and the rightmost pixel has a red value of 1.0. Converting these values to integers between 0-255 means the left value is $00 and the right value is $100. If the Voodoo allowed simple wrapping, that last pixel would be drawn as $00, showing up as an ugly black pixel right next to a bright red one. The simple clamping logic allows for a bit of slop of 1 on either the high or low side without producing artifacts. The upshot is that if you run an old build of MAME and look at Tenth Degree, you'll see lots of artifacts - unsightly black or white pixels that shouldn't be there. Implementing this clamping logic turns out to fix these problems. Mace: The Dark Age also suffered from the same problem to a lesser degree. I bet the Tenth Degree engine was based off of the Mace engine.

- 0.91u1: Aaron Giles added Tenth Degree (Atari 1998).

Recommended Games (Asian Fighting 3D):

Mortal Kombat

Mortal Kombat II

Mortal Kombat 3

Mortal Kombat 3 (bootleg of Megadrive version)

Ultimate Mortal Kombat 3

Mortal Kombat 4

Virtua Fighter

Virtua Fighter 2

Virtua Fighter 3

Virtua Fighter 4

Virtua Fighter 4 Evolution

Virtua Fighter 4 Final Tuned

Virtua Fighter Kids

Virtua Fighter Remix


Tekken 2

Tekken 3

Tekken Tag Tournament

Battle Arena Toshinden 2

Jackie Chan - The Kung-Fu Master

Jackie Chan in Fists of Fire

Psychic Force

Street Fighter: The Movie

Street Fighter EX

Street Fighter EX Plus

Street Fighter EX2

Street Fighter EX2 Plus

Dead or Alive

Dead Or Alive ++

Dead or Alive 2

Heaven's Gate


Soul Edge Ver. II

Star Gladiator Episode I: Final Crusade

Fighters' Impact A

Fighting Layer

Plasma Sword: Nightmare of Bilstein

Samurai Shodown 64

Samurai Shodown: Warrior's Rage

Soul Calibur

Tenth Degree (prototype)

Power Stone

Power Stone 2

Mazan: Flash of the Blade

Romset: 544 kb / 2 files / 288.4 zip

Harddisk: 3.01 GB (CYLS: 392, HEADS: 255, SECS: 63 - Compressed: 735.8)

MAME XML Output:

       <game name="tenthdeg" sourcefile="vegas.c">
              <description>Tenth Degree (prototype)</description>
              <manufacturer>Atari Games</manufacturer>
              <rom name="tenthdeg.bio" size="524288" crc="1cd2191b" sha1="a40c48f3d6a9e2760cec809a79a35abe762da9ce" region="user1" offset="0"/>
              <rom name="tenthdeg.snd" size="32768" crc="1c75c1c1" sha1="02ac1419b0fd4acc3f39676e7dce879e926d998b" region="dcs" offset="0"/>
              <disk name="tenthdeg" sha1="41a1a045a2d118cf6235be2cc40bf16dbb8be5d1" region="drive_0" index="0" writable="yes"/>
              <chip type="cpu" tag="maincpu" name="R5000 (little)" clock="200000000"/>
              <chip type="cpu" tag="dcs2" name="ADSP-2104" clock="16000000"/>
              <chip type="audio" tag="lspeaker" name="Speaker"/>
              <chip type="audio" tag="rspeaker" name="Speaker"/>
              <chip type="audio" tag="dac1" name="DMA-driven DAC"/>
              <chip type="audio" tag="dac2" name="DMA-driven DAC"/>
              <display tag="screen" type="raster" rotate="0" width="640" height="480" refresh="57.000000" pixclock="17510400" htotal="640" hbend="0" hbstart="640" vtotal="480" vbend="0" vbstart="480" />
              <sound channels="2"/>
              <input players="2" buttons="6" coins="4" service="yes" tilt="yes">
                     <control type="joy" ways="8"/>
              <dipswitch name="Unknown0001" tag="DIPS" mask="1">
                     <dipvalue name="Off" value="1" default="yes"/>
                     <dipvalue name="On" value="0"/>
              <dipswitch name="Unknown0002" tag="DIPS" mask="2">
                     <dipvalue name="Off" value="2" default="yes"/>
                     <dipvalue name="On" value="0"/>
              <dipswitch name="Unknown0004" tag="DIPS" mask="4">
                     <dipvalue name="Off" value="4" default="yes"/>
                     <dipvalue name="On" value="0"/>
              <dipswitch name="Unknown0008" tag="DIPS" mask="8">
                     <dipvalue name="Off" value="8" default="yes"/>
                     <dipvalue name="On" value="0"/>
              <dipswitch name="Unknown0010" tag="DIPS" mask="16">
                     <dipvalue name="Off" value="16" default="yes"/>
                     <dipvalue name="On" value="0"/>
              <dipswitch name="Unknown0020" tag="DIPS" mask="32">
                     <dipvalue name="Off" value="32" default="yes"/>
                     <dipvalue name="On" value="0"/>
              <dipswitch name="Boot ROM Test" tag="DIPS" mask="64">
                     <dipvalue name="Off" value="64" default="yes"/>
                     <dipvalue name="On" value="0"/>
              <dipswitch name="Unknown0080" tag="DIPS" mask="128">
                     <dipvalue name="Off" value="128" default="yes"/>
                     <dipvalue name="On" value="0"/>
              <dipswitch name="Unknown0100" tag="DIPS" mask="256">
                     <dipvalue name="Off" value="256" default="yes"/>
                     <dipvalue name="On" value="0"/>
              <dipswitch name="Unknown0200" tag="DIPS" mask="512">
                     <dipvalue name="Off" value="512" default="yes"/>
                     <dipvalue name="On" value="0"/>
              <dipswitch name="Unknown0400" tag="DIPS" mask="1024">
                     <dipvalue name="Off" value="1024" default="yes"/>
                     <dipvalue name="On" value="0"/>
              <dipswitch name="Unknown0800" tag="DIPS" mask="2048">
                     <dipvalue name="Off" value="2048" default="yes"/>
                     <dipvalue name="On" value="0"/>
              <dipswitch name="Unknown1000" tag="DIPS" mask="4096">
                     <dipvalue name="Off" value="4096" default="yes"/>
                     <dipvalue name="On" value="0"/>
              <dipswitch name="Unknown2000" tag="DIPS" mask="8192">
                     <dipvalue name="Off" value="8192" default="yes"/>
                     <dipvalue name="On" value="0"/>
              <dipswitch name="Resolution" tag="DIPS" mask="49152">
                     <dipvalue name="Standard Res 512x256" value="49152" default="yes"/>
                     <dipvalue name="Medium Res 512x384" value="16384"/>
                     <dipvalue name="VGA Res 640x480" value="0"/>
              <driver status="good" emulation="good" color="good" sound="good" graphic="good" savestate="supported" palettesize="0"/>
              <slot name="drive_0">
                     <slotoption name="hdd" devname="hdd" default="yes"/>
              <slot name="drive_1">
                     <slotoption name="hdd" devname="hdd"/>

emumovies.com      Retro bytes Portal           Bookmark and Share

Developed by: Spesoft  Headsoft     Terms of use     Privacy    Advertise