Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

My findings about the ACID chip

20 views
Skip to first unread message

McLeod / IdeaFix

unread,
Oct 18, 2009, 12:48:49 AM10/18/09
to
Hi! I'm just new to the universe of the CPC+ and the GX4000. I thought
making new homebrew games for this platform, or runing EPROM backups
of existant ones was going to be easy, until i faced the ACID.

I've searched for information about what the hell does it do to the
console. Nothing. Last week, I used a logic analyzer to try to find
out what's hapenning with it.

My findings were documented in this thread (spanish forum, sorry, you
can try Google for an automatic translation):
http://amstradcpc.mforos.com/305097/7723493-que-hace-exactamente-el-chip-acid-de-los-cartuchos/?pag=5

To make short a long history, what I found it's that the ACID,
somehow, controls acess to memory (RAM or mapped ASIC registers) for
reading operations.

If you try to run a program from a cartridge, and the ACID is not
present, you will be able to read from EPROM, execute from EPROM, read/
write to any I/O port (like the 8255, the AY-8912, or the gate array),
and write to any RAM position, whether it's true RAM memory, or ASIC
memory mapped registers that control the new palette, or the hardware
sprites.
But you won't be able to read whatever you wrote into memory. If
trying to read from a valid position within the block ocupped by the
ASIC registers, you will given &7E as a result. No matter what address
in the range &4000-&7FFF you read.
If trying to read from screen memory, you will get &B0 as the value
returned. The read cycle performs well in RAM, and RAM returns the
right result, but this result is blocked into the ASIC and all Z80
gets is &B0.

Bypassing the ASIC to get read access to RAM directly from the Z80 is
not a difficult task. I documented a FSM that could be implemented in
a GAL, that could detect valid RAM reads and connect the data bus of
the Z80 to the data bus of DRAM only for that access. But it's
impossible to do the same if you want to read whatever you wrote in
any of the memory mapped registers held inside the ASIC.

So I'm looking for any clues you guys would have found. As
circumventing the ACID is not a solution, the only thing left is
deciphering its behaviour. To me, SIN and CCLR are mostly unknown
signals. I can see the evolution of SIN (I think it's an output signal
from the ACID) but don't see any recognizable pattern. As for CCLR,
when the ACID is present, it's just a 5 volt. fixed value (although if
you watch it under an oscilloscope, you can see how it "tries" to go
to zero, but "something" fforces it again to be 5 volts again. If you
take away the ACID, the CCLR signal is a negative pulse that last a
whole CLK4 period, and repeats every 18 clock cycles.

fano

unread,
Oct 29, 2009, 7:21:39 AM10/29/09
to
Hi McLeod !

Thanks for theses finding , as i am planning to create cartridge game
i am pretty interested.I'll keep an eye on this ;)

Mark

unread,
Nov 16, 2009, 10:35:15 AM11/16/09
to
Programming a GX4000! You're all mad.

Glad people like you exist tho'

World would be a very sad place without the eccentrics..;-)

Oh & good luck but don't forget...can't use self modifying code on
cartridges..


"fano" <fano.aka.mainb...@gmail.com> wrote in message
news:efce96f1-0c8f-4624...@v25g2000yqk.googlegroups.com...

0 new messages