Document Title: [PhoenixMap.html (html file)]
Newsgroups: rec.games.video.arcade.collecting
Subject: PHOENIX reeng.
Date: 26 May 1996 23:46:41 GMT
Organization: University of Karlsruhe, Germany
Lines: 218
Message-ID: <4oaqh1$psd@nz12.rz.uni-karlsruhe.de>
NNTP-Posting-Host: rzstud2.rz.uni-karlsruhe.de
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
NNTP-Posting-User: ub2f
X-Newsreader: TIN [version 1.2 PL2]
Hello Folks,
I recently took a closer look at the PHOENIX schematics for repair purposes
and wrote down the results. The circuitry look simple enough for being
emulated without much trouble.
Maybe someone likes to put in some time ?
Btw., how about creating an schematics/reengineering archive on wiretap for
future arcade simulations (i.e. making scans of YOUR schematics) ??
Regards,
Ralph
reply-to: ub2f@rz.uni-karlsruhe.de (Ralph Kimmlingen)
---------------------------------
-----------------------------
------------------------
---------> PHOENIX <---------
-----------------------
-----------------------------
---------------------------------
--------------------------
-----------------
Reengineering
Project '96
-----------------
--------------------------
----------------------
------------
Hardware
------------
----------------------
Components
----------
- 8085 CPU @5.5 Mhz
- 8x2kB ROM
- Two plane display (CHARSET-A, CHARSET-B)
CHAR-A: 2x2kB ROM, 4x0.5kB RAM
CHAR-B: 2x2kB ROM, 4x0.5kB RAM
- 2x3 bit color DAC
- 8 bit vertical scroll register
- MN6221AA 2voice melody module
please note: as Phoenix uses a 90 degree rotated picture tube, all
references to 'horizontal' positions actually mean VERTICAL
ELECTRON BEAM positions.
Functionality
-------------
The picture consists of two independent planes, where each pixel is represented
by two bits. As the lower plane is used for scrolling (CHAR-A, starfield),
the first row is always invisible (scroll-buffer).
All sprites and text are displayed in the upper plane (except for eagles).
_____26x8 pixel___________
|xxxxxxxxxxxxxxxxxxxxxxxx| <-- first row (score count etc.)
| |
| |
| /+\ |
. .
: : <32x8 lines>
| | |
| |
| | |
| |
|_____^__________________|
The graphic data for each plane is drawn from a 8x8 charset and an attached
video ram of 2x1024 bytes. Only 26*32 bytes are actually used, representing
a screen size of 26*32 characters.
Each video ram consists of two banks, which allows for double buffering (see
video control register).
Vertical scrolling is controlled by a 8 bit value, which determines the
first line to be drawn by the video logic. Example:
scrollreg= 9 --> video logic starts reading video ram at byte 32 and
charset-rom at the second byte.
After finishing row 26, row 0 is drawn (->wraparound).
Colors
------
Two 8-to-3 lookup-tables (PAL's) are responsible for color output. These PAL's
allow for a palette of 6 bit (64 colors) :
7 bit value --> Lookup-Table1 --> 3x1bit (RGB) --> DAC ] video out
7 bit value --> Lookup-Table2 --> 3x1bit (RGB) --> DAC ] (RGB)
RED BLUE GREEN
2bit 2bit 2bit
The 8 bit value for lookup tables is composed of the following signals:
Bit from
---------------
0 ]
1 ] bit 5-7 of video ram value (divides 256 chars in 8 color sections)
2 ]
3 ] 2 bit pixelcolor
4 ] (either from CHAR-A or CHAR-B, depends on Bit5)
5 0= CHAR-A, 1= CHAR-B
6 palette flag (see video control reg.)
7 always 0
Memory Map
----------
0000-3fff 16kB ROM (code + tables)
4000-43ff RAM A (1kB)
lower 32x26 bytes used for video ram (CHAR-A),
remaining 192 bytes for variables
4800-4bff RAM B (1kB)
lower 32x26 bytes used for video ram (CHAR-B),
remaining 192 bytes for variables
5000 2 bit video control register (write only)
Bit Used for
---------------
0 switching between VIDEO RAM banks (double buffering)
0: r/w access to 4000-43ff or 4800-4bff
is directed to bank0
1: r/w access to 4000-43ff or 4800-4bff
is directed to bank1
1 color palette swap (blue/red eagles etc.)
this bit represents A6 of color PAL chip
2-7 not used
5000-53ff video control (mirrored)
5800 8 bit vertical scroll register (CHARSET-B)
this value determines the first of 32x8 vertical pixels
to be shown (wraparound fashion)
5800-5bff scroll register (mirrored)
6000 sound control A
Bit Used for
---------------
0 ]
1 ] frequency voice1
2 ]
3 ]
4 ] volume voice1 (probably)
5 ]
6 ] melody module command:
7 ] { , , ??>, }
6000-63ff sound control A (mirrored)
6800 sound control B
Bit Used for
---------------
0 ]
1 ] frequency voice2
2 ]
3 ]
4 ] volume voice2 (probably)
5 ]
6 ] noise channel (probably volume 0-3)
7 ]
6800-6bff sound control B (mirrored)
7000 8 bit game control (read only)
Bit Used for
---------------
0 coin
1 start1
2 start2
3 -
4 fire
5 right
6 left
7 barrier
7000-73ff game control (mirrored)
7800 8 bit dip-switch (read only)
Bit Used for
---------------
0 dip-settings
1 dip-settings
2 dip-settings
3 dip-settings
4 dip-settings
5 dip-settings
6 dip-settings
7 for video ciruits : flip picture vertical
when read by CPU:
->horizontal sync: this signal is logical HIGH
during video output of row 0*8-25*8,
otherwise LOW.
7801-7bff dip-switch (mirrored)