Shadow of Rome Recompiled

Shadow of Rome Recompiled is a Windows PC port of Shadow of Rome that runs at up to 4 times the PS2 resolution and 60 frames per second.

README

Shadow of Rome Recompiled

Shadow of Rome Recompiled

An unofficial PC version of Shadow of Rome (PS2), made by translating the game's own code into a Windows program. Since 1.9 the video card draws it: up to 4 times the PS2's resolution, 60 frames per second, 4:3, 16:9 or 21:9.

Version 1.9 · What changed

The game has not been played to the end yet: it still needs full testing. Found a problem? Tell me here: every report is read and fixed as soon as possible.

The same moment in the forest camp, on the left at the PS2's resolution, on the right drawn by the video card at 4 times that

The same moment of the game, real pictures from this port: on the left at the PS2's resolution, on the right drawn by the video card at 4x. The line moves by itself.

What this is

Shadow of Rome is an action game made by Capcom for the PlayStation 2 in 2005. Agrippa's father is accused of murdering Caesar: Agrippa is forced to fight as a gladiator in the arenas, and his friend Octavianus sneaks through Rome to find out who really killed Caesar.

This project makes it run on a Windows PC as a normal program. It is not an emulator. A tool called PS2Recomp reads the game's program from the disc and rewrites every one of its instructions as C++ code, which is then built for Windows. This is called static recompilation. The parts of the PS2 that the game talks to (the graphics chip, the sound chip, the memory card, the disc drive) are played by a runtime that comes with PS2Recomp, with many fixes of mine (see patches). The picture is drawn by the graphics chip of the PS2 emulator PCSX2, on the video card.

You need your own copy of the game (the European disc, PAL, SLES-52950), as an .iso file. No game data is included. The ready-made package on the Releases page holds only the program: the game's code translated to C++ and built for Windows, the video card part and the launcher. The first time you press Play, the launcher reads the rest from your own disc image. You can also build the program yourself from your disc: see How to get it running.

This is an experiment. I can't promise I'll finish it, for personal reasons, and it will take a long time before the game is playable: I work on it with limited time and resources, so there are no deadlines.

If someone is already working on a port of this game, or is further ahead, please let me know as soon as possible by opening an issue, so I don't do useless work and can spend my time on something that hasn't been done yet. If you find a mistake here, even a small one, an issue is welcome too.

What's new in 1.9

  • The video card draws the picture, with DirectX 11, DirectX 12 or Vulkan, at 1x to 4x the PS2's resolution. The drawing on the processor of 0.0.7 can still be chosen.
  • 60 frames per second, with VSYNC on by default: every picture stays on screen for the same time, so the movement is steady.
  • A steady and sharper picture: the picture no longer shakes half a line at every frame, and SHARPNESS (off, low, high) makes textures and edges crisper.
  • Wider screens, 16:9 and 21:9: you see more of the scene at the sides while you play and when you talk to someone; the movies, the game's own scenes, the pause menu and the title menus stay 4:3. 21:9 was not made for this game: some views may show flaws.
  • Full screen (F11), the OSD (frames per second on screen) and texture packs, as in PCSX2.
  • Fixed: long dark stripes on the floor between the characters: they were their shadows, with the corners shifted.
  • Fixed: the voices running ahead of the lips in the movies, a little more every time the game stopped for a moment.
  • CONTROLS in the launcher: swap ✕ and ○, and invert the camera, for the controller.

The same moment in 4:3 on the left and in 21:9 on the right, with more of the camp at the sides

4:3 on the left, 21:9 on the right: the same moment, with more of the camp at the sides. Real pictures from this port; the line moves by itself.

All the changes: CHANGELOG.md.

Screenshots

In the order you meet them in the game, drawn by the video card at 4x in 16:9: the opening movie, the first chapter's title card, the game's own scenes in the Roman camp, and playing. The movies and the game's own scenes are shown 4:3, with black bars at the sides.

The opening movie: the Senate The opening movie: the people of Rome The opening movie: the crowd in the arena Chapter 1: The Wickedness of Men

