Welcome to Codingstyle.com May 22, 2002 - 03:27 PM
Codingstyle.com: What's Your Style?
Search   
Main Menu
· Home
· Your Account

· Downloads
· FAQ
· Members List
· Messages
· News
· Recommend Us
· Search
· Sections
· Stats
· Submit News
· Topics
· Top List
· Web Links

Click for Server Info
Powered by...

Slashdot
· Nintendo Announces new Zelda, Mario & Metroid
· Augmented Reality Quake
· A First Look at Netscape 7
· Unlimited Airwaves
· SomaFM General Manager Answers Your Questions
· Passwords May Be Weakest Link
· Eldred Attracts Heavyweight Supporters
· Felt Tip Marker Defeats Copy-Protected CDs
· New "SQLsnake" Microsoft Worm
· Why The X-Box Network Will Fail

Search Slashdot stories


Read more...

Freshmeat
· sysklogd-sql 1.4.1
· SBLIM 0.8.2 (wbem-cli)
· OpenCOE 1.1.2.0
· Gtk-Agenda 0.7.3 (Development)
· OATS 2.0.2
· Current 1.3.0 (Development)
· Current 1.0.4 (Stable)
· JSwat Java Debugger 2.4
· webplay 1.01b (Main)
· SunGazer Packetfilter 0.2.0 - final (Stable)

Search freshmeat.net projects


Read more...

Who's online
We have 248 guest(s) and 0 member(s) online.

You are an anonymous user. You can register for free by clicking here


Interviews: Codingstyle Interview with PS2 Linux Developers
Posted by: Steve Frampton
Interviews May 22 marks the official release of Sony's PS2 Linux kit in North America and Europe, while Japanese users have been tinkering with their kits for about a year (in beta release; the official release for Japan was last month). To give you something to do while waiting for your package to arrive in the mail, Codingstyle has interviewed several people in the PS2 development community, including two people from Sony Computer Entertainment America, Inc. (SCEA) and Sony Computer Entertainment Europe, Ltd. (SCEE). For more, please read on.


May 22 marks the official release of Sony's PS2 Linux kit in North America and Europe, while Japanese users have been tinkering with their kits for about a year (in beta release; the official release for Japan was last month). To give you something to do while waiting for your package to arrive in the mail, Codingstyle has interviewed several people in the PS2 development community, including two people from Sony Computer Entertainment America, Inc. (SCEA) and Sony Computer Entertainment Europe, Ltd. (SCEE). For more, please read on.

While this interview primarily focuses on development using the PS2 Linux kit, the official kit is not the only way that hobbyist developers are involving themselves with the PS2. The second method involves coding directly for the PS2 itself, and the community around this effort is known collectively as "PS2DEV". Paraphrasing from the official PS2DEV web site, "PS2DEV has become the keyword on the Internet to identify the home brew development community. These are people that use open source, GPL & free software to develop programs for their vanilla PS2. PS2DEV is concerned with building the community and tools to make it easier for anyone to get started programming their PS2.". Codingstyle included a couple of people from the PS2DEV community as well.

Also, Codingstyle ran an earlier PS2 Linux Kit Roundup which contains some helpful links to documentation and related material you might find useful to get started with.

The following individuals participated in this interview:
  • Adam Bertsch , Sony Computer Entertainment America, Inc.
  • Sarah Ewen , Sony Computer Entertainment Europe, Ltd.
  • M.R. Brown , PS2 Linux and Linux on Dreamcast hobbyist
  • "now3d" , PS2 Linux and PS2DEV hobbyist
  • Brandon Cook PS2 Linux hobbyist
  • Joan Touzet PS2 Linux hobbyist
  • "Oobles" PS2DEV hobbyist
The interviews were conducted via e-mail over the span of a couple of weeks. Participants were free to answer those questions which were applicable to their area of involvement. Some answers have been edited for clarity and brevity.

Codingstyle: Could you tell us a bit about your background, your involvement with PS2 development, and what projects you have worked on so far?

M.R. Brown: I'm an aspiring Linux kernel hacker with a very strong penchant towards embedded systems running Linux. I've done small homebrew development on other game consoles, such as the PSX and Sega Dreamcast. The Linux on Dreamcast (LinuxDC) project was my first "official" foray into mainstream kernel development. LinuxDC mainly concerns itself with improving device driver and kernel support on the Dreamcast, and because of my (continuing) work on that project, I was able to gain enough experience to start working on the existing port of Linux to the PS2.

I'm currently a developer on the xrhino-kernel project found at playstation2-linux.com website, and I manage the binutils project at the same site. I have a few other PS2/Linux related projects that are currently in the "pipe dream" stages - they aren't worth mentioning. My involvment with all PS2/Linux projects is purely personal, and I only hack on these projects in my spare time.

