Jump to content

Kovi Kovi for Atari 2600


Recommended Posts



Kovi Kovi is a completed homebrew puzzle game for the Atari 2600 for 1 or 2 players. Binaries are provided below for NTSC and PAL60. It should work on any multi-cart system such as Harmony and PlusCart and with emulators such as Stella and Gopher2600. It was revealed on the @ZeroPage Homebrew show on Monday 20th March 2023. If you happen to find a bug or have a suggestion please write a comment below. Thanks for playing Kovi Kovi!


6th Atari Homebrew Awards



6th Atari Homebrew Awards Nominations



Released Binaries



PAL60 - KoviKovi_R1_PAL60.bin

The binaries are also in the PlusStore under Public ROMS->Homebrew->NTSC->E-L  and Public ROMS->Homebrew->PAL->E-L





The above Work in Progress ROMs are listed for completeness.



 (new) Gameplay Video (Single Player)



(new) Gameplay Video (2 Player)



The Kovi virus is spreading, multiplying and mutating. Time to take charge and administer vaccines to eliminate the 5 different strains of the Kovi virus. Score higher by eliminating many Kovi viruses within a single turn. Beware of viruses filling up and overrunning the game board.



The screen is a game board which holds the game pieces. In each turn 2 game pieces will fall. The pieces will either be 2 Kovis, or 1 Kovi and a vaccine needle. The player can rotate the pieces where desired to fall onto the other pieces in the board. The 2 pieces will split apart as they land. Players with a Sega Genesis style gamepad can rotate the pieces in either direction. Between turns it is also possible to change the orientation of the pieces before they drop.


Kovi Strains

There are 5 known strains of the virus – blue, green, pink, yellow and white. The viruses like to cluster together with their own kind, except for white Kovi which are individualistic. A vaccine needle will eliminate the Kovi strain of the same colour. White Kovi are also eliminated from nearby dieing strains of other colours.


Kovi Vaccine needle types

On some turns, Kovi vaccines are dropped. The blue/green/pink/yellow needles have the same chance of appearing, whilst the multicolour needles will appear half as often as the other colours. The multicolour needles are special in that they can destroy ALL virus strains. Injecting a Kovi with the wrong vaccine will cause the strain to turn into a white Kovi.


Kovi Vaccine needle placement

Needles can be positioned up, down, left and right.  Once landed, for a short time, needles can be re-orientated and also toggled open/closed when they land by pressing fire. It is possible to create chain reactions with multiple closed needles within a single turn when space is created under the needles and they fall down.


Debris Management

Beware, injecting a white Kovi with a non-multicolour vaccine will create a debris field to appear which is difficult to remove. This also occurs when needles collide with each other. Debris will fall down progressively as space is made underneath. When Debris gets to the bottom of the map, it will disappear.


Basic Scoring

A single green/pink/blue/yellow Kovi eliminated is 1 point. When two are joined together, the score is 3 points. When 3 are joined together, the score is 6 points. This pattern escalates up as the chain gets longer, such that for example, a chain of 10 Kovi will score 55 points, as opposed to just 10 points for individually eliminating the Kovi separately. White Kovi score 4 points for each.


Chain Reaction scoring

When needles fall down onto Kovi and start a new elimination chain directly after another chain, this will result in chain reaction scoring. For the first chain reaction, the score is doubled. For the second reaction, the score is quadrupled. For the third, multiplied by 8, etc. It becomes lucrative to engineer chain reactions, but beware the risk of making a mistake and stacking one’s board is higher.


Game Modes

There are 2 modes available – Marathon and Sprint. In Marathon mode the game will last until the player’s board is filled up. Every 16 8 Kovi chains, the rate of pieces falling will gradually increase until the highest speed of 13 is reached. In Sprint mode, the game will end after 32 Kovi chains are formed, but the speed will not increase during gameplay.



After Kovi pieces have dropped it is possible to rotate the next piece before it is released at the top of the game board. This can help orient a piece so it is convenient to move it without needing to rotate while falling. Choosing various orientations can also help marginally in preventing a full board (game over). In 2P mode, the pre-rotation orientation is shared between players; keep in mind that the opposing player may use this to their advantage in tripping up the other player.


2 Player Mode

