Net Yaroze on the Mac OS
Volume Number: 13 (1997)
Issue Number: 12
Column Tag: Alternative Environments
Net Yaroze on the Macintosh OS
by Ed Ringel, with Jeremy Vineyard
Is game console development for you? MacTech takes a lightning tour of Net Yaroze on the Mac OS
Most of us like to play games, and some of us would also like to write our own. Besides desktop computers, there are console systems on the market specifically designed for playing games. Nintendo, Sega, Sony, and Atari are just a few manufacturers of these systems. Until recently, game console game development has been the exclusive domain of commercial developers. Presumably, in this way only the best quality games will be created for their systems, and will thus most effectively promote their product. Sony has created a different option, a way for hobbyists to create games for the Sony PlayStation, without participating in the professional developers program. This program is called "Net Yaroze," pronounced Yah-RO-zay.
What it is
Net Yaroze is Sony's development package that gives hobbyist developers access to the PlayStation OS. Net Yaroze comes with a Net Yaroze member's PlayStation, a special Net Yaroze access card, a boot CD for the PlayStation, a software development CD containing sample code and libraries, and paper documentation. Net Yaroze is also referred to as Yaroze. Hobbyists can subscribe to the Yaroze program for approximately $750 by contacting Sony.
What it needs
The Net Yaroze member's PlayStation is a special black PlayStation with an added port in the back for connecting to a PC. In addition to development, the Yaroze member's PlayStation can play any PlayStation game. The Net Yaroze developer kit was designed for IBM compatibles, so it uses a connection that is not directly compatible with any of the Mac I/O ports. To connect a Mac to Net Yaroze, you need a DB-9 adapter cable, also known as a modem cable (around $ 5-10). [Note that the connection is DB-9, not DB-25. --Ed.] CodeWarrior for PlayStation does not come with Net Yaroze and must be purchased separately for around $300.
The Net Yaroze development system uses a serial port, so if both a printer and a modem are already hooked up to the Mac, a serial port switch box or PortJuggler may be an excellent investment. These devices range in price from $20 to $130 depending on their capabilities.
To debug (and play) Net Yaroze games some sort of video system is necessary. Generally, this means an external monitor, an RCA video input (AV Mac's), or a TV/video capture card. There is no "right" decision here. I have been using TurboTV- a cross-platform PCI TV card for either Mac or PC, but I was disappointed by the extra compatibility problems introduced when I installed the card. It can make the computer somewhat unstable, and virtual memory must be off for systems before 7.6. Unless you already have video input capabilities in your Mac, an extra cheap television may actually be a better purchase than a TV card. A "real" TV has the advantage of showing what the images will really to look like, but the computer screen TV image is dithered and interlaced, even in millions of colors. Also, TV cards are convenient and make it easy to capture screenshots and QuickTime movies of your games. Why the extra TV? Although most people already have a television at their disposal, they may not be willing to dedicate it solely to the purpose of debugging and playing Yaroze games.
What it isn't
Net Yaroze is very different from commercial PlayStation development. The vision of Sony in creating this program is that of a worldwide group of talented, programming hobbyists developing games to play and share amongst themselves, connected by the Internet under the help, care, and guidance of Sony. This is not a low end, alternative entry point into commercial programming, but a hobbyist's club with many safeguards (or obstacles, depending upon how you see it) to prevent the dissemination of hobbyist developed games into the protected, quality controlled end user market.
Net Yaroze games will run only on Net Yaroze consoles; they will not run on commercial PlayStations. Obviously, this is Sony's main firewall between the Net Yaroze and commercial development programs. Conversely, commercial games will happily run on Yaroze units. In fact, one perk of being a Yarozian is that any commercial game for any of the target markets will run on a Net Yaroze box; there is no geographical lockout as with commercial games units. (PlayStations marketed for North America, for example, will only run games marketed for North America.)
Another difference is that the code libraries provided are a subset of the commercial development libraries. Also among the main differences is a ceiling on code size for Net Yaroze development. The licensing program, although reasonable, appears to be no nonsense in character and would probably not be tolerant of efforts to breach the hobbyist/commercial separation. The reader is recommended to the web sites mentioned at the end of the article for some excellent FAQ pages that help delineate the specifics of the program.
Thus, although PlayStation development may hold considerable interest for the hobbyist game developer, the up-front cost may be substantial. Furthermore, there may be several hassle factors: loss of a port, Mac OS specific costs, and the pros and cons of various video output solutions.
Learning To Program for Net Yaroze
The Net Yaroze package comes with three manuals: a startup guide that shows you how to set up the Net Yaroze and run sample programs (for IBM PC's); a user guide that explains the various components of the PlayStation OS; and a library reference manual that contains descriptions of library functions that can be accessed when writing Yaroze software.
The manuals are thorough, but they describe a complex environment. PlayStation game developers must deal with most of the same problems as do game developers for PC's; game console development is far from easy. Proficiency in C or C++ is required to be able to understand the documentation and sample code. C is strongly recommended as the development language by Sony. C++ is not officially supported, although can be used.
Net Yaroze has its own web site specifically designed for Net Yaroze developers. This web site contains sample programs written by other Net Yaroze users or by Sony, documentation concerning PlayStation data formats, and other useful information concerning Net Yaroze development. The web site also contains utility programs for Net Yaroze developers, but for now they are mostly only for IBM PC's.
Net Yaroze on Macintosh
Setting up the system
To set up Net Yaroze for Macintosh, the prospective developer needs to follow a few simple steps. First, insert the Net Yaroze access card into the PlayStation. Next, connect the PlayStation to the Macintosh serial port using the DB-9 adapter cable. Then, install CodeWarrior for PlayStation and the supporting Yaroze libraries. Finally, boot the PlayStation with the Net Yaroze boot CD. After following these steps, programs and data files can be downloaded to the PlayStation. Let's take a moment to look at the Mac OS specific development system, CodeWarrior for PlayStation.
CodeWarrior for PlayStation
CodeWarrior for PlayStation is a plugin for the CodeWarrior IDE environment. By maintaining a standard interface, developers familiar with the CodeWarrior IDE will have little trouble writing code for the PlayStation. The CodeWarrior for PlayStation package includes the IDE and plugin for both Mac and Windows platforms along with on-line documentation explaining how to target the PlayStation platform. It also includes a tool for converting graphics to TIM, the PlayStation graphics format, and one sample program for Net Yaroze.
CodeWarrior for PlayStation is still in its early DR stages, so developers should be cautious when considering a purchase of this product. The environment itself is stable, but the tools are sparse and not very well developed at this point. Fortunately, Metrowerks is working on improving tools for PlayStation development.
Currently, it is impossible to run many of the sample programs that are posted on the Net Yaroze web pages because source code is not available, but Metrowerks plans to fix this shortcoming in the near future.
PlayStation technical support was variable. I posted several technical questions on comp.sys.mac.programmer.codewarrior and had replies from several
people that same day. An e-mail to tech support however, received no response.
Let's Write Some Games!
To write games for the PlayStation, a developer must understand the PlayStation OS and libraries which are described in the reference manuals included along with the Net Yaroze environment. The developer must then convert any graphics or sound data to the appropriate PlayStation data formats using the tools provided with CodeWarrior for PlayStation. Conversion tools can also be found on the web. After the PlayStation code has been written in C or C++, it can be compiled into a PlayStation executable file which is then opened into the Metrowerks debugger (the release that comes with CodeWarrior for PlayStation must be used). Once a PlayStation file is opened in the debugger, it can be downloaded to the PlayStation. At this point, you will be playing your very own, custom-made PlayStation game! Now, let's stamp out the bugs.
Figure 1. Net Yaroze Sample Program.
Debugging PlayStation Games
Cross platform development can tax even high end host computers. Environment limits are especially noticeable during the Net Yaroze debugging process. Because the debugger must communicate with the PlayStation through a serial cable, the debugging process, even at its fastest terminal speed, can be painful. Stepping through in the debugger is slow even on a 200 MHz Mac. It is not possible to switch programs after one has started running. Instead, the PlayStation must be reset manually every time a new program is to be run or the same program is to be rerun. This is particularly inefficient and slow because of Sony's startup advertisements. Metrowerks plans to fix this in an upcoming release.
Perhaps the most serious problem with the debugging process is that breakpoints cannot be set or edited while the PlayStation program is running. The implications of this are that developers must decide exactly where they want their breakpoints before starting debugging, something that is difficult to do with larger projects. According to Metrowerks, this is a hardware limitation and cannot be fixed.
Net Yaroze provides hobbyists with the opportunity to write authentic console games. Until now, that has been difficult to accomplish. Metrowerks is currently working on new tools that will make Macintosh Net Yaroze development much easier in the near future. The would-be console game programmer should be aware of the limitations of the system, the steep learning curve, and the costs involved. Nonetheless, Net Yaroze development might be a new and satisfying undertaking for the hobbyist, and give the would-be professional a chance to test the waters.
Net Yaroze, Sony Corporation. See URL's for contact information.
CodeWarrior for PlayStation/Net Yaroze. See URL's for contact information.
http://www.scea.sony.com/net/index.html is Sony's home page for Net Yaroze information. The interested reader is strongly recommended to this page. In particular, the FAQ page can really help you make a decision regarding purchase.
http://www.Metrowerks.com/products/cw/playstation/cwps/index.html and http://www.Metrowerks.com/products/cw/playstation/netyaroze/index.html are two pages are Metrowerks index pages into CodeWarrior for PlayStation and CodeWarrior for Net Yaroze. Again, the interested reader is vigorously recommended to these pages. Both the Sony and Metrowerks pages have links to related sites, email contacts, registration forms, etc.
Ed Ringel, firstname.lastname@example.org, is Contributing Editor for product reviews for MacTech Magazine. In his spare time, he is a respiratory and critical care physician in Waterville, Maine.
Jeremy Vineyard, email@example.com, is a software engineer at Screenplay Systems. His interests include developing games, software utilities, and application class libraries.