Finally decided to stop fighting C++, and just use size_t everywhere an
array is used.
Even though this is a 64-bit value, it seems that C++/STL expects it
when dealing with arrays, so I guess we will too.
Converted many C-style arrays to C++ std::array. In the process, cleaned up a lot of magic constants.
Replaced most C-style memset/memcpy operations with C++ equivalents: std::fill/std::copy.
std::copy in particular fixes a few potential bugs, since it operates on the datatype size,
and not just on raw bytes.
This has been in patch form for about a year, and I'm finally
getting around to applying it. Basically, we separate the Cart
class into 3 classes:
- Cart: stuff specific to cartridge emulation
- BSTypes: various bankswitch types, both as enum and strings
- CartDetector: actual bankswitch auto-detection code
Also made more use of smart pointers, and added const in a few
more places.
I promise to get back to the phosphor stuff soon. This is just
to clear my head a little.
To anyone reading this, Merry (belated) Christmas and Happy New Year!
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@3239 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
C++11 keyword. This makes developing/maintaining class hierarchies
more manageable.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@3182 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Introduce namespace to class MD5, so the method call is now MD5::hash()
instead of simply MD5().
Added C++11 '= delete' constructors to most classes, to more clearly
indicate the intent of the class. Note that this isn't absolutely
necessary, but is considered good form. I will be teaching a C++ class
over the summer using Stella for examples, so it makes sense to follow
the standard and the textbook recommendations :)
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@3164 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
currently in use. Still TODO is activate the 'Commit' buttons, so that
the banks can be changed from the UI.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2966 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
since there are issues with mixing overloading and virtual functions.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2963 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
test ROM from Thomas. Still TODO is work on patch support, and add
debugger tabs for bankswitching and extra RAM.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2962 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
or those which implement their own unique scheme no longer have to
implement bank and bankCount; this base class versions will be used
instead.
Removed the debugger 'bank' command, since it didn't work for all cart
types, and is obsolete now that the UI allows to change banks for
all cart types.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2960 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
resolved "access" initialisaation. Bizarre stuff and a bit of handwaving magic, but at least it runs the test ROM as a "DASH" version now.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2910 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
removed 'myCurrentBank' -- this has no meaning in this scheme.
Adjusted load() to switch in each bank as it is loaded
removed comment/questions to SA and replaced per advice.
added a few TODO comments.
reformatted some of the comments back, as per discussion
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2902 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Tabs removed, replaced with 2-char spacing.
constants for bit masking added
corrected the patch code for the bit-allocations for RAM/ROM banks switch
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2900 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This hasn't been tested yet, since no ROMs currently exist.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2895 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba