Skip to content

v0.2.0: Extras, CRT filter, photo mode, audio options, accuracy fixes

Choose a tag to compare

@nathanialf nathanialf released this 06 Oct 19:12
· 693 commits to main since this release

The second playable release of the ICO PC port. It adds an Extras menu with a music player, a model viewer and the credits, a CRT filter with several screen types, a photo mode, audio options, save importing, and a long list of accuracy fixes. Everything runs from your own PAL disc image as before: no disc data ships in the package.

New

Extras menu (Settings > Extras, from the title screen)

  • Music: listen to every piece of music and sound on the disc, grouped as soundtrack, scene sounds, ambiences, voice and sound effects. Each piece plays once from start to end through the game's own sound engine, with a progress bar, elapsed and total time, and the controls shown with the game's own button icons: L1/R1 previous and next, Cross play/pause, Square stop, Left/Right jump between groups, Triangle back.
  • Models: look at Ico, Yorda, the Queen, every kind of shadow, the bird, the guard and a set of objects (the cage, bombs, levers, the swords, the stone couch and more) on a plain background. Turn and zoom with the sticks, pick any animation the character has, play it once or loop it, and see its name and frame.
  • Credits: watch the ending's staff-roll scenes with their music. It unlocks once you have finished the game. The staff roll now ends with a "Decompilation and PC Port" section.

CRT filter (Settings > Display)

  • Five looks: Scanlines, Consumer TV, Trinitron, PVM and Shadow mask. Each PS2 pixel is drawn as its own red, green and blue phosphor triad in the pattern of that screen type, with scanlines, glow, bloom, curvature and a vignette tuned per look. The game runs at its original resolution while the filter is on, and the menus go through the filter too. A strength setting fades the whole effect.

Photo mode (pause menu > Options > Photo mode)

  • Freeze the game and move the camera freely: orbit, dolly, roll and zoom on the sticks, hide the HUD with Square, save a picture with Cross. Pictures are saved at your output resolution, with the CRT filter if it is on and without the help text. Reset with Select, leave with Triangle.

Audio (Settings > Audio)

  • Separate music and effects volumes, a stereo/mono choice that uses the game's own output mode, and a pick of output device. At the default volumes the sound is exactly what it was.

Saves

  • Import memory-card images (PCSX2 .ps2, raw .bin) and uLaunchELF .psu archives with the bundled mc_import tool; the ICO save is copied into your saves folder.
  • A second memory card in port 1 if you set [paths] saves2 in the settings file.

Text and menus

  • The game's own menus, subtitles, prompts and credits keep their original lettering exactly as the disc draws them.
  • Text the port adds (Settings, Extras, hints, popups) is now set in the game's own menu lettering, cut from the disc's fonts on first run, so the whole game reads as one typeface; it is drawn at your output resolution.
  • Controller names on the remap screen are translated and use the game's words (L1, R1, Select, Start); "Uncapped" and "fps" are translated.
  • Changing the video mode (50/60 Hz) is only offered from the title screen, since it changes timing mid-game.

Other

  • The settings file is written on the first run with every option at its default, so you can edit it by hand.
  • Reflections in puddles and pools are rendered at your display aspect, so 16:9 no longer shows stretched edges at the sides.
  • Achievements: watching the whole opening now counts every part of it, and a fresh-run challenge survives quitting and continuing from a save.
  • Starts are faster after the first one: compiled shaders are kept between runs.

Fixed

  • Music player: nearly every piece used to stop a fraction of a second early; the battle theme would not play at all; one unused stream on the disc is blank after 12 seconds and is now shown with its real length.
  • Menu text: the highlighted row's glow no longer draws a sharp ghost copy of the letters; an accented character in one Settings note was being cut in half.
  • Subtitles, menu words and the staff roll always use their original pictures; the Enhanced preset no longer re-draws them.
  • Opening the Music or Models pages after a long session could corrupt the menu tables; fixed.
  • Photo captures with the CRT filter on no longer include the help text.
  • Movies: the 60 Hz and 576-line attract films play correctly; a film that changes size mid-stream is handled.
  • Choosing a development stage number in the settings no longer crashes; it boots normally instead.
  • Credits and the model viewer recover cleanly if the stage they need fails to load.
  • Various startup, config and save-path robustness fixes (long paths, read-only folders, interrupted writes).

Accuracy

Changes that bring the port closer to the PS2, each recorded in docs/port/DIVERGENCES.md:

  • Double-precision maths now matches the PS2's software float exactly (checked against the original library over 64 million cases), which affects frame-count scaling, camera and chain physics.
  • Sound: the reverb and mixer start-up values are read from your disc's own sound driver; a few mixer details were off.
  • Picture: edge anti-aliasing on lightning and ripples, correct alpha on 16- and 24-bit textures at their edges, exact motion-blur and shadow-blur maths, the dark-volume effect's mask extent, perspective-correct lightning textures, and mirror mode that is now pixel-symmetric.
  • Smoother interpolation: objects that appear or vanish between ticks fade instead of popping, particles no longer snap, and lighting no longer dims mid-turn.
  • Two places where the original game read uninitialised memory now behave as the PS2 did.

Performance

  • Far fewer GPU state changes per frame (one uniform set per layout, barriers only where needed, merged 2D draws). On the CPU renderer used for testing the per-frame bind cost fell from 7.9 ms to 0.4 ms.

Known limits

  • Not yet tested on real hardware in this release: the Direct3D 12 backend, the Steam Deck package, audio device switching, and how the CRT looks on a real display. Reports welcome.
  • .max and .cbs save archives are recognised but not imported.
  • The Queen's barrier is still rendered at 4:3 inside a 16:9 frame.

Full details are in the documents under docs/port/; the remaining work list is docs/TODO.md.