Post: BO1 FUllY decompiled eboot.elf ( zombie ) - GSC functions C++ Discussion
07-22-2026, 04:16 PM #1
(adsbygoogle = window.adsbygoogle || []).push({}); # Black Ops 1 PS3 1.13 — Reverse-Engineered EBOOT, GSC Builtin SDK and Resynced Zombies SPRX

I have been working on a large Black Ops 1 Zombies reverse-engineering and SPRX development project for PS3.

The project is called **BO1-Resynced** and currently targets:

* Black Ops 1 PS3
* Update 1.13
* BLES01031
* Zombies
* Private, local and offline use
* Native C++ SPRX development

This is not just a basic mod menu with hardcoded memory options. The project now includes a documented EBOOT function catalog, GSC builtin database, asset databases, native runtime systems and a standalone developer SDK.

## Quick overview

Current project contents include:

* 12,746 discovered EBOOT functions
* 895 documented GSC global builtins and entity methods
* 61 typed or mapped engine bindings
* Native GSC VM builtin dispatcher
* Standalone BO1 PS3 C++ SDK
* Map-aware weapon, model, FX, sound and perk catalogs
* Native HUD and controller hooks
* Server-frame job and command queues
* Runtime completion and readback systems
* 8 main menu sections
* 40 dynamic subviews
* 78 currently connected menu options
* PPU compiler validation
* Automated regression tests
* Human-readable TTY diagnostics

## EBOOT.ELF reverse engineering

I extracted and analyzed the complete discovered function inventory from the BO1 1.13 PS3 EBOOT.ELF.

The database currently contains 12,746 function records.

Each record can contain:

* EBOOT entry address
* Original Ghidra `FUN_` name
* Generated semantic name
* Human-readable display name
* Subsystem classification
* Referenced strings
* Callers
* Callees
* Alias provenance
* Confidence level
* Known OPD information
* Known TOC information

The project uses the BO1 PS3 TOC:

```cpp
0x00A544B0
```

Native calls use PS3 ELFv1 function descriptors instead of blindly casting raw addresses.

Example documented subsystems include:

* Script VM
* Weapons
* Entities
* Zombies and AI
* Rendering and HUD
* Input
* Dvars
* Asset database
* FX
* Sound
* Navigation
* World and collision
* Networking
* Filesystem
* Internal engine systems

Not every internal function has its original Treyarch symbol name or a completely proven prototype.

Functions are therefore separated into confidence levels such as:

* Runtime verified
* Signature verified
* Typed binding
* Exact function entry
* String-reference derived
* Callgraph derived
* Heuristic
* Unknown

This prevents unknown functions from being falsely presented as safe callable APIs.

## GSC builtin and method database

I extracted and documented 895 native GSC entries.

These include both:

* Global GSC builtins
* Entity GSC methods

Examples include systems related to:

* Weapons
* Ammo
* Perks
* Entities
* Models
* FX
* Sound
* Projectiles
* Vectors
* Player state
* Script objects
* Traces
* Spawning
* Deleting entities

The database stores information such as:

* Builtin name
* Native EBOOT entry
* OPD
* Global or entity-method classification
* Known or expected parameters
* Known return type
* Script VM requirement
* Confidence level
* Example GSC syntax
* Runtime support status

## Native GSC VM execution

This SPRX does not currently rely on custom injected GSC scripts.

Supported builtins are called directly from the SPRX through the native BO1 GSC VM.

The runtime flow is approximately:

```text
SPRX feature

Queue GSC command

Server-frame dispatcher

Build GSC VM argument stack

Scr_AddString / Scr_AddInt / Scr_AddFloat / Scr_AddVector / Scr_AddEntity

Call native global builtin or entity method

Read return value

Restore VM state

Return completion result to the feature
```

The dispatcher supports:

* Queued execution
* Global builtins
* Entity methods
* Strings
* Integers
* Floats
* Vectors
* Entities
* Boolean results
* Integer results
* Object and entity results
* Completion IDs
* Readback verification
* Per-frame execution limits
* Map and lifecycle resets

Complex features can therefore be composed in native C++ by combining multiple builtins.

## Standalone BO1 SDK

A separate portable developer SDK has been exported from Phoenix.

The SDK contains:

* Public C++ headers
* Native typed API
* GSC VM dispatcher
* Engine layouts
* Semantic symbol headers
* Asset catalogs
* Fastfile resource catalogs
* Usage examples
* API documentation
* GSC calling documentation
* Confidence and safety rules
* SHA-256 manifest
* SDK verification scripts

Important SDK files include:

