top of page

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.

3ds_Max_Biped_Headhunter

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.

Free_Fight_Propeller_Arena_Dreamcast

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.

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

Vectorman_PS2_Unreleased_Debug.jpg

ShowPackCount

Debug_Menu_Pseudo_Interactive.jpg

DrawVrepTree

Pseudo_Interactive_Vectorman_Debug.jpg

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

Cel-Damage_PS2_Debug_Menu.jpg

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:

VM infinito armo mod
Mod_Vectorman_PS2.jpg

//         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.

VM-ps2-pseudo-interactive-code

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)

Vectorman PS2 Texture.png

VM Splash Screen

Splash Screen Vectorman PS2

VM Attract Mode

Attract Mode Vectorman PS2

First name of Cel Damage Ps2?

Cel Dmage Enhanced Ps2 Texture

The PS3 controller at E3 (Full Auto 2)

PS3 controller prototype (E3)

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.

David Wu Tribue VM

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 VM swap

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!

Special thanks to :

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".

bottom of page