Brandon Cook: I'm currently a student in college, planning on using the kit as a target for my project (HyperCube - http://playstation2-linux.com/projects/hypercube/) and hoping to gain some useful experience that can be placed on a resume.

Sarah Ewen: I finished my Masters in Computing a couple of years ago, and got into Linux in my early days at University. I worked as a programmer for ArsDigita until just before they were bought by Red Hat, and then I came to work for SCEE on all Linux kit related matters. Because of our situation here (we don't have a PlayStation on-line store), the majority of my involvement so far has been spent on making sure we have all the logistics in place to cope with distributing the kit. But I've also managed to take the kit out to shows, expos, and user groups, to try and give people some access to it before they have to part with their hard earned cash.

now3d: I've had one for 7 months now; I'm also using it at work for some un-announced stuff.

I have been using the 3D example programs, evaluating the current libs and the processing capabilitys that it has. I can not say any more at the present time.

Adam Bertsch: My background is in System Administration. With VA Linux Systems (now VA Software), I worked on the Sourceforge OnSite project, which is the basis of our Linux for Playstation 2 community website.

Oobles: I'm a developer, consultant and what ever other hat people want to put on my head to earn me a dollar. I got involved with programming the PS2 because I found the hardware facinating. The multiple processor architecture of the PS2 appealled to my interest in concurrent programming concepts. I've always thought that concurrent programming across threads and cpu's is the direction of programming. The PS2 clearly demonstrates the advantages and challenges of developing for this type of environment. That and the fact the PS2 is a games machine meant I could play games and have some fun.

I haven't purchased the PS2 Linux kit. The Linux kit includes a hardware abstraction layer and linux operating system that would get in the way of programming directly to the hardware. I and others in the PS2DEV community use free tools and USBUSB link cable to connect the PS2 with a PC. Using a program called naplink loaded onto the PS2 and PC I'm able to transfer programs directly to the PS2.

I think the PS2 Linux kit and PS2DEV methods of development are very different. The PS2 Linux kit provides people with a great way to learn about linux and maybe even write some graphics programs using the PS2 GL examples. PS2DEV on the otherhand means a developer needs to understand a lot more about the hardware and PS2 system calls to get basic programs working. For my interests the PS2 Linux kit would just get in the way.

I've been part of the PS2DEV scene since about April last year when I put up the web site ps2dev.livemedia.com.au . I think I've spent more time on the web site than actually programming my PS2. The site provides tutorials, news, forums and information about programming the PS2 directly. Other than that project I've also written a tutorial on programming the IOP, the IO processor of the PS2.

Joan Touzet: I've been a programmer since 1981 (my first computer was a PDP-11/34A), and have been working professionally in the IT industry since 1989. Part of that time was also spent in college and graduate school earning a Bachelor's and Masters' in Electrical and Computer Engineering. Little did I realize that my graduate research on VLIW processors and heterogeneous computing archite ctures would come into play for a hobbyist project! I've had the PS2 Linux Kit since it was beta released here in Japan last year.

Codingstyle: How much of your time are you able to devote to working with this new kit?

Sarah: Right now, hardly any. I've had to focus on distribution issues and making sure that SCEE offices right across Europe, Africa, the Middle East, Australia and New Zealand are aware of the kit, and what it is. A couple of weeks back I found myself talking to our customer service phone support staff, trying to explain everything from the philosophy of open source to how to do a successful Linux install.

My time with the kit has mainly been spent on getting familiar with the distribution, putting on some eye-candy for expos and shows, briefly poking around example code, trying a version of Opera out which we hope they will release soon (we had some trouble getting it to run), and looking at any interesting demos or projects I come across.

I've barely had time to work on any improvements for playstation2-linux.com so far - my sandbox is probably already out of sync, as we've needed all our time to get every department to approve the procedures and website content required for the release date. I'll work on some improvements to our community site as well as PS2 Linux projects.

Oobles: Recently I haven't had much time for working on the PS2. When I actually get to write code for the PS2 its usually all done within a short period of time. Work commitments generally stop me from spending too much time at the PS2. I might have a bit more time for the PS2 now that I've just got myself a new notebook. I could even pack the PS2 and notebook and have a complete development environment when I'm on the road.

Adam: About half of my time is spent on the website and the kit, and the other half on System Administration projects for the rest of the SCEA R&D group.

now3d: Not much, I'm really at the planning stage of how to use it for something.

M.R. Brown: Heh, I'm a consultant, which means I'm responsible for managing my own time... that can be more of a hurt than help sometimes. I have a lot of other projects on my plate, but I plan on spending a fair amount of my spare time playing with Linux on the PS2.

Joan: Unfortunately, not as much as I would like. While I have free time at work, it's a bit conspicuous to have the unit on display there. So I code at the office and spend evenings/weekends debugging and testing. It's been slow going to say the least.

Brandon: Unfortunately not enough ;), hopefully a few hours a day of hacking time will be enough to get HyperCube in a decent state by end of this summer.

