- Draft -
In 2016, I spent most of my spare time hacking away with the old playstation, Net Yaroze.
You can see all my Net Yaroze blog posts here.
My previous experience with the Net Yaroze was back in 1999.
I bought it after seeing a UK OPSM (Official PlayStation Magazine) demo disc video saying it was discounted:
At the time I was a IT student (Computer Science), I started in software development, programming C/C++, win32/MFC/OpenGL and Java.
But I majored in information systems (Enterprise), in the mid/late 1990’s business ERP products were all the rage!
It took me about a year to go through the manuals and Black Art of 3D Game Programming before actually starting anything substantial.
On my Christmas break of 2000 for 3 months, I remember being locked away in my room and crunching so hard, I was actually looking forward to the start of uni!
I learnt how to master the clunky 3D format and made a 3D side scrolling demo, with animated block people, very much like minecraft.
After that experience, I remember thinking, “if game development is this hard, I don’t want to do it!”.
In hindsight, what made it hard was lack of any planning and wanting to do everything myself, I plan more but still want to do everything myself.
Also 2000-1 wasn’t a good time for IT work, with the dot com crash, I remember hearing about a few local game companies going bust.
So, I chose the enterprise/database field instead.
I moved to a bigger city, got a better job, bought an old house and I literally renovated everything myself that wasn’t structural! (yes even water, gas and electricity).
Fast forward to 2013 and with the major renovations finished, I had spare time again and the Ouya happened.
But I was very disappointed with the cheap hardware and the scandals of “free the game fund“, so I never bought one.
Instead I got a Madcatz MOJO, it was the best Android TV box (’microconsole’ as they were called) and to me it was the Nvidia Shield TV of the time!
So that sparked an interest in game development again, I looked into open source engines, I settled with Gameplay3D(C++) for a while, but the creators removed older OS target support which is, in my opinion wrong!
So, next I bought Esenthel(C#) rapid development but the owner decided to put always online DRM.. pfft, no thanks!
Then, I moved to Urho3D(C++), a lot of features but I didn’t like the C++ template design.
Through this time, Unity3D was the most popular game engine and I did try it a few times.
But I couldn’t bare the flash backs to Visual Basic, maybe something was telling me that it just wasn’t my path?
By this stage it was late 2015 and I didn’t have anything done, just a few tech demos and the youtube videos that I randomly uploaded of them.
Around this time, the retro gaming and ‘lets play’ (aka twitch) scene became a big deal.
Not many were covering the PS1 though, until a few of the bigger channels started doing history and/or obscure gaming videos, which the Net Yaroze featured.
So, knowing when it launched, 1997 (UK/US), I thought to revisit it for the 20th anniversary and see if I can find some of the old members.
With hindsight, this was the best option I could have taken to get back into game development.
So this is a summation of my learning and thoughts on Net Yaroze, general game development and other things.
I wouldn’t recommend PlayStation (aka PS1, PSX) development to anyone today, especially not for beginners!
I did it out of nostalgia initially, it was something I invested a bit of time in my youth and always regretted not doing more.
Sure, the 3D pipeline is magnitudes simpler then learning a shader language, but learning fixed point math & useless formats instead, isn’t really worth it!
Saying that, if you really really love the hardware and you really really want to create something on the OG PlayStation and already know C and how low level binary works, then this is the guide for you!
To say Sony’s Net Yaroze was just a hobby development console, is a gross oversimplification and only the tip of a very big iceberg!
Net Yaroze was revolutionary and very ambitious for the time.
I have organised my thoughts in what I believe the Net Yaroze’s goals were:
The Net Yaroze, spared no expense with hardware:
A region free playstation
It had to be region free to display both NTSC and PAL signals, playing games from any region was a bonus!
Two controllers (digital only)
Made before Sony launched the analog controller, but the library did support them.
A serial communication cable
Cable to connect the playstation and a PC/Mac via a serial port.
A PC CD-ROM with development software
Including a compiler, debugger, proprietary libraries and format conversion tools.
A PS1 boot disk with a security dongle (looks like a black memory card)
Turns the Playstation into a development Playstation.
3 printed documents - in the smaller box, includes a holder
Somewhat poorly translated and a bit thin, they were corrected and updated on the members site.
To appreciate what the Playstation ‘unified platform’ meant, in terms of Net Yaroze, we must first put history into perspective.
In the late 1980’s interactive media games (Full Motion Video, FMV) were all the rage.
It came from the mass adoption of CD-ROM’s on home PC’s and as add ons to consoles of the 4th generation, ie TurboGrafx-CD, SEGA CD, Neo Geo CD.
On a side note, Nintendo, also wanted a CD-ROM based console, and had both, Sony and Phillips working on one but it never eventuated and probably caused them to be 12+ months late in the 5th console generation, with the Nintendo 64.
They must have seen the down turn in FMV games and opted for the faster & durable cartridge for the N64.
They had large investments in cartridge manufacturing after all.
By the early to mid 90’s, the home Desktop PC landscape was widely varied from older 286 & 386, modern 486 machines to newer over clocked 120+Mhz CPU’s.
Operating systems were also varied, including just DOS, Windows 3.11 and Windows 95, which was based on win3.11 technology and had backward support for DOS & win3.11.
Windows NT was a workstation OS, a faster and more stable (full 32bit) version of windows 95, but with limited backwards compatibility support.
If you were developing application software, Microsoft’s win32 API was mature and stable.
But for resource intensive video games (3D specifically, which requires a lot of maths processing), the solution wasn’t clear.
The original Windows 95 didn’t include OpenGL nor did it have DirectX and the early versions (on windows 95) were software rendered, which was too slow for action games.
DOS was the lowest common denominator and didn’t restrict direct hardware access like windows did.
But more importantly, DOS assures the best possible performance interfacing with the hardware directly.
The PC hardware standards were so well formed and reliable that DOS itself, wasn’t used in-game, from https://en.wikipedia.org/wiki/DOS#Design:
The operating system (DOS) offers an application programming interface that allows development of character-based applications, but not for accessing most of the hardware, such as graphics cards, printers, or mice. This required programmers to access the hardware directly, usually resulting in each application having its own set of device drivers for each hardware peripheral. Hardware manufacturers would release specifications to ensure device drivers for popular applications were available.
The reason the developers had to include the vendor’s hardware drivers was that it guaranteed access to the hardware, rather then rely on the owner (pre internet) to have the correct and compatible version of the drivers.
But now the developers had to code and maintain several interfaces for different vendor drivers, this would have been a big undertaking just to support all the different hardware variations and combinations!
However, the larger issue with PC’s (and 16-bit micro’s), was the rise of pirating.
Software piracy was limited to physical distribution, which meant knowing somebody to do a copy of a disk or tape.
From the mid 80’s, computers could access a Bulletin Boards System (BBS) via a modem.
This made the dissemination of pirated software very easy and exponential.
At the time, the Playstation’s 3D & CD-ROM hardware made it a very big deal!
But to developers, it’s simple architecture (RISC MIPS CPU) and hardware design (Serial/Parallel ports, MIPS CPU, DMA GPU, dedicated RAM & VRAM) which closely resembled an expensive workstation and super computers, really made it special and cheap enough to be retail friendly.
It made all the consoles before look like primitive calculators, and without overly complex hardware like SEGA Saturn’s architecture.
The Playstation could theoretically have been a TV ‘micro computer’, similar to a micro computer of the 1980’s, it just needed an operating system and a keyboard & mouse adapter!
The Sony proprietary CD-ROM format was also the best anti-piracy measure, the internet just didn’t have the bandwidth (nor storage) to easily transfer large files.
So, I can imagine most of the PC developers throwing themselves at Sony to be part of Playstation.
When retail 3D hardware cards were more affordable and accessible enough, new PC’s still didn’t have them pre-installed like the mass adoption of CD-ROM’s had before it.
This meant, that the 3D game developers couldn’t just stop DOS support and software rendered 3D, but had to also add 3D card support and proprietary drivers.
By 1996, 3D accelerated card manufacturers supported OpenGL and DirectX as a standard, from here on in, 3D DOS games were mostly thing of the past.
Also motherboard manufactures started to integrate audio and video but it didn’t include 3D support, which meant 3D games could only run on a small subset of all home PC’s now.
Mean while, the Playstation was out in all regions and was a hit with gamers.
Being cheaper then a gaming PC, with a good selection of games with impressive 3D/2D visuals, all while playing in front of a TV!
Early Playstation developer’s now having the experience of finishing a Playstation game, were now set to make even better games because of their hardware familiarity!
I’m not sure when the Net Yaroze launched in Japan, I would guess it came out a few (6 to 12) months before other regions.
At the start of 1997, the Net Yaroze launched in SCEA & SCEE regions and priced at $750 USD & £550 GBP, respectively.
It bothers me that the general “gaming media” seems to always compare its’ price to a retail unit… that’s remarkably ignorant!
Even in 1997, a professional development kit & license would have still cost around $20,000 USD, and the Net Yaroze being potentially the same target platform was only 3.75% of that!
The Net Yaroze used a reduced library compared to the professional developer’s kit, this is obvious and logical comparing their respected prices.
I haven’t looked at the professional development libraries, but it was obvious that the low level (3D packet creation & GPU direct access) wasn’t there, instead relying on a 3D format called TMD (similar to the OBJ format, but binary only).
The TMD format supported everything the playstation can do, ie texture mapping, lights and shading.
But animation was ‘roll your own’, which was common with everything back then! but there were several demo’s on how to code it!
Anyone remember seeing the Dino demo?
It was vertex animated with ‘tweening’ keyframes, similar to the MD2 (Quake I/II) format.
But the simplest way to do animation was to use the library’s hierarchical coordinate system.
So removing the low level details, not only protected the value of their pro developer’s kit but also made the 3D library easier & quicker to learn and program.
It was definitely a lot smaller then Direct3D (DirectX) and OpenGL.
Also the 2D library was also (with hindsight) pretty good and even easier to learn, it handled animation, scaling, rotation and colour fading & manipulation.
Below, are my recollections of the game development process with the Net Yaroze, in detail.
In the late 90’s I was a new C/C++ programmer but in 2016 after 15+ years coding in JAVA/SQL, I was very rusty and had to do a lot of relearning.
All the steps below, to me personally, are the kernel of how a programmer crafts robust & portable software!
I see it as a craft because of it’s complexity, intricacies, creative and adhoc nature.
Although, the Net Yaroze came out in 1997, the tools and skill sets haven’t been lost in time, it’s still the fundamentals of software today!
These build tools are core to most Operating Systems and it’s easy to port and replicate!
In fact, I have a separate game development project which builds for GNU Linux (32bit/64bit), windows(32bit), android(most SoC) all from the same code base.
I would say, I enjoy the C/C++ process over JAVA now, I find the more I learn about it, the more I want to learn more!
Programming the PlayStation today, is very much programming an embedded device and the skill set reflects that.
Always be learning and iterating on all aspects of your craft!
The development process
Starting - read a lot!
So I had to rebuy it, I remember how practical and fun the book made 3D maths!
I then reread the user guide and it made more sense.
RIBIT: Read In Bed It’s Terrific! - A slogan I remember from my childhood.
Development environment - Getting Setup
The Sony’s toolchain was made in 1996 so it’s 16bit (DOS).
The development environment was a traditional UNIX setup, just replicated for DOS.
Next, I got the basic demos working and experimented with them and started putting a few together.
Well, that was the easy bit!
GCC - GNU’s Compiler Collection
LD - GNU’s Linker
GDB - GNU’s DeBugger
MAKE - GNU MAKE
I have a healthy fear of MAKE, another language syntax to struggle with!
MAKE, is a pain to setup correctly, but when it’s setup, it’s great!
IDE - Integrated Development Environment
I never had codewarrior’s C++ IDE in the 90’s.
The library, by today’s standards (OpenGL/DirectX) is very very! small and simple!
The Playstation has no floating point hardware, which means the hardware only processes whole numbers.
The GPU hardware design is still very much like today, the GPU and it’s VRAM (1mb) is separated from the CPU and it’s system RAM (2mb)
Emulation - Faster development
However, emulation isn’t perfect, I couldn’t find an emulator which replicated the serial communication for remote debugging.
In hindsight, I should have abstracted the target platform & developed on PC concurrently.
Art asset pipeline
The asset pipeline is still a huge issue today, but specialised 2D & 3D formats have largely been replaced by common ones.
C Programming language
Compared to today, C has no safety (type checking, catch/try exceptions and undefined behaviors), which probably gives C it’s scary image, but a good programmer knows what they’re doing or knows how to fix what they missed.
It’s important to master your language of choice, try new things and keep getting better!
Cheat sheet - Documentation
So I made a word file, organized it into sections and create an automatic index at the start.
Admittedly, I don’t tend to document my code much, unless it’s a structure or a complex algorithm etc.
Always be documenting!
Record videos/screenshots - See your progress easily
It’s a great way to see the progression of any work.
Just don’t name the videos a game’s name, you don’t want people seeing it if they’re searching for a finished game!
Progress is slow & organic - record it!
Back up - A cheap & important safety net
As computing professionals, we have a healthy level of pessimism!
So, I created a simple batch file which zips up the entire project folder, including executables, images, sounds etc.
Currently, each file is 10mb.
On very few instances, I didn’t like the performance of a major change, but thanks to my backups and logs, I could revert back to before starting the change, ie above.
Don’t be stupid, backup and log changes!
Believe it or not, this was easier then all the consoles before it!
Which most likely would have come with an assembler and a manual, or just a CPU vendor compiler like the case of Sega Saturn’s Official Development Kit.
Fast forward to 2017, with relatively no technical limitation, hardware agnostic engines and now it’s all about game design.
The new game engines have democratized game development (free and accessible to all), but have also made development and execution perceived as a non point.
“Anyone can make a game and without programming!”
This rhetoric is however wrong for computer science/software engineers with an interest in game development!
Games were at the forefront of computer science, pushing hardware to their limits and it’s still a great way to learn.
However, this liberal movement of “equality”, labels programmers wanting to excel at their craft as “Elitist“.
There’s no game engine that fits every single person!
For software engineers, not being able to drill down into the code base doesn’t help with learning.
And learning an game engine’s IDE is of little benefit compared to learning a toolchain, which is commonly used to develop software for every hardware device!
And lastly, software experts should be very familiar with the term vendor lock in, it could quickly become “Technical Debt“!
I got my Net Yaroze welcome letter in March 1999, admittedly late but it still was a valuable experience for me nonetheless.
This is a part of my welcome letter from my CV portfolio, below my “User ID” was my assigned password and it was signed by Paul Holman (see below).
The actual kit arrived a few days later from the UK to Australia (a PAL region country).
It was a simple setup yet very functional and effective.
Before I joined, there was an issue that PAL members couldn’t access US/JP Sony’s and member’s sites/newsgroups and visa versa.
But by the time I joined this was fixed, and we could see each region’s sites and newsgroups.
I would guess this was initially done like this because it mirrored the professional developer networks, which would have been locked to their region.
In 1999, I remember the US members were mostly gone, posting only a few times that I recall (not sure if that was a access or connection issue though), the JP members were some what active, posting a few times a month (5-10).
The PAL members were very active, posting a few messages each week, if not a few in a day!
While the manuals from Net Yaroze kit wasn’t very detailed, especially the hardware and Sony’s library, the Net Yaroze “Private Network” (or just network for short) was overloaded with real world examples and felt never ending!
The Net Yaroze Network comprised of a few separate services, all running from http://netyaroze-europe.com
Sony’s Net Yaroze repository - Updates, documentation and tools
Sony’s private Net Yaroze site offered a single place for updates and help.
More detailed help about the toolchain (gcc, gdb, ld), peripherals, file formats and a FAQ.
Sony also had a ‘Technical Requirements Checklist for Net Yaroze Software’, extract:
There was no official publishing channels as part of the Net Yaroze, in the FAQ it was suggested to record your work on VHS as a demo real.
There was also a small game demo section called “The Immaculate Collection”, which were some of the coolest games & demo’s!
Personal website - A space to share and show off
On the same web site as the repository, Sony offered each member web hosting, If I remember correctly, it was 25mb.
The landing page of the member’s site was an listing of the “latest update”, newest update first.
Sony’s newsgroups - “Real time” communication with Sony staff and community members
“Usernet Newsgroups” was a popular server/client protocol which resembled a hybrid of emails within groups and threads, similar to what web forums are today.
I remember loading up my Mozilla’s Newsgroup reader and downloading all of the days new posts and replying were I could, it was the human side of development.
The hardware and software was very technical, there was a lot of demo’s and tutorials but none were for absolute beginners.
And the newsgroups was the only place to go to when anyone got stuck or needed to ask for clarification.
I’ve recently started putting old Net Yaroze magazine articles on the old PAL Net Yaroze member’s site!.
Reading them reveals the true motivation of the Net Yaroze, to foster creativity, new ideas and experiences.
Next Generation: So if you remove the expectations of a commercial product, you think that it is possible to open your mind to what might not have been thought of before?
Phil Harrison: Exactly. We need to break past existing conventions. Hopefully we’ll see some new engines, or routines that will be helpful to full fledged developers in addition to helpful to others in the Yaroze program.
To my recollection, there was no mention of anything regarding creativity, design, or ideas in the manuals nor the member’s network.
Ideas were talked about in the newsgroup, but at a very high level, eg “I’m working on a 2D space shooter game”.
My feeling on this at the time was it wasn’t so much about the ideas, but the execution, which meant good programming and art.
It was all about the game development and not the game design, which was lead by the constants of hardware anyway.
I thought anything well executed and polish was good!
To me as a complete noob, the Net Yaroze wasn’t about the ideas nor the designs, but actually having the smarts and the stamina of conviction to follow through!
I did acknowledge the strengths of good ideas and clever design, so much so, I bought a book in the hope of getting good tips:
Game Design: Secrets of the Sages Guide by, Marc Saltzman
Don’t buy this book for game design! there are a few tips on game design but its actually a book about how the industry worked in the late 90’s and how to break into it, which was useless to me at the time.
Well, I recently bought the 2nd edition and read it, there are some interesting views which are still current and some not so much.
Admittedly, I didn’t spend much time on any design or ideas, my favorite games on the megadrive were the streets of rage series :)
I thought I would go for a 3D scrolling beat’em up (I actually liked fighting force) with block men and a block world editor.
All my textures were captured on a gameboy camera, my first digital camera lol
It’s made me rethink the purpose of a game and it’s meaning.
Not just a technological software product but an intertwine creative and technical process.
Thank’s goes to the following people (in no order) that made the Net Yaroze experience worth remembering!
The active users listed here.
Paul Holman was the head of the SCEE PAL region, Net Yaroze program.
Paul in the Sony UK head office “Playstation museum”.
He hired the cleverest of Net Yaroze members to provide support for the others.
Paul was also instrumental in putting Net Yaroze games/demos into the UK official Playstation magazines.
He also invited Net Yaroze members to the SCEE UK office and gaming events, like GDUK & ECTS.
Black & White demo from Peter Molyneux, ECTS September 1999
FACT: In mid 1996, Ken Kutaragi brought back an idea that had not been seen in almost 20 years.
A special version of the PlayStation called Net Yaroze (Yaroze meaning “Let’s do it together”) was released in limited quantities for around $750 USD. This unit was a simplified development kit that would allow users to make their own PlayStation games using the C program language.
Such an idea was last introduced back in 1979 with the Bally Professional Arcade (Bally BASIC), the Magnavox Odyssey 2 (Computer Intro) and the Atari 2600 (BASIC Programming).
He went on to extend the Playstation design to make the PS2 and the PSP.
He was also responsible for Playstation’s GNU Linux, which turned a PS2 into a TV computer with a USB mouse and keyboard.
This was revolutionary at the time!
All this talk of networked PlayStation 2, with USB keyboards and mice - isn’t Kutaragi trying to turn the console into a PC?
“I don’t think of this product as a PC,” he insists. “It’s like a TV. PC, yes, nice tools for creators, but this is pleasure.
Like a mobile telephone. It should be convenient and robust. Your grandfather should be able to use it.”
He also lead in the hardware design of playstation 3’s CELL architecture, which was the forbearer of true multi-core processors, specifically in mobile technologies, stating:
With the PS3, our intentions have been to create a machine with supercomputer calculation capabilities for home entertainment.
That’s why we teamed up with IBM, which is known for its supercomputers, and co-developed the Cell together with them and Toshiba
He’s ideas predicted many trends and technologies, including:
The Net Yaroze didn’t result in any famous millionaires like in the 80’s or modern times, but there were a few games commercially published and it introduced a few people into the industry.
I made a 3D, 2 player split-screen, FPS, sudo platformer working on it, although it’s very buggy and to date, unfinished.
And yes, I did ripped Doom sprites from my DOOM 95 CD-ROM!
“Retro” game development, has made me a better programmer all round, for sure!
Class of 2000