Repository navigation
Releases: IbrahimIrfan/pspoke
Release list
v0.1.10-beta
Platinum: Fly no longer crashes.
Using Fly from the party menu crashed as the take-off animation started. For one frame of that animation the game asks for 132 sprites when the screen has room for 124. The real game has the same overflow: a cartridge silently skips the extra 8 sprites for that single frame, which nobody can see. This port keeps the game's internal safety checks switched on, so that frame stopped the game instead. The PSP build now drops the extra sprites the way a cartridge does (for both screens); nothing else changes.
Verified in the emulator with a real save, on both PPSSPP's normal and strict (interpreter) cores: Fly from Oreburgh City lands in Jubilife City. New emulator scenario fly; all Platinum scenarios pass from a clean build. Not yet tested on PSP hardware, including the per-release sound check (see #12).
v0.1.9-beta
Platinum: the move relearner and the start menu's Exit no longer crash.
Move relearner (Pastoria City, for a Heart Scale): scrolling down to CANCEL in the list of moves crashed the game. Start menu: choosing Exit with A (rather than closing the menu with B) crashed too. Both came from the same mistake in the port: menus mark "cancel" with a special value that is 32 bits on the DS but 64 bits in this port's build of the game code, so a few checks against it could never match. The relearner treated its CANCEL row as a move and failed looking it up; the start menu tried to run Exit's placeholder as a function. A compiler check over all of Platinum's source found the same mismatch in a few other places (B in the secret base decoration menu, the Bag's check for moving the CANCEL row, a Battle Castle sound check), and all of them now compare the DS way.
Verified in the emulator with a real save, on both PPSSPP's normal and strict (interpreter) cores: the relearner scrolls to CANCEL for several Pokémon, Exit closes the menu, and the Underground and battle scenarios from v0.1.7 still pass. New emulator scenarios move-relearner and start-menu-exit. Not yet tested on PSP hardware, including the per-release sound check (see #12).
v0.1.8-beta
SoulSilver: the double battle against Twins Amy & Mimi in Bugsy's gym no longer crashes to the XMB.
The crash was the screen transition that opens that battle, not the battle itself. SoulSilver's port converts a chosen list of the original assembly into C, and the transition effects live in a set of small overlays. Most of them were on the list; the one this battle uses (overlay 114) was not, so starting it hit a missing-function stop. Overlay 114 and overlay 116, another transition from the same table with the same gap, are now converted. Reported in #17.
Verified in the emulator with the reporter's save: the transition plays and the double battle runs, including under PPSSPP's interpreter, which catches the unaligned memory accesses a real PSP faults on. The other SoulSilver battle and field scenarios still pass. Not yet tested on PSP hardware, and overlay 116's transition has not been seen in a battle yet.
v0.1.7-beta
Platinum: the Underground works, and Sing no longer crashes battles.
Underground: using the Explorer Kit crashed the game, and past that it could not work at all. The wireless icon's palette is opened by a file name whose case differs from the ROM's, which the DS ignores and the port did not, so the palette load failed and the game crashed. Behind that, the Underground starts DS local wireless even when you play alone, and the PSP has no DS radio. The wireless layer is now a stand-in radio that works but never finds another player, which the game already handles: the Underground plays solo, exactly as on a lone DS. On a real PSP it then froze as you landed, because your secret base data was read with an unaligned word access the DS tolerates and the PSP does not; that data is now aligned. Hardware-tested on a PSP-3001.
Battles: Sing crashed the game in any battle, single or double. Its music notes are polygon particles, and drawing those called a matrix routine the SDK port leaves as a "not implemented" stub. Platinum now links the same C versions SoulSilver already used. The hardware crash log matches this exact stub; the fix is verified in the emulator (Sing in single and double battles, notes drawn).
Building: Platinum now builds on a clean Linux or WSL checkout (a macOS-only md5 call, reported in #15), and SoulSilver no longer fails on rsync destinations that are missing from a fresh clone (reported in #1).
Tests: new emulator scenarios underground and sing-double (both need --platinum-save; see tests/README.md).
v0.1.6-beta
Two crash fixes, both hardware-tested on a PSP-3001.
Platinum: the cursor in starter selection could be moved left past the three Poke Balls and would not come back right, and confirming on the empty slot crashed the game. The bounds check relied on a signed comparison, but the cursor's enum is unsigned under psp-gcc, so the compiler removed the check entirely. Reported in issue #14.
SoulSilver: the same Rotom form-change crash that Platinum got in v0.1.5. The party menu's form-change code lists Rotom with nothing implemented and falls into an assertion. Retail cartridges strip assertions and continue silently; this build keeps them, so it crashed.
Also documents an audit of every always-failing assertion in both games, covering why only the Rotom sites were actually reachable.
v0.1.5-beta
Platinum: fixed a crash when interacting with Rotom on the TV in the Old Chateau. The party menu's form-change animation had an unimplemented case for Rotom that hit a hard assertion failure; retail hardware silently skips it, and this build now does the same. No other changes.
Source-confirmed root cause with a clean rebuild and a green regression suite, but not hardware-tested before release. Please report back if anything looks off.
v0.1.4-beta
Both games: the PSP can now be put to sleep and woken without the game freezing (Memory Stick file handles are reopened after resume). New build option --display nearest|bilinear|integer chooses how the main screen is scaled; the choice lives in pspoke.cfg next to the EBOOT and can be edited on the memory stick without rebuilding. Hardware-tested on a PSP-3001.
v0.1.3-beta
Both games: translucent polygons are now drawn after opaque ones, as the DS does, so shade under signs and gates (for example Floaroma Town's south gate, especially in evening light) is a soft shade instead of a solid black block. Building SoulSilver alone on a fresh clone works now; it no longer needs the Platinum build to have run first. Hardware-tested on a PSP-3001.
v0.1.2-beta
Platinum builds are now independent of the clone path, so every clone produces the byte-identical program that was tested on hardware. Some fresh clones of v0.1.1-beta built a Platinum EBOOT with no sound on real hardware (issue #12). No gameplay changes. SoulSilver unchanged.
v0.1.1-beta
Second beta. Build it yourself from your own ROM (see the README); no EBOOTs are distributed.
Fixed
- SoulSilver crashed when a Repel wore off with a spare one in the Bag.
- Map props larger than the screen (Oreburgh's conveyor belts) vanished for a few steps.
- Bag and menu scrolling stuttered, and battle music dragged, on real hardware: ROM reads are now cached.
- 8 MB of unused memory reclaimed in both games.
- Windows/WSL clones failed to build because of line endings.
Added
- HM moves can be forgotten; Cut, Rock Smash and Whirlpool buffed (both switchable off, like the other QoL changes).
- build.sh offers to install missing prerequisites.
- A regression test suite (tests/), and docs: QOL.md, INSTALL.md, NOTES.md.
Removed
- The SELECT+Square sound toggle. Sound is on by default.
Known
- PSP-1000 is not supported (#10). Windows game builds are untested.