the cutting room mirror

Beyond: Two Souls

This article has a talk page!
view on tcrf.net

Scrapped Chapters#

First Steps#

This chapter, which featured a baby Jodie interacting with Aiden for the first time, was intended as the initial gameplay tutorial. When it was replaced with "The Experiment" as the tutorial, Quantic Dream intended to release it as bonus DLC, evident by the game files containing code checking for a "FirstStepsAddon". Text files confirm that it was meant to occur after "Broken" and before "The Experiment" in the game's play order.

A fully playable version of this chapter exist in a 2012 test build of the game, and can be viewed here.

The interaction triggers, sound effects, variables, and objects list can all be found in the game files:

Interaction Triggers

JodieSitAndLookAiden

ZoneBaloonNoBlast

ZoneSteamFather

ZoneJodieFall

ZoneAmbianceExterieure

ZoneAmbianceRDC

ZoneAmbianceJHORoom

ZonePictoBlastCadres

ZonePictoBlastChair

ZonePictoBlastJodieBed

ZonePictoBlastToyBox

ZonePictoBlastWoodTrain

ZoneExitPicto

ZoneTutoLookJodie

ZoneTutoWalk1

ZoneTutoWalk2

ZoneTutoWalk3

ZTutoAidenInRDC

ZTutoAidenNearFather

ZoneReminderManif2

ZoneReminder3

ZoneJodieOutOfRoom

ZonePlushToy

ZoneAidenHalwayToArtMo

ZoneAidenNearSusan

ZoneCenterRoom

ZBlockAidenParentRoom

ZAidenBlockZone02

ZAidenBlockZone03

ZAidenBlockZone04

ZAidenBlockZone05

ZAidenBlockZone06

ZoneExitingParentsRoom

ZoneEnterparentsRoom

ZoneCollisionSusan1

ZoneCollisionSusan2

ZoneCollisionSusanPhone

ZoneCollRattle

ZoneCollTutoWalk

ZoneCollXylo

ZoneXylophonePlay

ZoneSusanTakeSqueakToy

ZoneSusanGiveSqueakToy

ZoneJodieGetUp

ZoneTeddyBear

ZonePlayRattle

ZoneTeat

Sound Effects

IW_0301_FIRSTSTEPS_SFX_3D_SBlastDesk_Fall

IW_0301_FIRSTSTEPS_SFX_M_sHugJodieBear_HugTeddyBear_Grab_Plushl

IW_0301_FIRSTSTEPS_SFX_3D_sFatherReactKettle_Sit_Chair

IW_0301_FIRSTSTEPS_SFX_3D_OpenCorridorDoor

IW_0301_FIRSTSTEPS_SFX_3D_ColDyn_WoodCubes_On_HardFloor_C_Light

IW_0301_FIRSTSTEPS_SFX_3D_Blast_Drawing

Variables

QDR._0301_FIRST_STEPS_Var.iCompteurInteractionsJodie = 0

QDR._0301_FIRST_STEPS_Var.iCompteurRaccourci = 0

QDR._0301_FIRST_STEPS_Var.bEnterTutoWalkZone1 = false

QDR._0301_FIRST_STEPS_Var.bEnterTutoWalkZone2 = false

QDR._0301_FIRST_STEPS_Var.bEnterTutoWalkZone3 = false

QDR._0301_FIRST_STEPS_Var.bTutoControlDone = false

QDR._0301_FIRST_STEPS_Var.bTutoWalkFinished = false

QDR._0301_FIRST_STEPS_Var.iTutoLookTrigValueTest = 0

QDR._0301_FIRST_STEPS_Var.bTimerTutoLookStarted = false

QDR._0301_FIRST_STEPS_Var.bTutoSqueakFinished = false

QDR._0301_FIRST_STEPS_Var.bTutoXyloDone = false

QDR._0301_FIRST_STEPS_Var.bTutoBearDone = false

QDR._0301_FIRST_STEPS_Var.bTutoCrossWallDone = false

QDR._0301_FIRST_STEPS_Var.bTutoBlastLaunched = false

QDR._0301_FIRST_STEPS_Var.bTutoParentsBedroomDisplayed = false