Codingstyle: How could a newcomer to this platform most quickly bring him or herself up to speed with getting started developing for it?

M.R. Brown: I don't think it's as simple as "read the hardware manuals". The hardware manuals provided by Sony are excellent for referencing the instruction sets used by the PS2 CPU and coprocessors, as well as learning the theory and design decisions that went into the graphics and CPU hardware. However, they don't tell you how to actually use the hardware, which is most important for a newcomer to the system.

I think the best thing to do if you're starting off is to play with the add-on libraries privided by Sony and open source developers such as ps2gl, ps2stuff, and SDL. These libraries demonstrate how to access the PS2 hardware using the interfaces exposed by the kernel. There's also a few sparse documents that detail the driver APIs used by the kernel device drivers.

now3d: Learn OpenGL, use Linux, use GCC, program on other embedded systems or games consoles like PSX.

Joan: If you just want to see things working, I especially recommend looking at the stuff in /usr/doc/PlayStation2 directory. You'll get English and Japanese text files describing the run-time engine (RTE) as well as some subdirectories with examples ready-to-compile. Just add 'make' and go.

Alternately, you can use the SDL and Mesa libraries and code the old fashioned way. Expect poor performance though, on the order of a Pentium 120, if you're doing full screen SDL, even with dirty rectangles.

Oobles: There's plenty of information out there now for getting started with PS2DEV. The tutorials by now3d, Dreamtime and myself together form a very good starting point for either programmers on windows or linux.

The absolute minimum requirements are a little different depending on if you have a PAL or NTSC model PS2. The PAL PS2s come with a Demo disk. This combined with a Naplink disk and PL2301 USB-USB cable is enough to load your own programs onto the PS2. To boot naplink on an NTSC model I believe requires a mod-chip, but I could be wrong there.

The next important element for developing for PS2 is the compilers. The web site http://ps2dev.sf.net/ includes the latest versions of compilers that are suggested people should use. There's even step-by-step instructions at my site to help people with installation.

Adam: Reading the system manuals shipped with the kit will certainly help, and I recommend becoming familiar with a supported API (like SDL) to get yourself started.

Brandon: Read Ars Technica's analysis of the EE @ http://www.arstechnica.com/reviews/1q00/playstation2
/ee-1.html
.

Sarah: Well, depending on what you want to develop...brush up on your C, read the hardware manuals when your kit arrives, look at the projects already on playstation2-linux.com, and all the documentation provided in the libps2dev RPM that installs to /usr/doc/PlayStation2.

There's an ArsTechnica article about the different style of programming that is required to make use of the PS2's parallel architecture, which is worth a read.

I'm hoping we'll get a good tutorial section together on playstation2-linux.com that will help people who are new to programming the PS2.

Codingstyle: What are the major differences between developing for the PS2 platform as opposed to developing in the x86 world?

Adam: The Playstation was designed with a very different strategy for displaying graphics information. There's not enough video RAM to store everything you could possibly ever want in there. The idea is to use a fast bus and the capabilities of the vector units to stream data to the GS. This will be a pretty big shift for many x86 game programmers.

now3d: Only 4MB VRAM HURTS! X is limited, by the Sony implementation, but it is workable. It would be better if it was hard coded for PS2 but its OK in its current state for the moment.

M.R. Brown: The PS2 is an embedded MIPS RISC architecture, and it has some very strong differences to the legacy x86 architecture. Some of the more striking differences are the requirement of power-of-two-aligned data structures in RAM, instruction and data cache handling, and of course, the radically simplified, fixed-size RISC instruction set.

Besides being a conforming MIPS architecture, the design of the Emotion Engine (the central processor and coprocessors that power the PS2) itself can be confusing to newcomers. The PS2 can be considered a "parallel" architecture, but not in the same sense as x86 SMP systems. There's a lot of work that goes into utilizing the high-speed graphics and vector processing pipeline, and that's not easily achieved unless you take the time to learn the details of the EE's subsystems.

I suggest that anyone who is interested in learning the MIPS architecture start with the excellent book See MIPS Run (by Dominic Sweetman, Morgan Kaufmann Publishers; ISBN: 1558604103). There's also a couple of articles that introduce the PS2 hardware specifically, those can be found at Ars Technica (http://www.arstechnica.com).

Architectural differences aside, if a developer is only interested in the high-level abstractions that Linux on the kit provides, then they will be able get by with SDL, OpenGL, and other standard Linux libraries. They will never need to care about how the PS2 hardware works underneath it all. However, they will never be able to get the most out of the PS2 hardware, unless they learn to directly access the more esoteric PS2 hardware components.

