A PlayStation® Portable™ demo

Overview

barbielogo

Suicide Barbie by The Black Lotus

     A PlayStation® Portable™ demo

Release History

  • Source code (MIT licensed) released December 31st, 2020.
  • OE/M33 'slim' version released on July 8th, 2008.
  • 'Polished' party version released on June 27th, 2007.
  • Original production released at Breakpoint 2007.

Awards & Nominations

   🎺   pouët.net
   🎥   YouTube


How Suicide Barbie Came To Be

After the success of the Starstruck demo, the team needed a new challenge. It had to be a demo on a new platform. On a well defined and fixed platform, but with hardware powerful enough for the Creative Vision™. Limited, yet modern. Platform unhindered by layers of software abstractions one finds in PC.

So, inspired by the PlayStation® 2 demo 4 Edges and hacker spirit of the Homebrew community we soon had a winner - a miniaturized beast of PlayStation® with a vibrant screen. A harbinger of the new future where great visuals fit in your pocket - PlayStation® Portable™!

The goal was simple: make the most Entertaining Visual Experience, the Best Demo for the platform! And although the author is clearly biased here, but it looks like Suicide Barbie holds its ground even today and still is the best demo on the PlayStation® Portable™.

PlayStation® Portable™ Specs

Original PlayStation® Portable™ SoC was built on a 90nm CMOS process and was powered by 1.2V. The very first devices shipped in Japan in December 2004 and hit Europe by the end of 2005.

    ~ 32-bit MIPS R4000 CPU clocked @ 222 MHz.
    ~ VFPU compute co-processor pushing 2.6 GigaFlops.
    ~ Graphics Core triangle rasterizer with fixed T&L pipeline that can spit up to 33M triangles and cover 665M pixels per second.
    ~ 32 MiB main RAM with 2.6Gb/s of bandwidth.
    ~ 2 MiB Graphics eDRAM with 5.3Gb/s of bandwidth.

psp

The Process

As Suicide Barbie follows a story and sports massive amounts of content (relatively speaking), we would adopt the new process of production. Pick the music, make a storyboard, plan the art, setup the data pipeline, get the demo running from the day one, add the scenes as they come from the artist, continuously iterate on the quality. Ship it.

Back in 2006/2007 we didn't have the luxury of functional emulators for the PlayStation Portable. At least nothing on the level we aimed for. So the obvious thing to do - write cross-platform code and make the demo run on PC identical to PSP. All the effects would be duplicated. A little bit of extra work of course, but huge upside with the fast iteration time and easy workflow for the artists.

One innovation we had was the ability to scrub the playback time at any point. Basically the demo could run forward and back in time. Perfect for polish. We kept this mechanism alive all the way until the end, and only disabled it when we switched to compressed (ATRAC3) streamed audio (as that made "per sample" scrubbing hard).

Data pipeline was setup in a rather simple, but effective way - a bunch of batch files. In goes the source data, out goes the compiled data ready for blob loading into the memory. With this data pipeline we could build a separate scene or the whole demo. Run goPsp.bat and you get the PSP version. Run goDx9.bat and you can run it on PC.

Finally, if you push the boundaries of the consoles, you have to have streaming. Suicide Barbie does not fit into 32 MiB of main RAM and constantly stream the content ahead of the player.

NOTE: While (most of) the code is present in this repository we haven't bothered upgrading the vs2005 projects, so DX9 playback is lost (except for the most adventurous).


Credits

        Direction, Graphics:   Louie / TBL^CNCD
        Graphics:                    Jintz

        Code:                          ReJ / Nesnausk!
        Code:                          eriQue / soniK cliQue

        Music:                         Elusive 'Pete loves Veronica mix'
                                               (Veronica Maggio 'Dumpa Mig')

        Animations:                Micke
        Animations:                Johra
        Animations:                Duffe

        Additional Graphics:  Eracore / Rebels

        Platform Consultant: Chip

Additional Credits for "The Things We Stole Borrowed"

        Roberto Roseano (Barbie Suicide)
        Psyop
        orl^simple / Nesnausk! (mutant lib)