QDR._0301_FIRST_STEPS_Var.bJodieOutOfRoom = false

QDR._0301_FIRST_STEPS_Var.iNumberActionToAiden = 3

QDR._0301_FIRST_STEPS_Var.bSwitchAidenReenabled = false

QDR._0301_FIRST_STEPS_Var.iCounterBlast = 0

QDR._0301_FIRST_STEPS_Var.bCutsceneLaunched = false

QDR._0301_FIRST_STEPS_Var.bJodieEnterSqueakZone = false

QDR._0301_FIRST_STEPS_Var.bSusanIsOnSqueakZone = false

QDR._0301_FIRST_STEPS_Var.bJodiePlayedSqueakToy = false

QDR._0301_FIRST_STEPS_Var.bSusanLegUp = false

QDR._0301_FIRST_STEPS_Var.bSusanLegUpCYC = false

QDR._0301_FIRST_STEPS_Var.bHasAlreadyLegUp = false

QDR._0301_FIRST_STEPS_Var.bSusanLegAlreadyActive = false

QDR._0301_FIRST_STEPS_Var.bSusanDialInterrupted = false

QDR._0301_FIRST_STEPS_Var.iPhoneDialCue = 1

QDR._0301_FIRST_STEPS_Var.bSusanDialLoop = false

QDR._0301_FIRST_STEPS_Var.bSusanTookRattle = false

QDR._0301_FIRST_STEPS_Var.bSusanSitted = false

QDR._0301_FIRST_STEPS_Var.bSusanMoveToStandUp = false

QDR._0301_FIRST_STEPS_Var.bTimerFinallaunched = false

QDR._0301_FIRST_STEPS_Var.bJodieIsOnTheCarpet = false

QDR._0301_FIRST_STEPS_Var.bStopCamera = false

QDR._0301_FIRST_STEPS_Var.bTeatInMouth = false

QDR._0301_FIRST_STEPS_Var.bTimerSwitchAidenLaunched = false

QDR._0301_FIRST_STEPS_Var.bAidenInRoom = false

QDR._0301_FIRST_STEPS_Var.bAidenOutside = false

QDR._0301_FIRST_STEPS_Var.bAidenRDC = false

QDR._0301_FIRST_STEPS_Var.bSqueakThrowed = false

QDR._0301_FIRST_STEPS_Var.iToySqueezed = 0

QDR._0301_FIRST_STEPS_Var.fAidenPitch = 0

QDR._0301_FIRST_STEPS_Var.flRotateLeft = 0

QDR._0301_FIRST_STEPS_Var.flAidenRotateRight = 0

QDR._0301_FIRST_STEPS_Var.bBallonDisable = false

QDR._0301_FIRST_STEPS_Var.bTimerPlusStarted = false

QDR._0301_FIRST_STEPS_Var.bTimerMoinsStarted = false

QDR._0301_FIRST_STEPS_Var.iCompteurTutoMVTAiden = 0

QDR._0301_FIRST_STEPS_Var.iCompteurMVTTutoCamera = 0

QDR._0301_FIRST_STEPS_Var.iCompteurBlastsZoneCadres = 0

QDR._0301_FIRST_STEPS_Var.iCompteurBlastsZoneChair = 0

QDR._0301_FIRST_STEPS_Var.iCompteurBlastsZoneBed = 0

QDR._0301_FIRST_STEPS_Var.iCompteurBlastsZoneToyBox = 0

QDR._0301_FIRST_STEPS_Var.iCompteurBlastsZoneWoodTrain = 0

QDR._0301_FIRST_STEPS_Var.bMugBlasted = false

QDR._0301_FIRST_STEPS_Var.bTimerEnableSwitchLaunch = false

QDR._0301_FIRST_STEPS_Var.bFinalTimerLaunched = false

QDR._0301_FIRST_STEPS_Var.iCompteurFourActions = 0

QDR._0301_FIRST_STEPS_Var.bFirstRDCVisit = false

QDR._0301_FIRST_STEPS_Var.bJodieOutOfRoom1stTime = false

QDR._0301_FIRST_STEPS_Var.bJodieAlreadyTryOutOfRoom = false

QDR._0301_FIRST_STEPS_Var.bJodieOutZone = false