Sarah: That answer changes depending on what you want to write. If you want to write something using OpenGL or SDL, it's not a whole lot different, because implementations of those exist for PS2 Linux. If you want to write something which uses the native PS2 approach to building display lists for the GS using the libraries we've provided, you'll get the most of the hardware, but you'll have to learn a lot about it. We've included a tool called VCL which we provide to PS2 Developers, that helps to optimise any assembler that you write for the vector units.

Joan: With isolation layers like SDL and Mesa, very few. You'll want to read up on the R5900 modifications to the toolchain (toolchain_en.txt in /usr/doc/PlayStation2) and learn what all those -f flags do, if you don't understand them already.

At a lower level, if you're used to programming directly to an x86 graphics engine, don't expect it to be present on the PS2-Linux, or even for an analog to exist. Rather, draw yourself a nice bath, print out sections of the VPU manuals, and read away. Having a firm understanding of vector algebra would be beneficial, as would multiprocessing experience and/or SIMD-type processor knowledge.

Codingstyle: Have you attempted to port source from other platforms over to the PS2? What kinds of issues have been the trickiest to work with?

Sarah: I've compiled a fair few Linux apps over, but none of them have required any degree of porting. The most common changes are altering includes to use the header files available, and fiddling with Makefiles. People will find the older versions of KDE and Gnome included make life difficult if you want to compile something newer from either of those projects.

M.R. Brown: Thus far, I've been involved with the (half-finished, in my opinion) kernel port. The main issue that I've run into was the lack of solid GNU toolchain support for the Emotion Engine. In particular, the GNU binutils toolchain is antiquated, as the EE support was added somewhere between binutils 2.9 and 2.10, and was never updated after that.

This wouldn't be a problem if the newer GCC toolchains (the GCC 3.0.4 patch that supports the EE) didn't rely on some of the more advanced features that the more recent binutils provides. One of my projects on playstation2-linux.com is an effort to upgrade the EE support in binutils to binutils 2.12 and beyond. This has proved to be a somewhat daunting task, since large portions of binutils were rewritten and many new features added since the release of the original EE toolchain. I hope to have a release available sometime next month.

Going back to the kernel port, there's a lot of work that needs to be done to get the kernel in shape for submission to the mainline. Sony has a working port (what's shipped with the kit, or available online), but it's far from complete and there are a few glaring errors and inconsistencies. The developers on the xrhino-kernel project plan to upgrade the Linux 2.2.1 kernel provided by Sony to a more recent 2.2.20 version, and streamline the kernel as much as possible to the PS2's hardware. Also, there's work being done to add IEEE 1394 (Sony's iLink) support to the kernel.

We plan to eventually port the 2.2.20 kernel to the 2.4 series. We're also examining the possibility of submitting PS2-specific patches to the kernel maintainers for the 2.5 development series, but that's a long way off.