Special Thanks

        pspdev community for homebrew
        TyRaNiD for psplink (this demo would not've been possible without it)
        daywish^cathy / Nesnausk! for support and photojournalism in Bingen


How To Run The Production on PlayStation® Portable™

This production has been tested and confirmed working under firmware 1.00, 1.50 and 3.40 OE-A (150 binary) and 3.90 M33-3 and 4.01 M33-2 (OE/M33/Slim binary). Use a fast memory stick like SanDisk 2GB to guarantee a smooth viewing experience.

    ~ Unpack the contents of the archive from the releases page to the ms0:/PSP/GAME/ folder on your Memory Stick.
    ~ If you're using Open Edition OE/M33 firmware, and the original 150 binaries, copy the files to ms0:/PSP/GAME150/ instead.
    ~ Run the production from the XMB (PlayStation Portable menu screen) as you would do with a regular game.

How To Run The Production in an Emulator

If you do not own a PlayStation® Portable™ device, we recommend installing the ppsspp emulator.
PPSSPP even lists Suicide Barbie within its PPSSPP Homebrew Store, making it easy to enjoy the production.


How To Build and Run From Source

This has only been tested with macOS 10.14+ (using brew) and Ubuntu 20.04 LTS (Focal Fossa)

macOS : brew install autoconf automake flex [email protected] ncurses make subversion texinfo wget ppsspp libusb libusb-compat sdl
Ubuntu : apt install autoconf automake bison flex gcc-9 libncurses-dev make subversion texinfo wget libusb-dev build-essential libreadline-dev

  1. Bootstrap the environment using a 2006'ish snapshot of the homebrew PSP toolchain and SDK via

    ./bootstrap.sh

  2. Build the source via

    ./build.sh

  3. Either use psplinkusb, and run it via usbhostfs_pc using

    ./psplink.sh

    or, run it emulated (assuming ppsspp is installed) using

    ./emulate.sh


Why Open-Source This?

Good question - and while there is not a single reason to do this there are two worth highlighting:
Firstly we were repeatedly asked, both publicly and in private conversations, to release the source code.
And as the code was sitting in a backup of an old Perforce repository not even we had direct access to it for a long time. It was a good enough reason to resurrect the code and migrate it to Git.

Secondly it seems the PSP Homebrew Community is still active and, as already noted, this is as far as we can tell the best demoscene production for the PSP - almost 15 years later.
Maybe it will inspire someone else out there to create something interesting for the PSP (or any other platform).

The source code itself is pretty much in a frozen state at this point - we don't expect PRs or further development of the production. But it might serve useful for anyone interested in porting the code, writing emulators or perhaps working on an FPGA reimplementation of the PSP.


Core Crew

corecrew

Bingen, Germany, a few hours before the deadline

coding Photos are courtesy of Daywish.


License

The source code found in this repository is licensed under the MIT license (except where other licenses apply).
The source assets (textures, meshes, etc, found under Data) are Copyright © 2020 and licensed under a CC BY-SA 4.0 license.

You might also like...
work-in-progress port of Cave Story to the PlayStation, based on CSE2
work-in-progress port of Cave Story to the PlayStation, based on CSE2

DoukutsuPSX This is a port of Cave Story for the Sony PlayStation. It is based on CSE2, which is a decompilation of the original freeware Cave Story e

Dink Smallwood HD port for Playstation Vita.

Dink Smallwood HD -- To just download working versions to play Dink Smallwood

Use an Arduino board as a Playstation 1 / 2 Controller.
Use an Arduino board as a Playstation 1 / 2 Controller.

Arduino PSX Controller This project is a short of example on how to use an Arduino board as a controller for the Playstation 1 or 2. Caveats This libr

A port of uMario (a widescreen remake of SMB NES) to the Playstation vita.

uMario PSVita Port A port of uMario (a widescreen remake of SMB NES) to the Playstation vita. Gameplay video: https://youtu.be/QZDfrHlEhj4 uMario: htt

An in-progress decompilation of the 1.1 US release of Silent Hill on the Playstation 1.

Silent Hill Decompilation Project An in-progress decompilation of the 1.1 US release of Silent Hill on the Playstation 1. Building (Linux) Install bui

Playstation Vita first_loader hack for prototype units on firmware 1.03

broombroom Playstation Vita first_loader hack for prototype units on firmware 1.03 This hack grants "bootrom"-level code execution on the PSP2 by expl

CppStation, a Playstation emulator

CppStation Playstation emulator in C++ language. The aim of the project is an attempt to learn the process of emulation the Playstation by rewriting a

A complete Javascript environment for creating homebrew applications and games on PlayStation 2.
A complete Javascript environment for creating homebrew applications and games on PlayStation 2.

AthenaEnv is a project that seeks to facilitate and at the same time brings a complete kit for users to create homebrew software for PlayStation 2 using the JavaScript language.

A collecton of generic reference counted data structures, tools to create compatible C style classes, and demo applications

The Offbrand library is a collection of reference counted generic data structures written in C for C. The library includes bash scripts to assist in t

2D mesh deformation interactive demo
2D mesh deformation interactive demo

2D mesh deformation interactive demo

OpenGL Demo: Simulating Ocean Waves with FFT
OpenGL Demo: Simulating Ocean Waves with FFT

OceanFFT Realistic ocean wave simulation, primarily based on J. Tessendorf's paper, using OpenGL compute shaders. Checkout the demo video here. In the

This is a fork of prboom+ with extra tooling for demo recording and playback, with a focus on speedrunning.

dsda-doom v0.15.1 This is a fork of prboom+ with extra tooling for demo recording and playback, with a focus on speedrunning. Heretic Support (beta) D

[WIP] Demo of a minimal but functional Dawn-based WebGPU client and server

dawn client-server example The goal of this demo is to create a minimal but functional Dawn-based WebGPU client and server with the following traits:

Demo exploit code for CVE-2020-27904, a tfp0 bug.

xattr-oob-swap CVE-2020-27904: a tfp0 bug for macOS 10.15.x and below. Demo exploit code for my talk at BlackHat ASIA 2021. The vulnerability has been

The demo projects for Allwinner D1 SBC

D1 Demo The demo projects for Allwinner D1 SBC hello project show the basic native compiling on D1 SBC. vector example cross compiling RISC-V Vector c

GFX Demo for the ESP-IDF
GFX Demo for the ESP-IDF

Display Drivers and Demo for GFX This is a Demo of GFX With Several Display Drivers This is not GFX itself, but it includes it. GFX Documentation is b

Demo c++/blockchain tech

Blockchain This is a blockchain concept coded in c++. I used the POW or proof-of-work algorithm. Some of the detailed concepts of the real blockchain

Android hair/human segmentation demo by ncnn
Android hair/human segmentation demo by ncnn

ncnn_Android_human Android hair/human segmentation demo by ncnn PS:performance maybe poor.it's just a demo:) Reference: 1.https://github.com/Tencent/n

Simplified design of an analog keypad matrix interface and demo thereof
Simplified design of an analog keypad matrix interface and demo thereof

Analog Keypad Interface In pin-restricted microcontroller designs it is common to use analog pins and sets of resistors to encode button switch inputs

Comments
  • Gcc 930

    Gcc 930

    check commit notes but in short: allows demo to be compiled with a modern gcc 9.3.0 toolchain from circa 2019/20

    additionally, adds a debug prx option and fixes the release prx option

    opened by mrneo240 3
  • Fix issues related to using a modern version of the PSP toolchain

    Fix issues related to using a modern version of the PSP toolchain

    As far as codegen goes GCC 9.3.0 creates a slightly bigger .text section (78kB (20%) for the .elf; 36kB (9%) for the .prx), but with roughly the same performance (all else equal / original compile settings).

    opened by erique 0
Owner
Sug fett!
null
2D mesh deformation interactive demo

2D mesh deformation interactive demo

Dmitry V. Sokolov 18 Dec 7, 2022
OpenGL Demo: Simulating Ocean Waves with FFT

OceanFFT Realistic ocean wave simulation, primarily based on J. Tessendorf's paper, using OpenGL compute shaders. Checkout the demo video here. In the

Achal Pandey 70 Dec 27, 2022
This is a fork of prboom+ with extra tooling for demo recording and playback, with a focus on speedrunning.

dsda-doom v0.15.1 This is a fork of prboom+ with extra tooling for demo recording and playback, with a focus on speedrunning. Heretic Support (beta) D

Ryan Krafnick 135 Jan 8, 2023
Playground for DirectX 11 / 12 simple graphics demo examples ...

graphicsdemoskeleton Playground for DirectX 11 / 12 simple graphics demo examples ... If anyone from Microsoft reads this: C99 support is broken in Di

Wolfgang Engel 44 Dec 10, 2022
Powerful, easy to use, and portable visualization toolkit for mixed 3D and 2D content

Powerful, easy to use, and portable visualization toolkit for mixed 3D and 2D content

Microsoft 138 Jan 8, 2023
This is a openGL cube demo program. It was made as a tech demo using PVR_PSP2 Driver layer GPU libraries.

OpenGL Cube Demo using PVR_PSP2 Driver layer GPU libraries This is a openGL cube demo program. It was made as a tech demo using PVR_PSP2 Driver layer

David Cantu 5 Oct 31, 2021
LibreSSL Portable itself. This includes the build scaffold and compatibility layer that builds portable LibreSSL from the OpenBSD source code.

LibreSSL Portable itself. This includes the build scaffold and compatibility layer that builds portable LibreSSL from the OpenBSD source code.

OpenBSD LibreSSL Portable 1.2k Jan 5, 2023
Friday Night Funkin' on the original PlayStation

Friday Night Funkin' on the original PlayStation

CuckyDev 169 Dec 18, 2022
A modification of the playstation UI to help with launching and developing homebrew.

Orbis-Toolbox A modification of the playstation UI to help with launching and developing homebrew

Greg 88 Nov 26, 2022
The world's first free and open-source PlayStation 3 emulator/debugger, written in C++ for Windows and Linux.

The world's first free and open-source PlayStation 3 emulator/debugger, written in C++ for Windows and Linux.

null 12.1k Jan 2, 2023