Players take turns at playing on their own game boards. If a player scores a chain of at least 4 Kovis, a nuisance Kovi will be thrown into the opponents board on their next turn. With at least 8 Kovi, 2 pieces are thrown. Likewise with 12,16 and 20 chain lengths, 3, 4 and 5 Kovis respectfully will be thrown into the opponent’s field. The player who runs out of space first loses the game. In B game mode, if both players survive the 32 chains, the player with the highest score wins.


PlusCart High Score Club

Single player matches are logged for scores in the online PlusCart high score club. A number of pre-defined match games are defined for the differing skill level of players. It is also possible to play a custom defined game. It is possible to play with Mode A and B for each of the games. New for V02 - To see the PlusROM high scores for a chosen Game and Mode, press select from the main menu. This function will only work if a PlusROM connection is detected; currently PlusCart and Gopher2600 supports it - support in Stella upcoming in the next release.


Game Parameters

Several parameters make up the characteristics of each game.

Ratio – For the pieces that fall on each turn, the ratio is the number of pieces containing a needle as opposed to pieces which are both Kovis. A ratio of 1 has a needle in either turn, whereas a ratio of say 4 has a needle piece every 4 turns.

Speed – The rate which new pieces fall.

Stack – The amount of Kovi which are present in the game board when the match starts.

Seed – The random seed used to generate the Stack environment.

(new) Blow – The degree to which nuisance Kovis are created (Blowback). During single player games: 0 - none, 1 = 1:4, 2 = 1:2. During 2 Player games: 0 = 1:4, 1 and 2 = 1:2. 


Game Scoring Screen

At the end of a match, a screen will present the scoring for each player.
Kovis - The number of Kovis that were eliminated.
Chains - the count of the number of turns in which Kovis were being eliminated together. This also includes Kovis transforming into other Kovis.
Chainmax - the highest number of Kovis that were eliminated in a single turn.
K Factor - the ratio of the number of Kovis eliminated compared to the number of chains. (Kovis divided by Chains). The higher the number, the more efficient the player is at forming long Kovi chains.

Couch Compliance
(new) To reset the game, hold down the fire button on the Player 1 controller for approximately 4 seconds during gameplay.


Interlaced/Non-Intelaced Screen Mode

(new) The screen drawing mode can be toggled between interlaced and non-interlaced by using the right difficulty switch. This is useful for some consoles/displays which can only display at 30Hz.


About Kovi Kovi's Development

Kovi Kovi is written in 6502 assembly. It uses the E7 banking scheme for it's use of extra 2K of RAM and also bank switching for 16K ROM. Like Pitkat, the screen is drawn by a venetian blinds method and uses a self-modifying kernel that runs in RAM. A new flicker interlace method is used to solidfy gaps between lines. Out of E7's RAM, 1.5kB of the RAM is used for display kernels, 256b is used for the play board and 256b is used for sprite storage. All of the zeropage RAM is used (and reused). The music was composed with TIATracker by Andre Wichmann @Kylearan . DASM is used for compilation and linking. 



@MarcoJ - Coding and Music

@Jamtex - Design and lead playtesting


Special thanks to @Armscar Coder and @ZeroPage Homebrew for additional playtesting.


Edited by MarcoJ
  • Like 16
  • Thanks 1
Link to comment
Share on other sites

ZeroPage Homebrew is playing Kovi Kovi on tomorrow's ZPH stream LIVE on Twitch, hope you can join us!





  • Like 1
  • Thanks 1
Link to comment
Share on other sites

  • 3 weeks later...

Really like this game, interesting twist on the Dr. Mario formula. Has a lot of the feel and character of Pitkat and gives you and instant connection with the game. Only gripe I have is the main menu with the background parallax or whatever, hurts by eyes and very hard to see the menu. 

  • Thanks 1
Link to comment
Share on other sites

18 minutes ago, Prizrak said:

Boy this game is tricky, might have to play with a Genesis pad and maybe it'll give me an advantage.


Nice one Prizrak. Looks like you got the hang of it, score was very good for a first try. 

Link to comment
Share on other sites

52 minutes ago, Prizrak said:

