Disclaimer: This information is provided as is. There may be errors in this information. You may use this information only if you agree that Minimalist / Coinop.org, its employees, and noted authors will never be held responsible for any damage, injury, death, mayhem, etc. caused by errors in the information. When working with high voltage, never work alone and always follow safety precautions.

Document Title: [CrazyClimberMap.html (html file)]

Crazy Climber Memory Map


Please don't take any of this information as gospel. This is what I have
gleaned from my analysis of the CC ROMs and circuits, and I could be
wrong about a few things. Some of it is best guess, but most of it
should be correct. Bear in mind that it was quite a while ago (3 years)
that I was originally working on this, so coming back into it I'm a
little fuzzy on details.

The video circuitry for Crazy Climber is similar to other early 80's
games, but has some unique features. The display is character generated,
32 characters across and 28 high, which makes 256*224 pixels. The 1k of
screen RAM addresses the character ROMs (ROMs 3-6); a pair for each
character set, which give two bits per pixel, and along with the colour
RAM, determine the colour for each pixel. Each vertical character column
(32 in all) can be scrolled independantly using the column scroll
registers at 9800h. Note that unlike most other games of the time CC
uses a horizontally oriented picture tube (as in a VGA monitor), rather
than the vertically oriented tube as used in Pacman, Galaxians, and
Space Invaders.

As in most character generated displays of the time, the colour of each
pixel is determined by a combination of the lower 4 bits of the colour
RAM and the two bits per pixel from the character generator ROMS. Bit 4
of the colour RAM selects between two character sets.

An unusual feature of the display circuitry is what I call the Big (or
main) sprite. There are 256 bytes of RAM at 8800h which are attached to
their own character generator ROMs (ROMs 1&2). This can be moved as one
big block using the control registers at 98dch-98dfh. This sprite is
used for the logo in the opening screen, the bird, and other large
objects in the game.

I have yet to work out much of the detail regarding the small sprites,
but they seem to be similar to pacman/galaxian. Anyone who would like to
help out with this please contact me (I have limited time at the

Crazy Climber uses an AY-3-8910 addressed at I/O 8&9 for music, and has
a sample playback system for other sounds controlled by the two ports on
the AY-3-8910 and registers at a004h, a800h, and b000h. ROMs 12&13
contain the sample data. From the circuit it appears that the sample
information is 4 bit with two 4 bit nybbles per byte of ROM which are
read sequentially. I haven't confirmed this though.


There is a watchdog circuit which will reset the processor if the
machine switches (coin, player start, etc) at b800h are not read for a
certain period of time. This ensures that if the program crashes due to
a power glitch or whatever, the program will reset. There is little
point in emulating this.

Note that the address decoder on CC only decodes to 2k blocks, therefore
1k of RAM at 9800h will also appear at 9c00h. In places the software
will write to a mirror address; Eg. the Colour RAM is addressed at 9c00h
and the column scroll registers at 9800h. These are actually both part
of the same 1k RAM on the CC boards. The column scroll registers take up
the first 32 bytes of the colour RAM. Since these bytes correspond to an
area of the screen which is not displayed they can be used for this

0000h-4fffh ;20k program ROMs. ROM11=0000h

8000h-83ffh ;1k scratchpad RAM.
8800h-87ffh ;256 bytes Bigsprite RAM.
9000h-93ffh ;1k screen RAM.
9800h-981fh ;Column smooth scroll position. Corresponds to each char
             column. *This is actually part of the colour RAM.
  98dch ;big sprite control.
  98ddh ;big sprite colour.
  98deh ;big sprite y position.
  98dfh ;big sprite x position.

9c00h-9fffh ;1k Colour RAM: Bits 0-3: char colour scheme.
                            Bit    4: 0=charset1, 1=charset2.

0a000h ;RD: player 1 cntl. WR: NMI: 0=disable, 1=enable.
0a001h ;WR: Video horizontal invert.
0a002h ;WR: Video vertical invert
0a004h ;WR: dig sound trigger?
0a800h ;RD: player 2 cntl. WR: dig sound speed?
0b000h ;RD: dip switches.  WR: dig sound volume?
0b800h ;RD: machine switches/watchdog.

I/O 8  ;AY-3-8910 Reg?
I/O 9  ;AY-3-8910 Reg?

*If anyone can help fill in some of the blanks or has corrections please
email me.

Lionel Theunissen (lionelth@ozemail.com.au)