Skip to main content

Command Palette

Search for a command to run...

PKsinew Devlog # 13 – Post-Release Blues… Then Going Viral

How a quiet release turned into a viral moment, a new contributor, and a much bigger vision for Sinew

Updated
5 min read
PKsinew Devlog # 13 – Post-Release Blues… Then Going Viral

Before i start, here is the link to the most recent version of PKsinew.

https://github.com/Cambotz/PKsinew/releases/tag/v1.3.8

It’s been a while since my last devlog, and a lot has happened since Sinew went live.

To be honest, the first few weeks were pretty quiet.

I didn’t really know where to share it. The ROM hack communities didn’t feel like the right place since Sinew isn’t a ROM hack. The official Pokémon spaces tend to avoid anything that touches ROMs or emulation entirely. I even tried posting about it in the Python subreddit, thinking the technical side might resonate there, but it didn’t gain much traction.

So for a while… nothing really happened.

Then about three weeks later I stumbled across an X account called Pokémon Fan Game News. On a whim I sent them a DM about Sinew.

They liked it.

They made a post linking to my post,

https://x.com/PokeFangameNews/status/2023494351670882459

And suddenly everything changed.

That single post ended up pulling around 77,000 views , and a further 194,600 views on my post, and shortly after that RetroDodo picked it up and wrote an article about the project.

https://retrododo.com/pksinew-is-a-complete-pokemon-companion-app-for-gba-players/

Which is when reality kicked in.

Because suddenly people weren’t just seeing Sinew — they were downloading it, trying it, and finding every edge case I hadn’t thought of.

The program was a lot more fragile than I realised.

But along with the bug reports came something I didn’t expect: people actually wanted to help.


The Controller Problem

One of the biggest pain points at the time was controller support.

I had implemented a basic button mapper as a stopgap solution, but it was always meant to be temporary. It worked… but barely. Different controllers behaved differently, GUIDs were inconsistent, and the whole thing felt like duct tape.

Around this time someone named Jeod joined the Discord.

After a bit of discussion he basically said:

“Why don’t you just use this?”

…and dropped a link to the SDL_gamecontrollerdb project on GitHub.

That database contains controller GUIDs and button mappings for hundreds of controllers, maintained by the SDL community.

Instant game changer.

Instead of trying to manually map every device myself, Sinew could now rely on a massive existing database of controller configurations.

Sometimes the right fix isn’t writing more code — it’s finding the right tool.


Pull Requests From a Wizard

Not long after that, Jeod started submitting pull requests.

And not small ones.

He began refactoring large parts of the codebase, cleaning up structure, reorganising modules, and preparing the project for proper packaging using PyInstaller.

At that point I finally clicked on his GitHub profile https://github.com/JeodC to see who this mysterious contributor actually was.

Turns out this guy has ported a bunch of games to PortMaster.

So yeah… he knows what he’s doing.

Since then we’ve worked on a lot of backend improvements together:

  • major code cleanup and restructuring

  • stability improvements across the app

  • support for external emulators and files

  • groundwork for better handheld support

At one point Jeod even managed to get Sinew running dual-screen on the Ayn Odin / Thor devices, which was pretty wild to see.


Emulator Improvements

While that was happening I kept improving the internal emulator integration.

A few of the additions and fixes included:

  • Fast-forward support

  • Audio settings

  • Fixes for several audio bugs

  • General stability improvements

These weren’t flashy features, but they made the experience of actually playing through Sinew much smoother.


Sprite Pack Manager

One of the most recent additions is the Sprite Pack Manager.

Users can now:

  • assign different sprite packs per game

  • drop custom packs into a folder and have them detected automatically

This means people can customize the visual style of their Pokémon across different games without touching the core files.

It’s a small feature, but it opens the door for a lot of community creativity.


The Bugs That Remain

Of course, things still aren’t perfect.

A few issues we’re currently working through:

Some achievements occasionally trigger incorrectly, and the reward Pokémon generator is still producing the occasional Bad Egg.

If you’ve worked with Pokémon save structures before, you’ll know that means something somewhere isn’t quite lining up with the legality checks.

The good news is that both of these issues are close to being fixed and should be resolved in the next update.


Looking Forward

The next big step is something I’ve been thinking about for a while.

Refactoring Sinew’s core systems so they can support multiple Pokémon generations instead of being hardwired for Gen 3.

Alongside that, the game screen and achievement systems will become modular, allowing ROM hack creators to define their own achievements and event systems.

If that works the way I hope it will, Sinew won’t just be a companion app for vanilla Gen 3 anymore.

It could become a platform.

A place where you launch and manage your Pokémon games and ROM hacks across multiple emulators, track progress across generations, and build custom achievement systems around them.

What started as a simple tool to move Pokémon between games might end up becoming something much bigger.

At least… that’s the plan.