Jump to content

Kovi Kovi for Atari 2600

Recommended Posts

Kovi Kovi is a WIP 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!






new V03 KoviKovi_V03_NTSC.bin

V02 KoviKovi_V02_NTSC.bin




new V03 KoviKovi_V03_PAL60.bin

V02  KoviKovi_V02_PAL60.bin


The binaries are also in the PlusStore under Public ROMS->WIP->H-Q->KoviKovi


GamePlay Video



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/gren/pink/yellow needles have the same chaince of appearing, whilst the white needles will appear half as often as the other colours. The white needles are special in that they can also destroy other 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. When needles land they have the potential to open up in the left, down and right positions. When placed in the upright position the needle is closed until it falls down later on. Needles will automatically open up and potentially inject other Kovi when they fall. 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-white 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 Kovi chains, the rate of pieces falling will gradually increase until the highest speed of 9 is reached. In Sprint mode, the game will end after 32 Kovi chains are formed, but the speed will not increase.


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.


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.


  • Like 14
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

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...