Slashdot Log In
Building Consoles For Fun
Posted by
timothy
on Thu Dec 12, 2002 04:02 PM
from the hey-you-kids-cut-that-out dept.
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.
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
Bah (Score:5, Funny)
Feeling the pain (Score:5, Funny)
For the love of God, what does he think he's doing?
Re:Feeling the pain (Score:2, Funny)
Space Invaders game play footage. To see the game in action here is a 21MB Windows Media File. Or an 89MB MPEG File.
Seriously, this is pretty cool, even if the resolution is only 64x30 with 2 bit color. Better than I can do.
And no I won't provide you with a link to these ungodly sized mpegs!
Re:Feeling the pain (Score:2, Informative)
Tetris- WMV (18 MB) [utah.edu] - MPG (78 MB) [utah.edu]
Space Invaders- WMV (21 MB) [utah.edu] - MPG (89 MB) [utah.edu]
Click away.
Re:Feeling the pain (Score:3, Funny)
Re:Feeling the pain (Score:5, Funny)
Russ: I'm sorry sir, I couldn't finish the paper.
Professor: You better have a good excuse this time.
Russ: Well, I put up a website about our project, but I ran a server for the 78mb MPEGs off my own computer, and then it got slashdotted.
Parent
At school? (Score:3, Funny)
Re:At school? (Score:2)
and good with ketchup, you insensitive clod!
Someone should.... (Score:2)
At $150? (Score:3, Insightful)
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)
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.
Parent
In Related News... (Score:5, Funny)
"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."
Re:In Related News... (Score:2)
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.
Re:In Related News... (Score:2)
Only by actually using the MFC did I start to realise why people like starting out with Windows programming and also realise why people don't write 'good' programs using the MFC (easily).
Feh. (Score:2)
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].
Re:Feh. (Score:2)
wow (Score:2)
Re:wow (Score:2)
My favourite part:
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
Re:wow (Score:2)
Question (Score:3, Interesting)
Re:Question (Score:2)
Re:Question (Score:3, Informative)
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.
Re:Question (Score:2)
Too Much Code (Score:3, Insightful)
Cool idea though.
Re:Too Much Code (Score:2)
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)
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.
Parent
credibility (Score:3, Funny)
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)
I think. My memory is pretty hazy and I haven't openned mine up in years.
J
Wonderful! (Score:5, Interesting)
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.
Re:Wonderful! (Score:2, Funny)
MegaTouch? (Score:2)
Re:I'm waiting for someone to build a homebrew X-B (Score:2, Informative)
I'm sure you'll see "XBOX Emulators" for PCs, but don't expect one to actually run games well for about 2 years.
Re:I'm waiting for someone to build a homebrew X-B (Score:2, Interesting)
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.
Re:I'm waiting for someone to build a homebrew X-B (Score:2, Interesting)
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?
Re:I'm waiting for someone to build a homebrew X-B (Score:5, Informative)
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....
Parent
Re:I'm waiting for someone to build a homebrew X-B (Score:2, Informative)
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.
Re:I'm waiting for someone to build a homebrew X-B (Score:3, Informative)
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.
Re:I'm waiting for someone to build a homebrew X-B (Score:3, Informative)
Re:I'm waiting for someone to build a homebrew X-B (Score:2)
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.
Re:I'm waiting for someone to build a homebrew X-B (Score:2)
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.
Re:I'm waiting for someone to build a homebrew X-B (Score:2)
**
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.
Re:I'm waiting for someone to build a homebrew X-B (Score:2)
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.
Re:I'm waiting for someone to build a homebrew X-B (Score:4, Interesting)
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.)
Parent
Systems Engineer (Score:2, Interesting)
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.
Re:Systems Engineer (Score:2)
> 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.
Re:TETRIS SUES YOU (Score:2, Insightful)
And they don't sue all of the people who make and sell cheap clones of it and call it "Wibble" or something?
Strange.
Re:JavaStation & Linux! (Score:3, Interesting)
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.
Re:JavaStation & Linux! (Score:2)
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.
Re:JavaStation & Linux! (Score:2)
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.
Re:The horror... (Score:2, Informative)