Urbz recomp
Urbz recomp is a native PC port of The Urbz: Sims in the City for Windows that allows users to play the game with F1 to open settings and F2 for the frame-time graph.
- Type: PC port
- Game: The Urbz: Sims in the City
- Runs on Windows
- By abilliontokens
- Latest release v0.1.0, 2026-10-15
- Source: https://github.com/abilliontokens/urbz-recomp
README
The Urbz: Sims in the City - static recompilation
An unofficial native PC port of the original Xbox release of The Urbz: Sims in the City (USA),
produced by statically recompiling the game's x86 XBE with the
XboxXBERecomp SDK (vendored in sdk/).
This repository contains no game code and no game assets. It holds tooling, configuration and host-side glue only. You must supply your own legally acquired copy of the disc.
Run it on Windows
You supply the game: the USA Xbox release, as a disc image or as the files from one.
- Download
Urbz.zipfrom Releases and unzip it anywhere. - Put your disc image in the
assetsfolder besideUrbz.exe, so you haveUrbz.exeandassets\<anything>.iso. A whole-disc dump or a plain xiso both work, and so do extracted files (default.xbewith itsDATAandmoviesfolders beside it). - Run
Urbz.exe. It mounts the image as the console'sD:and boots the game.
You need Windows 10/11 x64, a Direct3D 12 GPU, and an Xbox-style controller - the game only reads a
pad, there is no keyboard mapping. The first run writes settings.toml, logs\ and hdd\ (where
saves go) beside the exe. In game, F1 opens settings (display mode, resolution, aspect ratio,
ultrawide, vsync, frame cap, render scale, anisotropic filtering) and F2 the frame-time graph.
If it says the game is missing, the assets folder has no image or extracted default.xbe in it.
The exe only runs the XBE it was recompiled from - SHA-1 5712b6a3..., USA retail; any other build
is offered as a warning you have to confirm, and will not run properly if you take it.
Status
| Stage | State |
|---|---|
Disc image read and extracted (tools/xiso_extract.py) | done - 44 files, see docs/iso-extract.md |
XBE identified and analysed (tools/xbe_info.py) | done - see docs/xbe-analysis.md |
| XDK build matched against the SDK's signature set | done - XDK 5849, supported by sdk/xdk/5849 |
| Toolchain (clang 23.1.3 + ninja + cmake) | done - see docs/toolchain.md |
| Repo scaffolded from the SDK template | done |
config/game.toml written by xbe_symbols | done - 130 of 238 XDK functions located |
| Recompilation and native build | done - 15,942 functions, Urbz.exe boots and opens its window, see docs/status.md |
Kernel import coverage (tools/kernel_coverage.py) | 123 of 124 covered, see docs/kernel-coverage.md |
| Remaining console-surface gaps | see docs/gap-analysis.md |
The game
| Field | Value |
|---|---|
| Title ID | 0x45410060 (EA, serial 96) |
| Region | North America |
| XBE | default.xbe, 3,035,136 bytes, SHA-1 5712b6a3e2eaaacfcae228cf6154ade499a0033c |
| Linked | 2004-10-07 |
| XDK | 1.0.5849 (XAPILIB, XBOXKRNL, LIBCMT, D3D8, XGRAPHC, DSOUND, XMV) |
| Kernel imports | 124 ordinals |
The build is pinned to this exact XBE. A different region or revision needs its own analysis pass.
Layout
assets/ your disc image and/or the files extracted from it (never committed)
config/ game.toml - the recompiler config written by xbe_symbols, then hand-corrected
docs/ analysis and bring-up notes
sdk/ XboxXBERecomp SDK checkout (recompiler, runtime, XDK HLE, D3D12 renderer)
src/common/ host-side code: game_info.cpp defines app::kGame
src/game/ hooks and overrides for recompiled functions (src/game is excluded from the host glob)
tools/ xiso_extract.py (XDVDFS reader), xbe_info.py (XBE reader), env.bat (toolchain PATH)
generated/ recompiler output (never committed)
Build it from source
- Put your disc image in the repository root, or
default.xbeplus itsDATAandmoviesfolders inassets/. - Extract it:
python tools/xiso_extract.py info "<your>.iso" python tools/xiso_extract.py extract "<your>.iso" assets - Check that the XBE is the one this configuration targets:
The SHA-1 must match the table above.python tools/xbe_info.py assets/default.xbe --json build/xbe_info.json --markdown docs/xbe-analysis.md - Install the toolchain and build:
tools\env.bat build.batbuild.batconfigures thereleasepreset, buildsxbe_symbols, writesconfig/game.tomlfrom the XBE and the SDK's XDK 5849 signatures, then recompiles the XBE and buildsUrbz.exeintoout/build/release. The first build is long: it compiles one C++ function per guest function.
Working on the port
- Never edit anything in
generated/; it is rewritten on every recompile. - Behaviour changes go in
src/game/asX86_FUNC(sub_XXXXXXXX)overrides (call__imp__sub_XXXXXXXXfor the original) or as[[hook]]entries inconfig/game.toml. - Analysis mistakes are corrected in
config/game.tomlwith[[function]],[[switch]]and[xbe] data_ranges. python sdk/tools/symbols/xbe2pe.py config/game.toml game.exewrites a flat PE with the recompiled functions as exports, for symbol work in Ghidra.
Legal
Bring your own disc. Do not commit or distribute the XBE, the disc image, extracted assets, or
any key material. assets/, generated/, *.iso and out/ are ignored by git for that reason.
The SDK is MIT licensed; see sdk/LICENSE and sdk/THIRD_PARTY.txt.