Repository navigation
Releases
v0.4.2 — Faster widescreen
Downloads: the same setup programs as before; update from the setup window
and run the setup again to rebuild the game (your save is kept). Android
players: press Build for Android again and install the new app over the old
one.
- The widescreen 3D picture takes about half the processor time it did. It is
drawn several pixels at a time (SIMD: AVX2 or SSE on PCs, NEON on phones), and
its working memory now stays in the processor's cache. On PCs it also uses fewer
threads (about one per core), which leaves more room for the game itself. The
picture is the same, apart from the odd pixel along the edge of a polygon. - The widescreen battle view looks for the stats window in one pass instead of four.
v0.4.1 — Android controllers and update notice
Downloads: the same setup programs as before; update from the setup window
and run the setup again to rebuild the game (your save is kept). Android
players: press Build for Android again and install the new app over the old
one.
- Android: controllers such as the Backbone One work. SDL's own USB drivers
took over some pads (the Backbone One, PlayStation pads) from Android's
input, and lost them when they could not open them themselves. All controllers
now come through Android, which knows them. - Android: the app says when there is a new version. At start it asks
GitHub for the newest release; when that is newer, a message at the top of the
screen says to build the app again on the PC (the app holds your own game, so
it cannot download itself). It is the only thing the app uses the internet for. - Lower world detail for slower devices. WORLD DETAIL in the pause menu now
also offers 384, 288 and 192 (the DS's own sharpness) as well as 540 to 1440;
fewer lines draw faster. Left and right go down and up through the choices. - FPS counter. FPS COUNTER in the pause menu shows the frames shown per
second in the top right corner.
v0.4.0 — Faster again, cleaner menus
Downloads: the setup programs for Linux (x86_64 and arm64), Windows and now
macOS (Apple Silicon and Intel; the Mac app is unsigned, so open it with
right-click → Open the first time). Use the setup window's update button or
download the new one, then run the setup again to rebuild the game (your save
is kept).
- The bag shows just the bag. The item description box from the other
screen is no longer drawn below it. - A tidier Pokémon summary. The Pokémon's name, item and markings sit in
their own column and the information from both screens is shown side by side, each
in a rounded card with its contents centred, and no borders cut off. - Menus stay on one layout. Opening the bag, party, Pokégear and the other
menus from the start menu no longer shows the top screen and then both screens
before the menu's own view, and closing them no longer falls back to the plain
bottom screen while they fade out. The view now follows each menu from the
moment the game starts loading it until it has closed (the game's start and
end functions of each menu are watched as well as its main one). - Faster again: about 30% in the overworld and 20% in battles (measured
headless on a 6-core desktop; slower machines such as the Steam Deck and
phones gain the most). The bottom screen and anything that does not move are
no longer redrawn every frame, the CPUs switch less often, waits for the game
card and the touch screen are skipped, and more instructions are recompiled.
Nothing else changes: in testing, pictures, sound and memory came out the
same, apart from a one-line difference in a few frames of battle transitions. run.shwritesgame.lognext to it, as the setup window's Play button does.- The log lists every controller SDL sees (name, USB IDs, whether its layout is
known), the SDL version, and the Steam and container settings that can hide a
controller, for reports like #8.
v0.3.0 — Faster, updates, logs
Downloads: the same three setup programs; use these instead of the earlier
ones and run the setup again to rebuild the game (your save is kept). From this
version on, the setup window can update itself. This release also contains the
controller fixes of the v0.2.6 prerelease (#8).
Faster
- The recompiled game code is about 6–9% faster than melonDS's interpreter
(before it was about 16% slower). The common instructions are now plain C++
instead of calls into the interpreter, and memory accesses and jumps take a
shorter path. Every instruction was checked against the interpreter
(--lockstep) over 16,000 frames of booting, walking and battling.
Fixed
- White strips beside the screen as a battle opens. The widescreen view showed
the half of the opening's background, and the 3D pieces, that the game keeps off
the screen; a row the screen shows in one colour is now that colour beside it. - The trainer's legs over the black bar as he slides out after throwing the
Poké Ball: beside the screen he is now behind the message box, as on the screen. - Fades at the start and end of a battle reached the sides of the view a frame
before the screen, so the picture faded unevenly. The sides now use the palettes
and brightness the screen was drawn with. - The stats after a level up were cut in two, the top half moved to the right
with the wild Pokémon's side. Windows like it now stay where the game puts them.
Added
-
Logs for bug reports. Started from the setup window, the game's messages now
go togame.log(new each time) and a build's output tobuild.log; Open logs
folder opens the folder with both. On Androidlog.txtmoved to
Android/data/io.github.clickingmaster.ssrecomp/files, where a file manager or a
PC can reach it. The renderer in use is now always in the log. -
Updates from the setup window. At start it checks for a newer release (shown
next to the version number); Update downloads the setup program for your
system, checks it against the release'sSHA256SUMS.txt, puts it in place of
the old one and restarts. Then press Build once to update the game; the
save and settings are kept. (This version still has to be downloaded by hand.) -
Issue forms on GitHub ask for the version, system and log.
-
Portable mode (#10): with a file
portable.txtnext to the setup program,
everything is kept in a folderssrecomp-databeside it instead of
%LOCALAPPDATA%(Windows) or~/.local/share(Linux). The ROM's location is
remembered relative to that folder, so it still works on another PC or drive
letter.
Which file: Windows: ssrecomp-setup-windows-x86_64.exe. Linux PC / Steam Deck: ssrecomp-setup-linux-x86_64. Linux on ARM: ssrecomp-setup-linux-aarch64.AppImage. Mac (Apple Silicon, M1 and later): ssrecomp-setup-macos-arm64.zip; Mac (Intel): ssrecomp-setup-macos-x86_64.zip (the macOS port is by @DarthMDev, #7). The Mac app is not signed: unzip it, then right-click it and choose Open the first time (or allow it under System Settings → Privacy & Security). It does not update itself yet; download a newer one by hand. SHA256SUMS.txt has their checksums. The Android version is built by the setup program from your ROM (Build for Android).
v0.2.6 — Controller fixes (prerelease)
This is a prerelease: it fixes controllers not working (#8) but has not been tried on Windows with a controller yet. If yours works now, or still doesn't, please say so in #8.
Downloads: the same three setup programs; use these instead of the earlier
ones and run the setup again to rebuild the game.
Fixed
- Controllers not working (#8). Only the first controller found was used;
on Windows that is often a virtual or idle device (from Steam, DS4Windows,
vJoy, a racing wheel...), and then nothing pressed on any controller worked.
Every connected controller now works at once. - Generic USB pads that SDL does not know the layout of were ignored. They
are now read with the usual layout: the first buttons as A, B, X, Y, then L,
R, Select, Start, with the D-pad and the left stick. A device whose stick
rests at one end (some keyboards and mice report themselves as joysticks) has
its stick ignored, so the player does not walk on their own. - The controller now also works while the game window is not focused, as when
it was started from the setup window.
Tested
- On Linux with a real Xbox Series controller and virtual ones (an Xbox 360
pad, a generic USB pad, one with a stuck stick). Compiled for Windows, not yet
tried with a controller there.
v0.2.5 — Widescreen battles
Downloads: the same three setup programs; use these instead of the earlier
ones and run the setup again to rebuild the game (and the APK, on Android).
New
- Battles fill the wide screen instead of having stretched sides. The
battle scene is drawn wider than the DS screen: the background and the
platforms continue past its edges, the HP boxes move out to the sides of the
view, and the wild Pokémon slides over to the right as your own Pokémon is on
the left. The trainer throwing the Poké Ball walks all the way off screen. - Move effects stay with the Pokémon they belong to, and the message box is
left where it is.
Fixed
- The battle strip vanished for a moment between choosing FIGHT and the
moves appearing, showing the message box under it.
Known limitations
- Tried on 16:9 only; wider phone screens (20:9) are untested in battles.
- A move effect crossing the gap between the two Pokémon can look stretched
there for a moment.
v0.2.4 — Colour fixes
Downloads: the same three setup programs; use these instead of the earlier
ones and run the setup again to rebuild the game (and the APK, on Android).
Fixed
- Washed-out colours on Windows (#5): the game asked SDL for its OpenGL ES
renderer, which on Windows (seen with AMD graphics) can convert every pixel
as if it were linear light, so the whole picture looked pale. Windows now uses
SDL's default, Direct3D. - The game was always at night. The DS clock started at midnight on
1 January 2000 on every launch, so the overworld always had night lighting.
It now follows your computer's clock, as on a real DS, including after
loading a quick save. On an existing save the in-game clock jumps forward to
today, like a DS that was switched off for a while.
v0.2.3 — Android (experimental)
Downloads: the same three setup programs; use these instead of the earlier
ones. There is no APK to download: the Android version contains the game's code,
so it is built from your own ROM on your PC, like the PC version.
New
- Build for Android in the setup program (
--androidwithout a window).
It downloads Google's Android NDK and SDL2 (once, checked against their
published checksums), compiles the game for 64-bit ARM Android 7.0+, and makes
a signed APK to copy to the phone or handheld and install. No Java or Android
Studio is needed: the APK is packed and signed bytools/android/apk.py. - On Android: full screen in landscape; on-screen buttons (D-pad, A/B/X/Y,
L/R, Start, Select, Menu), hidden while a controller is being used and back at
a touch; fingers on the picture touch the game's touch screen, several at
once; Back opens the pause menu; the save is written when the app goes to the
background; messages and frame timings go tolog.txtin the app's storage. - Tested in Google's Android emulator (Android 14): installs, updates over
itself, loads a save, plays with the on-screen buttons and touch, pause menu.
Not yet tried on a real phone or handheld: reports welcome, with
log.txtif something is wrong.
v0.2.2 — Windows fixes
Downloads: the same three setup programs as before; use these instead of the
earlier ones. Already built? Start the new setup program and press Build
once: only the changed files are recompiled and your save is kept.
Fixed
- Windows: progress was not saved (#2). Only the first save ever reached
soulsilver.sav; later ones were left insoulsilver.sav.tmp, because
Windows does not let a file be renamed over an existing one. Saves now replace
the file. If you lost progress this way, see the note below. - Windows: the build stopped with "junk at end of line" in
rc_images.S
(#3). The generated assembly ended with a Linux-only line. - Windows: "Could not find a package configuration file provided by SDL2"
(#3). The setup program now uses MSYS2's CMake ahead of any other copy on the
PATH, tells CMake where MSYS2's libraries are, and says when SDL2, libpng or
zlib are missing. - Screen jumping around while saving (#1). During "Saving a lot of
data…" the layout fell back to the X menu's (the save card beside the
overworld) and the picture flipped between widescreen and 4:3, because the
game hardly runs anything else while it writes. The save screen now stays as
it is until the save is written. - Clearer install instructions in the setup program (#4): it says to open a
terminal, has a button to copy the commands, and on SteamOS (Steam Deck)
gives the container steps, as there programs cannot be installed directly.
Getting back lost progress on Windows (#2)
Close the game, open %LOCALAPPDATA%\ssrecomp, rename soulsilver.sav to
soulsilver.sav.old, then rename soulsilver.sav.tmp to soulsilver.sav. The
.tmp file holds your latest save.
Tested
- The whole game cross-compiled for Windows with MinGW and run under Wine:
identical to the Linux build frame for frame, and saving in the game replaces
the save file. Still not tried on a real Windows PC.
v0.2.1 Executables
Added executables for windows, linux, and arm64 linux (appimage)