As Assembloids2600 was presented at the Silly Venture 2013 Atari party I assembled a playable demo version (PAL only)
with a few limitations.
Find it attached to this post. Below is the description I sent along with the binary for the party
The game is based on a flash game by Photonstorm (Quartet).
I ported that to C64 with gfx from the original artist iLKke
for a 16KB competition by RGCD who later released the game
as a boxed version.
For the Atari 2600 I needed a fully new approach.
A single face of the C64 version would not even fit
properly into the 128 Byte of RAM there.
Yet, the challenge was to stay within the limit of 4k to stay
as original to the Atari 2600 as possible.
During the process, Sven 'Ptoing' Ruthner stepped in and gave the
simplistic visuals of the game a general overhaul, requiring much
much more and new code and really changed the game to the better.
I used to work with him before on other C64 related projects and it
was great fun discussing (pseudo)limitations of the Atari 2600 with him.
The goal of the game is to score as high as you can
Scoring is achieved by completing faces in the 4 windows
around the central one. After each move a new face-tile is
placed in the center and can be moved to the four
adjacent windows in case that particular part of the face
is still free. Moving to occupied fields costs you a life
and the game will slow down considerably to give you better
chances next time.
There always is a valid solution to place the central tile, so
you are the only one to blame....
Once you managed to complete a face it will be cleared and you score
according to how how mixed it was.
A complete face in a single color scores 300 points, with a
single mismatch in color you still score 100 points. 40 points
if your face consists of 3 colors and a mere 10 points for a
fully mixed face.
If you manage to clear the complete board, you gain additional
whopping 500 points and an extra life (up to 9 lives in store are
After every successfully set tile, the pace of the game increases
and it will be harder and harder to make a smart move before
the timer runs out and you lose another life.
While the timer counts down, the timer bar decreases and changes color.
Furthermore 3 alarm beeps will ring before time is out.
Every 1000 points you are awarded with a new face gfx
(there are 8 different types + 1 additional special face if you
reach particularly high scores .
There are 8 game modes available. Select them via SELECT in the Title.
Game 0 is considered for kids only (!), here the timer bar
reduces very slow and there is no speed up at during gameplay at all.
For all the other modes 1-7 the speed up per set tile increases with game
Note, that the full 8+1 faces are only available in mode 3-7.
If you start a game in a new mode, the old highscore will reset.
Otherwise the current highscore is displayed in the title screen
and after game over.
After a couple of seconds, the game will switch into attract mode
and start to play a couple of automatic demo moves. This is indicated
by an A for automatic in the lives counter. The speed up per tile
in demo mode is related to the selected game mode, though it does start
faster than interactive game play.
For the DEMO (which you can identify in the title screen)
the game is limited to a certain number of moves and you start with
fewer lives without the option the gain additional lives by a
cleared board. Also only four out of the eight faces can be
seen. To provide some additional motivationr, you reach a new face
every 200 instead of 1000 points here!
Enjoy and watch out for the game at Atariage.com
Some technical details:
The faces are realized as player-gfx set to 3 copies.
Similar to common the 6 digit score trick, the 2nd player
gfx is also set to 3 copies and positioned right next to it.
So the left side of all faces correspond to player 1, while
the right side is playe r2.
There is just enough CPU time left to change the colors of
the gfx inbetween the 3 faces of the central row every scanline.
To allow for all of the 9 faces, only one half of them is stored,
the other one is mirrored.
The information on the color and type of tiles on the playfield are
updated every frame and in part use the same memory locations as the
current score display at the bottom as a consequence of the RAM limit.
The lives counter gfx are actually holes in the playfield and the
background color is set cycle exact around that hole so the other
playfield gfx cover its start and end up.
The same applies for the highlights on the windows which provide the
subtle 3d effect. You can easily spot that in the stella emulator
on the demo when you toggle the playfield or enter debug mode.
For the smooth decrease of the timer bar I overlay colored backgroudn gfx
with a ball gfx which moves with single pixel resolution at the speed
set by the current game pace.
The offset playfield gfx which stands 'out' of the gfx are asymmetric
and required some more careful timing. Their height varies between
the PAL and the NTSC version, allowing both version to fill the screen
properly. Reappearing graphical features are put into individual routines
that are then called on spot to save further ROM.
Since 4k is a harsh limit, most routines were rewritten numerous times
to realize smaller code and/or more efficient data storage.
As the Atari 2600 has no display buffer, all gfx have to be read and
written in real time as they are being displayed.
The digits of the live counter, i.e. are stored with maximum overlap to
free up more space.
The effect of the title screen requires the data to be stored in raw
As one of the playfield registers is only 4 bit wide, the remaining
were used to store almost all of the sound-fx data and for example the
of the attract mode.
I hope you enjoy playing the game as much as we enjoyed making it
Martin 'enthusi' Wendt