Joan: Yes, see my XMAME port for the PS2 on the main PlayStation2 Linux page. Porting wasn't particularly difficult initially, but I was dissatisfied with the default PS2 pad joystick driver in the kernel (that emulates /dev/js0). It doesn't recognize the second joystick, doesn't support the actuators, nor the full pressure-sensitive mode. Not all are supported under xmame yet either, but I've got more working now than the standard driver would handle. (My personal ambition is to get Q*Bert's thumper mapped to the PS2 actuator.)

In the process I realized that xmame's input routines were rather weak, and rather than fix a special case (PS2-Linux), I'd rather help everyone out and rewrite the input routines as well. You may find as well that special hacks necessary to get the PS2-Linux setup optimized for a particular port requires more extensive modification than you originally realized. If that's the case, don't keep hacking on your bit -- do the right thing, contact the product's administrator, and work together to make a better product. After all, this kit is about supporting OSS, and what better time to help out positively?

now3d: All UN*X command line stuff ports fine. GUI stuff is ok, but the GNOME and KDE is so old you may have to hack a little.

Adam: I've done some "easy" ports that are mostly just a recompile. I haven't had a lot of time to tackle more complex ports since the website is still very much under development.

Codingstyle: What tools are you using for developing applications for PS2 Linux? Any favorite tools? If so, why is it your favorite?

now3d: I develop on Linux; I have the drives mounted over SAMBA/NFS so my best tool is another Linux installation. This helps with booting from the network as well.

Joan: At the moment, my favorites: vim, gcc, make, and more vim. Though given the compile speed on the unit itself (quite slow, even reniced to -19) I may be pressed to set up a cross-compilation environment. Soon I'll also delve into the profiling tools, as performance continues to suffer.

M.R. Brown: Nothing out of the ordinary, just vim for source editing, and binutils and GCC for cross-compilation. I don't personally subscribe to any more tools than those.

Adam: All of the standard Linux development tools will work quite nicely for developing code for your Playstation 2. Which tool to use is a matter of personal taste, and it's certainly a bad idea to start the VI/Emacs war a-new :)

Sarah: Vim! There's no integrated development environment provided or anything, but an editor and the libraries provided are all you need. Kevin Holbrook from Metrowerks is trying to drum up enthusiasm for a version of CodeWarrior for the Linux kit, but I think he'd need expressions of interest in the thousands to make progress.

Oobles: We don't have many tools other than the compilers for PS2DEV at the moment. My favourite is PS2LIB.

Codingstyle: What do you see as the most pressing needs for this new development platform that potential developers could make an impact with?

Adam: What is needed depends on what people decide to do with the kit. We certainly expect some media players, games, and demos to come out of the Linux kit... but beyond that, who knows? What is developed for the kit will really only be limited by the imagination of developers using the kit.

now3d: Games; the kit has a limited appeal, and it's fairly low powered, so only games or hobby programmers will find it that useful I think.

Sarah: Plenty of people want to see a driver for the firewire port.

Brandon: FireWire support would be very useful and would likely lead to alot of cool projects.

Joan: Right now the best thing to do would be to continue to code up some sample usages of the various devices available. I plan on releasing a little test harness I built for the PS2 pad controller so everyone can see how the various device ioctls work. Anything to continue to push this hardware to its limits would be great. (Personally I'd like to see the IEEE 1394 port working so I can connect my external CD drive to the PS2.)

Codingstyle: What do you consider as being the most exciting project currently being worked on?

Sarah: From a Linux point of view, newer versions of the xRhino kernel that offer stuff like support for ext3 will be fun. From a graphics point of view, it's all interesting, I can't wait to see what people develop. I've heard of all kinds of wacky ideas. After the kit is released, I'm sure the number of projects we host will run into the hundreds.

Brandon: HyperCube of course! ;) Other than that, I'm looking forward to firewire support being added and I'm sure a lot of people will be downloading the MAME port from the playstation2-linux website...

Adam: Currently the xRhino kernel is probably the most interesting to me. It is my hope to see the most recent stable versions of the Linux kernel on the Playstation 2 soon. The xRhino effort is the first, and so far appears to be the most successful, of these efforts.

M.R. Brown: The xrhino-kernel port and binutils project, of course :). Seriously, I don't think there is any one project that's better than the rest. There are new projects popping up on playstation2-linux.com every day, and there are already a large number of projects maintained by Japanese kit owners. I think that all of these projects are equally useful as far as getting folks inspired and developing, which is what I'd like to see. More coding, less talking.

I am more interested in the original game projects though...I think we'll see some amazing things come from both single and team-based homebrew developers.

now3d: The main distribution, and PS2GL the OpenGL implementation.

Joan: Optimization and improvement of things like the ps2gl layer so that people can really get to the heart of what makes the platform special quickly. I'm fully aware that 2D graphics like xmame aren't a perfect match for the PS2's video subsystem...but given the existence of an excellent GL-like layer I might be provoked to port some other creations to the machine.

Oobles: I think the best project so far has been PS2LIB. This library was started by Gustavo Scotti last year and since then a lot of different people have added to it. For anyone wanting to do something useful with the PS2 this library provides many of the system calls required. Theres still bits missing from the library, but its demonstrated a real sense of community between developers in the way that many people have added their knowledge.

I'm really interested in getting some USB drivers for devices like USB Ethernet running. I think that would add a whole new dimension to programming the standard PS2. I've already identified a USB ethernet driver and the light weight IP driver which would provide TCP/IP on a standard PS2.

Codingstyle: What kinds of hardware specifications has Sony provided? Are they complete? Is there anything missing?

now3d: Some are missing; it's all done though an interface layer that we dont have the source to, so we get a faily abstract view of things. But we have all CPU manuals, etc; they just dont give us the encryption decoders :P

Joan: You've got pretty much everything you need for what's supported out of the box. Obviously, IEEE 1394 support would be a boon, so any of you out there familiar with such devices should get on it as soon as possible. There also seems to be no direct support for DD 5.1 audio streams.

Because the RTE isolates you from direct interfacing with the pads, CD/DVD and the like, you're missing information about those units. It's a shame, partially because that means you're slaved to the RTE (which seems to be doing almost everything using PIO, by the way), and partially because I like to see the way various devices are directly interfaced (as an old device driver author myself.) But it shouldn't prevent you from accessing everything you need to make this hardware shine.