QDR._0301_FIRST_STEPS_Var.bJodieValidateSwitch = false

QDR._0301_FIRST_STEPS_Var.iActionReminderDone = 0

QDR._0301_FIRST_STEPS_Var.iAidenBlasting = 0

QDR._0301_FIRST_STEPS_Var.bPictoAffiche = false

QDR._0301_FIRST_STEPS_Var.bMugReminder = false

QDR._0301_FIRST_STEPS_Var.iItemNearFatherBlasted = 0

QDR._0301_FIRST_STEPS_Var.bLevitPlushToyGetUp = false

QDR._0301_FIRST_STEPS_Var.iAidenBlastFather = 0

QDR._0301_FIRST_STEPS_Var.bKettleBlasted = false

QDR._0301_FIRST_STEPS_Var.bRadioBlasted = false

QDR._0301_FIRST_STEPS_Var.bKitchenLampBlasted = false

Objects

JodieBaby

Susan

John

ArtMobileToy

Fridge

Curtain

CurtainB

JodieBed

GiraffeLamp

RoomLamp

KitchenLamp

KitchenTable

Mug

Chair

Toybox

Desk

Commode

BabyGym

BedChest

Plush

Xylophone

XyloStick

Kettle

Radio

Doudou (French for "security blanket")

Pacifier

Phone

WoodTrain

Balloon

ToyElephant

SqueakyToy

Rattle

BabyDrawingA

BabyDrawingB

JohnChair

JohnMug

JohnPaper

AuraJodie

AuraSusan

AuraJohn

Welcome to the CIA#

There were several training exercises removed from the final version of this chapter. These are intact (albeit unlinked) on the original PS3 release of the game, but were deleted entirely from subsequent PS4 and PC versions.

"1203_HARD_TRAINING_FOREST_PUMPS": An additional training exercise in the forest, instructed by Vince. This exercise took place in a cut area labeled "CIA_FOREST_WINTER".

"1204_HARD_TRAINING_LEARNING": Jodie would be taught how to speak and understand Japanese. Despite being numbered after the "Forest Pumps" exercise, it was meant to occur before it, evidenced by her shorter hair length during this exercise.

"1205_HARD_TRAINING_FIGHT_2": A second fighting lesson with Vince. This was meant to occur after what would have been the second "Learning" exercise (which was retained in the final version).

"1206_HARD_TRAINING_AIDEN_2": A second exercise focusing on use of Aiden, instructed by Nick. During this sequence, Aiden would again be tasked with moving objects from a distance, this time with cars instead of barrels. This would also be timed, unlike the first exercise. This was meant to occur after the final fighting lesson.

"1207_HARD_TRAINING_GUN_FIGHT_2": A stealth exercise where Jodie would have to sneak up on Nick. This was likely intended to teach the player how to utilize the takedown mechanic. It was meant to occur after the above exercise.

It was also originally possible to succeed during the exercise where Jodie is performing a split in the dojo. In the final game, she will always injure her leg.

Unused Dialog#

Audio#

Like Other Girls#

There are some disturbing voice clips in the game's files that are used in the November 2012 build, in which Jodie would be held onto the pool table like in the final build, looping the situation as the audio plays to provoke the player into quickly reacting. Should the player not act, the scene could also time out so Nathan and Cole can come in and prevent further things from happening, while Jodie lashes out at Aiden for not intervening. In the final game, Aiden always comes to the rescue and prevents the abuse from occurring. If the player doesn't leave the bar before the attempted abuse, a tiny bit of the removed abuse scene can be seen at the very end of the game, when Jodie is at the final part in Black Sun.

The following content is Old-NSFLIcon.png and has been hidden by default. Click to reveal content: ;





(Source: Hugo_Peters)

The Party#

