[Coco] 6309 microprocessor project 01-16-2004
John Kowalski
sock at axess.com
Fri Jan 16 15:59:12 EST 2004
At 02:26 PM 16/01/2004 -0500, John Collyer wrote:
>6309 microprocessor project.
>...
>I was still wondering what the emulator lacks in making the
>Sockmaster demos work? Any insights will be appreciated.
Where could I download this emulator to check it out?
Here's a quick list of things that make 'Sockmaster demos' troublesome
to emulator:
1) Mid-frame (On-the-fly) palette updates. This is how some demos, CoCoMax
III and 64 palette color-charts display more than 16 colors on the screen.
Emulating palette updates once per scan line is sufficient as I don't know
of any programs that require mid-scanline palette updating (unless you want
to go *all-the-way* authentic and emulate palette glitches as well :) )
2) Mid-frame video mode/resolution updates. Some demos will change the video
mode to different resolutions for different scanlines of the display.
(A real CoCo is capable of mid-line video mode changes, but I can think of
only one program that requires it - Dragonfire for the CoCo1/2, which
switches between two color sets multiple times per line to display 8 colors
in the otherwise 4 color PMODE3 screen.)
3) Undocumented video resolutions/modes. Boink demo takes advantage of a
video mode that repeats one scanline throughout the whole frame -
essentially 320x1 resolution. This is how the ball bounces up and down
while still allowing stationary graphics at the bottom of the screen -
the demo switches to 320x1 mode at specific scan lines to 'stretch' one
line below and above the ball itself. Other than offsetting the video left
and right, what you see is technically a stationary graphics screen
throughout the demo!
Nick's Gate Crasher uses an undocumented video resolution which was/is not
supported by Jeff's emulator.
4) Mid-frame horizontal offset updates. (The horizontal smooth scrolling
register) This is used for wavy effects and multi-sectioned scrolling in
some demos.
*Mid-frame vertical (or video address updates) do not need to be emulated
because even a real CoCo 3 does not support this.
5) Exact CPU cycle counts. Some programs and demos count cycles to syncronize
with the video raster. The 6809 executes 57 cycles per scan line at .89Mhz
and 114 cycles per scan line at 1.79Mhz. The video display has 262 scan
lines total.
6) Exact TIMER and interrupt timing. Some games and programs use interrupts
to syncronize with the video raster. If the emulated timing is different
from the real CoCo, things in the display can flicker or appear out of place.
Even the minor differences between the 1986 and 1987 versions of the GIME
were enough to break a few games - most notably the 64 color chart in
CoCoMax III. Emulating 1986 GIME timing is preferable.
7) Undocumented opcodes. Not very important, but some programs, and the
old/original versions of my demos used undocumented opcodes as half-NOPs,
or 1.5 NOPs for timing purposes. (I patched my demos when I found out the
6309 treated these opcodes differently from the 6809.)
8) ...What else? There may be a few more things that I've forgotten.
John Kowalski (Sock Master)
http://www.axess.com/twilight/sock/
More information about the Coco
mailing list