[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