In the scene where Kirsten (or Brenda as she's called in the debug mode) opens her birthday gifts, she only opens Jen's gift before opening Jodie's, however, the full dialog shows her opening Emma's gift as well.

Text#

Black Sun#

After the Hauntings chapter, and the briefing at the DPA, when you sit down with Ryan, there's some unused dialog to one of the options. If there's audio for this is currently unknown. When you select Regrets at the second option, you will hear this:
https://www.youtube.com/watch?v=MK7i_BQ4qFU&t=2m

The dialog for this part is as follows:

{S}{*1}I shouldn't have accepted that mission.{*2}I was only thinking about my freedom, and that was stupid.{*3}That was really, really stupid...

The last sentence is missing in the game, for the better though.

Development Text#

Every single function name, constant name or value and just about any other dev related text is still readable from the precompiled Lua Dynamic Communicator (DynCom) chunks.

A Dynamic Communicator is a block of events, parameters and attributes for a certain script function in the game. These are formatted as precompiled Lua "function chunks". The values of these "settings" are stored either compressed (as a segs entry, which is a split up ZLIB archive), or uncompressed (as a QZIP entry, which is funny, because "ZIP" normally indicates a compressed file entry). The name of these blocks is COM_CONT, which is short for Dynamic Communicator Container. Aside from storing just values as Lua functions, modified versions of Dynamic Communicators are also used for storing the "actual" scene scripts, model data, animation data, (very small amounts of) audio, video (like the sport scenes and cartoons on the in-game TVs), textures, dialog sequence text, and more.

Here are the most notable strings (constants) in the precompiled Lua chunks found so far:

Source File

DynCom Block Offset

Lua (Relative) Function Chunk

String

BigFile_PS3.d01

0x6123C800

#2

[ARI] ForceSwitchJodie Done !!

BigFile_PS3.d01

0x6123C800

#3

[ARI] ForceSwitchAiden > YOU SHOULD NOT BE HERE !!! /ari call

BigFile_PS3.d01

0x6123C800

#10

[SCRIPT][ARI] fSequenceParameters> STEALTH CONFIG !!!! we go in cover

BigFile_PS3.d03

0x19131800

#20

[SCRIPT] fDefineGameplay> GMResumeGameplay mais Jodie n'était pas en PAUSE donc je ne relance pas le VariableConnector (but Jodie was not in PAUSE therefore I will not restart the VariableConnector)

BigFile_PS3.d03

0x19131800

#39

[ARI] fDefineGameplay> Cas Impossible !! prevenir ARI !! (''Impossible Situation

BigFile_PS3.d03

0x19131800

#39

[ARI] fDefineGameplay> On est revenu en Jodie, pas la peine de pauser le gameplay (We returned to Jodie, no need to pause gameplay)

BigFile_PS3.d03

0x19131800

#43

SetGenericMotionKitWithVariableConnector

BigFile_PS3.d03

0x19131800

#43

[SCRIPT] fDefineGameplay> Try Start Variable Connector Controller

BigFile_PS3.d03

0x7269800

#2

[ARI] fPlayAutomatedSequence> EnableCameras, Enable Interaction !!!!

BigFile_PS3.d03

0x7269800

#5

[ARI] fPlayAutomatedSequence> Disable Interaction d'abord !!!! (''Disable Interaction first

BigFile_PS3.d03

0x7269800

#6

[ARI] fPlayAutomatedSequence> DisableCameras, Disable Interaction !!!!

BigFile_PS3.d03

0x7269800

#11

[ARI] ///////////////////////////////////////////////////////////////////////////////// [ARI] YOU SHOULD NOT BE HERE> Events non ignorés lors d'un Kill
[ARI] appellez ARI de suite vous voyez ce message

BigFile_PS3.d03

0x7269800

#27

[SCRIPT][ARI] ---- fPlayAutomatedSequence> OnResume> Nothing

BigFile_PS3.d03

0x7269800

#30

[SCRIPT][ARI] ---- fPlayAutomatedSequence> OnFinish> UNREGISTER ignored, MPAR already Started

BigFile_PS3.d03

0x7269800

#45

[SCRIPT][ARI] ---- fPlayAutomatedSequence> OnStop> ETRANGE ON NE DEVRAIT PAS ETRE ICI (WEIRD SHOULD NOT BE HERE)

Inside the (decrypted) main executable EBOOT.ELF are many development-related strings. Here are the most notable ones found so far:

Offset

String

0xD7C2B0

Default type, no reaction

0xD7C2D0

The character is supposed to have a reaction, but no steps

0xD7C310

The character has a reaction, can make few steps but stays up

0xD7C350

The character has a reaction, can put his knees/hips/hands on grownd but finally stays up (note the typo)

0xD7C3B0

The character falls to the ground but will get up later

0x00DBAF3C

iam-trigger

0x00D86BDC

lazy lazy coder

0x00D80384

Out of memory while calling edgeZlibAddInflateQueueElement. The game will crash soon !

0x00DE8E98

0x3850b752-0x30e46f10:2013-10-09.Physics.SCEE_QuanticDream_BeyondTwoSouls_PS3

0x00DE8EE6

0x451a0608-0x4daede4a:2013-10-09.Animation.SCEE_QuanticDream_BeyondTwoSouls_PS3

0x00DE8F37

0x16a72dbc-0x1e13f5fe:2013-10-09.Cloth.SCEE_QuanticDream_BeyondTwoSouls_PS3

0x00D98FD8

MenuDemp (On this position there's also the MenuProduction, MenuGame and MenuE3 strings, though this one is new)

0x00D90249

You have to use a CHARACTER instead!

0x00D90271

The object will not be visible!

0x00D90331

(perhaps an area catalog? don't forget to specify the root entity in this case)

Various

HEAVY_RAIN_BrainCSPlaceholder, ChronicleBigFile_PS3, PS2_PAD_DEFAULT_NB_BUTTON, KEYBOARD_DEFAULT_NB_KEYS

And there are many, many more strings. In fact, over 22000 strings!

To do:
Upload the complete output of extracted strings?

Initalization Script#

Download Beyond: Two Souls code

File: BeyondTwoSouls-source.zip (33 KB) (info)

There's a pretty big, raw script hidden in the game's BigFile_PS3.dat file at 0x5F800. If this script is actually being used or not is currently unknown. The script defines a ton of "Dynamic Communicators" for various functions of the game. Aside from that, and many other initalization stuff it does (like defining every "story-changing" variable), it also defines the different options that can be used while booting the game. Most of these debug options can be controlled from runtime.sdat. Part of this script consists of reading the values from the .sdat file, and then setting various variables accordingly.

For example, on line 5654 of this script there is a "semi"-switch statement which checks for the following values in runtime.sdat's BUILDSONY key:

  • GAME
  • ANAEL
  • PROD
  • E3
  • GAMEUNLOCK
  • PR

To do:
Find out what each setting does; PROD is documented below.

Leftover Debug Mode#

runtime.sdat#

NOTE: Changing these values only affects versions pre-patch 1.02.

By decrypting the runtime.sdat file, found in root\USRDIR\, a standard INI file is outputted. Notable entries include:

Cheat = 0
DebugMenu = 0

QA Menu#

Beyond2Souls-QAMenu.png

After changing the DebugMenu entry in the runtime.sdat file, re-encrypting and replacing the file in the root\USRDIR\ folder, press L3 in-game to display a "QA Menu". Enabling any of the options will do as it says on the tin, and screenshots are stored in root\USRDIR\ in TGA format. The "GLOBAL", "DIALOGS" and "ANIMATIONS" submenus can be cycled with L1 and R1.

Using the "Free camera", it is possible to see...more of Jodie's model during the shower scene than what is normally shown. The same can also be said for Aiden at another point in the game. This article is marked as NSFW!

The following content is NSFWIcon.png and has been hidden by default. Click to reveal content: ;

Download Debug Mode Examples

File: Debug Mode Examples.zip (343 KB) (info)

Download Modified runtime.sdat

File: Modified runtime.sdat.zip (343 KB) (info)

Cheat Menu#

Watch on YouTubeYou can enable the cheat menu by setting either:

  • BUILDSONY=PROD in runtime.sdat, or
  • QDR.Infraworld_Var.BootCheat=4 in BigFile_PS3.dat

It provides access to all chapters and special production environments, such as the "Sandbox Sound Mode".

Further Settings#

Setting UseCinemaRatio=0 in runtime.sdat will remove the cinematic black bars on the top and bottom of the screen.

Regional Differences#

The European and Japanese versions toned a couple instances of the more excessive violence from the game, including Jodie ramming a pole into a scientist's neck and Ryan Clayton's torture scene.

(Source: Movie Censorship)