[stella] Definitive list of bankswitching formats for the 2600
Stephen Anthony
sa666666 at gmail.com
Mon Dec 25 09:20:12 CST 2006
On Sunday 24 December 2006 17:32, stella at casperkitty.com wrote:
> I should add that all this logic has to work on an in-memory image of
> the ROM, and its size. That's all I have access to, and all I have
> to work with. The 'code' won't actually be running or anything at
> that point; I have to do a static analysis. The sizes work
> surprisingly well for determining which class a ROM falls into. The
> following are what I have left to auto-detect; I'm fairly certain
> I've taken care of the rest:
I just thought I'd update all on my progress:
8K) E0: detected by looking for accesses at $fe0 to $ff7 (per
suggestion in this thread). Currently, I look for the regex (LDA|STA,
$f[e0-f7]) to be present at least 4 times. It works for all the ROMs I
have, but obviously it can still fail if other ROMs have this pattern,
or the programmer used something other than LDA/STA.
Still TODO is add support for FE and UA (these are probably not
possible, so I may be content to just use hardcoded types).
16K) E7: Inspect the second 1K RAM area located in the upper 2K of the
cart, which by definition is always mapped to the last 2K of ROM. So
that means addresses $3800 to $38ff *should* contain the same data
(most likely $ff, but not necessarily). To differentiate between ROMs
that have the whole area empty (perhaps unused ROM), I look at the
surrounding 32 bytes and see if they differ, on the assumption that
having a contiguous block at only $3800 to $38ff and differing bytes
surrounding it strongly indicate E7.
I still need to work on 4A50 (the only test ROM I have doesn't seem to
be following the specs), and 2K CV.
Thanks for the advice so far,
Steve
More information about the Stella
mailing list