Secret Hint: If you only have 13 coins, do a Shift in February

2026-04-25

This is going to be a bit of a brain dump since I was not expecting to be writing this today (or ever, really), but wanted to get it down while it was fresh. TL;DR, if you just want to jump to the answer, click here.


Back when I started this project ~3 years ago and designed this site, the first line I included on the home page was:

An exploration of obsession, nostalgia, learning, and creation facilitated by cataloguing the experience of attempting to speedrun a forgotten DOS game from 1991

...along with several other mentions of obsession. Then further down, the infamous riddle:

Image stating 'Secret Hint: If you only have 13 coins, do a Shift in February'.

Followed by:

I never figured out what it meant, there doesn't seem to be an answer online, and it puzzles me to this day. Something to explore during this adventure, for sure.

You have to understand that I was serious about that obsession bit, which is what brings us here today.

Interlude

I found my way back here via another recent obsession - or as the kids are calling it these days - "hyperfixation":

...which happens to be AI (read: LLMs). I know, it's terrible and we all hate hearing about it, having it shoved down our throats, and the *gestures around* broader implications and associated consequences. However, being in tech/cyber/etc. I can't help but be immersed in it and the changes it's causing, as much as it annoys me.

Digression: the funny thing about AI was first the tech bros were saying to the white-collar workers "watch out this is going to replace you", but then it turned out it's generally unreliable, except pretty darn good at writing/analyzing code - so the bros are sweating a bit themselves now. How the turn tables...

Anyway, to increase my AI literacy and avoid being relegated to the "permanent underclass", I've been playing around with local LLMs mostly via llama.cpp and quantized versions of Gemma-4 and Qwen-3.6 (coder) that can be tuned to run reasonably well in my 16GB 5060 ti. After getting the basics down I've been doing more tuning, testing their problem-solving and coding capabilities with and without harnesses - primarily opencode - to see what's possible, how much steering is required, getting into the weeds re: tool calls vs. MCP servers vs. skills etc. etc. etc.

All throughout this process I had in the back of my mind that I could throw it at the Drakklor riddle. The game is ancient and models these days are finding security vulns like nobody's business. I'd previously done some fruitless reverse engineering of Drakklor in an attempt to solve the riddle, and at least knew how to set up a reasonable starting point between that and the analysis I did to create the memory-based autosplitter.

So on the second-to-last day of my vacation with little-to-no expectations, I decided to give it a go.

Mise en place

To avoid getting too into the weeds, based on my previous tinkering Qwen + Opencode worked the best. I then put together a directory containing the game files, plus extracted and pseudo-decompiled code via Frida - this is a repeat of what I'd done before and I'll spare you the nuances re: dealing with old 16-bit DOS games. I ended up with:

*The two save files were actually added part-way during the process (explained below) - I didn't provide any in advance because I knew their default state and processing were essentially contained within the binaries. Also partly due to laziness.

I then fired up opencode in the directory and decided to do a bit of prompting. I'd been working on different projects earlier in the day and was actually just planning this as a dry run to help get an impression of what would be involved for a more serious later attempt - which turned out to be an underestimation of how things were about to go.

Prompt Engineering

There was a fair amount of back-and-forth, compaction, etc. What's worth noting was that I was watching its thinking process and stopped it several times to reorient its focus - had I not been doing so I think it might not have been successful. Anyway, the key interactions were:

Tell me about the files in this directory

It responded with something reasonable re: the files relating to the analysis of a DOS game. I replied:

You're right - these files relate to an old game "Dungeons of Drakklor" which has the secret hint "If you only have 13 coins, do a Shift in February". I'm trying to find out what that means and the obvious answers like holding shift when I have 13 coins, system clock modifications, etc. have failed. I'd like you to analyze the files - DRAKKLOR.EXE is the main game file - and solve the riddle. You're in a Kali Linux install so you should have some reversing/binary tools available and we can install new ones as needed.

It then checked what tools it had available, did some cursory analysis, etc. In the end, it basically used Python scripts/libraries to do everything - but I had included the pseudo-decompiled version from Frida which it referenced a lot during analysis.

At a certain point I noticed in its thinking it found some code that set a flag when the "@" key was pressed. It looked like it was moving on but I stopped it and prompted:

I think you might've been onto something with your finding re: the "@" symbol and FUN_2779_0139 - pursue that as I think "Shift in February" may mean using the "@" character, i.e., shift+2

It observed that some kind of flag was getting set:

It went on a bit of a red herring re: expecting an additional keypress - I believe this was due to the logic being in a keylistener loop. Since the flag appeared to be persistent, I prepared two save files, interrupted, then prompted:

I've just added DRAKKLOR.SV1 and DRAKKLOR.SV2 to the directory, they're save files where I have 13 coins before and after pressing shift+2, note that there will be other differences between the files since the game progressed between the two saves i.e. monsters continued to move/etc. Continue solving the riddle

It was now time for (another) compaction - I was working with a 128K context window and probably had to compact 3 times within the hour or so this took to complete. We were making progress but needed to find out what the flag actually did:

Until eventually, it solved it:

This looks like some kind of transaction or action that costs coins. When the flag is set, the cost is different.
Actually, I think the key insight is that the flag changes the cost (SI value) of some game action. When the flag is set, the cost is halved (0x0A → 0x05, 0x64 → 0x32).

Wait, 0x0A = 10 and 0x05 = 5. And 0x64 = 100 and 0x32 = 50. So the cost is halved when the flag is set!

This means the secret flag gives a 50% discount on some game action.

Let me verify this by looking at the save file. The save file byte 0x16 = 0x01 when the flag is set.

Actually, let me look at the game data more carefully. The bytes at 0x0016 in the game's data segment is the coin count. And the routines at 0x018638 and 0x01864A modify this value.

So the answer to the riddle is: Press Shift+2 (the @ key) with 13 coins to set the secret flag, which gives a 50% discount on some game action.

From there it couldn't really figure out *what* the game action/transaction was, but this was enough for me to fire up the game and confirm what I now suspected to be true...

The solution

If you get 13 coins and then press shift+2, the tiles that show a coin cost to pass through effectively have their cost halved - for example 13 - 5 = 8 instead of 13 - 10 = 3:

This "discount" apepars to persist as you continue to play, regardless of coin count.

First, I'm slightly embarrassed I didn't figure this out myself. I'd previously tried a lot of things involving the shift key, the number 2, the second save slot, different positioning in the map/levels, my system clock, etc. without success. The benefit is delayed and somewhat subtle; I think previously I was *generally* expecting an immediate effect but if I had played long enough after messing around with key combinations and hitting the right one I might've noticed that passing through the blocks was only deducting half the number of coins it should've. You know what they say about hindsight.

What about the implications for speedrunning?

This post is long enough as it is, but (again) TL;DR, from my recollections and rewatching my best run, this discovery and coins in general are important because:

  1. There are several parts in the route where we need to pass through the coin cost tiles
  2. The route was designed/optimized so we would have enough coins to be able to pass through these tiles
  3. We take detours to do the above, although upon quick review they generally don't seem to be major detours
  4. However, there are potential route variations and alternate routes that were previously viewed as infeasible due to the high coin cost... but they could now be feasible

I guess the next step would be to fire up the game and see what can be cut from the existing route re: reduced coin costs to save time. The more interesting exercise would be to see if we can reroute through some more "expensive" coin cost paths now that they're effectively half their listed price.

TL;DR (again again), sub 4m possible? TBD... stay tuned.