From 58e254242847fe4077377e3b6c6eec41c7c3c660 Mon Sep 17 00:00:00 2001 From: cd-w Date: Sat, 19 Sep 2020 15:05:36 -0700 Subject: [PATCH] CDFJ+ test binaries --- src/emucore/CartCDF.hxx | 28 ++++++++++++++++++----- test/roms/bankswitching/CDFJ+/red512.bin | Bin 0 -> 524288 bytes test/roms/bankswitching/CDFJ+/zev64.bin | Bin 0 -> 65536 bytes 3 files changed, 22 insertions(+), 6 deletions(-) create mode 100644 test/roms/bankswitching/CDFJ+/red512.bin create mode 100644 test/roms/bankswitching/CDFJ+/zev64.bin diff --git a/src/emucore/CartCDF.hxx b/src/emucore/CartCDF.hxx index fd374d9df..812792f3f 100644 --- a/src/emucore/CartCDF.hxx +++ b/src/emucore/CartCDF.hxx @@ -27,14 +27,30 @@ class Thumbulator; /** Cartridge class used for CDF/CDFJ/CDFJ+. - There are seven 4K program banks, a 4K Display Data RAM, - 1K C Variable and Stack, and the CDF chip. - CDF chip access is mapped to $1000 - $103F (both read and write). - Program banks are accessible by read/write to $1FF5 - $1FFB - FIXME: THIS NEEDS TO BE UPDATED + CDFJ bankswitching for Atari games using ARM/C code. + There are two variants supported: + 1) CDF/CDFJ - initial scheme with 32K ROM and 8K RAM + 2) CDFJ+ - support for larger ROM sizes (64/128/256/512K) and RAM sizes (16/32K) + + Features: + 32 fast fetchers + 2 fast jump queues + 1 parameter queue + 3 channel digital audio/1 channel sampled sound + 7 banks (4K) of atari code + 4K display data (16K and 32K available with CDFJ+) + + Note that for CDFJ+, the same driver is used for all RAM/RAM combinations. + It is left to the programmer to ensure that only the available RAM/ROM on the target device is used. + + Bankswitching Note: + CDF/CDFJ uses $FFF5 through $FFFB (initial bank 6) + CDFJ+ uses $FFF4 through $FFFA (initial bank 0) + + The letters CDFJ stand for Chris, Darrell, Fred, and John. @authors: Darrell Spice Jr, Chris Walton, Fred Quimby, John Champeau - Stephen Anthony, Bradford W. Mott + Thomas Jentzsch, Stephen Anthony, Bradford W. Mott */ class CartridgeCDF : public Cartridge { diff --git a/test/roms/bankswitching/CDFJ+/red512.bin b/test/roms/bankswitching/CDFJ+/red512.bin new file mode 100644 index 0000000000000000000000000000000000000000..2432ba07572a7e9183f511af31ca39e3d62bf270 GIT binary patch literal 524288 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 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNCf I{}VXz4>`DKiU0rr literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/CDFJ+/zev64.bin b/test/roms/bankswitching/CDFJ+/zev64.bin new file mode 100644 index 0000000000000000000000000000000000000000..ebcb50abfbfec55b705492dec319104c9d62aced GIT binary patch literal 65536 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