×

Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

How Death Rally Got Ported

Soulskill posted more than 3 years ago | from the not-the-opposite-of-starboarded dept.

Classic Games (Games) 89

An anonymous reader writes "Last year, I got the opportunity to port Remedy Entertainment's Death Rally to modern platforms off its original MS-DOS sources. I wrote an article about the porting process for Game Developer magazine, and now I've posted the text of the article for general consumption. 'The source software platform was DOS, Watcom C, and some Dos4GW-style DOS extender. The extender basically meant you could use more than 640k of memory, and would not need any weird code for data larger than 64k. The game displayed in VESA 640x480 and MCGA 320x200 graphics modes, all with 8-bit palettes; there was no true color anywhere. There were also some per-frame palette change tricks that emulators have trouble with. The source code was mostly pure C with a couple dozen inline assembly functions. There were a few missing subsystems, specifically audio and networking, which would have to be replaced completely anyway, as well as one file for which the source code was lost and only a compiled object was available.'"

cancel ×
This is a preview of your comment

No Comment Title Entered

Anonymous Coward 1 minute ago

No Comment Entered

89 comments

How I Got the First Post (-1)

morari (1080535) | more than 3 years ago | (#33211636)

I recall playing Death Rally back in the day. Pretty fun stuff. I'm glad it's still getting some attention.

Re:How I Got the First Reply (1, Funny)

Anonymous Coward | more than 3 years ago | (#33211650)

...by clicking "Click To Reply" (and using some inline assembler)

Re:How I Got the First Post (0, Redundant)

toastar (573882) | more than 3 years ago | (#33211656)

I take it dos-box didn't work?

Re:How I Got the First Post (2, Insightful)

TheJokeExplainer (1760894) | more than 3 years ago | (#33212364)

It didn't perform good enough under DOSBox.

Re:How I Got the First Post (0)

Anonymous Coward | more than 3 years ago | (#33212916)

Strangely that is the motive behind the port. I myself never had any problem with Death Rally on a Sempron computer.

p.s. changing output to something other than "surface" on Nvidia and Intel hardware will cure your "poor performance" problems in DOSBox. nvidia sucks at 8-bit color palette management. Crippled games... it's the way it's meant to be played. Screw them and buy COD:BO for your GTX. You're supposed to play that and not have your own decisions you lowly consumer human. You're not playing the way we meant our hardware to play.

Re:How I Got the First Post (3, Interesting)

PhrostyMcByte (589271) | more than 3 years ago | (#33211714)

As did I. Quake, Duke3D, Shadow Warrior, and Death Rally all came out in 1996 and I still play them regularly after all this time. I wonder what is it about those early years that keeps their games so appealing over time. Maybe they focused more on gameplay than graphics.

Neither, it's because they ARE The Games. (0)

Anonymous Coward | more than 3 years ago | (#33211984)

Nothing compares to them. Back in the day, you and I use to think about their stories and dream-up our own to fill-in the "holes" where the stories of these titles had holes. In effect, we also created a culture for ourselves to echo the involvement of our favorable marketing to our friends on how such a great game *pat*on*the*back* should be shared to our friends and play it together using our crippled network environment. Everything after these games will only compare to these games, because we're the one's that made Halo and Doom3; sure, they're appealing, but the story is soooo perfect that it lacked the fun-factor of ego that prevents each player from bleeding his or her own style onto the in-game model/actor. When you logged-in to a server of Quake3/Tremulous of Halo and you were fighting next-to some-other Finish or Nordic-like challenger named "Duke Bot", then you f*cking know that pretty graphics is all out the window becaus now it's about whoever has the rapid-response skills if not Wallhack to shake that AI.

Also, Death Rally was cool because just like what ID Software did to let Commander Keen into some of the last levels of Doom1, it is our beloved horny Hero on Steroids with a shotgun: Duke Nukem: that makes an appearance in Death Rally as a top-rated racer usually within 4th-place of the top drivers.

Of'course if you read this far in my post, then I'll let you know that I just made this all up. That's righht, just like the coders that made Rise of The Triad, I'm just a shell of a man that just wanted to show-off my skills to prod my childhood like I'm Adam "buttf*ck" Sessler to force everyone to think I'm a witty cunt just like Morgan "lowerjaw" Webb. I was originally going to write about about Nazzis, but the fine folks at ID already pushed their golden-star at my face so I'm just writing about something else that has 8 star-points instead of a 6-pointed star.

Warggarhhhhggggbbllleee!

Re:How I Got the First Post (1)

Draek (916851) | more than 3 years ago | (#33212098)

Nah, it's just they were great games. Daikatana is as old as those you mentioned, but I don't think there's a single Slashdotter that'd submit himself to play it again if they even finished it the first time around.

Re:How I Got the First Post (1)

MrNiceguy_KS (800771) | more than 3 years ago | (#33214710)

Daikatana is as old as those you mentioned,

Daikatana was originally planned to release Christmas of '97, so even if it had released on time, it would be a year newer than the others mentioned. Of course, it was finally excreted onto the market in 2000, so it's by no means as old as those mentioned.

Looking back at "classic" games is always done through the microscope of nostalgia. You remember the good ones and forget most of the rest, (with the exceptions of memorable cockups like Daikatana.) Anyone remember the glut of FPS's shortly after Doom? Or the RTS glut shortly after C&C and Warcraft?

Re:How I Got the First Post (0)

Anonymous Coward | more than 3 years ago | (#33223482)

Or the RTS glut shortly after C&C and Warcraft?

Hey now, Warcraft 2 was pretty good...

Re:How I Got the First Post (3, Insightful)

demonlapin (527802) | more than 3 years ago | (#33212218)

These were fun games, and it was really cool to be able to interact with objects in a 3D environment that was being generated on the fly, but modern games look and react better. You just happened to be there when we moved from side scrollers to 3D worlds, and it's like the first girl you ever kissed: there's nothing really that special about her, except to you.

Re:How I Got the First Post (1, Funny)

Anonymous Coward | more than 3 years ago | (#33213028)

Im afraid this analogy does not work in Slashdot...

Re:How I Got the First Post (1)

morari (1080535) | more than 3 years ago | (#33215484)

Not a lot of modern FPS react better than Quake.

Re:How I Got the First Post (0)

Anonymous Coward | more than 3 years ago | (#33216284)

Says the guy who hasn't played anything since Quake.

Re:How I Got the First Post (1)

morari (1080535) | more than 3 years ago | (#33223010)

I hadn't played anything too seriously since Quake3 and Unreal Tournament 2K4. Truly fun competitive FPS seems have died after that. I do greatly enjoy the Left 4 Dead franchise however, which goes to show that the genre isn't a complete bust nowadays.

Re:How I Got the First Post (1)

Spatial (1235392) | more than 3 years ago | (#33216022)

People like to chalk it up to nostalgia but it's not true. Many older games are better in every way than their modern counterparts save for the graphics and physics.

I played Deus Ex and System Shock 2 for the first time in 2008, nearly a decade after they were released. They're now my favourite games of all time.

My favourite strategy game is X-Com. I played that for the first time in 2009, 15 years after release.

I played Doom 2 in 2007, three years after Doom 3. The latter is fun, but a stinking turd in comparison to its masterfully designed predecessor.

The list goes on and on. I've played almost every major modern videogame released for the PC. In a lot of genres the bar was set a decade ago and has yet to be reached again.

Re:How I Got the First Post (1)

mdwh2 (535323) | more than 3 years ago | (#33215628)

Quake, Duke3D, ... Maybe they focused more on gameplay than graphics.

I'm amused at the irony of referring to games like Quake as "gameplay rather than graphics" :)

When Quake came out, the most notable thing about it was how it was pushing the graphics barrier. Sure Quake was fun too, but I still remember people sitting around saying "But all these older games I like playing from the 80s are so much more fun, developers should concentrate on gameplay rather than graphics!" And indeed, the FPS genre since then has been the main one that such criticisms have been made against.

Re:How I Got the First Post (1)

pinkushun (1467193) | more than 3 years ago | (#33225678)

That is ironic, wow. Quake was revolutionary, in that it moved away from pixel/raster rendering to polygons, but it's lineage came directly from real, fun games too. That's why Quake pioneered such new gaming techniques such as rocket jumping, fragging and infatuation with zombies :)

Full disclosure: I spent a few hours last night paying Death Rally, and wish I was at home now so I can play more!

Re:How I Got the First Post (1)

bigrockpeltr (1752472) | more than 3 years ago | (#33215956)

Shadow warrior probably has the best lines of any video game ever! "Whoo wants some Waanngg" or "Do you want to wash wang? Or do you want to watch Wang wash wang? "

This reminds of many hours wasted on my Apple ][e (1)

JoelWink (1846354) | more than 3 years ago | (#33211676)

...playing Autoduel [wikipedia.org].

Aw gee shucks well howdy doncha know. (0, Insightful)

Anonymous Coward | more than 3 years ago | (#33211678)

"some Dos4GW-style DOS extender"
"would not need any weird code for data larger than 64k."
A little too folksy for this crowd I'm afraid.

slashdotted (-1, Troll)

socsoc (1116769) | more than 3 years ago | (#33211744)

I'm sorry, I get the nerd part, but where is the news part? The article was slashdotted less than 20 mins after posting, so I don't get what your point is.

Death Track (1)

Culture20 (968837) | more than 3 years ago | (#33211760)

How does it compare to Death Track [abandonia.com] or Death Track Resurrection?

Re:Death Track (0)

Anonymous Coward | more than 3 years ago | (#33211904)

Jerry says Death Blow ***ROCKS***

Re:Death Track (2, Informative)

Anonymous Coward | more than 3 years ago | (#33211934)

Unlike Death Track... Death Rally is actually playable, and isn't rated up for its age and nostalgia filter like that rose-tinted young idiot like many on that site have "reviewed" and putting up broken rips of games that often get DOSBox bug reports because abandonia is a bunch of morons that upload bugged rips. Some "preservation" mission they've got there, if they were serious about that, pristine disk images and complete manual and feelies scans would have been done... but nah, to 'own' a DOS game in their view, means getting a collection torrent. Kids running sites about 80's games = disaster.

So yeah, Death Rally >>>>>>>>>> Death Track.

Re:Death Track (1)

hitmark (640295) | more than 3 years ago | (#33222012)

could be what is there is the best that could be found 20+ years later.

floppies are fragile after all.

Re:Death Track (0)

Anonymous Coward | more than 3 years ago | (#33223352)

What? My 30-year-old floppy games image to perfection without a bad sector. Maybe if you had kept your mountain of empty stained soda cans and tissues off your floppies, they would have survived worth a damn.

Re:Death Track (1)

TheJokeExplainer (1760894) | more than 3 years ago | (#33212454)

It's a top down racer and a completely different animal, like the Micromachines games on NES. As such, it's a completely different animal and I don't enjoy it much because of the limited size of the map you see.

Death Track was awesome. Resurrection was an absolute abomination that tarnished the name.

This game was created by members of Future Crew (4, Insightful)

Anonymous Coward | more than 3 years ago | (#33211804)

I remember when this game came out. It was created by some members of the demo group Future Crew [wikipedia.org]. The soundtrack features track(s) by Purple Motion.

I wonder what the code looked like! Demoscene coders were known to optimize the heck out of it for speed. I remember this game was super impressive and smooth on the barely-pentium computers in 1996. Not to mention fun.

Re:This game was created by members of Future Crew (3, Interesting)

TheJokeExplainer (1760894) | more than 3 years ago | (#33212402)

Members of Future Crew turned into Remedy Entertainment later on. The Demoscene [scene.org] is awesome.

A number of people who work in the industry today came from the demoscene. [bitfellas.org]

Mikko "Memon" Mononen, founder of Demoscene group Moppi Productions [inside.org] and developer of the legendary Demopaja Demotool, is a programmer at Crytek, located in Frankfurt, Germany. He expanded the company-owned CryEngine with spectacular effects.

Graphics artist Xenusion of the group Plastic [nazwa.pl], an exceptionally gifted graphician, participated in demos such as 195/95 and Final Audition. He's been working on the fascinating world of Crysis as a concept artist.

Re:This game was created by members of Future Crew (0)

Anonymous Coward | more than 3 years ago | (#33215024)

Funny how that article mentions Starbreeze (the developers of Enclave and the Riddick games), but neglects to mention that Starbreeze is comprised of former members of the demo group Triton, famous for the demos Crystal Dream and Crystal Dream II.

Slashdotted to hell (4, Informative)

icebraining (1313345) | more than 3 years ago | (#33211858)

Copy from Google Cache:

Porting from DOS to Windows
Step by step through Death Rally's journey to the new millennium

This article first appeared in April 2010 issue of Game Developer Magazine, Inner Product, pages 38-41. With a better layout. And pictures.

So, the 'last May' below refers to May 2009.

Max Payne / Alan Wake creator Remedy's top down combat racing game Death Rally was released for DOS computers in 1996, and although it does run under the open source DOSBox emulator, it doesn't run very well. I felt that Death Rally was still a good game and wanted to get it into a playable form again.

So last May I got an idea, and thought, "what the heck, let's go for it." I sent an email to Remedy Entertainment, volunteering to make Death Rally open source. I didn't expect a reply; at the most, I expected a polite "no." Much to my surprise, I got a "maybe."

After a couple weeks of legal checking, we agreed that while an open source release would not necessarily be possible, we could probably work something out. And so it came to be that in July, I downloaded the source package for evaluation.

The first task would be to take a cursory glance at the material and see if the project was actually possible. I expect some of you to wonder whether there was any funny code. Sure there was. Take a peek at any large project you've done as a teenager over a decade ago and see if there's any funny code in there. I couldn't find anything truly "daily wtf"-worthy, though, and what I did find wasn't anything a few days of refactoring wouldn't fix.

Instead of refactoring, I took an archeologist's approach - I made minimal changes and marked my transgressions clearly in the source code.
Starting Blocks

The source software platform was DOS, Watcom C, and some Dos4GW-style DOS extender. The extender basically meant you could use more than 640k of memory, and would not need any weird code for data larger than 64k.

The game displayed in VESA 640x480 and MCGA 320x200 graphics modes, all with 8-bit palettes; there was no true color anywhere. There were also some per-frame palette change tricks that emulators have trouble with.

The source code was mostly pure C with a couple dozen inline assembly functions. There were a few missing subsystems, specifically audio and networking, which would have to be replaced completely anyway, as well as one file for which the source code was lost and only a compiled object was available.
Getting It To Compile

First order of the day: get the game to compile. I started a Visual Studio project, imported all source files, and checked what the compiler would say.

The Visual Studio and Watcom compilers disagree on several points, which is hardly surprising as the Watcom version used was about a decade older than the Visual Studio I used.

One of the obvious things is that Watcom considers chars to be unsigned, while MSVC sees them as signed by default. There's a compile option in MSVC for this, but in order to avoid confusion further down the line, I opted to do some search-and-replace operations to designate all chars unsigned (except for those that were explicitly set to be otherwise).

MSVC is also much pickier about types, so I got lots and lots of warnings, and even errors in some cases. Most of these were relatively easy to fix - some typecasts here, a prototype added there, sprinkle some parentheses around. One rather tricky bit was where Watcom and MSVC disagreed slightly on requesting the address of an array, so I had to manually patch things up in a few hundred places.

After fixing a truckload of errors and warnings, and stubbing all assembly functions as well as other missing symbols, I ended up with about 90 functions that needed rewriting.
No More Hardware Access

In DOS, there's not much of an operating system in your way. You could, and in many cases you must, access hardware features directly. For instance, graphical video memory was mapped to the real-mode segment 0xa000. This segment was usually (if not always) mapped to the direct address 0xa0000 in DOS extenders.

Higher-resolution VESA modes could be accessed most commonly in banks through the above segment. If you wanted to access more of the memory, you used some interface to switch memory banks, and then accessed the same segment again. Thus, the applications set a graphics mode (and possibly segment) and accessed the video memory directly.

I solved this by allocating a frame buffer big enough for 640x480 and creating a global variable g0xa0000, replacing all direct addresses with said pointer. The pointer would be updated to the beginning of the frame buffer on mode init, and to different offsets based on the bank switch calls.

Other video features were accessible through hardware I/O ports. The most important were the vertical retrace check and palette access. These I replaced with completely separate functions.
Data I/O

That one object file with no source code happened to house decompression functions for the game data. I disassembled it and wound up with about five hundred lines of assembly, which, from a cursory glance, did not look like the output of a compiler. Not completely inspired to reverse engineer the code at this point, I took a shortcut to more interesting things by using the object file to make a DOS application (using OpenWatcom) which decompressed all the game's data files, and wrote a simple hack to access the decompressed files instead. This was clearly not a final solution, but it allowed me to progress.

There were some small problems with this approach. Audio files were in a differently encrypted format, and some of the game's small animations were handled differently in the decompressor with parts of the data compiled into the executable instead of the data file.

I made a note that while the cutscenes were also compressed, the source code for the decompressor was in C. So if both compression algorithms were written by the same person, the algorithms might also be similar.

A few days (and a dozen rewritten inline assembly functions) later, I came to the realization that I had to get that decompression function to work. Strange bugs had started to crop up, most likely caused by bad or completely missing data not produced by my temporary hack.

Trying to find another easy way out, I compared the characteristics of the code with known compression algorithms, discarding most of them due to the requirement of overly large lookup tables or code complexity. The source code to Info-ZIP is invaluable for these kinds of things, as it implements most common compression algorithms, not only the ones found in modern ZIP formats. In the end, it was clear this was a proprietary algorithm, so I really did have to dive in.

I spent a couple days poring over the code and trying to re-implement what it does in C. Once I understood what the assembly code was doing, I took another glance at the section that decompresses the cutscenes and realized it's almost the same - except for some additional encryption. I made a variant of that code and the data problems went away.

With that bit done, I took a look at the audio files which had an additional layer of encryption. At this point, My Remedy contact, Markus Mäki, commented, "Who on Earth has been encrypting all these things and why?" Luckily, the source code to decrypt the audio files was found.
Application Framework

The way applications work in DOS is somewhat different from what most people are used to these days. Control was entirely in the application's hands. There wasn't any multiprocessing to worry about, and you could pretty much depend on the characteristics of the de-facto VGA standard. If there were problems, users were expected to manually play around with system configuration text files.

Since the whole game was vertical retrace-synced (at VGA 70Hz), it made sense to place the OS message pump and graphics output into the vertical retrace check function. This worked beautifully, except for places where the game did not bother to wait for retrace (such as simply showing something on-screen and waiting for a key in a busy loop). No retrace check, no message pump, no keys pressed. Adding the retrace checks to the loops naturally fixed the issue. // Copy image to screen
memcpy((char*)0xA0000, myImage, 64000); // Wait for key press
getch();

Copy data directly to video memory and busy wait for key - perfectly legal in the DOS era.

The game also utilized a timer interrupt that ran in sync with the video refresh rate. I did not bother trying to make a separate thread to make it run exactly at 70Hz, and simply called the interrupt routine at approximately 70Hz in my message pump code. One positive side effect of this approach was that the per-frame palette-change tricks worked automatically.

I also wrote some placeholder keyboard handling code, which much to my surprise, worked directly. Apparently, the SDL scan codes match whatever DOS had, or came close enough.
Connecting The Dots

Instead of converting one inline assembly format to another, I rewrote all the functions in C. I think the result was actually not slower, as compiler optimization technology has improved a lot and the original assembly was written with original Pentiums (or worse) in mind.

Most of the assembly functions were little things, like rectangle copy or bit mask matching, and did not take too much effort to write. First the menus, then the in-game graphics started to come into view. This part was pure joy - not so different from eating pistachio nuts: each bite takes a little effort, but has a huge payoff. I always wanted just one more, making it very difficult to call it a day.

One final piece of assembly was the polygon filler. In this area, I opted not to faithfully reproduce the original code, but wrote a software rasterizer from scratch, so if you see the polygon filler glitch, that's probably my fault.

It had been about three weeks and the game was playable. Still no sound and tons of small things to do, but playable.
Audio

Next up was audio. The game used Scream Tracker S3M modules for music and Fast Tracker 2 XM modules for sound effects. Why both were not in the more advanced XM format, I do not know. Maybe XM for sound effects was a later addition, or maybe the composer preferred the S3M format. Music was relatively easy to handle, except for a small glitch where the replacement audio system was optimizing things a bit too much.

The game used a trick that was common in those days, where you place several looping songs into one module and instruct the replay routine to switch between the songs by jumping to a certain order number. The songs in question had some empty orders between songs, and these got optimized out, messing up the sub-song order numbers. Luckily, the order list was easy to read from the S3M directly, so I could make simple translation tables from optimized to original and back. The sound effects, however, took a lot more effort.

After several false starts, including writing a complete XM module loader, I took the open source XM player minifmod and made some severe modifications to it in order to use it as the sound effects library. The original sound library had a notion of "pitch" that wasn't in Hertz, but in something related to the notes. I had to invent an algorithm that approximated the conversion from the original "pitch" to a relative note. While the result is probably not exactly the same, it kind of feels right.
Graphics

I started off with the idea that since the original game used two graphics modes, I might do the same. Unfortunately, the 320x200 mode did not work out, so I opted to only use one graphics mode - 640x480 with a simple scaler for the 320x200 mode. The bad side of this decision was that the aspect ratio for the 320x200 mode was wrong. I could have spent a long time making some kind of weaving algorithm to turn 640x400 into 640x480, but opted to just add black bars at the top and bottom instead.

This got the graphics going quickly. In testing, however, we found that some non-4:3 aspect ratio LCD screens stretched the image, and for dual-screen systems, switching to 640x480 moved all the other windows in an irritating manner.

Near the end, I figured it would be best to use OpenGL to scale the frame buffer to screen at desktop resolution. This would solve several issues, including the 320x200 screen mode aspect ratio. In high enough target resolution, the 320x200 looks pretty authentic when using point-sample texture lookup. I was originally wary of this approach because of possible performance concerns on low-end 3D hardware, but testing on some low-end Intel chipset mini-laptops cleared these issues.

Implementing the OpenGL blitter was easy, but it uncovered a nasty issue. While I was running in software, the display update was not synced to the display refresh rate. With OpenGL, it was. The game's internal clock was fixed to the 70Hz VGA refresh rate, which I was faking. The way I implemented the vertical retrace meant that whenever the application even asks about the retrace - not only when it was waiting for retrace - we'd do the message pump and display would update (up to 70Hz, anyway).

The in-game graphics were requesting information about the retrace about 50 times per frame in the worst case. Different aspects of the game world were asking which frame we were on for animation timing purposes. While doing the message pump, we had no idea whether we would have a new screen to show or not. As a result, we spent a few milliseconds here, a few milliseconds there, and suddenly had to wait for display refresh, wasting a dozen milliseconds and so on, until the game was crawling at about 1Hz.

In order to solve this, I made two changes. First, whenever the code asked about the retrace, I'd increment the "current frame" value by one and return that, instead of jumping to the correct real-world value I was doing originally. The exception was, if we had already caught up with the real world, in which case, the current value was returned. This solved the slowdown issue everywhere else except in-game.

I added a hack for this: a flag which disables the display update. I set this flag on for all other parts of the game loop except when actually waiting for vertical retrace.
Rally Crossed

And so the port was done. One major part which was unfortunately left out was the multiplayer networking, as it would have required a non-trivial rewrite. Apart from cosmetic changes, the game is the same as its original DOS counterpart: you now exit to OS instead of DOS - I also added a few additional delay loops where loading times have become insignificant and other little touches like that.
Pitfalls

By now, you may have noticed that all the issues I faced with the porting have to do with technologies that have changed, and in most cases, improved with time.

Apart from the speed, memory protection, and compiler issues mentioned earlier, there's one more thing that has also changed with time: quality requirements.

Back then, PCs were not even as standard as they are now. There was no process memory protection, and in general, it was okay for programs to do all sorts of funny things. Sometimes they crashed, and this was considered acceptable within reason. After all, some PCs were more stable than others. Still, these bugs haven't gone away, and you may have to add in some additional bug-hunting time for your modern port.

Luckily for me, the Death Rally codebase was pretty stable. Still, I spent some time hunting bugs that occurred rarely, and in some cases, never appeared on my development system. A few crash cases were due to my own misunderstanding of some of what was happening in the source; some were actual bugs in the original code, but they were all more or less simple to fix or work around.

Death Rally was released as freeware for Windows and can be downloaded from www.death-rally.com. I hope you enjoy it as much as I have!
Project at a Glance

Original specs:

        * DOS (w/extender)
        * Watcom C
        * MCGA 320x200x8
        * VESA 640x480x8
        * 60-plus MHz CPU
        * 8MB RAM

New specs

        * Win32
        * MSVC7.1
        * 16 or 24 bit color
        * in various resolutions
        * 1-plus GHz CPU(s)
        * 1-plus GB RAM

Now that this project is over and done with, I'd love to get my hands on several other classics - preferably as open source. Some of the classics I'd love to port into modern systems include:

        * Ignition by Unique Development Studios (UDS)
        * Terra Nova: Strike Force Centauri by LookingGlass Studios (LGS)
        * Little Big Adventure 1 and 2 by Adeline Software International
        * Outcast by Appeal
        * Dune by Cryo Interactive

Unfortunately, pretty much all of the above are in legal gray area, as the developers and/or publishers have gone bankrupt. I haven't been able to dig up who owns them, or if the source code still exists.

Additionally, companies like EA and Infogrames are sitting on piles of rapidly decaying cultural heritage, including the whole portfolios of Bullfrog and Origin.

I have sent some mails to companies who I believe own the IP of some ancient games, but haven't heard back. On the other hand, figuring out whether they own the IP, or if any of the original material still exists, takes time and effort, none of which generates any revenue..

Some companies have released older games as freeware to drive sales of a reboot or a modern sequel, so that might be one angle.

In any case, I'd love to see them open sourced. Toss me a mail if you have any idea.
Site design & Copyright © 2010 Jari Komppa
Possibly modified around: August 06 2010

Re:Slashdotted to hell (2, Insightful)

buchner.johannes (1139593) | more than 3 years ago | (#33211980)

Original specs: ...
                * 60-plus MHz CPU
                * 8MB RAM

New specs: ...
                * 1-plus GHz CPU(s)
                * 1-plus GB RAM

why?

Selling computers, perhaps? (1, Insightful)

Anonymous Coward | more than 3 years ago | (#33212022)

I don't consider that a port: that's an abortion.

Head on over to CurmudgeonGamer.Com and get something more worth your while. What are they secretly booting a modified VM with FreeDOS and then running Death Rally.exe as a shell and trapping anyone from seeing what they're doing? Just...just stop ruining my memories, all you 6-year-olds that watched me play when the games came out. Now all these young-blood 22-year-old College students are earning their U$30K College-duhploma debt and start nagging at my pristine gaming memories by tampering with purrfffect code of the passssttttt.

The Specs! NoooooooOOO!

Re:Selling computers, perhaps? (2, Insightful)

kiddygrinder (605598) | more than 3 years ago | (#33213016)

hey, if you think you can do better maybe you should have had a crack at it? also you may have noticed that he was paying more respect to the code than trying to get the thing to go as fast as possible, so indirectly he was doing exactly what you want :)

Re:Selling computers, perhaps? (0)

Anonymous Coward | more than 3 years ago | (#33221718)

bleh bleh bleh bleh CODE bleh bleh blah vlah you want. :-)

Re:Selling computers, perhaps? (1)

notknown86 (1190215) | more than 3 years ago | (#33213650)

I don't consider that a port: that's an abortion.

CurmudgeonGamer.Com? That's not a site, it needs an abortion.

Re:Slashdotted to hell (1)

LambdaWolf (1561517) | more than 3 years ago | (#33212096)

Off the top of my head, to support higher-overhead system calls to the modern platforms it's being ported to, probably.

Re:Slashdotted to hell (0)

Anonymous Coward | more than 3 years ago | (#33212470)

Original specs: ...

                * 60-plus MHz CPU

                * 8MB RAM

New specs: ...

                * 1-plus GHz CPU(s)

                * 1-plus GB RAM

why?

This was the porting target; the game will quite likely run on less hardware =)
This was just to underline that the times, they have changed.

Re:Slashdotted to hell (1)

Creepy (93888) | more than 3 years ago | (#33215996)

Which makes sense - while the game would play on something significantly less, the OS and libraries would take significantly more resources.

And man, does that bring back porting nightmares - I ported some stuff from DOS to Mac circa MacOS 7 (maybe even 6... long time ago - pre-Codewarrior, which was my preferred mac tool later on) and having to deal with 64k and 640k barriers on DOS and 32k paging on the mac was probably the most frustrating thing about it. The code was all C and printed lots of C strings, so I also had to add lots of Pascal string endings on the mac, which was also a pain (and no, it was not easily localizable - if I had the same situation today I would have moved those strings to resources). Probably the easiest thing was porting the graphics, which was more because I wrote the Quickdraw code from scratch (all of that code was assembly) and created the palette visually in rezedit.

Re:Slashdotted to hell (0)

Anonymous Coward | more than 3 years ago | (#33212812)

FTA:

One final piece of assembly was the polygon filler. In this area, I opted not to faithfully reproduce the original code, but wrote a software rasterizer from scratch

Well there you have it.

Re:Slashdotted to hell (1)

Jedi Alec (258881) | more than 3 years ago | (#33213228)

Ahhh, the original Dune. About once a year I fire up dosbox and play it from beginning to end just for nostalia's sake.

"Hello Paul. I'm duke Leto Atreides, your father."

Gee, thanks for reminding me...dad.

Additionally, companies like EA and Infogrames are sitting on piles of rapidly decaying cultural heritage, including the whole portfolios of Bullfrog and Origin.

Yeah, thanks for that. Instead of spending my next weekend in a productive way I'll be stuck replaying Syndicate. ;-)

Re:Slashdotted to hell (0)

Anonymous Coward | more than 3 years ago | (#33214824)

Cryo used a FM synth sound system that was far more advanced than the other games. Just listen to any of the tunes in Dune or MegaRace and compared them to your average FM synth/Adlib music from any other game.

On topic, this guy has the right idea. I'd LOVE to have ports for modern systems of Terra Nova and Dune.

Little Big Adventure already has a Windows patch [lbahq.com] (get "LBA Win", NOT "Win XP Patch"), while Little Big Adventure 2 already runs natively on Windows.

Outcast also runs fine on modern Windows, but if this guy could develop a patch that allows you to bump the resolution up past 640x480 (the maximum using a patch) and maybe dump some of the engine load off to GPU (Outcast uses a voxel engine), that could be worth it. There is already some progress in this area here [intercon.ru]. The "Outcast Lives Forever" program is a viewer for the worlds in Outcast that features a bunch of new graphics mode and effects.

Re:Slashdotted to hell (1)

Spamalope (91802) | more than 3 years ago | (#33215122)

No multiplayer? In the mid 90s we'd wired the 4-plex I lived in with ethernet and Deathrally was one of the games we played after work. We even managed to play it over the Internet with Kali although the latency was a gameplay problem.

Deathrally really shined in competitive play. I hope it gets added at some point!

Coral Cache (1)

muphin (842524) | more than 3 years ago | (#33211896)

why dont people use the coral cache anymore???

all you do is add nyud.net to the domain and no more slashdot effect, e.g http://www.remedygames.com.nyud.net/games/deathrally [nyud.net]

Re:Coral Cache (1)

LocalH (28506) | more than 3 years ago | (#33211922)

That's not what got slashdotted...

Re:Coral Cache (1)

JackieBrown (987087) | more than 3 years ago | (#33212058)

why dont people use the coral cache anymore???

My work blocks those links as "proxy avoidance"

Re:Coral Cache (0)

Anonymous Coward | more than 3 years ago | (#33212746)

Yes, but if the entire slashdot shock-wave was directed to the coral cache, chances are the original server would remain solid and non-flaming, and you could still access it...

Still fun (2, Informative)

pinkj (521155) | more than 3 years ago | (#33211974)

I used to play this game all the time in high school. I installed the port and played it for 40 minutes just now. I needed to tear myself away it was so fun! I still remembered the little tricks like lagging behind for the first quarter of the first lap so the other cars would deplete their ammo on themselves instead of you. And I never realized that the item on the track that got you "drunk" was actually a mushroom!

Cool where is the Linux version? (2, Interesting)

Anonymous Coward | more than 3 years ago | (#33212018)

Or the MacOSX version. Doesn't seem that hard to port a DOS game to those other platforms at the same time, given that an old DOS game isn't going to use a bunch of Windows APIs that are tough to port.

Death Rally's Music & Six Degrees of Separatio (5, Informative)

rsmith-mac (639075) | more than 3 years ago | (#33212038)

It's time for a game of Six Degrees of Separation: Future Crew Edition

Next up was audio. The game used Scream Tracker S3M modules for music and Fast Tracker 2 XM modules for sound effects. Why both were not in the more advanced XM format, I do not know. Maybe XM for sound effects was a later addition, or maybe the composer preferred the S3M format.

The music's composer was Jonne Valtonen [wikipedia.org], however for any of you familiar with the PC demoscene, you'd probably better recognize him as Purple Motion. In the early-to-mid 90s, Purple Motion was a member of the Future Crew [wikipedia.org], the famous Finnish demo group responsible for the legendary demo Second Reality [wikipedia.org], the same demo on which Purple Motion was the principle musician.

The Future Crew often wrote their own tools; one of those tools was Scream Tracker [wikipedia.org]. Purple Motion didn't write it (he wasn't a coder nor a member of the Future Crew at the time), but it was the tracker software he used for all of the Future Crew demos he worked on. Ultimately he's responsible for a number of the masterpieces written in Scream Tracker.

This brings us to Death Rally. When the Future Crew split up in 1995, the bulk of the members gravitated towards a new company started by former Future Crew members: Remedy Entertainment. Remedy is of course is the developer of Death Rally and Purple Motion was one of the Future Crew members to move to Remedy.

And thus, this is why the music for Death Rally is written in Scream Tracker 3. Death Rally's music composer came from the group that created Scream Tracker in the first place, and that was the tracker software that he had the bulk of his composing experience with. And while I obviously can't speak for him, I'd imagine he preferred S3M.

Future Crew documentary from ASM 2010! (4, Interesting)

antdude (79039) | more than 3 years ago | (#33212162)

I submitted this to /. [slashdot.org] a few days ago, but I guess no one cares:

"The Demoscene Documentary [demoscenedoc.com], with an embedded video that seems to show English closed captions/subtitles overlay correctly, and Pouet [pouet.net] mention a seventeen minutes and 10 seconds Finnish YouTube video [youtube.com] (turn on its "Transcript" option to read the English texts to go with the video) showing a "documentary episode about the world famous Finnish demogroup, Future Crew [wikipedia.org]. First presented at Assembly [assembly.org] 2010..."

Re:Future Crew documentary from ASM 2010! (1)

rsmith-mac (639075) | more than 3 years ago | (#33212182)

I did not know about this. Thank you!

Re:Future Crew documentary from ASM 2010! (1)

antdude (79039) | more than 3 years ago | (#33212266)

No problemo! It just came out over the weekend due to Assembly 2010 [assembly.org]. :) Now, if /. editors would post my story for everyone to see. [grin]

Re:Future Crew documentary from ASM 2010! (2, Insightful)

rsmith-mac (639075) | more than 3 years ago | (#33212446)

This is Slashdot: Kdawson will probably post it with a completely screwed up summary in a couple of weeks. (And I really wish I was kidding)

Re:Future Crew documentary from ASM 2010! (1)

antdude (79039) | more than 3 years ago | (#33212468)

Hahaha, then I will link to my comment. I wonder if we can link to my original submission.

Re:Death Rally's Music & Six Degrees of Separa (0)

Anonymous Coward | more than 3 years ago | (#33215314)

Second Reality, the same demo on which Purple Motion was the principle musician

If I remember correctly (and I do since I still have the S3M files), the soundtrack for Second Reality was split between Purple Motion (Jonne Valtonen) and Skaven (Peter Hajba). In fact, Skaven's contribution to the soundtrack totals a little over 8 minutes while Purple Motion's contribution is only about 6 minutes and 45 seconds.

If anybody can (0)

Anonymous Coward | more than 3 years ago | (#33212048)

How about a port of the original Carmageddon? It was DOS with the DOS extender and had decent graphics on VooDoo cards. Of the three in the series, it was the most fun to play.

Why don't companies take advantage of free porting (0)

Anonymous Coward | more than 3 years ago | (#33212110)

Why don't companies take advantage of free porting? Just drop your old sources online, tell us how you want us to license our new source code, and let us sort it out. Only you have the right to sell a game with that copyrighted content still in it, so it's not like you're giving anything away.

not quite the first (0)

Anonymous Coward | more than 3 years ago | (#33212780)

This game sounds a lot like a game from 1989 called Death Track.
It was a racing game which featured purchasing lethal weapons. Mines, machine guns etc.

http://en.wikipedia.org/wiki/Deathtrack

Dark Sun (SSI Gold Box) (1)

ggambett (611421) | more than 3 years ago | (#33213244)

For years I've wanted to port Dark Sun I and II to modern architectures. Since the games have been released as freeware a few years ago, I don't think there's any good reason to avoid such a port; however, I've been unable to track down someone who can give me access to the source code (and I have good reasons to believe it does exist somewhere).

If anyone happens to know who may be contacted regarding this, please let me know...

Re:Dark Sun (SSI Gold Box) (1)

neminem (561346) | more than 3 years ago | (#33228852)

While you're at it, perhaps you could fix some of the ridiculous crippling bugs in the second one? (That said, I've never had any trouble getting either of them to run on XP, without dosbox or anything. Just saw a whole lot of game-becomes-unwinnable bugs in WotR. Man, I haven't thought about that series in *years*...)

But (-1, Redundant)

Anonymous Coward | more than 3 years ago | (#33213402)

does it run on Linux?

Why's it called "Death Rally" anyway? (1)

DNS-and-BIND (461968) | more than 3 years ago | (#33213438)

So, why is this game called Death Rally? I had some vague memory of it, and sure enough I played it for a while back when it was new. There's no running people over for points. There are spectators on the race track but you get nothing for mowing them down, in fact it's a bad idea as it slows your car.

I'm surprised this got republished at all. It's got Duke Nukem in it with his portrait, and he says, "Hail to the King, baby!" when he wins the race. It also has a digitized sample of Tommy Chong saying, "Whoa, man" in his best pothead voice (when you run over the hallucinogenic mushroom that makes the screen sway crazily around - it's this VGA screen warping routine that I'm sure was utterly useless but the author repurposed to this clever end).

I read... (1)

bagsta (1562275) | more than 3 years ago | (#33213608)

... the article about porting the game and I found it interesting. It would be better, though, to be open source and would be able to compare the changes in the code, just for educational purposes. Recently I came across with a rather interesting article [fabiensanglard.net] describing the process of porting the open source code of Doom to iPhone.

I read... (1)

bagsta (1562275) | more than 3 years ago | (#33213692)

... the article and I found it interesting. But it would be more interesting if the code was open source and could see all these changes with our eyes, just for educational purposes. A nice article [fabiensanglard.net] that I came across lately just review the code of Doom which ported to iPhone by iD [idsoftware.com].

Wonderful analogy (1)

mewsenews (251487) | more than 3 years ago | (#33216076)

From the article, regarding re-implementation of assembly functions:

Most of the assembly functions were little things, like rectangle copy or bit mask matching, and did not take too much effort to write. First the menus, then the in-game graphics started to come into view. This part was pure joy - not so different from eating pistachio nuts: each bite takes a little effort, but has a huge payoff. I always wanted just one more, making it very difficult to call it a day.

That's the joy of programming in a nut shell!

Duke Nukem (0)

Anonymous Coward | more than 3 years ago | (#33217088)

Remember to pick the Duke Nukem character and name it appropriately. You'll get extra an Duke comment when you win :-)

Brings bk memories (1)

shane chauhan (1876410) | more than 3 years ago | (#33220474)

This game is available for full download from the developer's website last time I checked. The grpahics and top down bird's eye view was one of the features that made the game "stand out" . V simimilar to the first GTA that came out althought that took the top down view to a whole new level in terms of scale being not just a race track but an entire city. Anyways bk to the article - interesting bit of news I didnt know lol

Nostalgia (0)

Anonymous Coward | more than 3 years ago | (#33222864)

You have to be a true old-school coding geek to enjoy articles such as these. Luckily I'm a true old-school coding geek.

Check for New Comments
Slashdot Account

Need an Account?

Forgot your password?

Don't worry, we never post anything without your permission.

Submission Text Formatting Tips

We support a small subset of HTML, namely these tags:

  • b
  • i
  • p
  • br
  • a
  • ol
  • ul
  • li
  • dl
  • dt
  • dd
  • em
  • strong
  • tt
  • blockquote
  • div
  • quote
  • ecode

"ecode" can be used for code snippets, for example:

<ecode>    while(1) { do_something(); } </ecode>
Sign up for Slashdot Newsletters
Create a Slashdot Account

Loading...