SN Systems Network Development Kit for PS2

Edit on Github | Updated: 07 July 2020

History of the SN Systems NDK for PS2

First mentioned on the official SN Systems website on the 10th November 2000 the PS2 Network Development Kit (NDK) was a software development tool that allowed developers to add online networking features to their games.

Also a post from December 20th 2000 on Gamasutra mentions that the Analyzer features “ packet dropping, reordering, corruption, and bandwidth simulation, to test for application robustness in the event of poor quality or error-prone communication links” 1

Mentioned in the March 2001 issue of the Game Developer Magazine in the front line tools section by Daniel Huebner. The tool contains a “TCP/IP” stack to help developers add in networking features to their Playstation 2 Games. The tool also contains a PS2 “Packet Analyzer” which runs on the connected windows PC and requires the PS2 DTL-T1000 development hardware 2.

image alt text

Image of SN Systems demonstrating their Network Development Kit for Playstation 2 at the 2002 Game Developer Conference 3.

First Online PS2 Game made possible with SN Systems NDK

On a post on their official website entitled “SN Systems supports the first PlayStation®2 online enabled game” (25th October 2001) they announce that “Tony Hawk’s Pro Skater™ 3” used their Network Development Kit to become the first online PS2 Game! 4. It was developed By Neversoft Entertainment and also used the SN Systems ProDG development kit.

NDK TCP/IP Stack

Diagram from the official website explaining how the TCP/IP stack works.

image alt text

It all starts from the Socket or Modem/Device API in the Emotion Engine (EE), this is the API that the game developers will use to make network calls and thus is the public interface for the library.

They have tried to make the library similar to the “BSD sockets” library but due to the nature of the Emotion Engine this was not easy. They needed to create a library which could be called by multiple threads simultaneously in the EE 5.

The TCP/IP Stack runs on the Playstation 2’s I/O Processor (IOP) rather than on the Emotion Engine CPUs in order to allow the game to use the ‘precious emotion engine processing time’ rather than the networking library slowing the game down. It supports both blocking and non-blocking sockets but suggests using the non-blocking sockets from non-main-game-loop threads 5.

Memory impact of using the NDK

IOP memory usage Emotion Engine memory usage
Sony Computer Entertainment PlayStation®2 Network Adaptor (Ethernet) 361k 39k
USB Ethernet adapter 439k 39k

Support for multiple Ethernet Adapters

One big bonus feature of the SN Systems NDK is that it actually supports not just the official Sony PS2 Ethernet adapter but also third party USB ethernet adapters too! This allowed gamers (and development studios) to purchase much cheaper hardware to play games using the NDK.

Supported Protocols

According to the official specifications of the NDK it claims to support more than just TCP/IP [4]:

  • TCP/IP - Transport Control Protocol / Internet Protocol

  • UDP - User Datagram Protocol

  • PPP - Point-to-Point Protocol (PPP is always built into the Stack irx file but will only be used when a modem driver is used)

  • PPPoE - PPP over Ethernet

  • ARP - Address Resolution Protocol (ARP will only be used when an Ethernet or DECI2 driver is loaded)

  • ICMP - Internet Control Message Protocol

  • DHCP - Dynamic Host Configuration Protocol

  • CHAP - Challenge-Handshake Authentication Protocol

  • PAP - Password Authentication Protocol

NDK Analyzer

The SN Systems Network Development Kit Analyzer is a program that runs on the developers PC and can intercept all the network packets coming into and out from the Playstation 2 5.

It uses the DECI2 interface instead of relying on a PS2 ethernet adapter or usb modem. It seems to be able to test reliability by dropping network packets and simulating different levels of bandwidth, it can also show performance graphs, statistics etc 6.

I presume this system worked very similar to Wireshark, it would be great to get a screenshot of it running.

Games using SN Systems ProDG Network Development Kit

I wonder if there is a list of PS2 games built using the SN Systems NDK, it will be a subset of the games listed here and we know Tony Hawk 3, 4 and Underground are definitely using it according to the official website.

One way to look would be to search the game disk for an IRX in the modules folder that contains the NDK TCP/IP module (snstkrel.irx or wildcard sn**.irx). Even better would be to find a game with snstkdbg.irx as that would also have the debug information in it!

IRX Files provided by NDK

These are the library files that you can dynamically link your application code to and will run on the IOP in the PS2. You should be able to find some of these in the MODULES folder of a PS2 disk that used the NDK!

IRX File Description
sndrv000.irx DECI2 driver
sndrv001.irx USB-Ethernet (not PPPoE) driver
snstkdbg.irx snstkrel.irx TCP/IP Stack debug version - includes run-time debug logging TCP/IP Stack release version - no run-time debug logging
snstfdbg.irx snstfrel.irx Fast API IOP component - includes run-time debug logging Fast API IOP component - no run-time debug logging
sndrv202.irx Wrapper driver for SCE Ethernet (PPPoE variant) driver
sndrv201.irx USB-Ethernet (PPPoE variant) driver
sndrv200.irx PPPoE support
sndrv101.irx Wrapper driver for SCE modem driver
sndrv100.irx Wrapper driver for SCE Ethernet (not PPPoE) driver
sndrv003.irx Conexant chip set USB modem driver
sndrv002.irx Lucent chip set USB modem driver

Also you will need the following irx modules that are distributed by Sony in their Official SDK:

usbd.irx USBD library - low-level USB functions used by all USB drivers.
dev9.irx HDD/Ethernet/modem adapter low-level library
smap.irx Ethernet driver - for Sony network adaptor (Ethernet/modem)
spduart.irx Modem driver - for Sony network adaptor (Ethernet/modem)
ommodem.irx Omron modem driver

References