Brandon: They've provided documentation for the EE and GS. Documentation on the EE gives you an overview of the different devices of the chip (CPU, VPU's, IPU, DMAC, etc.) and there is more thorough documention outlining the CPU and its instruction set as well as the VPUs and their instruction set. The documentation for the GS is very thorough, but I believe it leaves a few registers undocumented.

Basically, if you are sticking to userland and are focusing on games or applications that take advantage of the PS2's unique hardware, you shouldn't have any problems - if you're a kernel hacker you might find the documentation a bit thin, however kernel hacking is not my thing so I would take my opinion with a grain of salt...

Sarah: We've provided 6 out of the 7 hardware manuals that we give professional PlayStation 2 developers, verbatim. The last one is the manual for the IOP, which isn't included because we provide access to the IOP through a software interface (the Run Time Environment).

M.R. Brown: Sony provides translated manuals for the Emotion Engine, Graphics Synthesizer and Vector Processing Units. Because high-level access to the I/O Processor (IOP) is closed within the kit, there is no manual for the IOP. The hardware manuals that are provided are complete, save for the missing register information for each hardware component described. You are provided with details of the hardware registers, but not register I/O memory addresses.

The most documentation I've found comes from the undocumented Linux kernel source, and the add-on libraries provided on playstation2-linux.com: ps2gl, ps2stuff, and SDL. I suggest that anyone interested in the "how" of the PS2 hardware read through these sources. The kernel sources may be a bit steep for the average user, but the following is a list of places to start reading (assuming you're already in the linux/ top-level source directory):

drivers/ps2/ - Memory card filesystem driver, ethernet adapter driver, t10k (TOOL) support.
include/asm-mips/ps2/ - RunTime Environment (RTE) parameter info, PS2 support headers.
arch/mips/ps2/ - PS2 boot code and support routines.

There's also PS2 hardware support splattered throughout the rest of the kernel source, a grep of "CONFIG_PS2" should return the relevant sources.

The great thing about the source-level documentation is that you won't have to wait until the kits release to read them.

Adam: We've provided system manuals for all of the components except the IOP and SPU. These devices are only accessed through the RTE with the kit.

Oobles: I believe that with the PS2 Linux kit Sony has provided a number of documents about the hardware of the PS2. For a little while we thought they would open these documents to the PS2DEV community; however they have decided to keep the documents copyrighted and only available if you purchase the PS2 Linux kit.

The is already quite a lot of information available for PS2DEV programmers. There is also more of an emphasis on understanding MIPS assembler so we can work out how other PS2 programs work. The real hard work has already been done and put into PS2LIB.

Codingstyle: What are the differences between the Japanese PS2 kit and the North American one? Are there any issues which are likely to affect developers?

Sarah: Some of the Japanese PS2s have a PCMCIA port for expansion, rather than the expansion bay inside the unit. The hard drives for these are external, with PCMCIA connectors. The HDD for other units just looks like a standard IDE hard drive, although I think there's some extra firmware involved. I've no idea if there are any differences between the PS2 units in Japan and elsewhere anymore, but I doubt they'd affect developers at all.

Adam: In Japan some playstation models require an external HDD. From a software point of view, these will appear identical and function in the same way.

M.R. Brown: Well, the original Japanese Beta Kit (released sometime summer 2001) was shipped with a PCMCIA-based ethernet and IDE interface, since PCMCIA was the expansion method used in the first wave of Japanese PS2s. Later, Sony manufactured PS2s with an internal drive bay and a rear expansion port, and dropped the PCMCIA port - these are the PS2s that North America ended up with.

Because of the hardware abstraction provided by Linux, I don't see any issues developing for the Japanese kit versus the North American one.

Joan: I couldn't answer this one, but I've heard it's basically the same DVD (with boot-up checks for your PS2's region). The Japanese PS2 kit I have was originally the beta release, about a year old now, with an upgraded DVD (v1.0 DVD came out here about a month ago now.) My PS2 is a 15000 model, meaning it has the PCMCIA connector on it and an external HDD instead of an internal bay and that proprietary "expansion" connector. I kinda like knowing I could stick another PCMCIA card in there if I wanted to, but since it would eliminate me using the Ethernet port or the HDD, it's a moot point for Linux-PS2.

Oh, and the keyboard is a Japanese model, meaning I can enter Japanese characters directly. For those of you who don't write/read Japanese, this isn't a big loss.

Codingstyle: Any chance of running binary applications from other MIPS platforms, such as Irix? If not, why not?

now3d: No, they would need recompiling, as its a different architecture; just same design overall. Also, Irix uses fp (frame-pointer) which is not used by the PS2.

Adam: I don't think so, but I'm not enough of an expert to say for sure. I'm not aware of any other platforms that would provide binary compatability with the Emotion Engine's R5900 core.

