- 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 scroller 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 support which is obviously 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.
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.
So this is a summation of my learning and thoughts on Net Yaroze.
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 (digital only) controllers
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 SEGA CD, TurboGrafx-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.
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 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 does.
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 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!
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, DMA GPU, dedicated 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 computer, similar to a micro computer of the 1980’s, it just needed an operating system and a keyboard & mouse adapter!
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 there would be no more new 3D DOS games.
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-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!
A professional development kit & license would have still cost around $20,000 USD, and the Net Yaroze being potentially the same development platform was only 3.75% of that!
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 replicate!
In fact, I have a separate game development project which builds for 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!
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 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.
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.
There is a good C programming free cause here
Cheat sheet - Documentation
So I made a word file, organize 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!
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.
Sony’s Net Yaroze program was revolutionary and very ambitious for the time.
To say it was just a hobby development console, is only the tip of a very big iceberg and a gross under simplification!
Back then 3D technology was still new, so I think most people thought of it as a technical challenge.
I’ve recently started putting old Net Yaroze magazine articles on the old Net Yaroze member’s site domain, it was expired for a few years! :/
Reading them reveals the true motivation of the Net Yaroze, to foster creativity, new ideas and experiences.
However, for me at the time, it was all about the hardware and 3D.
To my recollection, there was no mention of any creative, design, nor ideas in the manuals nor the member’s network.
Ideas were talked about in the newsgroup, but at a high level, ie I’m working on a 2D space shooter game.
But my thinking was mostly, that ideas are like assholes, everybody has one :/
However, I did acknowledge the strengths of a good a idea 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 it, it’s completely useless as a game design book! its actually about how the industry worked in the late 90’s and how to break into it, which was useless to me.
So, I came up with my an idea, a 3D scrolling beat’em up (fighting force) and designed an in game block world editor.
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!
The technical requirements to make just a Pong clone, by today’s standards (Unity3D/C#) is more complicated then what it was 20 years ago and still even more impressive!
The Net Yaroze didn’t result in any famous millionaires like modern times, but there were a few games commercially published and it introduced a few people into the industry.
Net Yaroze might not have had an official publishing path, but it did open doors:
Black & White demo from Peter Molyneux, ECTS September 1999
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!