A scene in the Roman camp: a wolf A scene in the Roman camp: a centurion A scene in the Roman camp: the soldiers by the fire Playing in the Roman camp, in 16:9

The launcher

ShadowOfRome.exe starts the game. Play starts it: the first time, it asks where your .iso file is, reads from it the files the game needs (a few seconds, into the disco folder next to the launcher) and remembers it. If the image is not the European disc, Play says so and starts nothing. Arrows and Enter, or the mouse.

The launcher: Play, Options, Graphics, Controls, Mods and Quit, the line that says the game still needs full testing, and the version number

  • GRAPHICS: RENDERER (the video card with DirectX 11, DirectX 12 or Vulkan, or the processor, as in 0.0.7), RESOLUTION (1x to 4x the PS2's), SHARPNESS (off, low, high), SCREEN (4:3, 16:9, 21:9), FRAME RATE (60 or 50), VSYNC and OSD.
  • OPTIONS: the game in a window or in full screen. F11 switches while you play.
  • CONTROLS, for the controller: swap ✕ and ○, and invert the camera (the right stick) up and down or left and right. The keyboard keys are in Keys.
  • MODS: texture packs on or off, and a button that opens their folder.

Each page saves only with APPLY; BACK leaves without saving.

The launcher's GRAPHICS page, with the default choices: the video card with DirectX 11 at 3x, sharpness low, 4:3, 60 frames per second, VSYNC on, OSD off

The launcher's OPTIONS page: the game in a window or in full screen The launcher's CONTROLS page: swap cross and circle, invert the camera up and down, invert it left and right The launcher's MODS page: texture packs on or off, and their folder

Status

In short: the game starts, every menu works, the movies play, and with the video card it runs at 60 frames per second. I have played it by hand through the Germanian Forest up to Chapter 3. Nobody has played the whole game yet, and most of what comes after has only been reached by test tricks.

Most checks below were done by test scripts: small programs that press the keys, read the game's memory and take screenshots. Where I played by hand, it says so. Some tests forced the game forward by writing to its memory (for example, to win a round without fighting it): those are marked too.

How far the game goes

With the video card I have played by hand through the Germanian Forest on to Chapter 3 (Octavianus in front of the procession), with no freeze. The table says how each part was checked.

Part of the gameStateHow it was checked
Start: language, video mode, memory card, warnings, CAPCOM logo, opening movie, title screenWorksScript, on screenshots. By hand too, on an older build that skipped the movies
Every menu: New Game, Load Game, Secrets of Rome, OptionsWorksScript, on screenshots
The first arena (the First Match)Works, at full speed (50 frames per second, like the European original)By hand for a few minutes. A script played it to its end, with help (see below)
Saving and loadingWorksScript: saved after the First Match and after City Arena Round I (that win was forced), closed the game, loaded both
The movies after the first arena, and the "City Arena" title cardWorkBy hand, from my own save
Chapter 1: the Roman camp in a forestCan be finishedScript, with help
The Forum in Rome (Octavianus), then a streetReached by walkingScript
The Germanian Forest (Agrippa)Played to its end, with no freeze. In a scripted test it froze once, after about 95 minutes; two later runs, of 46 and 108 minutes, did not freezeBy hand, with the video card (6 November). Script before
The next areas: the fort key, the inside of the fort (053)Played: the enemies die, and the game goes by itself to the next area (054)Script, starting from a forced jump
The fort wall (054)Loads and runs. The enemies on the ground die, but the big door does not open: two archers on the wall are left, and the script cannot reach themScript
The two areas after it (055, 056)Load and runScript, each one reached by a forced jump
City Arena Rounds II and III, the first Octavianus stageLoad and runScript, with each win forced
On to Chapter 3 (Octavianus in front of the procession)Reached by playingBy hand, with the video card (6 November)
The rest of the storyNot played. Of 31 later stages tried, 30 load and runScript, each one reached by a forced ending
Tested by hand
When, which buildWhat I didResult
31 October 2026, before the speed workFrom the desktop shortcut: menu, New Game, into the first arenaWorks, but extremely slow
31 October 2026, after the speed workAbout three minutes in the first arena with a PS4 controller: walking and fighting (one minute of it, MP4, 9 MB, no sound, recorded before the camera fix and with the processor drawing)Works
2 November 2026, with patch 0016From my own save, past the "City Arena" title card, watched the movie and played onWorks. Seen, not fixed: glitches on the floor, and the speed is not steady (short slowdowns)
0.0.6Not tested by hand yet
0.0.7The game started from the ready-made packageWorks
6 November 2026, the video card at 3x, from the launcherPlayed on through the Germanian Forest up to Chapter 3Works, no freeze
6 November 2026, the shadows fixThe room where long dark stripes joined the charactersFixed: the shadows look right
6 November 2026, 1.960 frames per second with VSYNC on DirectX 12 (180 Hz screen), SHARPNESS low and high, full screenWorks: smooth, sharp
6 November 2026, 1.9 in 16:9Played with movies and talks, before and after the sound fixWorks: the voices are now in time with the lips. The talks were shown 4:3: changed after this test, so that they stay wide
1.9Not tested by hand yet: 21:9, the talks shown wide, CONTROLS, texture packs, DirectX 11 and Vulkan in 1.9, 50 frames per secondChecked by script only, or not at all
What does not work yet
  • It is not playable from start to end. Nobody has finished the game on it. I played by hand up to Chapter 3; after that, nothing has been played without forcing.
  • A freeze in the Germanian Forest, seen once in a scripted test, after about 95 minutes of play: the picture stopped and the game's logic stopped. Something wrote drawing data over most of the game's memory, and the cause is not known. It has not happened again, in longer scripted tests or when I played the stage by hand.
  • Short pauses: in the Roman camp of Chapter 1, the game sometimes hands a picture to the video card 30 to 49 milliseconds late, and VSYNC can then lose its step for a moment. Seen in a scripted test, not fixed yet.
  • FRAME RATE 50 in the launcher does nothing when the game's own settings.ini says video=60 (see Settings).
  • The wide screens: the life bar is stretched, and 21:9 was not made for this game, so some views may show flaws. With the processor drawing only 4:3 and 16:9 can be chosen, and the 4:3 menus and scenes were not checked there.
  • The video card part needs the Microsoft Visual C++ Redistributable (x64), which most PCs already have. Without it the game draws on the processor, even if the launcher says video card.
  • The sound has not been compared with the console.
  • The fights were checked by a script that fights badly and by my own play, not by a good player.
  • It has run on one PC only (Windows 11, Intel i5-8600K with 6 cores, NVIDIA GeForce RTX 3070 Ti), with the keyboard and a PS4 controller.
All the test details

The details below were written up to 0.0.7, when the processor drew the picture. The video card changes how the picture is drawn, not the game's logic.

What works

  • The whole executable is translated to C++ and built for Windows, with no errors.
  • All the game's original IOP modules load and run in PS2Recomp's IOP simulator (the IOP is the PS2's second processor: it runs the sound, the disc and the memory cards).
  • From the start to the menu, on screen: the language choice, Start Game and Change video mode (with the NTSC test), the memory card check, the violence warning, the CAPCOM logo, the title screen and the main menu.
  • Every menu, opened and closed, checked on pictures:
MenuWorksNotes
New GameYes, up to the first arenaSee below
Load GameYesIt finds a game saved after City Arena Round I and loads it. With no game saved it says "No data present": the file made at startup is not a game in progress
Secrets of RomeYesCheats and the Salvo Master List with its pages open and close. The other 6 entries are locked, as on a new game
Options: Subtitles / Tutorial, Sound, Controller, ViolenceYesEach value changed and put back
Options: ScreenYesBrightness and Screen Position pages
Options: Control ExplanationYesAll 3 pages
Options: Default, OKYesDefault puts the changed values back
  • The first arena, in 3D: after New Game and the difficulty choice come the trainer's briefing, the "First Match" map, the controls page, then Agrippa at the gate of the City Arena. Checked on pictures, with scripted keys.
  • Saving and loading: the game saves after the First Match ("First Battle - Fini", see below) and offers to save after City Arena Round I. Tested on City Arena Round I: "Save Successful", the game closed and opened again, Load Game finds "City Arena Round I", "Load Successful", and the game goes on from City Arena Round II. The win was forced by writing to the game's memory in the test: nobody has won that round by playing yet. Starting from an empty memory card also works, both when you create the save file at the start and when you skip it and save later (that second way was followed up to the last confirmation). The saves are in disco/mc0/.
  • The 60 Hz choice is remembered: after you choose it in Change video mode and press Start Game, the game writes settings.ini next to sor.exe, and the next start begins in that mode. See Settings. Tested with scripted keys, not yet from the launcher.
  • The keyboard, with real key presses sent to the window by a script (Enter, the down, left and right arrows, Space, X, V). The arrow keys and W A S D move the left stick, and with them Agrippa walks in the first arena (checked with keys injected inside the program, not on a real keyboard).
  • Speed at 50 Hz, the game's PAL mode (the European version): full speed from the menu to the fight, in a window, on the test PC with nothing else running. Measured in vblanks per second, which here means frames per second: 50 is full speed. The earlier build is on the same PC:
PartEarlier buildNowLowest second now
Menu505049.9
Trainer's briefing435042.6 (one second, once)
First room41.85049.7
Arena36.949.949.8
Fight375049.9
  • The sound: I listened to it by hand on an older build: it sounds fairly good. The sound mix has changed since (see the reverb below) and has not been listened to again.
  • The music: the title screen, the menu and the arena have their music. Checked as numbers on a recording of the output, not by ear: the level goes from silence to about 3000-4000 RMS on the title screen and in the menu, with no clipping. In 30 seconds of title music, the short holes of exact silence went from 155 to 0.
  • The movies: the opening movie plays with its subtitles and sound, 30 pictures per second at 50 Hz and at 60 Hz, and goes on to the title screen at its end. Enter skips it. The title screen's attract movie and the movie after New Game play too. Checked on pictures and as numbers on a recording of the output (all 178 seconds of sound, with no holes in a 60-second sample), not by ear. They are decoded with a small part of FFmpeg, and the picture reaches the screen as a texture, as in the original game. From the second movie on, the sound used to break and the screen stayed grey with a beep after the "City Arena" title card: fixed on 2 November (patch 0016), and tested by hand.
  • The First Match, played to its end: this win was not forced. A test script (not published) reads positions and life from the game's memory and presses the keys: it walks to the enemies, hits them, closes the tutorial pages and opens the doors with ○. All the waves die, including the last opponent (2816 life), and the game does the rest by itself: result screen, save, "Chapter 1: The Wickedness of Men", and the next stage, a Roman camp in a forest (area 050). Load Game then finds the save as "First Battle - Fini" and goes on to Chapter 1, even after closing the game. The script had help: it refilled Agrippa's life 18 times when it fell below 500 of 2048, because it fights badly and never guards. So nobody has won this fight without help yet. Without the refill, in one attempt Agrippa died with 1 enemy of the first group left, and in another he had 39 life left when that group was dead. The Game Over works: blood runs down the screen and Continue goes back to the waiting room. Over that whole session the median was 50 frames per second, and 5% of the seconds, loading included, were below 33 (not looked into).
  • The forest stage, played to its end, and what comes after: this was not forced either, and the same script played it, with the same kind of help (Agrippa's life refilled once). The stage asks you to climb the hill at the far end of the camp, talk twice to the soldier by the fence, and choose "Inform the men that we are moving out." in his menu. If you press ✕ without moving down, the menu answers "Nothing, yet." and nothing happens. Then enemies appear; when they are dead, the game goes by itself to the Forum in Rome, with Octavianus, then