Joan: After having administered Irix for a few years, I can say that I really don't care much about other MIPS platforms :) But I haven't explored this at all, so anything I'd say would be a wild-assed guess.

Brandon: Well there are several problems in trying to run SGI binaries not the least of which is that the SGI binaries are written for big endian systems whereas the PS2 is little endian. Also you would likely run into the problem of IRIX applications trying to use libraries/facilities that aren't available on the PS2 or Linux. So you're probably going to have to do quite a bit of emulation to get the code to run on the EE & Linux correctly.

M.R. Brown: It may be possible to do some sort of "soft emulation", like what WINE and VMWare uses to achieve fast execution of native x86 applications. However, I don't really see the point of this [Ed: Setiathome ;-) ], as most of the applications that were developed for IRIX-based workstations were tuned to be high-performance graphics programs. This is not to say the PS2 is incapable of high-performance graphics, it is, but the PS2 memory constraints (32MB onboard RAM) would prevent most IRIX programs from running at any usable speed.

This would also be somewhat dependant on the particular processor being emulated. I remember IRIX running on everything from MIPS R4000 to MIPS R14000, and the later CPU variants would be much more difficult to emulate at any reasonable speed (some of these are true 64-bit architectures, which the PS2 is not).

I see it as being possible, but not really feasible. It's easier to find and purchase a used or remanufactured SGI workstation instead.

Sarah: I don't think so. You'd have to recompile from the source. The Emotion Engine is only one type of MIPS processor, and it's been customised. They may not have the same endian-ness too.

Codingstyle: What do you hope to be doing with your PS2 say, in a year's time?

Oobles: I'd like to see more people involved with the PS2DEV community so that more tools and applications become available. I'd like to think that the community can bring together enough tools to make it possible to build reasonable quality 3D games with sound and internet connectivity.

Adam: I hope to be sitting on my couch, surfing the web, getting my e-mail, and checking out the latest cool demo.

Brandon: Playing HyperCube! (which implies that I would have completed the project. ;) )

Joan: I'd like it to be a standalone unit for my kitchen and living room, where I can browse on a flat panel display, pipe music into the room, play MAME games (of course!) and pull up recipes from my extensive collection. It'd show slideshows & home movies from my collection (courtesy of Bluetooth and/or my digital still camera's output). Basically, it's a form of MMPC that doesn't require all the overhead or noise. Though I've been working with technology for 21 years, I prefer my technology to be hidden away. This unit, above most others I've seen, promises just that.

M.R. Brown: Still playing fun games and toying with the internals of the system. :)

Sarah: I wake up, and boot my PS2. While I munch through my cornflakes, it displays the news headlines, and tells me that my brother just broke my latest high score and I have to go beat him. Then I review my mail using voice recognition, fix the bug that was defying me at 2am the night before, and spend the rest of the day designing the ultimate weapon that will get me back in the number 1 slot on that high score table.

I hope that I'll be so spoilt for choice, that choosing what I'd like to do with my PS2 is overwhelming.

now3d: Getting paid to work on it? £££ would be nice.

Codingstyle: Any closing thoughts, comments?

Joan: Sure. Just because your PS2 has an incredible 3D engine doesn't mean you should forget the lessons of 2D games. More and more these days I don't play the latest releases because they're all the same: fighting games with "increased realism," racing games, and more first person shooter games. There used to be quite a larger variety of games, and not all of them were geared towards the male 15-30 gaming audience. Try programming a cooperative instead of competitive game. Explore the idea of using 3D to provide an essentially 2D game with 3D texture and relief, instead of demonstrating your graphical prowess with another spurt of blood. I'd wager to say that you'd do well -- the best selling games out there still tend to be less violent ones (The Sims, Rollercoaster Tycoon, even Dance Dance Revolution!) that appeal to all walks of life.

M.R. Brown: I initially had strong reservations about Sony's initial release of the PS2 Linux kit in Japan. This was because I was part of the PSX homebrew development scene (Net Yaroze), and Sony was definitely not interested in supporting anything wasn't part of their Net Yaroze product. This had the unfortunate effect of putting a large number of homebrew developers off, and we resigned to developing for the system with information we gathered ourselves. The PS2 homebrew community has started down the same path, but the kit promises to reshape how we develop for the system.

After talking directly with SCEA employees and hearing Sony's intentions, I have only good things to say about their work on the kit. Sony truly wants to foster open development on the PS2, something that has never been done on any other console gaming system. Open communitites (including Sony), hardware documentation, and modern tools will go a long way to ensure the PS2 remains the dominant gaming and hacking platform during its lifetime.

Because of the way the kit was designed, it's not just limited to developers working under Linux. You have the option of developing "native" PS2 applications and loading those from memory card without booting Linux. This makes the kit equally useful for homebrew developers not interested in Linux. Hopefully the community at large will keep a cool head and not try to use the kit for wrongdoing.