```text
BO1_SDK/
├── README.md
├── GETTING_STARTED.md
├── API_REFERENCE.md
├── GSC_VM_CALLING.md
├── GSC_EXAMPLES.md
├── include/
├── src/
├── catalogs/
├── docs/
├── examples/
├── verify_sdk.ps1
└── MANIFEST.sha256
```

The SDK explains:

* How to integrate it into an existing SPRX
* How PS3 ELFv1 descriptors work
* How to use the BO1 TOC
* How to initialize typed native bindings
* How to queue GSC builtins
* How to process the dispatcher from the server thread
* Which functions belong on render, game or server threads
* How runtime readback works
* Which APIs are verified and which are documentation-only

The public SDK units compile with the real PS3 Cell PPU compiler using:

```text
-Wall -Wextra -Werror
```

The validated SDK build currently reports no compiler warnings.

## Asset and fastfile catalogs

Phoenix contains generated asset catalogs extracted from local PS3 game and fastfile data.

Cataloged resource categories include:

* Weapons
* Pack-a-Punch weapon variants
* Models
* Zombie models
* Player models
* Script models
* FX
* Sounds
* Perks
* Maps
* DLC maps
* Map-specific resources
* Fastfile script references
* Entity and resource identifiers

The asset system is map-aware.

When a Zombies map is loaded, the menu can use the resources associated with that specific map instead of showing only one global list.

This allows the runtime to provide map-specific:

* Weapon lists
* Upgraded weapon lists
* FX lists
* Sound lists
* Model lists
* Perk identifiers

The catalogs are also usable as developer documentation even when a resource is not yet exposed as a runtime action.

## Runtime and hook system

Phoenix currently contains native hooks and runtime systems for:

* HUD rendering
* Text rendering
* Controller input
* Input suppression
* Server-frame processing
* Runtime context detection
* Private-host validation
* Map lifecycle detection
* Job queues
* GSC command queues
* Runtime events
* Human-readable TTY logging
* Feature completion readback

Important hooks include systems around:

* Draw2D
* Controller state construction
* G_RunFrame
* Server-side feature execution

Gameplay mutations are scheduled from the server-frame context instead of being executed from random SPRX threads.

## Weapon and inventory systems

Implemented or connected inventory functionality includes:

* Give weapon
* Take weapon
* Switch weapon
* Give maximum ammo
* Has-weapon verification
* Set perk
* Unset perk
* Clear perks
* Has-perk verification
* Map-aware Weapon Vault
* Pack-a-Punch weapon browser
* Inventory completion readback

Weapon and perk actions are verified after mutation instead of assuming that the native call succeeded.

## FX Studio

The FX runtime supports:

* Map-aware FX selection
* Native `loadfx`
* Native `playfx`
* Position and direction parameters
* Asynchronous FX loading
* FX completion handling
* One-shot effects
* Runtime cleanup
* FX browser integration

The FX browser can select an exact cataloged effect and play it through the GSC VM.

## Sound Studio

Sound Studio currently supports:

* Map-aware sound selection
* Next Map Sound
* Play Selected Sound
* Timed sound loops
* Configurable loop intervals
* GSC VM completion verification
* Clean loop stopping
* Map-change cleanup
* Safe Reset cleanup
* Human-readable TTY messages

Example diagnostic markers include:

```text
PHX|GELUID_STUDIO|LOOP_GESTART
PHX|GELUID_STUDIO|GELUID_BEVESTIGD
PHX|GELUID_STUDIO|LOOP_GESTOPT
```

## Projectile Lab

Projectile Lab is connected to real native GSC builtin execution.

The flow uses:

```text
getplayerangles

anglestoforward

magicbullet
```

Available controls include:

* Map-aware projectile weapon
* Projectile distance
* Launch height
* Volley size from 1 to 8
* Single volley
* Automatic volleys
* Completion verification
* Owner cleanup
* Runtime capability probing

Example TTY events include:

```text
PHX|PROJECTIEL_STUDIO|VOLLEY_INGEPLAND
PHX|PROJECTIEL_STUDIO|VOLLEY_BEVESTIGD
PHX|PROJECTIEL_STUDIO|VOLLEY_MISLUKT
PHX|PROJECTIEL_STUDIO|AUTO_GESTART
PHX|PROJECTIEL_STUDIO|AUTO_GESTOPT
```

## World and entity systems

The world bridge currently supports a native flow similar to:

```text
codespawn("script_model", origin)

Receive entity result

setmodel(entity, model)
```

World functionality includes:

* Script-model creation
* Model assignment
* Entity handles
* Entity deletion
* Runtime ownership
* Map reset
* Asynchronous completion
* Object Builder foundations
* Vendor terminal placement

