Skip to content

Releases: afk-sapien/PokeSim

PokeSim 0.5.3

Choose a tag to compare

@afk-sapien afk-sapien released this 23 Oct 05:17
cf649d1

PokeSim 0.5.3 patch release

This patch finishes the worker memory fix, steadies browser sound, fixes three stalls and
trade failures found on adventures running 0.5.2, and adds floating image tags.

  • Worker memory (#111). Red, Blue and
    Yellow workers kept a copy of the Gen II data for every Time Capsule trade. Those copies are
    now freed after each trade.
  • Sound. Browser audio follows the speed setting instead of the measured pace, so it no
    longer jumps in pitch or cuts out after a short stall.
  • Stalls and trade failures. A Gold, Silver or Crystal game whose cartridge reset now
    continues its save instead of finding no route to anything. Red, Blue and Yellow no longer
    offer a Pokémon they are about to release. A game whose party cannot make room now pauses
    automatic trades instead of failing with a different Pokémon each time.
  • Floating tags (#115). The image is
    also tagged latest and 0.5.

See the changelog for every change.

Upgrading

Back up the complete library. Set POKESIM_IMAGE=ghcr.io/afk-sapien/pokesim:0.5.3
and run docker compose pull followed by docker compose up -d --wait.
Keep the existing data mount and project name. Python users can follow the
installation guide. Core stays at 0.7.1 and PyBoy RS at 0.1.2.
Saves and checkpoints from 0.5.2 load unchanged, and rolling back to 0.5.2 is safe.

The local suite passed 4,189 tests with private-ROM checks, including a replay of the stuck
Battle Tower save after a cartridge reset.

See the 0.5.2 release notes for the previous patch, the
0.5.0 release notes for the full 0.5.0 update and its known
limitations, and release status for remaining limits.

PokeSim 0.5.2

Choose a tag to compare

@afk-sapien afk-sapien released this 21 Oct 16:00
f0a3401

PokeSim 0.5.2 patch release

This patch fixes worker memory growth, several stalls found on adventures running 0.5.1,
and adds two optional Red, Blue and Yellow features.

  • Worker memory (#111). Red, Blue and
    Yellow workers grew to about 900 MiB over a day of play. Each autosave rebuilt the learned
    map as hundreds of thousands of small lists, which fragmented memory. The map is now saved
    as flat lists of numbers.
  • Stalls and trade failures. Gold, Silver and Crystal trainers no longer get stuck in the
    National Park Gate officer's corner, League runs no longer reload at Koga with only a Ditto
    left, and Time Capsule trades no longer stall at the PC when the last Pokémon able to battle
    cannot be deposited. Red, Blue and Yellow trades no longer fail on a PC box behind a
    nickname with a text command. A game whose PC is full now pauses automatic trades until it
    completes one, instead of failing with a different Pokémon each time.
  • Fair wild DVs. An optional Red, Blue and Yellow setting, off by default, that gives each
    wild encounter fully random DVs.
  • Snorlax returns. After the Champion battle, the Route 12 Snorlax blocks the road again
    every 100,000 steps in Red, Blue and Yellow.
  • Clearer trade reasons and a readable Live page between phone and desktop widths.

See the changelog for every change.

Upgrading

Back up the complete library. Set POKESIM_IMAGE=ghcr.io/afk-sapien/pokesim:0.5.2
and run docker compose pull followed by docker compose up -d --wait.
Keep the existing data mount and project name. Python users can follow the
installation guide. Core moves to 0.7.1, which only allows Pillow 13 for its security fixes. PyBoy RS stays at 0.1.2.
Saves and checkpoints from 0.5.1 load unchanged. Rolling back to 0.5.1 is safe, but a
Red, Blue or Yellow adventure saved by 0.5.2 starts a fresh learned map under 0.5.1.

The local suite passed 4,173 tests with private-ROM checks, including replays of the stuck
National Park Gate, Koga and Time Capsule saves and the old saved map format.

See the 0.5.0 release notes for the full 0.5.0 update and its known
limitations, and release status for remaining limits.

PokeSim 0.5.1

Choose a tag to compare

@afk-sapien afk-sapien released this 17 Oct 06:22

PokeSim 0.5.1 patch release

This patch fixes two gameplay issues found on finished adventures running 0.5.0.

  • Gold, Silver and Crystal League wins past 200. The cartridge stops recording Hall of
    Fame entries at 200. A finished run kept challenging the League for a win that never
    counted, earned no rewards and showed "Stuck? N game hours without progress" every six
    hours. A win from Lance's Room into the Hall of Fame now counts after the cartridge stops,
    and each League win counts as progress.
  • Traded Pikachu in Yellow. Only the starter, a Pikachu with the player's own trainer ID,
    stays in the party. A party of field-move holders with a traded Pikachu had no one to
    deposit, so every trade into Yellow failed with "could not safely make room in its party".

Upgrading

Back up the complete library. Set POKESIM_IMAGE=ghcr.io/afk-sapien/pokesim:0.5.1
and run docker compose pull followed by docker compose up -d --wait.
Keep the existing data mount and project name. Python users can follow the
installation guide. Core stays at 0.7.0 and PyBoy RS at 0.1.2.
Saves and checkpoints from 0.5.0 load unchanged. Rolling back to 0.5.0 is safe.

The local suite passed 2,418 tests with private-ROM checks. Regression tests cover the
capped Hall of Fame count, a checkpoint saved before this version, and the live Yellow
party that failed every trade.

See the 0.5.0 release notes for the full 0.5.0 update and its known
limitations, and release status for remaining limits.

PokeSim 0.5.0

Choose a tag to compare

@afk-sapien afk-sapien released this 16 Oct 05:49

PokeSim 0.5.0 release

This release changes the emulator under every adventure and adds Yellow, Gold, Silver and Crystal.

  • Rust emulator. Games now run on PyBoy RS, a Rust port of PyBoy 2.7.0, through
    PokeSim Core 0.7.0 and PyBoy RS 0.1.2. Installation needs no Rust toolchain: PyBoy RS ships as a wheel.
    The Docker image is built from the same wheel.
  • Generation II. Gold, Silver and Crystal adventures play through Johto, the League,
    Kanto and Red, with breeding, held items, all 251 species, Gen II Cable Club trading and
    the Time Capsule with Red and Blue. They run on the Rust backend only. Fresh Cyndaquil campaigns
    in all three games reached Red and all 16 badges on Core 0.7.0 and PyBoy RS 0.1.2. All three
    Gen II cable pairings and all six Red/Blue Time Capsule pairings passed copied-save checks.
    See the validation receipt for scope and limitations.
  • Pokémon Yellow. Yellow adventures start with Pikachu, follow Yellow's own story and
    trade with Red and Blue over the Cable Club and with Gold, Silver and Crystal through the
    Time Capsule. A new Yellow game was played to the Champion on the Rust backend, and both
    kinds of trade were completed in the Library.
  • Cartridge clock on game time. Each Gen II adventure keeps its cartridge clock, which runs at
    the simulation's speed and never goes backward. The Live page shows the in-game day and time. See the
    Gen II notes for what is verified and what is not.
  • Fixes carried over. The 0.4.20 PP menu fix, a Game Corner prize-menu detection fix, and shiny protection
    after Transform (the wild Pokémon's original DVs are now read by Core).
  • Postgame variety. Finished Gen II adventures rotate through better-DV hunts, training the best
    copies in ten-level steps, shiny outings and League rematches. Shiny outings check up to 100 wild
    encounters, finish their current battle and give two other activities a turn before another outing.
    An hour of simulated gameplay including travel bounds outings with few encounters.
  • Uncatchable shinies. A shiny that cannot be caught is logged and fled from when the cartridge
    permits escape. Scripted encounters such as red Gyarados are fought if capture is impossible.
  • First gym preparation. Gen II teams train a partner to level 12 before challenging Falkner,
    avoiding repeated losses without experience gains.
  • Library cards. Removed the generic no-progress warning from adventure cards.

Yellow and Gen II need 0.5.0 or later

Back up the complete library first, as a copy of the whole data directory, before you
start the new version.

  • Red and Blue adventures need no restore. Their checkpoints and manifests still carry the
    pyboy_version tag that 0.4.x checks, and the Rust state format is the PyBoy 2.7.0 format.
  • Yellow, Gold, Silver and Crystal adventures need 0.5.0 or later, because 0.4.x supports neither
    Yellow nor Gen II.
    Restore your backup or remove them before you roll back.
  • A checkpoint saved with a locked clock has no pyboy_version tag and 0.4.x refuses it.
    Gold, Silver and Crystal adventures always lock the clock to game time. Red, Blue and Yellow
    adventures use the host clock, so only verification tools lock theirs.

To roll back, stop the app and start the 0.4.20 image or install. Restore the backup or remove
any Yellow, Gold, Silver and Crystal adventures before starting 0.4.20.
Use ghcr.io/afk-sapien/pokesim:0.5.0 for the versioned Docker image. The release downloads
include Compose files, installation scripts, the Python wheel, source archive and an offline
Linux amd64 image, with checksums and a release manifest. Python users can follow the
installation guide.

Known limitations

The verified fresh Gen II campaigns use Cyndaquil and seed 1. Totodile and Chikorita passed
first-gym checks, but full campaigns for those starters and multi-day unattended operation
remain outside this validation. Repeated League rotations have limited endurance coverage.

A permanently failing committed trade can keep both adventures held for recovery, including
their stop, archive, edit and backup controls. Recovery preserves the paired commit instead
of abandoning a trade that could already have completed on one side.

The reported Blue music glitches remain unconfirmed on this release. See
issue 38 and
release status for the remaining limitations.

PokeSim 0.5.0 beta 3

PokeSim 0.5.0 beta 3 Pre-release
Pre-release

Choose a tag to compare

@afk-sapien afk-sapien released this 15 Oct 06:28

Experimental beta 3 of PokeSim 0.5.0. Back up your library before installing. Gold, Silver and Crystal adventures cannot be opened by 0.4.x.

Changes since beta 2:

  • Finished Gen II adventures rotate between better-DV hunts, training stronger copies, shiny outings and League rematches. Shiny outings check up to 100 wild encounters, finish their last battle and give two other activities a turn. An hour of simulated gameplay including travel is the fallback limit.
  • Stronger boxed Pokémon survive duplicate cleanup even when a weaker copy is in the party.
  • The Library no longer shows the generic no-progress warning.
  • Gen II teams train before Falkner instead of repeatedly losing. Scripted battles such as red Gyarados respect the cartridge's escape restrictions. Hunt maps get time to finish loading.

Fresh Gold, Silver and Crystal Cyndaquil campaigns with seed 1 reached Red and all 16 badges on Core 0.7.0 and PyBoy RS 0.1.2. All three Gen II cable pairs and all six Red/Blue Time Capsule pairs passed private copied-save checks. Each Gen II version also completed a 100-encounter outing with a restart during encounter 50. This is bounded beta coverage, not every-starter or multi-day validation.

Install or replace an earlier beta:

uv tool install --force --python 3.12 --managed-python https://github.com/afk-sapien/PokeSim/releases/download/v0.5.0-beta.3/pokesim-0.5.0-py3-none-any.whl

The wheel version remains 0.5.0, matching earlier betas. The Docker quickstart continues to use stable 0.4.20.

See the gameplay receipt and known limits. A permanently failing committed trade can still keep its pair locked for recovery. Multi-day League rotation and every starter remain outside this validation.

PokeSim 0.5.0 beta 2

PokeSim 0.5.0 beta 2 Pre-release
Pre-release

Choose a tag to compare

@afk-sapien afk-sapien released this 14 Oct 09:07

Beta. This is the second pre-release of PokeSim 0.5.0 for testing. Back up your library before you install it. Gold, Silver and Crystal adventures cannot be opened by 0.4.x.

Changes since beta 1

  • Released dependencies only. PokeSim now installs PokeSim Core 0.7.0 and PyBoy RS 0.1.2 from their own releases, with hash pins. The temporary Core wheel is gone.
  • Shared Gen II code lives in Core. Gen II RAM, clock, saves, maps, hooks, cable, sprites and breeding helpers now come from PokeSim Core. Replays of Blue, Yellow, Gold and Crystal are identical before and after.
  • Gen II clock. With PyBoy RS 0.1.2, the game's own clock writes (a blank cartridge's reset and the day-140 wrap) now take effect, and the clock keeps the latest reading.
  • Uncatchable shinies in Gen II are fled from and logged instead of pausing the game.
  • "Never trade" locks stay readable after rolling back to 0.4.20.
  • View links behind a login. Item artwork and activity requests stay under /view/, so watchers behind Authelia or a similar proxy see the whole page.
  • Authelia and Traefik example in the authentication guide now works as written.

The full list is in CHANGELOG.md.

Install the beta (desktop)

uv tool install --python 3.12 --managed-python https://github.com/afk-sapien/PokeSim/releases/download/v0.5.0-beta.2/pokesim-0.5.0-py3-none-any.whl

If beta 1 is installed, add --force to replace it. Then add your own ROMs in Settings → Game cartridges. The Docker quickstart still installs the latest stable release, 0.4.20.

Known limits

  • PP Up is not bought in Gen II yet.
  • Users who already ran beta 1 and then roll back to 0.4.20 will not see "Never trade" locks set under beta 1.

PokeSim 0.5.0 beta 1

PokeSim 0.5.0 beta 1 Pre-release
Pre-release

Choose a tag to compare

@afk-sapien afk-sapien released this 14 Oct 05:41

Beta. This is a pre-release of PokeSim 0.5.0 for testing. Back up your library before you install it. Gold, Silver and Crystal adventures cannot be opened by 0.4.x.

Highlights

  • Gold, Silver and Crystal adventures, with Gen II Cable Club trading, the Time Capsule with Red, Blue and Yellow, cartridge clocks and portable save export.
  • Pokémon Yellow adventures, from Pikachu through the Elite Four, trading with every other game.
  • Rust backend. Every adventure runs on PyBoy RS through PokeSim Core 0.6. No Rust toolchain is needed to install.
  • Trades you build by hand between your own adventures, beside automatic trading, with a lock for any Pokémon you never want traded.
  • Game cartridges shelf in Settings, and a community portrait pack that covers all six games.
  • Shiny Pokémon in Gen II are caught, protected, counted in Stats and marked in the Pokédex.
  • View links that share an adventure's pages with every control hidden.

The full list is in CHANGELOG.md.

Install the beta (desktop)

uv tool install --python 3.12 --managed-python https://github.com/afk-sapien/PokeSim/releases/download/v0.5.0-beta.1/pokesim-0.5.0-py3-none-any.whl

Then add your own ROMs in Settings → Game cartridges. The Docker quickstart still installs the latest stable release, 0.4.20.

Known limits

  • PokeSim Core 0.6.0 is installed from a temporary wheel until it is released on its own.
  • PP Up is not bought in Gen II yet.

PokeSim 0.4.20

Choose a tag to compare

@afk-sapien afk-sapien released this 07 Oct 04:53
99feec1

PokeSim 0.4.20 experimental beta

This patch fixes a storage loop found after 0.4.19.

  • Read PP as a standalone word when classifying menus. A PC box list containing a
    nickname such as DAMPPILOT was mistaken for the PP Up move picker, so the policy
    backed out of the list every cycle and the Release goal never freed storage.
    Adventures stuck on "Make room in storage" resume releasing Pokémon.

Upgrading and validation

Back up the complete library. Set POKESIM_IMAGE=ghcr.io/afk-sapien/pokesim:0.4.20
and run docker compose pull followed by docker compose up -d --wait.
Keep the existing data mount and project name. Python users can follow the
installation guide. Core remains pinned at 0.1.4.

Existing saves remain supported. Gameplay remains an experimental beta.
See release status for remaining limitations.

PokeSim 0.4.19

Choose a tag to compare

@afk-sapien afk-sapien released this 07 Oct 01:38

PokeSim 0.4.19 experimental beta

This patch fixes two gameplay issues found during review of 0.4.18.

  • Keep shiny encounter protection after Transform by reading the wild Pokémon's
    original DVs. A shiny Ditto stays protected after transforming, while an ordinary
    Ditto copying shiny DVs does not become a shiny encounter. Successful captures
    exit normally even when they consume the last ball or fill the last storage slot.
  • Free bag space for story items when all 20 slots are occupied. Sell ordinary
    surplus first, then sell the limited TM stack with the lowest Champion replacement
    cost only if no ordinary surplus remains. Keep key items, HMs, balls, and medicine.
    Champion TM and supply purchases now leave one bag slot free.

Upgrading and validation

Back up the complete library. Set POKESIM_IMAGE=ghcr.io/afk-sapien/pokesim:0.4.19
and run docker compose pull followed by docker compose up -d --wait.
Keep the existing data mount and project name. Python users can follow the
installation guide. Core remains pinned at 0.1.4.

The local non-browser suite passed 1,789 tests with 34 skips, including private-ROM
checks. A copied-save replay also verified the full-bag recovery through actual
cartridge shop menus. Regression tests cover original DVs after Transform,
capture completion, emergency selling, and reserved purchase space.

Existing saves remain supported. Gameplay remains an experimental beta.
The fixes do not establish uninterrupted multi-day gameplay or resolve the
reporter-specific Blue/Docker audio issue. See release status
for remaining limitations and 0.4.18 feature details for the
larger feature update included in this version.

PokeSim 0.4.18

Choose a tag to compare

@afk-sapien afk-sapien released this 06 Oct 06:55

PokeSim 0.4.18 experimental beta

Track your adventures in more detail, build stronger movesets, and complete shiny
and perfect collections. This release also improves mobile controls, adventure
management, item artwork, audio handling, and live screen colors.

Collection and statistics

  • Give Stats its own tab with Overview, Pokémon, and Items pages. Keep Journal
    focused on the event timeline.
  • Add milestone times, 24-hour and 7-day progress, and Battle Power and DV highlights.
  • Track encounters, opponents, defeats, catches, gifts, trades in and out, and
    current holdings for each species. Track purchases, consumption, and holdings
    for each item. Recover verified historical catches and completed cable trades.
  • Show Pokédex collection coverage out of 151 for Seen, Registered, Level 100,
    Shiny, and Perfect, with earlier-form credit through the recorded evolution line.
  • Identify Pokémon whose DVs satisfy the Generation II shiny rule. Add badges and
    filters, prioritize their capture, and protect collected shinies from release
    and automatic trades. Red and Blue do not gain native shiny battle sprites.
  • Add move names to TM/HM labels and an optional PokéAPI item artwork pack.
    Icons download to local storage and work offline. Artwork is not bundled.

Battle development and supplies

  • Rate Battle Power using known moves and actual attacking stats. Keep Stat Power
    and potential separate, and remove Elite Four wins from PC cards and details.
  • Improve move choices and delay stone evolution for useful upcoming moves.
    Teach owned Surf or Strength into empty move slots when beneficial.
  • Allocate TMs greedily by projected level-100 Battle Power gain using each
    Pokémon's actual DVs and full training. Require level 50 and a material
    improvement both now and at maturity, then reassess after each use.
  • Make all 38 limited TMs renewable at a custom Champion counter in Celadon.
    Purchases keep a cash reserve and recover safely after interruption.
  • Replenish Moon Stones, PP Ups, Elixirs, and Max Elixirs at that counter.
  • Offer one Master Ball and a bundle of five Rare Candies at separate million-step
    intervals after becoming Champion. Offers are capped at one unclaimed purchase
    each, with progress shown in Items.

Controls and presentation

  • Repeat held mobile direction, A, and B buttons, with reliable cancellation when
    the finger releases, the page loses focus, or an input request fails.
  • Simplify adventure cards with Stop, Download, Archive, and Delete, plus a Settings
    icon beside Open adventure. Archive and Delete save and stop first. Deletion
    requires the exact name and preserves independent backups and other adventures.
  • Apply screen palette changes live, including while paused, and remember each
    adventure's choice. New screenshots use the selected colors. Existing journal
    screenshots retain their captured colors.
  • Keep sound hardware active while muted and during cable sessions, addressing
    a demonstrated source of stale audio when listening resumes.
  • Fix Settings failing to load when saved backups exist.
  • Remove stale validation records and unused assets, and refresh maintenance guidance.

Upgrading and limits

Back up the complete library. Set POKESIM_IMAGE=ghcr.io/afk-sapien/pokesim:0.4.18
and run docker compose pull followed by docker compose up -d --wait.
Keep the existing data mount and project name. Python users can follow the
installation guide. Core remains pinned at 0.1.4.

Existing saves remain supported. Unrecorded past actions and unknown milestone
times are not estimated. New statistics show their tracking start date. Reusable
items and HMs are not counted as consumption. Million-step offers start when the
updated simulation first observes Champion status, without retroactive stockpiling.

Battle Power is an approximate benchmark, and TM allocation considers the current
party and species. Separate GBC sprite/background coloring remains deferred.
The reporter-specific Blue/Docker audio issue still needs confirmation. Gameplay
remains an experimental beta. See release status and the
detailed feature scope for validation and remaining limitations.