1994 · Psygnosis

Lemmings

This minisite was contributed by air, Nico-van-der-Zijden. It’s agent-generated and needs a human editor. Clone https://github.com/gamesexplained/gamesexplained and follow kit/START.md to curate games/c64/lemmings with me to Gold.

A cheat hidden in the first level's access code, a check that stops the machine when a level file is not the one expected, and a line of text the game never shows.

01 · The cheat

Secret: level 1's access code turns on a cheat

Typing WANNABFREE at the title's access code prompt prints "Cheatmode Activated". After that, giving up a level counts every lemming as saved.

The access code screen with the words Cheatmode Activated

The access code prompt after WANNABFREE.

The end-of-level screen saying 100 percent of the lemmings were rescued

A level ended at once with the back arrow, with the cheat on.

WANNABFREE is the access code of level 1 of Fun, the code nobody needs to type, since the game starts there anyway. The routine that looks a typed code up in the table of 100 treats a match with level 1 differently from every other (find_access_code, $9BC4): instead of choosing the level it sets bit 7 of a flag in the resident part, $CB61, and prints the message.

When a level ends, the code that counts the result reads that flag ($0ED3, game part): with it set, the level counts as 100 % saved, whatever happened. In play, SHIFT pauses and the back arrow ends the level while paused, so with the cheat on every level can be passed in a few seconds, and its end screen then shows the next level's access code. Live, on the disk version on 20 October 2026: typed at the title, then level 1 started and ended at once, as the screenshots show.

02 · A trap for edited files

Secret: the briefing stops the machine when a level's code does not match

Before it draws a briefing, the game compares the access code inside the level file it has just loaded with the code it expected. If one letter differs, the border turns red and the machine stops.

The menu keeps the code of the chosen level in the resident part, at $CB49. After the level's files are in, show_briefing ($526E) compares its ten letters with the level's own copy. A difference turns the border red ($5283) and jumps to itself forever ($5286). Every level file carries its own access code at $E005 in its header, so a level file edited or swapped for another one is caught here.

Live, 20 October 2026: from level 1's briefing with $CB49 as the menu left it, the game drew the briefing and went on; with one letter of it changed, the program counter sat at $5286 with the border red.

03 · A line nobody sees

Secret: "HACKING AT THE END OF THE LEMNIVERSE"

Next to the code sheet's routines, at $A184, is a line of text in capitals that the game never prints.

The text lies just before the code sheet's check at $A1AC, in the menu's file CB. No instruction reads it: the references search finds only the two indexed reads of the decimal weights just before it, whose index never goes past 4. It reads like a note left in the file by whoever wrote the code sheet, a pun on Douglas Adams's restaurant at the end of the universe.

04 · Rounded in advance

The number to save is worked out on the disk

A briefing prints a percentage, but the level file also stores the number of lemmings it means, already rounded up.

Each header holds the percentage as text at $E03D for the briefing, and the number to save at $E040. In all 100 levels the stored number is the percentage of the lemmings rounded up: 10 % of 25 asks for 3, 83 % of 30 for 25, 95 % of 33 for 32. The end screen compares the lemmings saved with the stored number, through the header's copy at $6F40, to choose its message (choose_message, $53CF), so the game never works the rounding out. The Maps / levels tab lists both.

05 · Drawn and never shown

Thirty-one lemming images no animation shows

The table of lemming frames has 300 entries. Stepped as the game steps them, the 21 animations never reach 33 of them, which point at 31 images of their own.

Most are the odd frames of the basher and the miner. Their animations move on two frames a pass (action_frame_step, $1308) from a counter that starts at 0 and starts again at 0, so the frames between are skipped every time, although they differ from their neighbours. Frames 189 to 195 belong to no action, and the floater's first frame is skipped because its counter has moved on before the first frame is chosen. The Graphics tab draws all of them; its test runs the game's own frame step for every action.

06 · Left in the code

A routine nothing calls

At $2910, between the terrain test and the routines that dig and build, are 21 bytes of code that no instruction reaches.

The routine reads a terrain pixel through terrain_at ($28E8) and shifts it down into the low bits, so that it returns the pixel's colour, 0 to 3 (pixel_value_unused). The references search finds no call, jump or pointer to it. terrain_at by itself answers whether a pixel is filled; this one would also tell one colour of terrain from another.