## Vendor and terminal system

Phoenix contains a Zombies Supply Terminal runtime.

Current terminals support:

* Map-aware weapons
* Map-aware perks
* Proximity detection
* Square-button interaction
* One purchase/action at a time
* Give-weapon verification
* Give-perk verification
* Map-change cleanup
* Edge-triggered interaction messages
* Unique runtime handle namespaces

The score functions from `_zombiemode_score.gsc` have been located and documented.

However, paid vendor support remains disabled until the exact entity-thread or script-field calling ABI is fully proven.

The current terminal implementation is therefore free and functional rather than using an unsafe guessed score call.

## Companion and Turret Lab

The Companion/Turret section includes an **Overhead Cannon** feature.

This combines:

* Live player view angles
* Direction-vector calculation
* Map-aware magic bullets
* Configurable firing height
* Configurable burst size
* Configurable interval
* Automatic firing
* Runtime readback
* Lifecycle reset
* Human-readable TTY events

It is currently a player-directed cannon.

Automatic zombie targeting is kept separate until entity enumeration and targeting are completely validated.

## Zombie and wave systems

Current zombie-related systems include:

* Zombie entity classification
* Zombie health manipulation
* Freeze systems
* Speed profiles
* Magnet-style behavior
* Wave profiles
* Insta-kill policies
* AI velocity research
* Kill Active Horde

`Kill Active Horde`:

* Scans active entities
* Targets only validated zombie actor types
* Ignores unrelated entities
* Changes living zombie health to zero
* Reads the health value back
* Reports the number of affected zombies through TTY

## Developer browsers

Phoenix includes several internal developer and reverse-engineering browsers.

These include:

### Engine Binding Browser

Displays:

* Binding name
* EBOOT address
* Runtime state
* Required thread
* Prototype classification
* Required capability

Binding states include:

```text
MAP
SIG
READY
FAIL
OFF
```

### Script Browser

Displays all cataloged GSC entries with:

* Global or method classification
* Builtin name
* Native entry
* OPD
* GSC VM status

### Weapon Vault

Displays map-aware weapon identifiers and can execute supported give-weapon actions.

### Pack-a-Punch Lab

Displays upgraded weapon identifiers separately.

### FX Browser

Displays exact FX names and paths and can queue supported FX.

### Asset Browser

Displays models, perks, sounds and other cataloged resources.

### Dvar Explorer

Displays known and candidate Dvars with safe read-only handling where necessary.

### Developer Probes

Displays:

* Typed engine bindings
* Offline EBOOT function records
* Addresses
* Thread requirements
* Capability state
* Runtime status

## Testing and validation

The project uses both host-side and PS3 PPU compilation tests.

Validation includes:

* Native unit tests
* Runtime harnesses
* Menu contract tests
* Provider tests
* Queue tests
* GSC VM tests
* Inventory tests
* FX tests
* Projectile tests
* Vendor tests
* Zombie tests
* Runtime event tests
* Portable SDK tests
* Export manifest verification
* PPU compile checks
* Compiler warning checks

The current menu architecture contains:

* 8 root views
* 40 dynamic subviews
* 78 connected main options

## Current limitations

The project is still under development.

Important limitations:

* Not every EBOOT function has its original name.
* Not every function prototype is proven.
* Heuristic functions are documentation-only.
* Only verified or supported functions are exposed as callable APIs.
* Some advanced map script logic must be reconstructed from native builtins.
* Custom GSC scripts are not currently used.
* Paid vendor score handling remains locked until its calling ABI is proven.
* Some AI, pathfinding and targeting systems are still being researched.
* Full live feature testing depends on the custom EBOOT loader keeping the SPRX resident.

The project does not expose an unsafe arbitrary-address call function.

## Project goal

The goal is to build more than one private mod menu.

The long-term goal is to create a reusable Black Ops 1 PS3 development and reverse-engineering package containing:

* A documented EBOOT database
* GSC builtin documentation
* Typed native bindings
* Safe GSC builtin execution
* Asset catalogs
* Fastfile resource catalogs
* Hooking documentation
* Runtime examples
* A portable C++ SDK
* A complete Zombies feature framework

This should allow other BO1 PS3 developers to build their own SPRX projects without manually rediscovering every address, OPD, TOC, builtin and asset from the beginning.

This is currently a private local development project. More technical details, screenshots and SDK information may be added as the runtime validation progresses.
(adsbygoogle = window.adsbygoogle || []).push({});

Copyright © 2026, NextGenUpdate.
All Rights Reserved.

Gray NextGenUpdate Logo