The Reverse Engineering of Vectorman Playstation 2
To find out more about Vectorman Playstation 2 (its history, development and more) and to discover 11 prototypes and documents from the game, visit the home page of the preservation project linked to the title by Pseudo Interactive: The 11 prototypes and documents from Vectorman Playstation 2: the transition from 2D to 3D of our best friend SEGA's robot
The purpose of Reverse Engineering, for a video game, is to explain and analyze by deduction how it works, its mechanisms, the way it was developed and the devices or tools used to design it.
Before the advent of Unreal Engine or Unity, development studios often created their own engines and tools (animation editor, level editor, etc.). Some teams used generic high-level software such as Lightwave (CGI) or 3ds Max Biped (animation), to name but a few. The Reverse's aim is to find out what programs developers had at their disposal to make their games, and to be able to reproduce them...
In all videogame productions, there are many differences between ambitions and the final game. Developing a title also means knowing how to cut levels, game modes and characters. Just because something was deleted 8 months before the game's release doesn't mean it can't be found in its files. Sometimes, the data has not been completely erased, and traces remain in the form of scripts, codes or textures. The idea is to study, and hypothesize on, what has not been implemented in the game but is nevertheless visible in its files.
The results of understanding the structure and operation of a game can lead to some amusing possibilities. In some cases, the title can be modified (by adding mods) to incorporate new fan-made models. Previously inactive Debug Menus can also be reactivated.
The aim of Reverse Engineering work is is also to dismantle a game and extract every last one of its files, in order to obtain what the programmers had on their working environment before compiling their title. To get around the hardware limitations of consoles, they find inventive ways to make the game fit, for example, on a disc of limited capacity (around 1 GB for a Dreamcast GD-ROM). They compartmentalized textures, models and animation files (everything that makes up a video game) in a sort of compressed folder using a unique format that only the studio knew about, the same principle as the .zip files used by private individuals today. So it's important to understand the priority archive format adopted by the development team, in order to extract absolutely all game-related data.
In a perfect world, all games, whether prototypes or final versions, would have to go through the Reverse Engineering stage. As this is an area of expertise that requires special skills and a great deal of time, very few individuals are able to indulge in this practice. Reverse Engineers, gamers first and foremost, will concentrate their efforts on title they personally enjoy. They'll find it easier to focus on their favorite games. That's why it's essential to carefully select betas and games likely to hold secrets. Unreleased games are a prime target for these enthusiasts!
Discoveries made for Vectorman PS2
Lemonhaze, one of the founders of the Team Wulinshu collective, took charge of Vectorman Playstation 2's Reverse. A software engineer and games programmer by profession, he was the ideal person to get the word out about this Pseudo Interactive title.
This page doesn't go into the technical details of Lemon's reverse-engineering work. He talks about it better than I can in the complementary articles on his website devoted to the analysis of Vectorman Playstation 2 files.
Reverse Engineering Adventures #1: A Foundation : https://wulinshu.com/2023/12/30/reverse-engineering-adventures-1-a-foundation/
Vectorman: A Reverse Engineering Story : https://wulinshu.com/2023/12/30/vectorman-a-reverse-engineering-story/
Reverse Engineering Adventure #2: Compressed Data : https://wulinshu.com/2023/12/30/reverse-engineering-adventures-2-compressed-data/
Inactive Debug Menu for some prototypes
The Debug Menu (detailed instructions here) of the June 17, 2003 and May 7, 2003 prototypes was not displayed in the game's pause menu, as it was in the nine other Vectorman Playstation 2 builds. It was simply disabled. A patch has been applied to the executable of both betas, giving access at last to the very many debugging options of these most recent VM versions.
DrawPathMap
ShowPackCount
DrawVrepTree
The Debug Menu of the final version of Cel Damage Ps2
Vectorman and Cel Damage benefit from the same Pseudo Interactive engine coded by David Wu, a talented programmer who unfortunately passed away in 2022. There are correlations between the two games, and they share the same structure. By applying Vectorman's Debug Menu reactivation method to Cel Damage, fans of PI's Cell Shading game can now view and manipulate the internal state of the software. More information on the dedicated Cel Damage page: Cel Damage Playstation 2 and its Debug Menu
Weapons modification
Vectorman PS2 can be modded. Weapon stats and attributes can be edited. To do this, the "fextract" file must be opened with "notepad", then the equipment characteristics changed. To test the modified ISO of the May 7, 2003 prototype, with a capacity of 2147483647 ammunition for the flame thrower (Incinerator) instead of 119 and unlimited bullets, download the mod below:
// Weapon Tuning File by Jason Hasenbuler for Vectorman
// Help notes by John Harley
//-----------------------------------------------------------------------------
// name ==============================> Name of the weapon
// firingRate ======> Number of bullets fired per second – can include decimals, higher values are more CPU intensive.
// continuousFire ======> Holding down the button does or does not fire a continuous stream of bullets at the max fire rate.
// ammunitionCost=====================> This is the cost per round of ammo in the clip. Since a round of ammo can have more than one projectile count, [ammunitionCost/projectileCount = photon cost per pellet]
// aimConeAngle ======> The spread that bullets will leave the gun at in degrees when the player is completely stable.
// projectilePid ======> The filename of the bullet that is used.
// projectileSpeed ===================> The speed of the bullet through the air in meters per second. Higher numbers are more CPU intensive and can lead to errors.
and more...
A hypothetical XBOX port
An Xbox port seems to have been in the pipeline. There is no indication whether development began in parallel with the Playstation 2 version. The programmers had an Xbox controller configuration and SDKs linked to Microsoft's first console in their access paths.
C:\Program Files\Microsoft Xbox SDK\Xbox\Bin;C:\Program Files\Microsoft.Net\FrameworkSDK\Bin;C:
execute_psc "controls_xbox" // runs script that binds controls
The role of Excel :
Some builds can send game performance information to an Excel spreadsheet, which is amazing.
sub_249AE0(dword_3B5950, "g_ProfileWrite", "Writes profile snapshot to an excel spreadsheet", sub_1CBC40, 0LL, 0LL);
Notes for source code or PI engine updates
Developer comments inside the game files on source code development and the engine.
---
warpers now have an actuate_priority similar to dofs.
set_pdk() requires an actuate priority.
before applying a deform you can use test_actuate(), or actuate() to check to see if you
have priviledge to actuate the warper.
// this will apply a non-exclusive actuate
// it will not prevent subsequent calls
if( warp->test_actuate(frame::ap_default) )
warp->apply_deform();
// this will apply an exclusive actuate
// it will prevent subsequent calls if the specified priority is higher
// than that of subsequant calls
if( warp->actuate(frame::ap_default) )
warp->apply_deform();
---
Nov 17, 1999
---
Changes:
Sasha's cupid is in a car
updates to FFD's to make system more general.
The following are effectsed
car warping when drivings
flatten and overinflate
dent and overinflate
Improved dent Algorithm to produce more interesting dents
(dent happens when you hit something at a moderate speed, or when hit by the boxing gloves)
Camera control tightened a little (it moves faster)
---
QA:
Lightning Cloud:
{
Timing:
What do you think of the overall timing of the weapon?
What do you think of the rate of fire?
What do you think of the speed of the projectiles?
Sound Hooks:
What do you think of the timing of the "placeholder" sounds?
What do you think of the number of sounds?
What do you think of the placeholder sounds themselves--do they at least resemble what final sounds would be?
Interaction/Relation:
What do you think of the way it works with other weapons?
How does this weapon compare with other weapons?
Gameplay/Strategy:
When you picked up the weapon for the first time, did you know what it was?
When you picked up the weapon for the first time, did you know how to use it?
When you used the weapon for the first time, was it funny?
Is the weapon fun to use?
Is there a weapon that, for you, fulfils the same purpose but is more fun? Or less fun? Which?
Art:
What do you think of the mesh and textures?
What do you think of the FX?
}
and more...
The complexity of David Wu's scripting language
This really shows just how complex David Wu's scripting language is. It's about implementing the physics of an object in the game. It's very complex because it's usually something that's hard-coded into the engine. Instead, it's in a script, which we can all see and modify.
// add a dof for warping
auto~watch.AddFunc(ed_dof,WarpDof)
// attach all verts to this dof
auto~watch.Root.SelectVertsTree()
auto~watch.warpDof.AttachSelected()
// orient s.t. X is pointing upwards, piWarps are more efficient this way
auto~watch.WarpDof.Lb.A.ZYX= 180.000 -90.000 -0.000
auto~watch.WarpDof.ffdSchema=1l // piWarp7
auto~watch.WarpDof.warpInherit=full // full warp inherit
auto~watch.teamId=16 DancingPlants
// Add a tree contact handler
auto~watch.AddFunc(dwTreeContact,treeContact)
// move it to the warp dof
auto~watch.treeContact.SetDof=warpDof
// rebuild lods and update edge rep
auto~watch.GenerateLods()
auto~watch.UpdateEdgeRep()
Funny annotations for the feelings system (Debug Menu)
Some prototypes have a Debug Menu option that lets you understand how the animosity of enemies towards Vectorman is regulated, a feeling system so to speak. The developers' annotations are humorous. Vectorman doesn't like to be disturbed, he needs his living space.
Unused textures from Vectorman, Cel Damage and Full Auto 2
As is often the case in video games, whether in the prototypes format or in the final version, unused textures have not been removed from the game files. This is the case for Vectorman Playstation 2 (in poor quality), Cel Damage PS2 and even Full Auto 2 PS3.
In the jargon, "Splash Screens" (the name of a specific screen style) are generally used to display, for example, the logo of the application, the publisher, the developer, copyright information and much more.
The term "Attract Mode" refers to a particular kind of screen originally used for games on Arcade systems. What happens on this screen is supposed to attract people to the Arcade terminals as they pass by them. This formulation has become customary in the video game industry. "Attract Mode" can be videos, 3D scenes, AutoDemo and much more.
For graphic assets, "Placeholders" are textures used temporarily until the right one is inserted.
Texture of VM (Placeholder)
VM Splash Screen
VM Attract Mode
First name of Cel Damage Ps2?
The PS3 controller at E3 (Full Auto 2)
Tribute to David Wu and the Pseudo Interactive Team
In the Vectorman PS2 prototype of December 3, 2003 (17:11:26), the one with the "Inverted Roller Coaster", a text scrolls across the screen during gameplay. LemonHaze had the excellent idea of rewording the in-game statements to pay tribute to the members of Pseudo Interactive, but above all to David Wu. To achieve this, Lemon had to create a tool (with a lot of code) to make it possible. The task being a difficult one, remnants of the original text still persist.
Tribute to David Wu and PI Team
Vectorman PS2 model swap
The developers at Pseudo Interactive were planning to make the Vectorman model from 3.14 builds available as an unlockable bonus in Halo-Like prototypes environments. For several months, we tried to swap the character models of the various VM betas in order to fulfill the PI team's wish for their game. We succeeded, but not to the desired level. We were able to replace the model of the January 10, 2003 prototype with that of the Vertical Slice (Sep 29, 2002). Who wouldn't want to play with Vectorman's early looks in the level presented at E3 2003?
Model swap in video
To be mentioned:
-
While finalizing the articles for the 7 pages devoted to Vectorman Playstation 2, we were able to make the Full Auto II PS3 Debug Menu accessible. It was too late to add an eighth page to this preservation project. An additional article will soon be devoted to Pseudo Interactive's latest game.
-
The Debug Menu for Cel Damage HD (Playstation 4) can be activated. As the PS4 console is too recent, we can't offer you its modified ISO.
We'd like to thank the entire Pseudo Interactive team (Mobygames link to Full Auto Xbox 360) involved in the Vectorman Playstation 2 project for making the transition from 2D to 3D for Mega Drive's most famous robot. We can only feel sorry for them that they weren't able to follow through on their desires and creations!
The other pages of the Vectorman Playstation 2 preservation project:
-
The history of Pseudo Interactive and more information, assets and artworks for Vectorman PS2
-
The early designs of Vectorman Playstation 2 and its 4 prototypes
-
The Halo treatment of Vectorman Playstation 2 and its 5 prototypes
-
Cel Damage Playstation 2 by Pseudo Interactive, the hack of its Debug Menu
The projets of research and Reverse Engineering undertaken on other games :
Special thanks to :
-
LemonHaze (from Team Wulinshu) for digging through the game files
-
La Rétrogamerie for proof-reading, rewording and editing the text
-
Vince for the English correction of the article
Similar prototypes (Unreleased) : Agartha (DC) - Emulateur officiel Megadrive (DC) - Castlevania Resurrection (DC) - Half Life (DC) - Dalforce XOP (DC) - Flinstone (DC) - 4 x 4 Evolution PAL (DC) - Ring : L'Anneau des Nibelungen (DC) - Ecco 2 (DC) - Kyskrew (DC) - Propeller Arena (DC) - Geist Force (DC) - Scud Race Tech Demo Dreamcast - Shenmue 2 US (DC) - The Red Star (XBOX) - Heaven's Drive ( version japonaise de Burnout 1) pour PS2 - Jekyll and Hyde (DC) - The Grinch Jap (DC) - Worms Pinball (DC) - Quake 3 Arena version japonaise (DC) - Vectorman PS2
Feel free to have a look at the "other cancelled games" I've found. For the more curious among you, I've created a "list of all Dreamcast Unreleased games".