A failed attempt to get an underground development book published. I managed to sell this idea with a quick ten word pitch in an elevator. It then took me 5 months to write it and the publisher another 5 months to get around to telling me that it wasn’t going to be published. At least they paid a small lump sum up front which was nice.
There are more than 100 books on Java on shelves today and not a single book on programming the PlayStation. The reason is that Java is open, and Sun want you to know about it. The PlayStation is a closed system, Sony would rather you never even think about what goes on inside it just so long as you buy software for it. This means that the only people who ever get to program the PSX are an exclusive few, professionally employed programmers under strict non-disclosure agreements. It’s important for Sony to protect their intellectual properties but if you purchased a Ford pick-up and were told you were not allowed to lift the hood, even as a fully qualified garage mechanic, you’d soon look elsewhere for your transportation needs. What I hope to do is give insight in to how to program the PlayStation, to the actual operation of the console, what each component does, and how those separate parts make up one of the best 32-bit consoles available today.
This book assumes you already know how to program and what a compiler is. It holds your hand while you get your feet wet in console development but it does not teach you how to write good code or how to create 3D rendering engines, there are a lot of excellent books out there that do a very good job of that.
There are a number of reasons to reveal the PlayStation internals. Back in the old 8-bit days people who owned computers as a hobby or used them in their day job would have thought you deranged had you suggested that the company who manufactured a particular machine didn’t want you to know anything about it. What would be the point of owning it? Atari started a trend of jealously guarding and hiding information with the release of their Atari 2600 VCS games console and the trend is continuing, with alarming increase. The only open platforms available today that a hobbyist programmer can tinker with is Windows, Mac or Linux. Big, beige boxes that are not much fun. I’m not advocating that Sony, or any other company, give away their hardware or software for free, if they did that then I’d be out of a job, but restricting people from experimenting and tinkering with a computer system with the use of contracts and the threat of legal action can only hurt the companies involved and the products they sell.
I had some reservations about writing this book. I still do. This book reveals cutting edge secrets: knowledge that can easily be abused. Nonetheless, I have come to the conclusion that a book like this is necessary if a whole generation of programmers is to experience the excitement of programming a console.
This book is intended to be used constructively. It divulges secrets and knowledge that can further your career and knowledge of programming, get you a fun, well paid job doing something you really enjoy or just let you create something that no one else has done before. You won’t find information on how to copy PlayStation games or how to defeat the copy protection on the CD-ROM discs.
Part I: The PlayStation Hardware
Part I is an introduction to the PlayStation hardware and internals. You learn about the various sub-systems that make up the PlayStation beginning with the MIPS R3000A CPU at the heart of the machine. How the MDEC decodes data streams to put movies on the screen, how the SPU produces audio and how sound from the CD and SPU is mixed, the role of the GPU and how the GTE interacts with it to display fantastic 2D and 3D rendered graphics. It concludes with information on the various I/O connections on the external casing of the PlayStation.It is not necessary to understand the physical PlayStation hardware in depth, and knowledge of electronics is completely unnecessary but a thorough grounding in the principles of each sub-system will enable you to push the console to it’s limits. It’s often helpful to know what’s going on inside of the GTE or GPU to get the maximum available polygons on screen at once and pipeline stalls in the processor can be avoided with an understanding of how instructions are dispatched and the memory is handled.
Part II: How to Build Your Own Yaroze
Part II reveals how to put your own Yaroze together and communicate with a host computer. Where to get the various parts, the software tools required, and documentation available.
Part III: How to Program the PlayStation
Building on your knowledge of programming from other computers and operating systems this chapter teaches you how to get the most from a PlayStation.
Part IV: Appendices
Part IV provides several handy reference appendices for those skills you learn in Part III.