Perfect Dark (Nintendo 64, Xbox 360)/PerfectHead
This is a sub-page of Perfect Dark (Nintendo 64, Xbox 360).
PerfectHead was a feature which would allow players to import photos from a Game Boy Camera via the Nintendo 64 Transfer Pak and apply them to heads for use on guards in missions and characters in the Combat Simulator. A pre-existing head model would be used as a basis for the new head. A box could be resized to capture a face texture from a photo; the photo's brightness could be adjusted at the same time. The head model itself could be reshaped in eight directions, with an additional depth slider. It was also possible to change the head's coloration and hairstyle. A preview of the head could be seen during the entire process.
The official reason for PerfectHead being scrapped was "insurmountable technical problems" - while the feature was fully functional, it would cause crashes when actually using the heads during gameplay.
The occurrence of the Columbine High School Massacre in the United States just a year prior to the game's release could've also played a part in the feature's removal.
Leftover Text
While no remnants of the PerfectHead features or code are known to remain in the game, some dialogue related to it can be viewed by using GameShark code 8009EDF8 00?? (where "??" is a number between 00 and 10) when playing without an Expansion Pak.
As well, there's some leftover text in the file used for the Combat Simulator and CI Training menus, which can be used to recreate the menus.
PerfectHead |
---|
Load A Saved Head |
Make A New Head |
Edit A Loaded Head |
Edit A PerfectHead |
---|
Choose slot to edit: |
Cancel |
Make A New Head |
---|
Load A Saved Head |
Where do you want to be able
to use this head? |
Combat Simulator |
All Missions |
Both |
Cancel |
Camera Setup |
---|
Insert your camera into your
Game Boy Pak. Then, insert your Game Boy Pak into any controller. |
OK |
Cancel |
Error |
---|
Game Boy Camera Not Detected!
Please check all connections and try again. |
Cancel |
Choose Camera |
---|
More than one camera detected.
Please select which camera you want to use |
OK |
Cancel |
Load From Camera |
---|
Choose picture to read from camera: |
Cancel |
Take Picture |
---|
Shoot! |
Cancel |
Keep Picture |
Try Again |
Load PerfectHead |
---|
Insert the Controller Pak
containing the head you wish to load into any controller. |
Controller Pak: |
Cancel |
Source: |
Pak 1 |
Pak 2 |
Pak 3 |
Pak 4 |
<none> |
PerfectHead Editor |
---|
Take Another Picture |
Change Head |
Position Picture |
Color Face & Hair |
Shape Head |
Remove Head |
Cancel Changes |
Keep Changes |
Shape Head |
---|
Depth |
OK |
Cancel |
Position Image |
---|
Brightness |
OK |
Cancel |
Choose Head |
---|
OK |
Cancel |
Remove PerfectHead |
---|
Are you sure you want to
remove this head from memory? |
Delete |
Cancel |
Cancel Changes |
---|
Are you sure you want to
throw away your changes? |
Throw Away |
Go Back To Editor |
Save PerfectHead |
---|
You have edited this head.
Do you want to keep your changes? |
Keep |
Revert |
Save PerfectHead |
---|
Your changes will be kept in memory.
Would you like to save your changes to the Controller Pak? |
Save |
Don't Save |
Save PerfectHead |
---|
You can now save your head on to
a Controller Pak if you wish. If you want to do this, please ensure a Controller Pak is inserted and choose "Save". |
Save |
Don't Save |
Head Complete! |
---|
To use your head in the combat simulator,
select the head from the character menu of the player/simulant settings menu. Your Mission heads will now appear in any of the missions you play. You can now edit your head further if you wish. |
Finish |
Edit Head |
---|
Head Color |
Face: |
Hairstyle: |
OK |
Cancel |
Style 1 |
Style 2 |
Style 3 |
Style 4 |
Blonde |
Black |
Auburn |
Blue Rinse |
Searching for Camera! |
Calibrating Camera |
Downloading Image |
Loading Image |
Saving Image |
Transfering Image |
Uploading Segment |
Checking Controller Pak |
Getting PerfectHead |
Saving PerfectHead |
Auto Camera Adjustment |
Development Text
803D2368 IG:) style %d gbHead:%d 803D3A10 Pak %d -> Pak_AddOneCameraFile 803D3A30 Pak %d -> Pak_AddOneCameraFile - Making one default camera file 803D3A74 Pak %d -> Pak_AddOneCameraFile : Got Space - No need for resize 803D3AB8 Pak %d -> Pak_AddOneCameraFile : No Space -Need to resize by %d pages 803D3B00 Pak %d -> Pak_AddOneCameraFile - Make of one default camera files failed 803D3B4C Pak %d -> Pak_AddOneCameraFile : Error - No Room 803D6230 RWI : Cam Alloc : Guid=%d -> Total = %u (%d at %s) camdraw.c Cam -> Dumping head vertex colour information Cam -> Face Col - Pal=%d, Entry=%d, Col=%08x Cam -> Hair Col - Pal=%d, Entry=%d, Col=%08x Cam_Tick (%d Total Slots) Current Camera Slot = %d Slot %d -> Active = %d camdraw.c CAM : Cam_StartCamFileRead - Go ************ Cam_ActivateAndClearSlot ************ : Slot=%d camdraw.c camdraw.c camdraw.c camdraw.c camdraw.c camdraw.c camdraw.c Cam_CopyEditorToUndo camdraw.c Cam_CopyEditor camdraw.c camdraw.c camdraw.c camdraw.c Cam -> Setting current hair colour to %s Cam -> Setting current face colour to %s camdraw.c Cam_SetAutoDeArtefact -> State = %d camdraw.c Cam_ClearCameraLoadBuffer -> Camera=%d Cam_StartTemp : Need %u bytes for temp cam images buffer camdraw.c camdraw.c camdraw.c camdraw.c camdraw.c Camera -> Cam_Start for Camera %d Camera -> Cam_Stop Camera -> Cam_Finish - Done Camera ->Created a new slot - Id=%d Camera -> CD_DeleteSlot - Dumping slot %d kg Kp Ki Kd tInt gocal aim CAM : Cam_MakeTextures camdraw.c pD->ReadMode = %s Camera -> Getting Header Info Camera -> Item=%d, pD->CamHeader[i]=%d Camera -> Found %d Valid images Camera -> Item=%d, Valid=%s, Bank=%d YES NO CD_TransferCurrentCacheToEditorAndExit : Player=%d Camera -> CD_CycleHandleRead - Need to load up the camera header Camera -> CD_CycleHandleRead - Image %d needs loading for editor coppying on menu exit Camera -> CD_CycleHandleRead - Error ekCamReadModeExit2 in Null cycle CAMERA : COPY SLOT (%d of %s): Slot %d(%s) -> Slot %d(%s) ACTIVE NULL ACTIVE NULL RWI : Warning -> Not copying the thumnail texture CD_DrawTexture : pTex=%x Cam -> WARNING - Not done intensity table recalc :- No samples within treshold Camera -> Call to reset auto calibrate AC -> ekCamAutoCalStatusReset - pD->tTime = %d, pD->tTimeNxAdd = %d Cam 0 -> Time = %d, Target = %d, tInt = %.2f Cam 0 -> Too Low -> Adding Time Cam 0 -> Too High -> Subbing Time Cam -> ekCamAutoCalStatusSettingTime - New time = %d %s%sAC -> Gain = %d, Target = %.2f, Int = %.2f Auto Calibrate is removing the menu message Auto Calibrate is shutting down Cam -> Cam_BalanceSlot %d -> tZroShift = %d Cam_BuildFaceTexture (slot=%d): %d of %s camdraw.c camdraw.c Cam %d -< Balance : No Data Available camdraw.c Cam_SetSquashZ : %u, %u, %f camdraw.c Cam : Alloc for copy of Vtx %d bytes CAM : Cam_AllocAndCopyAllVtx -> Ptr all-ready allocted - No extra needed camdraw.c Cam_RebuildHead : Slot=%d Cam -> Cam_ColourHeadOnePart - Remapping %s Cam_ColourHead : Face Col = %u, Hair Col = %u FACE SIDE HAIR Cam -> Cam_SquashOnePart - pExtents=%08x, pVcopy=%08x, Cam -> Cam_SquashOnePart - Head centre at (%d,%d,%d) Cam -> Cam_Scale Param 1 = %s%s.3f Cam -> Cam_Scale Param 2 = %s%s.3f Cam -> Cam_Scale Param 3 = %s%s.3f Cam -> Cam_Scale Param 4 = %s%s.3f Cam -> Cam_Scale Param 5 = %s%s.3f Cam -> Cam_Scale Param 6 = %s%s.3f Cam -> Cam_Scale Param 7 = %s%s.3f Cam_DctInitialise_Read -> %x Cam_DctUnCompressSlot -> %x Cam_LoadFromPakIntoSlot -> Pak=%d, fileGuid=%u, pakGuid=%u, Slot=%d, pS=%x, pE=%x camdraw.c camdraw.c Cam -> Compressing Editor Slot Cam -> Trying image compression at quality %u Cam -> Failed - Too big - This=%u, Max=%d Cam -> Trying lower quality setting Cam -> Save Failed - Cant get it small enough - oo-er Cam -> Sucess at quality %u - Size=%u, Max=%d Cam_SavedEditSlotToParamPakItem -> Save failed Camera Save Error Result: %d 803D715C Magic Guid set to %d 803D7D38 Menu99 -> Calling Camera Module Start 803D7D60 Menu99 -> Calling Camera Module Finish 803D8BC8 GBHead: Call to create head for slot %d (gbheadobjs[slotno]=%x)