Made by a human and an AI
The author
Had the idea and decided what the game should become, step by step: one to one with the original data, two players over the cable, 60 Hz, smoother fighters, living backgrounds, soft edges. Played every build, went through every new frame and said what was wrong, what to try and what to leave out.
Claude, the AI
Analysed the original program and wrote all the code: the Lynx game in 6502 assembler, the converter, this builder, the tests and these texts. Proposed the technical solutions and made every change the author asked for.
Using AI is no secret here. The AI did most of the work, and fast – but the ideas, the taste and the patience to look at every frame once more came from a human, and the heart of the game is still Archer Maclean's design and Rob Hubbard's music from 1986. The project summary (PDF) tells in detail who did what.
How it works
Start the tool
Run the program – or simply drag your disk image onto it. Python or other software is not needed.
Select your disk image
Choose your disk image, program file, cassette or cartridge image, or a .zip that contains one of them. The build takes a few seconds.
Play on the Lynx
The .lnx file is saved next to your disk image. Play it in a Lynx emulator such as Felix or Handy, or on a real Lynx with a flash cartridge.
On the Lynx









What you need
Your own copy of one of these releases, as a disk image (.atr, .xfd, .dcm or the copy-protected .atx), a program file (.xex), a cassette image (.cas), a cartridge image (.car) or a .zip archive that contains one of them:
- International Karate (System 3, 1986)
- the original boot disk7 backgrounds
- the tape version transferred to a boot disk7 backgrounds
- the single-file disk version (AUTORUN.SYS on an Atari DOS 2 disk) or its program file1 background
- World Karate Championship (Epyx, 1986, US release)original speed
- the original disk and disk images of it7 backgrounds
- the 130XE version7 backgrounds
- the cartridge version (128 KB XEGS)7 backgrounds
- the cassette version and program files (.xex)1 background
The builder checks every byte it uses and accepts only these releases. Most releases come with their own loader – the builder runs it on a small emulated Atari and tells you which release it found and what that means for the Lynx version. Not supported: early beta versions, damaged files and turbo cassettes.
The game changes its background after every bonus round, as on the original disk. The single-file version contains only the first one – on the Atari as well as on the Lynx.
Controls
| D-pad | Move and fight as on the Atari: each of the 8 directions does something different with and without fire, relative to the way your fighter faces. Pulling back blocks. |
| A / B | Fire button – while paused, A switches the edges of the fighters between hard and soft |
| Option 1 | Start a one-player game – or a two-player match when a second Lynx is connected |
| Option 2 | Music on / off – while paused: turn the picture round for left-handed play |
| Pause | Pause (the picture dims) – while paused, left / right chooses the mode, down shows all moves |
Modes: 50 Hz Classic plays like the PAL original and is the default. 60 Hz Speed runs at the speed of the European version on an NTSC Atari – everything 20 % faster. 60 Hz Smooth keeps the original speed and adds two new in-between frames to every step of the fighters: 30 instead of 10 poses per second.
Sound: on the Lynx II the music is spread across the stereo field and the hits come from the side of the fighter. The Lynx I plays mono.
Saved: the high score table, the mode, the orientation and the edge setting stay when you switch off – the ROM keeps them in the cartridge EEPROM (flash cartridges and emulators with EEPROM support). In the Felix emulator 0.6.4 this works only in some starts: a fault in its EEPROM emulation leaves the chip silent in the others.
Two players: connect two Lynx with a ComLynx cable, both running the game. Option 1 on either Lynx starts the two-player match of the original – the Lynx that starts it plays White, the other one Red, and the second Lynx joins by itself. Both need a ROM made with the same builder version from releases with the same number of backgrounds (seven or one). Without a cable, Option 1 starts a one-player game as before.
Good to know
Everything happens on your PC. The builder checks its result: “identical to the reference build” means your ROM is exactly the one the port was tested with.
Windows may show “Windows protected your PC” the first time, because the program is not signed. Click More info and then Run anyway.
SHA-256 of the download: 515d714cb93f9e8ed14e9508146a3091fa2469521d0c67c543183c403d0531fc
Linux command line
Download ik-lynx-builder-0.9.pyz and run it with your file, for example:
python3 ik-lynx-builder-0.9.pyz "International Karate.atr"
Without arguments it shows its help; --info FILE only tells you which release the file contains. The Lynx file is saved next to your file, or in the folder you name as a second argument. It runs on 64-bit Linux on x86-64 and ARM64 (for example a Raspberry Pi with a 64-bit system) and needs Python 3.8 or newer with numpy (Debian, Ubuntu, Raspberry Pi OS: sudo apt install python3-numpy). It contains the same port, the same checks and the cc65 compiler for both processor types.
SHA-256 of the Linux file: 289162b3cce220d03d7e2ea76abc3544a99fa9c13ca3c5be33e90c589e907bd4
Version history
- Move overview: in the pause, down on the d-pad shows all 16 moves at a glance - for every direction of the d-pad the pose of the move, without and with fire, as seen from a fighter facing right. Up returns to the picture.
- Left-handed play: in the pause, Option 2 turns the picture and the d-pad round, as in other Lynx games - hold the Lynx the other way up. The colours, the living backgrounds and the move overview are turned with it. The game turns the picture itself, so it also works in emulators that do not support the Lynx's own flip.
- The high score table, the chosen mode, the orientation and the edge setting are kept: the ROM stores them in the cartridge EEPROM. This needs a flash cartridge or an emulator with EEPROM support; without one the game starts with an empty table as before. In the Felix emulator 0.6.4 this works only in some starts, because of a fault in its EEPROM emulation.
- Soft edges: in the pause, A switches the outline of the fighters between hard, as before, and soft. Where a fighter stands in front of the floor, each edge pixel blends the fighter's colour with the floor; where the fighters overlap, the edge stays hard. With hard edges the game looks and runs exactly as before.
- Rio: now and then a sailboat crosses the bay, stops in front of the Sugarloaf, turns and sails back.
- Living backgrounds: every location now has a little life of its own, drawn into the original pictures. Water ripples in Rio, Sydney, New York, Egypt and below Mount Fuji, clouds drift past the Parthenon, Christ the Redeemer and the moon over Manhattan, cherry blossoms fall at Mount Fuji, the sun shimmers, lights go on and off in New York's windows and the sea glitters off Athens. Now and then a sailboat, a gull, a flock of birds, a ferry, a plane, a hovering helicopter or a camel caravan passes by, cars and trains cross the Harbour Bridge, and the Sphinx opens its eyes. The fights themselves are unchanged.
- Smooth scene changes: the picture fades out, the new location fades in. While paused, the picture is dimmed and the pause text stays bright.
- Stereo sound on the Lynx II: the music voices are spread across the stereo field, and the hit sounds come from the side of the fighter. A Lynx I plays mono as before.
- 60 Hz Smooth: the crouching turn with an attack (down and fire) now also gets in-between frames while the fighter turns.
- Faster: the whole Lynx program is now written in 6502 assembler. A frame takes about a fifth less time to prepare, fewer frames are dropped, new backgrounds load more than twice as fast, and the memory it frees pays for the living backgrounds.
- Fixed: the floor under the fighters now has exactly the colour of the background above it (in six locations a slight edge was visible). The high score table has a thin black frame.
- Two-player matches need a ROM from this version on both Lynx.
- New: three modes, chosen in the pause with left/right on the d-pad. 50 Hz Classic plays like the PAL original and stays the default. 60 Hz Speed runs at the speed of the European version on an NTSC Atari, everything 20 % faster. 60 Hz Smooth keeps the original speed and shows two new in-between frames for every step of the fighters: 30 instead of 10 poses per second, from 100 new frames that were drafted by computer and then reworked frame by frame. Two linked Lynx always play in the same mode.
- Fixed: at every change of background, one frame showed a mix of the old and the new picture.
- Two-player matches need a ROM from this version on both Lynx.
- New: the builder for Linux as a command-line tool (x86-64 and ARM64, for example a Raspberry Pi). Give it your file and it shows which release it found, builds the Lynx version and checks it, like the Windows program.
- Bonus round 2 (dodging) runs at the original speed again. While an object was in the air, the Lynx version only managed every second frame, so the fighter's jumps and somersaults looked like slow motion. The Atari checks these collisions in hardware; on the Lynx the check and the object graphics are now done much faster, with exactly the same results, and every frame is drawn again.
- Two players on two Lynx: connect them with a ComLynx cable and press Option 1 on either one. This is the two-player mode of the original: 60-second fights decided by a tug-of-war bar instead of half points, a match over the best of three fights with both bonus rounds in between, and the winner then carries on alone against the computer. The Lynx that starts the match plays White, the other one joins by itself and plays Red. Without a cable, Option 1 starts a one-player game as before. Both Lynx need a ROM made with this version of the builder from releases with the same number of backgrounds (seven or one).
- The builder window now lists all supported file formats.
- Richer background colours: the Lynx now changes colours from line to line during the picture, as the Atari original does. The scenery keeps far more of the original colour gradients and mixed tones, for example the snow on Mount Fuji, the sunset over New York and the water in Rio. Up to 45 colours are on screen at the same time, although a Lynx palette holds 16.
- Smoother: the game does much less work per frame. The score lines are only rebuilt when they change, the part of the background that never changes is only redrawn when needed, and parts of the drawing code were rewritten in assembler. Drawing a frame now takes about half the time, and hardly any frames are dropped any more, despite the extra colour changes.
- More robust interrupt timing for the colour changes and the sound effects, also in emulators.
- Many more releases of World Karate Championship: the original disk (also as copy-protected .atx image), disk images of it, the cartridge version and the cassette version - disks and cartridge with all seven backgrounds.
- New file formats: disk images without header (.xfd), DiskComm (.dcm), VAPI (.atx), cassette images (.cas) and cartridge images (.car).
- Program files with a shortened sound effect or with PAL colours are recognised; the builder says what that means for the Lynx version.
- The file name now contains the version number; older versions stay available on the download page.
- All seven backgrounds of the original game, from Sydney to Mount Fuji: a new background after every bonus round (in the demo after every fourth fight), as on the original disk. Each background has its own colours on the Lynx, including the colour gradients of the skies, checked against screenshots of the original.
- The original boot disk, the tape version on a boot disk and World Karate Championship contain all seven backgrounds; the single-file disk version has only one, as on the Atari.
- The builder shows which release it found and what that means for the Lynx version: backgrounds, and for World Karate Championship also game speed, title line and colours.
- First public version.
- Builds the Lynx cartridge image of International Karate from your own Atari 8-bit disk image (.atr), program file (.xex) or a .zip that contains one of them.
- Supports International Karate (System 3, 1986): the single-file disk version, the original boot disk and the tape version transferred to a boot disk.
- Also works with World Karate Championship (Epyx, 1986), the US release – on the Lynx it runs at the original game speed.
- Checks the result against the reference build of the port.
- The Lynx game: original graphics with an enhanced colour palette, Rob Hubbard's music and the original sound effects, computer opponent, both bonus rounds, high score table and demo mode.
Feedback
Found a bug in the ROM Builder or in the Lynx game, or have an idea? Let me know.