Really like this game, interesting twist on the Dr. Mario formula. Has a lot of the feel and character of Pitkat and gives you and instant connection with the game. Only gripe I have is the main menu with the background parallax or whatever, hurts by eyes and very hard to see the menu. 

Do you mean the colour cycling on the text? 

Link to comment
Share on other sites

20 minutes ago, Prizrak said:

Boy this game is tricky, might have to play with a Genesis pad and maybe it'll give me an advantage.


👍Nice score!

First place in the game variation "Match A - Marathon". I have uploaded your screenshot to your PlusROM HSC score:



  • Thanks 1
Link to comment
Share on other sites

10 hours ago, Prizrak said:

The visual effect in the background of cycling colors. This appears on the options menu as well on my real hardware I believe. This is my phone with an emulator 

I see what you mean. I think I will try make it less jarring, and more smoother. Currently the colour change is semi random. Perhaps gradual changes will be better.



  • Like 1
Link to comment
Share on other sites

  • 4 weeks later...

Kovi Kovi V02 binary has been released! Please see top of forum for latest binary.


V02 activity log
- Added new Top 5 High Score screen on main menu for PlusROM enabled devices and emulators. (Choose Mode/Game and press SELECT). (Thanks @Al_Nafuur)
- Change of flashing options on main menu to be a flashing needle. This helps visibility of selected option. (Thanks @Armscar Coder)
- Change of colour cycling in the various text screens. This looks more of a "Hypercolour" effect now, which is less jarring than the previous colour cycling effect. (Thanks @Prizrak)
- Dancing nurse sprites have more frames. (Thanks @Jamtex)
- Added game modes E and F, called "Spikes Galore" and "Need a cure".


New High Score Screen

  • Like 5
Link to comment
Share on other sites

The Kovi Kovi Original Sound Track is provided below. This is recorded out of a NTSC Atari 7800.


A. Kovi Groove



B. Kovi Swing


C. Kovi Anthem 



The OST files can also be downloaded as a zip file.

Kovi Kovi (Atari 2600) OST.zip

  • Like 1
Link to comment
Share on other sites

5 minutes ago, Prizrak said:

if they can do these kind of releases for the C64 surely we can do it for the 2600

Indeed. 2600 music can sound OK if the second bank of pure tones are utilised. With programs like TIA Tracker, the 2600 can have it's musical day too.

  • Like 1
Link to comment
Share on other sites

ZeroPage Homebrew is playing Kovi Kovi on tomorrow's ZPH stream LIVE on Twitch, hope you can join us!






  • Thanks 1
Link to comment
Share on other sites

Hi James,


Thank you for playing the game on the show again! My sincere apologies for the screen glitches. I have investigated the bug and found that it's to do with variable VSYNC write timing. The same bug exists in the V01 and V02 releases and is subtly different between them. Apologies to other members of the community who also experienced this glitchiness on their setup too. I will release V03 shortly which fixes the bug.


Explanation of sync bug and solution


The screen roll in V01/V02 is caused by VSYNC being written to at different times every frame. Ideally this should be written to at exactly the same time every frame, relative to the scanline position. In V01/V02 that time is not synchronised, and can drift frame to frame, dependent on which code occurred before VSYNC write. The solution is to add a "STA WSYNC" command directly before the VSYNC write, which halts the CPU until the scanline is at the leftmost part of the screen. This synchronizes the VSYNC write timing on every frame. 



How to find / trap the bug


Under Stella developer settings, the Video tab has a "Jitter/Roll effect" setting, which can detect these sort of issues. To inspect if the VSYNC is being written sloppily on each frame, use a trap command in Stella. I use "trap VSYNC". This will halt execution in debugging mode whenever VSYNC is accessed. By starting and stopping the execution frame to frame, one can identify when into the scanline cycle that VSYNC is being written to. In the case of Kovi Kovi V01/V02, between frames the Scan Cycle varied in a sequence of 66, 51, 63, 49, 63, 51 ... etc.  With the fix, the Scan cycle became 3, 3, 3, 3, 3...etc which is synchronised.




