FEW WORDS ABOUT THE
"VMU wildcompo entry"
Error in Line #2003
Dreamcast-owners know the little Visual Memory Card just
like Playstation owners know their dual-shock controllers.
The Visual Memory Unit (VMU) was Sega's approach to add a
little more spice to the conventional memory cards. You
plug them into your controller, not into the console, so
you can have up to 8 of these little devices (providing
you have 4 joypads connected) instead of 2 like it is on
the Playstation. You can watch the little screen even
when they are plugged into the controller thanks to a
window in the Dreamcast joypad. Due to a little Piezzo-
element, they can beep and inform you accoustically
whether a file has been saved intact or not and thanks
to a miniature joypad, 2 action buttons, sleep and mode
buttons, you even have a mini game system that you can
upload little games to, using the Dreamcast, and then
play on the VMU.
What sounds like a nifty idea totally flopped, just like
the whole Dreamcast did. For a memory card, the VMU was
slightly too expensive and offering too little memory for
game save files (1 MB). For a game system, it consummed
batteries too quickly (non-rechargeble mini batteries),
had a far too little display, little joypad, little
buttons and a massive lack of decent software.
Sega tried to slightly approach the latter problem by
offering documentation and development tools for the VMU
without any "licensing" the developpment, hoping that
freeware-authours would write a few games for the VMU.
And there are some, but frankly your mobile phone usually
offers hotter games.
Nevertheless, the documentation as well as some parts of
development tools are there, so I decided to use them for
a little wild-compo entry and my personal contribution to
the Dreamcast owners among the Atari community.
You might probably want to know some technical details
about this little device to judge the demo.
The system more or less consists of one chip, a Sanyo
LC 86000/87. This chip can be run at a variety of clock-
rates from 6KHz over 36KHz up to 3.6 MHz (when docked).
It is an 8-bit CPU with an 8-bit accumulator named A,
2 8-bit auxilary registers named B and C, one 16-bit
register for "far" memory fetches named "TRH" and "TRL"
(H for High- and B for Low-Byte of the memory address
to fetch), supports an LC-Display with a fixed
resolution, one 16-bit timer, serial I/O through the
docking interface and one PWM - module (Pulse-Width-
Modulation) that is connected to the Piezzo-element
and can therefore produce sounds. For the experts,
this little MCU even offers a MAC of 24 - bits width :
Multiplying 8-bit by 8-bit numbers result in 16-bit
number (covered by A and B) and then allowing up to
8-bit accumulation (covered by C so that the whole
result is stored in A, B and C).
The LC - Display attached has a resolution of 48x32
pixels, organized in two screens of 48 x 16 each
(Originally assumed by the Sanyo LC86000 is one LC
Display of 128 x 8 pixels = one line of 16 characters).
The chipwas meant to have 512 KB Flash memory and
256 Bytes of RAM. As the Dreamcast VMU offers 2 memory
pages (handled by the Sanyo itself), it has, in fact,
512 Bytes of RAM and 1 MB of Flash memory, sadly,
one RAM - page (256) is completely used up by the
registers of the LC 86000 MCU, leaving 256 Bytes of
RAM. Also, the chip offers a 16-bit address as maximum
address space, so it can only use 64KB of "ROM" (in
the Flash-memory), but as it can handle 2 pages, it can
use 128KB of "ROM". This "ROM" resides in the Flash-mem
but sadly, Flash memory cannot be overwritten without
erasing, and erasing is organized in blocks, hence it
cannot be used as RAM.
The demo features basically only three effects and some
in-between graphics. The 3 effects are a single scroll
line of 8 pixels width, a bob-effect and a tunnel.
The scroller just works like on any other system, by
shifting to the left over a Carry-Bit which is more
or less what the LC86000 has been made for.
The bob-effect flickers like mad because the LCD
screen doesn't allow double buffering (fixed address)
and not enough RAM to have a buffer in RAM instead.
Displayed are 16 bobs and each can take a fully
individual position (no fake). The bobs are masked
with their invert copy, so it's not a sensible mask,
but they are masked.
The tunnel involves two routines. One that applies the
tunnel-table to the texture and builds up a virtual
screen of 16 x 16 pixels resolution with a virtual
colour-depth of 256 pixels, of which four are used
(0 = transparent, 1 = light grey, 2 = dark grey,
3 = black), the other routine turns this virtual screen
to the 1-bit display required by the LCD (nicknamed
c2b = chunky 2 bit-field).
The demo has been written in assembly using an official
port of the Sanyo LC86000 assembler, and without Marcus
Comstedt's excellent internet-documentation, this demo
wouldn't have been written either (was http://mc.pp.se/dc,
but seems to be down now). Also, Marcus Comstedt prepared
an emulator for Linux/Unix which served me very well.
So, in case you wondered about the wild-compo entry by
us, i hope you have now understood a little about the
VMU and what's it all about.