now3d: Roll on PS3 :)

Sarah: The Linux kit is a two headed beast; while offering a pretty complete Linux distribution that enthusiasts will enjoy playing with, it also serves as the next-generation Net Yaroze in a much more open form. I'd ask the community that grows around the Linux kit not to forget the dual purpose role that the Linux kit serves, and entertain queries about games and graphics development just as much as they do about getting services and applications running and configured properly. Hopefully, the website will grow and develop to offer a useful and informative resource to both the graphics programmer and the Linux enthusiasts; but this will take some consideration from the community as well as ourselves.

Codingstyle: Thank you!

Useful PS2 development resources:
Like interviews? Codingstyle also did an earlier developers interview with several key contributors to the wxWindows cross-platform applications framework project. Check it out!

About the interviewer: The interview was conducted by Steve Frampton, the owner of codingstyle who runs it in his spare time. Steve is Canadian but is currently living in Japan, employed for a dot-com in Tokyo as a Unix software engineer, working primarily with C++ and PostgreSQL. He has been playing with the Japanese version of the Linux kit since it was officially released at the end of April, but hasn't done much with it other than use it as a NASD device for his main PC. :-)
 
Login
Username

Password

Don't have an account yet? You can create one . As a registered user you have some advantages like a theme manager, comments configuration and posting comments with your name.

Related links
· More about Interviews
· News by Steve Frampton


Most read story in Interviews:
Codingstyle Interview with wxWindows Developers


Threshold
Comments are owned by the poster. We aren't responsible for their content.
Re: Codingstyle Interview with PS2 Linux Developers (Score: 1)
by mrbrown (-)
on May 22, 2002 - 11:03 AM
(User info | Send a Message) http://
I'd like to clarify a couple misconceptions Oobles states in his first response:

"The Linux kit includes a hardware abstraction layer and linux operating system that would get in the way of programming directly to the hardware. I and others in the PS2DEV community use free tools and USBUSB link cable to connect the PS2 with a PC. Using a program called naplink loaded onto the PS2 and PC I'm able to transfer programs directly to the PS2."

And further down:

"The absolute minimum requirements are a little different depending on if you have a PAL or NTSC model PS2. The PAL PS2s come with a Demo disk. This combined with a Naplink disk and PL2301 USB-USB cable is enough to load your own programs onto the PS2. To boot naplink on an NTSC model I believe requires a mod-chip, but I could be wrong there."

The hardware abstraction the Oobles is referring to is called the Runtime Environment, or RTE. It provides a library interface to the I/O Processor (IOP) similiar to the one professional developers use, except instead of being linked to the program (Linux) it's loaded into RAM before Linux boots. There are _no_ abstractions or restrictions on the rest of the PS2 hardware, including the GS, EE, and vector units.

The PS2LIB library that Oobles refers to throughout the interview also contains the same IOP abstraction routines that the PS2/Linux RTE provides. In fact, the routines present in PS2LIB were developed by reverse-engineering third-party PS2 executable code, which means they're essientially the same routines as those provided by the RTE.

While the Naplink USB transfer program is certainly useful for sending programs to a remote PS2, getting the Naplink program booted on a vanilla PS2 (which most kit owners have) is another story. As Oobles states himself, you either require a cumbersome swap trick (only works in certain PS2 models) or you have to void your warranty by installing a modchip device. This raises the bar considerably for those who want to go to the PS2DEV route, and it isn't necessary if you use a few of the undocumented features of the kit.

One of the most surprising features about the kit is how the Linux kernel is loaded into RAM and executed: the kernel ELF file (a common executable format that's also used on the PS2) is stored to the memory card, and the PS2/Linux bootloader loads it into RAM and executes it. However Sony allows you to place _any_ ELF executable on the memory card to be loaded. This means that any native PS2 program, even those written by PS2DEV enthusiasts, can be loaded without a swap trick or modchip. This is how the NetBSD and eCos teams were able to port their respective operating systems to the PS2.

Once could conceivably place a Naplink-like transfer program to be loaded in lieu of the kernel, and have the same facilities as a PS2DEV hobbyist - the possibilites of using this technique are endless.

Refer to my last response in the interview - the Linux kit is equally beneficial for all PS2 hobbyists, both those interested in Linux and those who aren't. If you're serious about learning how to write programs for the PS2 hardware I would highly recommend getting it.


All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001 by Codingstyle.com. This web site is running Post-Nuke, a web portal system written in PHP. Post-Nuke is Free Software released under the GNU/GPL license.

You can syndicate our news using the file backend.php or ultramode.txt
Palm and Avantgo users can access our news at avantgo.php