Now, a question is, why didn't I find this bug before? This is because I've been using Stella 6.6, which doesn't seem to detect the jitter/roll capture Kovi's bug in it's developer settings. This has subsequently been improved in Stella 6.7 (the current version at the time of writing). So why wasn't I using Stella 6.7 which does have the feature? This is due to Stella 6.7 having a bug with tracing/debugging with E7 bankswitching which isn't present in Stella 6.6. I reverted back to Stella 6.6. Another question, why didn't the V01 WIP version roll on ZPH's first airing of Kovi Kovi? This might be just a miracle/fluke, the timing was just slightly more favourable for a stable picture. And lastly, why does the glitch not occur on every screen/setup? This is due to different manufacturers of screen having different strategies to deal with imperfect screen signals. Some screens can deal or compensate for the lack of robust sync timing. Additionally, emulators may ignore or gloss over the effects of the improper write timing. It is unfortunate/unlucky that it had the be THE SHOW where it was finally uncovered/reported.

Thanks all and hope to have a new version soon. Marco.


Link to comment
Share on other sites

  • 7 months later...

Kovi Kovi V04 binary has been released! Please see top of forum for latest binary. This version will be set to Released on 31st December 2023 unless bugs are found. Special thanks to @Armscar Coder for his testing of Kovi Kovi! Merry Christmas everyone!


New Features
- Needle reorientation: Needles can be rotated and opened/closed for a short time when dropped.
- Music D (Silence) selectable from main menu
- Right difficulty switch toggles flicker mode (useful for displays that don't sync to 60Hz)
- Couch Compliance(TM) feature added. During gameplay, hold down player 1's fire button for 4 seconds to reset the game.
- Game Match G through to M added. These have more difficult challenges than the original A-F matches.
- Matches G onwards have "Blowback" feature used in 2P games previously. This drops nuisance Kovi when the player scores chains. For a Blowback of 1, the ratio is 1:4 - 1 nuisance kovi for every 4 kovis destroyed. For a blowback of 2, the ratio is 1:2 - 1 nuisance kovi for every 2 destroyed.
- In 2P matches, matches For G through M it is have a Blowback of "2". Matches A-F are "1" as before.

- Blowback Kovis now have randomised expressions as they fall.
- Menu options now cycles through their range of values (thanks for the idea Armscar Coder).
- Chain reaction sound effect is more prominent and flashes the game board edges.
- In A Mode game, the speed is increased every 8 chains instead of 16. The chain reaction sound and visual effect is used also for level up.
- Speed levels 10-13 added. These are applied by the game when levelling up past level 9 in game mode A.
- There is a different sound effect for the spiky kovi type. 
- At the end of matches, the game board surround lights up green or red, depending on the outcome of matches.
- White needles behave the same but are now multicoloured. 
- Needles which are left pointing towards the edge of the gameboard become automatically re-orientated on the next turn. Also, on the bottom line needs will open up always.
- Needle debris tiles are also multicoloured and behave the same as before.
- The "Score" symbol is replaced by "P1" and "P2" to help identify scores during 2P games.
- In 2P games, a new variant of the scroll ticking sound helps visually identify which player is playing next.
- Also in 2P games, the first turn by each player does not yield nuisance Kovis (Blowback). They begin on the second turn.


- Rare screen roll when board is approximately half full.
- In 2P mode, White Kovis were destroyed from opposing player's board on edges.
- In 2P mode possible corrupting of 2P's "Left" statistic for B mode games.

  • Like 7
  • Thanks 1
Link to comment
Share on other sites

ZeroPage Homebrew is playing Kovi Kovi on tomorrow's ZPH stream LIVE on Twitch! Hope you can join us in the chat!




  • Like 2
  • Thanks 2
Link to comment
Share on other sites

  • 5 weeks later...

Kovi Kovi has been nominated in the 6th Annual Atari Homebrew Awards for 3 award categories! 


- Best Atari 2600 Homebrew (Original)

- Best Atari 2600 Graphics (Original)

Best Atari 2600 Music + Sound (Original)


To view and vote for your favourite entrants this year please follow the link below.



  • Like 1
Link to comment
Share on other sites

  • 4 weeks later...
  • 2 weeks later...


On 2/27/2024 at 12:00 AM, MarcoJ said:

Hi Littaum. Thanks for your nice comment! Yes, there is a plan for a physical release. 

And to that end here is a sneak peek of the label with early artwork. :D


  • Like 3
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Create New...