Forgot your password?
typodupeerror
Hardware

Building Consoles For Fun 128

Posted by timothy
from the hey-you-kids-cut-that-out dept.
tierra writes "Indiviuals writing their own games is one thing, but try building your own console. Russ Christensen, and his team put together in class, dive into the fun of using an old Nintendo system to house their customized XSA-50 Board. They also uses a XSA Extender to hook their personal console up to a monitor instead of a TV. They programmed Tetris and Space Invaders for their console using a system they call CASM."
This discussion has been archived. No new comments can be posted.

Building Consoles For Fun

Comments Filter:
  • Bah (Score:5, Funny)

    by RaboKrabekian (461040) on Thursday December 12, 2002 @05:24PM (#4874827) Journal
    If you're going to make the games yourself, and the console yourself - dammit, build the TV yourself too, you lazy bastard!
  • by jhawkins (609878) on Thursday December 12, 2002 @05:28PM (#4874884)
    The Tetris Game I wrote. To see the game in action here is an 18MB Windows Media File. Or a 78MB MPEG File.

    For the love of God, what does he think he's doing?

  • From what I've read, the X-box is nothing more than a PIII PC with some mods to make it "different".

    After reading this, I'm wondering when someone will either (a) mod a PC to play X-Box discs, or (b) build their own X-Box out of PC parts and mod chips.

    If this has already been done, please post links.
    • It is more difficult than you think, primarily because the XBOX uses a unified memory architecture (CPU and video memory share the same memory), which is quite different than the set up on PCs. Most XBOX games rely on this architecture for rendering (one example..a vertex-shader assisted particle engine). If this code were to run on a PC, even a very fast one, the memory bottleneck would destroy its performance making the game unplayable.

      I'm sure you'll see "XBOX Emulators" for PCs, but don't expect one to actually run games well for about 2 years.

      • It is more difficult than you think, primarily because the XBOX uses a unified memory architecture (CPU and video memory share the same memory), which is quite different than the set up on PCs.

        Yeah and so does every console. I once heard someone say the N64 was "practically unemulatable" because of the high bandwidth of the cpu to gpu and the RAMBUS memory. Well... Been there done that...

        Since the system is MS's own design, I'm sure it is using standard DirectX calls. So you just have to intercept and re-route. The memory bottleneck won't be as bad as you think.

        I'm sure you'll see "XBOX Emulators" for PCs, but don't expect one to actually run games well for about 2 years.

        Now that does sound about right. Judging from most consoles, it takes about 3 years before a really good one comes out.
        • Yeah and so does every console. I once heard someone say the N64 was "practically unemulatable" because of the high bandwidth of the cpu to gpu and the RAMBUS memory. Well... Been there done that...

          The N64 is STILL practically unemulatable. The N64 emulators out there don't actually emulate the hardware, for the most part, they simple have rewritten many of the API routines from Nintendo's dev tools to x86 code. That's why there's still no N64 "emulator" with anywhere near full compatibility with all games. Most play a few key games well, like Zelda, Mario, etc, but fail with the majority of 3rd party games. So why don't you try learning about what you're talking about before you talk, bitch?

    • by Jace of Fuse! (72042) on Thursday December 12, 2002 @05:56PM (#4875218) Homepage
      From what I've read, the X-box is nothing more than a PIII PC with some mods to make it "different".

      Some very serious mods to make it different. For starters, it has little to no OS overhead, it's memory structure is unified and more efficient than a PC's and it doesn't waste memory managing memory since all of it's ram is dedicated to the single application (game) that is running.

      If this has already been done, please post links.

      Just do a search for XBox emulation. It hasn't been done, and the primary reason is that the XBox game discs are written in reverse order from regular DVDs. This gives the advantage of speeding up read access because the data is read from the outside in, but also it prevents piracy.

      There are a whole slew of other reasons why the XBos isn't just a PC, and why a PC can't really just magically be turned into an Xbox without some serious software trickery. I once thought it would be possible, but after looking into it I realized it's going to be a little harder than anybody initially thought. ...

      Now -- what I -- WOULD -- love to see is a project very closely resembling the Indreama, put together by someone who really knows a whole lot about video game consoles, and willing to take a risk on a different business model than has traditionally been used by the video game industry.

      Hmm. Maybe I should post my ideas in my journal....
      • >> Just do a search for XBox emulation. It hasn't been done, and the primary reason is that the XBox game discs are written in reverse order from regular DVDs. This gives the advantage of speeding up read access because the data is read from the outside in, but also it prevents piracy

        This is not true, but is a common rumor based on some early speculation by PS2 fanboys mostly (ie; "Don't get an xbox - you cant mod it - its games ar backwards. It is TEH SUCK").

        Likewise untrue is the rumor that GameCube discs spin 'backwards' (I have one, I watched it spin, and they spin CW like any other).

        IIRC, It uses a tweaked version of the UDF filesystem, and a non-standard packet format which is embedded into the firmware of its DVD-reader. A PC-DVD reader 'could' theoretically read an XBOX disk, but it would require some heavy-duty rewrite of the drives firmware.

        The unified memory architecture could hurt emulation of certain titles, but I'm convinced few if any will make any sort of use of it. Most XBOX games are just half-assed ports, or cross developed for other systems (including PC).

        There's some work being done - an XBE (xbox executable) can be translated to an EXE and some rudimentary linkage to appropriate kernel functions is happening.

        At the very least, the PC will soon be a cool testbed for xbox hacking, if not playing warezed copies of Halo.
        • Actually, being written in Reverse Order does not automatically mean that the drive "Spins in reverse".

          It is true that the data is written from the outside in. This is done for the said reasons of giving the XBox a speed advantage.

          The Gamecube doesn't need such advantages since the proprietary DVD based mini-disc of the Gamecube has a fairly fast seek time AND transfer rate. Of the three systems (I have all three) the Gamecube load times are the fastest by a considerable amount.

          As for the XBox's unified memory architecture, it's not something games have to "make use of". It's just the way the system works. I'll agree, a huge percentage of XBox games are shovelware from either the PC or the PS2, but I promise you that Halo on a PC of equal system specs to that of an Xbox is going to run like shit even if it's a PC specific port.

          I'm aware of the work being done in XBox emulation, and I follow it very closely. That's why I know it's been harder than anybody initially thought. I never claimed it was impossible or that it wouldn't be done. It will, however, take more than just a little bit of software trickery.

          Whether or not the DVD's can be force-read off of a standard PC DVD rom drive through direct hardware hitting is yet to be determined, but things aren't looking good.

          On a side note, it is nice to see XBox controllers finally being used on the PC. See this link [codeunderground.com] if interested.
            • by Anonymous Coward
              Being written closer to the outter edges of a disc is an old trick even some PC games do. It's done normally by padding the innermost portion of the disc with empty contents, and then writing the real (relevent) content in files closer to the outside.

              It is not new, and it is not special.
              • Thats true, but the xbox doesn't read inside out, which is what we're talking about.

                And it's a less relevant kludge on a DVD, seek time is lower on the inner edge, and throughput blows CDs away no matter where on the disk you are.. (The old CAV 8x at the inside, 48x at the outside doesnt apply nearly as much)
                • ME: It is true that the data is written from the outside in.

                  STRATJAKT: but the xbox doesn't read inside out

                  Am I missing something here?

                  If it's NOT reading from the outer edges, and it's not reading form the inner edge, where DOES it read the data from? I've seen printed material that says it reads from the outer most edges for speed advantages. It may have been in err, I won't argue with that possibility.

                  Even the link you provided clearly says the TOC is written in such a way that it misleads the drive about the amount of data on the disc. If I remember correctly the Lead-In is on the inner most edge. The lead-in contains the Table of Contents which extends to 50 mm from center on a regular CD (as per the redbook spec). After the lead in, is the data area, but it doesn't have to extend immediately.

                  I have read both in print and online that the data area was stored outside of the area laid out by the TOC to make copying harder as it makes it appear as if there is less data on the disc than there really is.
          • Halo was orignally developed for the PC..then hijacked for Xbox.. I doubt the code requires xbox memory hacks.

          • As for the XBox's unified memory architecture, it's not something games have to "make use of". It's just the way the system works. I'll agree, a huge percentage of XBox games are shovelware from either the PC or the PS2, but I promise you that Halo on a PC of equal system specs to that of an Xbox is going to run like shit even if it's a PC specific port.


            Woah. What? The unified memory architecture isn't a benefit of the XBox - it's a drawback - a limitation. The graphics chipset has to access main memory along with the processor. All other modern consoles have segmented memory.

            Also, the GC also reads outside in. Main reason is for copy protection, not for speed.
          • On a side note, it is nice to see XBox controllers finally being used on the PC

            I want to see the controller from Steel Battalion on the PC. It would be great with MW4. The regular XBox controllers are only so-so, IMHO.

      • **Just do a search for XBox emulation. It hasn't been done, and the primary reason is that the XBox game discs are written in reverse order from regular DVDs. This gives the advantage of speeding up read access because the data is read from the outside in, but also it prevents piracy.
        **

        xbox games are 'easy' to get from the net already.
        it's not like everyone uses stuff from liksang to play imports.. so the data is readable all right.

        as for the os overhead.. that's just the os. linux runs on this puppy without _that_ much tinkering away from regular pc, the memory architechture afaik isn't 'magically special','unified' or anything like that.. sure the barebones os might lack decent memory management but.. it's ms anyways.

        bottom line is that it should be easier than dc, psx, ps2 or gc. and no need to waste cycles on emulating a different cpu.

        though, it might be easier to do vmware of sorts of the hw and run it os data dumped from genuine xbox.. might take year(s) to happen but it will happen.
      • Disk format is never really an issue. There is always someone out there that can figure out how to read the disc and rip the data from those discs. Once ripped the data can be used by anyone.

        I've heard some people working on making XBox games work under Wine/Linux. As the XBox has a much smaller/stable subset of Windows OS this might be fairly easy to accomplish. I see some work being done on emulation under Windows also. Given the average time it takes to develop a good emulator it's really not taking that long to develop one for the Xbox.

        I don't really see the point of emulating the XBox and I'd like to see an open sourced console that can run Linux-based games. I've thought of using a hdd-free Mini-ITX system for such a system. It wouldn't push the envelope but it'd be decently powerful while remaining affordable, low power, and cool. Could use USB-based joysticks with it and it supports both vga and tv output and has a built-in ethernet port.
      • What? XBox isn't emulated? GameCube wins again... [francois.free.fr]

        It's funny. Laugh.
    • From what I've read, the X-box is nothing more than a PIII PC with some mods to make it "different".

      If you believe that, then you'll also believe that the Nintendo GameCube is nothing more than a PowerPC computer with some mods to make it "different".


      A console is more than the sum of its parts. The PS2 uses Rambus memory. The Dreamcast used an SH4 (I think -- or was it SH3?) processor. Even the original NES used a standard Motorola processor. The XBox uses a Pentium 3. The GameCube uses a PowerPC. And so on. All of these consoles use standard, commodity hardware that has also been used in other computers and embedded hardware. Big deal.

    • by Uller-RM (65231) on Thursday December 12, 2002 @06:30PM (#4875561) Homepage
      1) Unified memory architecture.
      2) Close to Win32, but not quite.
      3) Liberal use of hashing and checksumming.

      The XBE executable format is actually pretty interesting - it's similar to Win32's PE, but with many more flags and tables - for example, bitfields for what mediums are acceptable to run the game off of (DVD, hard drive, CD-RW, etc.) Each section and the relocation address tables have a SHA-1 hash taken of it, the header containing the section offsets and hashes of each is itself hashed, digitally signed using PKE, and then encrypted.

      The hard drive also uses the ATA spec's password protection, although that's already been bypassed and the drive dumped. In any case, most people with homebrew code are using the neXgen or EvoX dashboards to run an FTP server on the XBox for uploading and downloading files to the HDD, so you don't have to muck about with IDE cables.

      Most of the modchips out there right now work by tying the chip enable pin on the on-board BIOS to to ground, and emulating the BIOS directly on the LPC bus to allow execution of unsigned code and ignore mismatched media flags. (BTW, kudos to MSFT for complicating things with a floating ground... more than a few early modchips were responsible for fried PCs while doing in-circuit programming.)
    • Systems Engineer (Score:2, Interesting)

      by VoidEngineer (633446)
      Way back when, I had the mixed blessing of working in sufficiently advanced enough laboratories, that I got certified as a systems engineer on Windows NT operating systems. So, I happen to be certified in this area of work, and know something about the process by which one makes console machines. Work I was doing included overhauling Windows to make thin client email stations at our university, which were actually quite similar to console gaming machines. One of the major differences is that thin clients email stations typically use network protocols and network file systems, whereas consoles use compact disk protocols and compact disk file systems. (Ethernet versus Sneakernet)

      Anyhow, you have to realize that 'mod' is perhaps a poor choice of words in regards to how one would probably go about making a homebrew X-Box. I would suggest using the term 'lockdown'. In priciple, and in practice, the only thing that really needs to be done is the following:

      1. Set up a gaming machine at home. Try using a pizza box or laptop.

      2. Install drivers for your gaming controls. Control pads, voice recognition, video drivers, compact disk drivers, et al. Some good links to get started:

      Sense8 [sense8.com] - The WorldToolKit has the best device driver support that I've seen.
      Immersion [immersion.com] - Good starting point for haptics, game controllers, etc.
      Voip-Calculator [voip-calculator.com] gets you started on voice over internet protocol.
      Nero [nero.com] - gets you started on CD File System layouts.
      Altiris [altiris.com] - gets you started on image pushing.

      3. Design your filesystem.

      4. Get the basic configuration working such that it plays an off-the-shelf XBox game.

      5. Make a backup image of your gaming station.

      6. Delete all unnecessary files, remove all unnecessary subsystems. Lockdown the system until it does nothing other than run the game on the CD when you put it into the tray.

      6. Make backup images of your station as needed.

      7. When done, remove unnecessary hardware (floppy drive, keyboard, etc).

      8. Push image from server onto new consoles with similar configuration as (7).

      Now then, you may be asking 'Homebrew'? This sounds like a major operation! This is a going to cost a fortune! Well, yes and no. Yes, M$ is a for-profit company, which seeks to make money. Yes, if you went through this process, you could probably start-up a company which makes it's own console boxes which are XBox compatible. No, this isn't open-source and freeware technology. Yes, you could probably assemble a homebrew XBox by using these links, this process, a Windows 2000 operating system, and PC parts.

      The benefit: You know enough to design games and accessories for the XBox market. Do something like make a stereoscopic VR hack of Halo, utilizing Immersion gloves, and CrystalEyes goggles. Submit the concept to M$, become a business partner, and sell immersive visualization systems to XBox consumers, or something.
      • > Sense8 [sense8.com] - The WorldToolKit has the best device driver support that I've seen.
        > Immersion [immersion.com] - Good starting point for haptics, game controllers, etc.

        I've used products from both companies. Let me say that I'm not impressed with either. WorldToolKit (WTK) is fairly easy to use, and it does have a lot of support for things like Polhemus fast tracks, etc, but a lot of these devices aren't that hard to write drivers for, and WTK's abilities are really limited. For instance, there isn't any support that I can see for multipass texturing, let alone vertex or pixel shaders. It does let you drop to OpenGL in places, but that is tricky. I'd recommend either using a free tool kit (Crystal Space looks good, but I haven't had a chance to try it, OpenScenegraph is decent) or roll your own (which really isn't very hard to do). WTK is really expensive by the way.

        As to Immersion, well, I'm under NDA for some of it. However, but their APIs suck. For one device, I had to chuck their high level API (the one that allow you to do things like GetPosition) and write my own reading from the low level API (the one that retrieves raw encoder values from the PCI card). On another device, I was able to use the high level API, but the values matrices I got back were wacked out and require much code to fix them. But, maybe Immersion's APIs for joysticks and such is nicer.

        CrystalEyes at least I have no problem with. Not as cool as a HMD with Polhemus Fast Track position tracker though.
        • a lot of these devices aren't that hard to write drivers for which is exactly why you have a job in VR design, which requires you to sign Non Disclosure Agreements. You happen to have a gift for three dimensional mathematics. Not everybody does.

          As far as WorldToolkit goes, I like it mostly for its device driver support. Frees up my time to be worrying about other problems. Its much, much easier to simply write an eigenfunction, than it is to write device drivers. But I agree, writing device drivers really isn't all that difficult for most of this stuff.

          PlaneShift, Quake, and Unreal could all be possible avenues of investigation, if you were willing to limit all of your Xbox games to being derivatives of 3D engines.

          HMDs? Head Mounted Displays? Nah. Weight is clunky. Maybe you've got some really light weight version, but I never got to work with a HMD that made me 'see the light.' I'd rather just have a backlit wall, but then the applications I've worked on tended to be in the scientific and medical communities... not so much need for 360 degree rotation, but rather for a dozen folks to stand around with their coffee discussing strategies for further research and operations.

      • by Anonymous Coward
        What are you on crack? These steps don't add up to anything that makes sense. You suggest "installing" drivers unique to random proprietary software, then designing a filesystem (why?), then somehow magically "configuring" the system so that it can play XBox games (?!), and then some trivial disk imaging described over four steps. Right.
        • Laf. Divergent paradigms of reality at work, eh?

          Well, all I can say is that I was hired by our university's department of networking services & information technologies to design and install computing clusters. Designing, building, and producing console boxes is merely a problem of building a computing cluster, which you then 'uncluster' and distribute the nodes to buyers.

          I didn't say you had to use Sense8's WorldToolKit or any of the other proprietary software products. I was merely pointing in directions of additional information of equipment and materials which may be pertinent to the project at hand.

          As far as designing a filesystem... well, if you have to ask that question, I am going to have to suggest a book for you, written by Donald Knuth, entitled The Art of Programming [stanford.edu]. The file system is going to be central to the entire machines memory usage, both RAM, ROM, CD, and NFS. Optimization and funtionality are going to be based upon it.

          And then 'magically configuring' the system to play XBox games ?! Laf. Well, I suppose so. The 'magical configuration' was done during the installation of the device drivers and the file system layout. Disk imaging can be more tricky than one may imagine. When we were at work in the laboratories, a majority of our time was spent imaging builds rather than coding. But then, we were working at a tier-1 research university, and we didn't like to loose the work we had done to a disk error.

          Left.
  • At school? (Score:3, Funny)

    by Dragon213 (604374) on Thursday December 12, 2002 @05:30PM (#4874908)
    Wow, I wish I had the kind of classes that would let me build stuff like this in them....but noooo, all we could do is sit there, read the books, and take the tests. Never actually applying the knowledge that we just learned.......
    • "Delve not into the affairs of Dragons, for thou art small and crunchy"

      and good with ketchup, you insensitive clod!
  • ...take the little Cappuciono PC and fill it with top notch hardware, place nice USB ports on the front, make a memory card slot on the front to hold 128 meg chips for game saves, then market it as a "PC game console".
    • At $150? (Score:3, Insightful)

      by yerricde (125198)

      take the little Cappuciono PC and fill it with top notch hardware

      But will you be able to get it down to $150 to compete with the Nintendo GameCube?

      • Re:At $150? (Score:5, Insightful)

        by MisterFancypants (615129) on Thursday December 12, 2002 @05:48PM (#4875139)
        But will you be able to get it down to $150 to compete with the Nintendo GameCube?

        Even if you could get it below $100 it would never compete with the GameCube unless it had a similar sized/similar quality game library. In other words, not going to happen. Not to mention a huge marketing push.

        A few people, including the Linux-Indrema team, have had thoughts such as this before. Neat idea from a tech-head view, but business-wise its nothing but a disaster waiting to happen.

        • Except that you would have almost every PC game ever made as your games library. You could play Doom, or you could play Doom III (assuming that Capuccino PCs will have enough horsepower to run that game when it comes out).

          All that would be needed is a way to hook it up to a TV (but still leave it capable of being connected to a monitor and run at resolutions higher than 640x480), and include a console-style controller that uses a USB port.
  • by Strange Ranger (454494) on Thursday December 12, 2002 @05:40PM (#4875024)
    [flame off][humor on]
    "Our professor allowed us to take a different approach, using an ICDS Enhanced Hot Water Drill, a cage full of GM hamsters and some pantyhose we have created our own version of the worlds very first Wheel. We carved it straight of a rock wall! We call it Wheel Revolution. The wheel was a revolution, and it revolves, so we're getting double-usage out of the name. Bob is able to put his hands on the axis of the wheel while Pete holds his ankles and runs. We'll be holding a public demo for a few days so stop on over and try it out!"

    " Our engineering professor liked the idea of us really getting back to the basics."
    • Funny, but I think you're missing the point. The class was a computer architecture class. They designed a 16-bit microcomputer core with its own instruction set. They implemented that design in VHDL, which is synthesized onto a programmable chip (either a CPLD or an FPGA). The rest of their exercise is just to make it do something interesting besides add a bunch of numbers to verify that it works.

      Reinventing the wheel is something you do quite often in school. Only by reinventing something do you truely realize both how things work and why they are built they way they are.

  • Microsoft thought it would be easy sticking a computer inside of a big box and labeling it a game console. The only thing they "had to do" was to strip down Windows 2000 to suit it.

    How about a Lin-Box? Stick a lot of expensive hardware in it, strip the kernel, and lose money selling it, too! Wait, I see why this hasn't been done yet..
    • Remember back in the day when Sun was trying to push their JavaStation box? It was suppose to run a JavaOS on an Intel processor. It wasn't all that successfull.

      Well, the lab I used to work at let some of the undergraduates take home the stacks of spare JavaStations we had laying around. =) The theory was that if you could install Linux and Quake on the OS, you would have a fully functioning console box, open sourced, that could run Quake. For those of you who are interested in mass producing console boxes, here are the lessons learned:

      1. You need to be able to store the console operating system on an image server.

      2. You need a serial port connector, or a LapLink connector, or a BOOTP enabled network card in the console box.

      3. You need to install your OS on a testing machine, and strip down all of the extra functionallity (notepad, emacs, vi, and everything else). This is the process of optimizing your open source operating system. Set up the console box as you would a normal gaming system.

      4. Take an image of the machine with some product, such as Altiris LabExpert.

      5. Push the basic OS onto new machines, as needed.

      6. Write documentation, develop games, etc.

      7. Get a CD burner and burn games onto the CDs.

      8. Package machines and CDs (seperately, probably).

      9. Sell machines at cost plus a markup for time and effort.

      10. Attempt to do a few things well and specialize.
      • I had a Javastation. I sold it earlier this year because I needed the money. Both Javastations (the ones known as MrCoffee, and the ones know as Krups) used Sparc processors.

        The MrCoffee JavaStation (the one that looked like a Sun 611 drive case) was essentially a diskless SS5 in a smaller case, and a tweaked PROM.
        • I was under the impression that the Javastations used Intel processors, which is why they didn't run Solaris. You may very well be correct.

          And perhaps the difficulty in running linux on it was that one had to compile a sparc linux. Which makes sense, because I didn't have an extra sparc workstation laying around to build the linux build on for the java station. And hence, I went onto other projects.

          Thanks for the correction. It's been awhile since I worked on that project.
          • First, there is Solaris for Intel.

            Second, there was rumored to be an internal port of Solaris to the Javastation. It probably wouldn't have been hard.

            Third, I'm told that if you want to run Java on a Javastation, you will get better performance by netbooting Linux and running your Java there that you would have on JavaOS. However, I still would have liked to have been able to get a copy of JavaOS to try. It sounded neat.

            Anyway, by now there are precompiled Linux's for the Javastation floating around. I just never got around to finishing setting up my boot server (got BOOTP and something else running to boot the OS loader that allows more boot options, but never got the rest of the stuff installed on the server), then, as I said, I needed the cash.

            I now have a Sun ELC that I'm trying to get netbooting. However, I'm being held up because I gave away what turned out to be my last spare tranceiver (I thought I had another spare around). Someday.

            I love old Sun gear. I have a 3/160, a 3/280, and a 3/80. Plus an IPX, SS Classic, and Ultra1. I used to have a SS2, but I gave it to someone more needing of it. I still want to get a SS10 with the ZX board, which was the setup of the first 3D workstation I ever used. Ahh, good times.
            • Agreed on all accounts. I think I even have one of those precompiled linux for Javastation somewhere around my house. I, too, never got around to setting up my boot server. Got a BOOTP server setup and running for a computing cluster we installed at college, but never got it working at home. (I must admit that it's pretty cool to watch 100 workstations, fresh out of the shipping packages, go through a BOOTP launch for the first time. It's kind of like conducting an orchestra, but with video monitors.)

              Honestly, Ultra1 is as far back as my memory goes. Got to set up a quad processor Ultra80, which was pretty darn cool. Sounds like you've been in the industry longer than I have.
  • I think it's great that people are doing this. It is an important step in learning how to build much more complex systems, gaming or otherwise. But, it has already been done some 40 years ago. What's more, there weren't all these off the shelf chips that these guys used.

    For those that are old enough to remember, I'm sure that you are already having fond memories of Pong. For those that are a bit younger, take a look at this [pong-story.com].
    • Uh, did you actually read the linked article? I'm not sure which off-the-shelf chips you are referring to, but the processor is a custom design which was simulated in hardware on an FPGA. Probably a lot of the hardware besides the processor was also custom. I did a similar project when I was in school, and we used almost entirely custom-designed chips (due to necessity of interfacing with a custom bus, etc.) with a little bit of 7400-series logic which was availabe even 40 years ago, albeit in a slightly different form factor.

      • The processor is a custom design with seperate memory busses for data memory and program memory to give us better speed, and allow our 5-stage pipeline to run at full speed. We also developed a significant amount of software to go along with the system. We made our CASM cross-compiler and we also had a fully automatted test framework so you could type "make test" and the CASM system would automatically compile down all of the CASM test programs and run them in a simulated version of the processor and then CASM supported an "expected result" directive. So after the test ran it would check the actual result with the expected result. We did the project from start to finish in two months, finishing a month before the end of the semester. True we didn't do anything that will revolutionize the industry or anything. But 40 years ago I don't think this project could have been done as a part time school project in two months time.
  • Will it be fun? I dont know .... But I am damn sure it will be expensive.
  • This topic is on fire. While the embers cool on this wildly interesting and thought provoking story that has, in may ways, changed my life, take a look at some other related reading: Nintendo's corporate IP statement. Oodles of fun. Nintendo sues you, be it state side or Soviet Russia. [nintendo.com]
    • Yes, I have no love for this aspect of Nintendo (nor their anti-competitive actions in the past).

      My favourite part:

      Are Game Copying Devices Illegal?


      Yes. Game copiers enable users to illegally copy video game software onto floppy disks, writeable compact disks or the hard drive of a personal computer. They enable the user to make, play and distribute illegal copies of video game software which violates Nintendo's copyrights and trademarks. These devices also allow for the uploading and downloading of ROMs to and from the Internet. Based upon the functions of these devices, they are illegal.


      They say "yes, game copying devices are illegal" by defining the illegal acts you can do with one. That's like saying "yes, car's are illegal based on the functional capabilities it provides to run down school children."

      Metroid Prime still rox tho :P
      • I prefer the little statement in the back of my Aidyn Chronicles game (very good, btw) that copying your games to make backups is not at all necessary and that you don't need to seek legal council about it.
  • Question (Score:3, Interesting)

    by KeatonMill (566621) on Thursday December 12, 2002 @06:33PM (#4875591)
    How exactly does CASM differ from C? I don't see any ASM type code in there, it just looks like C. I realize that it isn't quite C, but hmmm... I'm interested in more details about the compiler/processor.
    • I think because it only works on low level constructs like Asm though it has a syntax similar to C. This reminds me of the Terse programming language really.
    • Re:Question (Score:3, Informative)

      >How exactly does CASM differ from C? I don't see any ASM type code in there, it just looks like C. I realize that it isn't quite C, but hmmm... I'm interested in more details about the compiler/processor

      The question should actually be how does CASM differ from C++. The way it works is you write a CASM program and you compile the program using a C++ compiler and you include the CASM library files. And then when you execute the compiled program it emmits ASCII 1's and 0's that is then passed through another tool that traslates it into a format that the XESS loading program wants.

      So CASM the programming language is a series of C++ functions and classes. The functions maintain state, like the cr16_while(expression expr) function. so when they are called they can emit the correct machine code. And we overload the operators so things like "a+b" will then in turn call the function add which will in turn emit machine code to do the add.

      We do actually have ASM functions for adding and moving and the rest of our instruction set. Except I don't use those functions much in tetris. There is a couple of times that I do call the lshi function for left shift.

      Does that help explain CASM better? If not then let me know.

      • It does make more sense. I found the (large) PDF file and I'm trying to make some sense of it. At first I thought you guys just put together some parts and qhipped up some code, but now I have a much, much deeper respect and understanding for how much work that was.
  • I came up with the idea awhile back for a group independent study project. The idea was to build a portable console, building everything from scratch. The console would have the same proportions as your tv screen, and have buttons in the same configuration as the SNES controller.

    The best part is that the portable console would run nes and snes and gameboy rom files. This wouldn't be a project to market, but something to learn the intricacies of low-level programming. It would also be a fun toy for boring lectures.

    Unfortunately the group I assembled to build the device voted it down and we ended up building something completely useless...
  • Too Much Code (Score:3, Insightful)

    by nns6561 (559085) on Thursday December 12, 2002 @06:37PM (#4875629)
    Anybody else surprised by the fact that it took 9000 lines of code. Having done similar projects in VHDL, it should take less than 1000. Looking at their code, I understand why. They did not use any of the more complex VHDL features. No generics or loops. The entire project was just poorly thought through.

    Cool idea though.
    • Anybody else surprised by the fact that it took 9000 lines of code. Having done similar projects in VHDL, it should take less than 1000. Looking at their code, I understand why. They did not use any of the more complex VHDL features. No generics or loops. The entire project was just poorly thought through.

      What about time? This was a class project. With this project and projects for other classes, they probably didn't have the time to make it better.
    • Re:Too Much Code (Score:4, Informative)

      by Russ Christensen (633700) on Thursday December 12, 2002 @10:19PM (#4877268) Homepage
      To respond to why it took 9000 lines of VHDL code. One of our key design goals was to have this run on hardware. VHDL is a very complicated language that is very powerful, and then comes the part of VHDL that is an IEEE standard for going to hardware. That part of VHDL is only the simple features and so that was our reason for only using the very simple features of VHDL. We wanted to know for sure that the design would be able to drop down onto an FPGA. We didn't want a processor that would only work in simulation or would only compile down with one tool.

      This wasn't a project to show off that we know how to program VHDL in a fancy way. Rather it was to show that we can quickly design a computer. This was the first time that we had used VHDL and when we started the project we did not have the FPGA's to test our design on. So we decided that we would only use the simplest subset of VHDL. Our goal was to go from nothing to a finished project in two months. We viewed using complex VHDL features that might not compile to hardware.

      We succeded in getting the project done in two months as a part-time school project. Including hardware design. A complete test framework, two games, and a final report. I think when you say "The entire project was just poorly thought though" you are not judging the project according to our design goals.

    • First of all, I'm a student with about as much experience as they have. Seondly, I wasn't talking about unsynthesizable features. I was talking about features that simplify the amount of code needed that create the same features. Sorry if I wasn't clear here. I would agree that one shouldn't use features that make for unsynthesizeable code. Having done very similar projects, I still think it's too much code.
  • credibility (Score:3, Funny)

    by imAck (102644) on Thursday December 12, 2002 @06:58PM (#4875792) Homepage
    The graphics: impressive.
    The nintendo for a case: most impressive.

    The fact that they use the word 'foo' in the tetris source code: pure credibility

  • ColecoVision... (Score:3, Interesting)

    by dark_panda (177006) on Thursday December 12, 2002 @07:28PM (#4876058)
    As I recall, the ColecoVision was made with completely off-the-shelf parts. Wouldn't be too difficult to re-build one of those things. It was probably one of the few video game consoles that you could actually rebuild from scratch.

    I think. My memory is pretty hazy and I haven't openned mine up in years.

    J
  • Wonderful! (Score:5, Interesting)

    by Junks Jerzey (54586) on Thursday December 12, 2002 @07:36PM (#4876117)
    I love projects like this. May just the fact that they succeeded inspire others to try the same thing.

    On a tangent, this is the kind of thing that's been very possible for some time, but most people blindly assume that it's much too difficult. Similarly, writing a compiler for a high level language is a relatively easy project. You could do it in a semester course, or a month of spare time, but mention "writing a compiler" to the great majority of programmers, even those with lots of experience, and they run away in terror.

    Personal chip design reached critical mass back around 1994.
    • Just this semester, for my compilers design course, we wrote a compiler for a watered down Pascal-like language. Lexically scoped, nested procedures, arrays, but no functions, parameters to procedures, records or pointers. It basically has the functionality of the early versions of FORTRAN.

      It's not a full compiler, though - we generated 3-address code which was then given to an assembler our professor and TA wrote. This way, we didn't have to generate code to manipulate the run-time environment, or deal with the OS at all.

      However, given what I've learned in that course, I would know how to approach those things now.
    • I wouldn't say that writing a compiler is easy. I took a compiler design course and it was quite a job! The idea of compiling the compiler with the compiler was interesting. Then you compile the compiler with the compiled compiler... It was a C compiler (which we wrote in C of course). Jeez! Compiler writing is so... recursive!
      • You clearly opted for the wrong language. What's up with those unis only teaching C these days? I wrote a compiler in just 4 lines:

        OUT=`echo $1 | sed "s/\.src$//"`

        echo "#! /bin/sh" > $OUT
        cat $1 >> $OUT
        chmod +x $OUT

        compile with ". sc.src" the first time, after that you can compile your programs with "sc .src"

        Cheers!
  • That's a lot of trouble to go to for Tetris (if I went to that much trouble, I'd rather play it with the lights of a building or something geekier like that :)

    In the mean time, I'll just use an emulator (see sig) :]
  • I've always to assemble a MegaTouch... those dopey trivia/photo hunt machines you see at bars and airports. I know the MegaTouch XL used commodity 486 hardware and appears to boot off a CD, but apparently there's a proprietary PROM and a "Dallas" security key that I know nothing about. Anyone ever get ahold of a MegaTouch CD and mess around with it?
    • I don't care about the other games on it, I just want TriTowers... I've spent many drunken hours at local bars playing that. Well, that and Photo Hunt with the naked women. (hard to find differences in the photos when there's nekkid girls on the screen)
  • I just read through the Final Report pdf that is available on the site. Hopefully the report is not complete yet, because I found very obvious spelling mistakes in the first few pages. "garanteed" and "compontents" to name a couple... I'm no spelling guru, but I don't want these guys to lose precious marks from improper English. On the first or second page, one sentence ends with ",." Hopefully the authors are reading /. so they can fix it up before submitting it. Maybe I will email them.
  • OK, I admire the guy's ambitition but that code is horrible! In an attempt to optimize multiplication by powers of two, he defines macros that perform the necessary number of add operations.

    Even a newbie knows you do this with right shift!

    #define MULT_2(value) ((value) > 1)

    I suppose his method has the advantage of working with floating point...

    • OK, guess I should have previewed. slashcode didn't care for my xmp tags.


      #define MULT_2(value) ((value) << 1)
      #define MULT_4(value) ((value) << 2)
      #define MULT_8(value) ((value) << 3)
      #define DIV_2(value) ((value) >> 1)
      • Most modern C++ compilers will already make this optimization.

        And you are making an assumption that this core is optimized for bit shifting. Who knows, it may not even have the hardware for it. This is a synthesized core written in VHDL, there are no assumptions.

        Personally, I think this sounds like a lot of fun. I tried to convince my professors to allow myself and a partner construct a fully-functional MIPS core on FPGA for my EE senior project, but sadly they had other ideas. It's nice to see some folks having fun out there...it's COLLEGE, you're SUPPOSED to have fun! Not care about super optimization.
        • Because of specs given to us, when our processer does a shift left and shift right it can only shift by one. So on our hardware doing the add instruction or doing a shift left to impliment the multiplication is actually the exact same speed.
    • Hey dude, I don't mean to be rude or anything, but for someone laughing about other's people code, you should check what you post...

      #define MULT_2(value) ((value) > 1)???

      Looks like your macro just checks if the number is greater than one... Besides, it would be a left shift...

  • Let me remind you old folks with the Altair (still in the basement) about something. Computer Engineering is not just a hobby or a club which you are qualified to join if you built a computer from the transistors up (or trio-tubes as the case may be). It is a legitamate industry and profession, as you well know.

    Russ may not have designed the IC with VLSI, but he and his team designed the ALU, Registers, Datapath, Control, Memory Interface, VGA controller, DAC (if he used one), and gamepad controller, not to mention writing their own assembly that would translate to IntelMCS format, oh...and the code itself. I am sure it took more than 2 weeks to do this. Besides how many of you started by building a transistor radio? That doesn't seem to be anything cool by today's standards. Are you afraid that us younguns' are gonna pass you by?

    On a redeeming note, THANK YOU ancient ones! Were it not for your tenacity and ingenuity (some a result of quick fixes ie. 8086->8088) we young wippersnappers would not be where we are today. Were it not for your concrete and cement, we greenies would have to travel in muddy rut-filled roads!

    By the way, for an outlined plan of what Russ did, check out this site Computer Design [utah.edu] It may not be up much longer since the semester is over. Maybe you guys could get an XESS board and do it too, instead of stamping out the creativity in this poor undergraduate's mind! Oh yeah, nobody's going to pay you to do it either!

  • Quick, somebody write a MESS [mess.org] driver for this!

I'd rather just believe that it's done by little elves running around.

Working...