Commit Graph

48 Commits

Author SHA1 Message Date
Stephen Anthony 218969eb59 Changed uInt32 to size_t where necessary.
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.
2019-09-16 21:29:08 -02:30
Stephen Anthony 354d5aa35a Fixed gcc warnings wrt getBank virtual methods.
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.
2019-09-16 19:46:15 -02:30
Christian Speckner 126464f66f Switch MacOS to SettingsRepository, fix clash between bspf.hxx and Cocoa. 2019-04-26 00:23:53 +02:00
Stephen Anthony 91c98ceed2 Converted another plain enum to 'enum class'. 2019-03-09 16:02:43 -03:30
Stephen Anthony 275666b0af The annual copyright year update. 2019-01-01 11:35:51 -03:30
Stephen Anthony a26288c788 Updated RWP stuff for DASH scheme.
Again, this is a relatively untested BS scheme, with only one test ROM available.
2018-12-18 14:04:25 -03:30
Stephen Anthony 56669c5449 Convert Cart classes to receive 'md5' parameter.
That's an *awful* lot of work to simply pass info to each class :)
2018-12-18 10:24:40 -03:30
Stephen Anthony 7b4c3dc6b8 In the case of 'read from write port', make sure RAM is modified before exception is thrown. 2018-12-07 21:45:28 -03:30
Stephen Anthony 31f6dba87d 'Cartridge.StartBank' ROM property is now used by the core. 2018-09-14 20:57:36 -02:30
Stephen Anthony d18f11afa2 Remove Serializable::name() method, and all reference to it in state files.
- this both speeds up load/save of state files, and makes them smaller
- affects both on-disk files, and Time Machine functionality
2018-09-13 20:50:23 -02:30
Stephen Anthony 558b071fbb Some more fixes for warnings from cppcheck. 2018-08-28 14:21:01 -02:30
Stephen Anthony 3d879d0080 Updated copyright date to 2018. A few days early, but nobody will mind ... 2017-12-29 17:10:37 -03:30
Stephen Anthony 1d99a1e5fa Refactored various page accessing functionality:
- Removed System::PAGE_SHIFT from all classes (except where it's needed inside System); it is an implementation detail of that class that shouldn't be used outside the class, and was making the various calls to setPageAccess very messy
- Changed uInt32 to uInt16, and loop variable to 'addr' for all calls to setPageAccess; this is for consistency, and allows the reader to see how all the code is similar in different classes
- Updated comments in various places (mostly TIA and RIOT) to more clearly show how page accessing works.
2017-09-15 23:28:20 -02:30
Stephen Anthony c2302c2e71 Cart::getImage refactoring: use uInt32, since sizes are never negative. 2017-09-01 10:23:17 -02:30
Stephen Anthony cd689941b6 Move to C++14, now that all the minimum required compilers support it.
Clang 3.8, gcc 5, Visual Studio 2017 and Xcode 8 are now the minimum
supported compilers, and they all support C++14, so we may as well use it.

 - Change all make_ptr to make_unique
 - Change iterator begin(), end(), etc to const versions where appropriate
 - Remove UniquePtr, since C++14 supports it natively
2017-07-21 21:10:13 -02:30
Stephen Anthony 9972af022a Fairly huge refactoring of the cart autodetection code.
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.
2017-07-02 19:27:27 -02:30
Stephen Anthony abb7097cb7 Removed $Id$ stuff from codebase, since it's Subversion-specific.
Whitespace cleanup and update copyright to 2017.
2016-12-29 20:30:30 -03:30
Stephen Anthony 4d0147f3d1 Made new TIA core the default (code now compiles). 2016-12-10 13:38:28 -03:30
Christian Speckner 83417e976f Isolate TIA implementation in sub-module, remove all direct references in favor of AbstractTIA. 2016-10-30 00:31:55 +02:00
stephena 883971985e Removed some redundant includes in various Cart classes.
Introduced Cartridge::initializeRAM() method, to eliminate duplicate
blocks of code in every bankswitch scheme that uses extra RAM.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@3316 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2016-08-24 23:57:07 +00:00
stephena 087d382280 Added 3E+ bankswitching scheme by Thomas Jentzsch.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@3311 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2016-08-21 21:37:06 +00:00
stephena 755611a5c1 In my quest to remove all d'tors, converted many more raw pointers to
unique_ptr.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@3258 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2016-01-23 22:56:16 +00:00
stephena 8f2d3a6cbb Updated copyright to 2016, even though it's a few days early.
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
2015-12-29 19:22:46 +00:00
stephena 687b638437 Second pass at cleaning up warnings generated by -Weverything in clang.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@3204 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2015-09-14 18:14:00 +00:00
stephena 0afb189322 Updated copyright to 2015. Happy New Year to anyone reading these logs :)
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@3131 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2015-01-01 03:49:32 +00:00
stephena fdc54072f4 Second pass at the new experimental scheme; it's a little closer now.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@3096 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2014-11-21 23:01:06 +00:00
stephena 3949101fb7 Some 'nullptr' updates to Cart classes.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@3036 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2014-11-03 17:16:43 +00:00
stephena 1a09d37d1b Speed up accesses to System by using constants. It's fine to make
a class more generic, but when it's never used, all it does it slow
things down.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@3016 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2014-10-26 00:40:27 +00:00
stephena 05f455789e Changing banks in the DASH debugger tab is now working.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2968 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2014-07-31 17:05:21 +00:00
stephena af254b3d85 Fixed DASH bug when changing banks; the debugger didn't recognize the change,
and hence didn't re-disassemble.

Fixed long-standing bug in the debugger disassembly; addresses marked as $F000
(or equivalent) were never being highlighted in the disassembly view.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2967 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2014-07-31 15:54:14 +00:00
stephena cced0aef33 The DASH debugger tab now correctly shows the state of all banks/segments
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
2014-07-29 22:37:17 +00:00
stephena 21eff3b800 First version of DASH debugger tabs. The bankswitching tab is still a WIP.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2964 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2014-07-29 00:29:02 +00:00
stephena 9f172cbb42 Fixed potential bug in Cartridge API; renamed bank() to getBank(),
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
2014-07-28 13:40:37 +00:00
stephena 82ef198585 Fixed DASH scheme to work according to spec; it now works with the
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
2014-07-26 20:32:33 +00:00
stephena 2f4a3e7966 Cleaned up the Cartridge::bankXXX API. Carts which are non-bankswitched
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
2014-07-24 17:15:28 +00:00
stephena ef183beab7 Slight cleanup of the System::PageAccess API. Since all c'tor calls will
*always* pass in 0,0,0 for the various bases, it is redundant to pass that
data in on each invocation.  So now the c'tor does it automatically.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2959 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2014-07-24 16:24:27 +00:00
adavie c83b8f7d7e Fixed RAM crash. I had neglected to allocate RAM after 'myImage' ROM section. Whoops. Now passes my very simple write stuff to a few locations, and read back.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2956 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2014-07-24 11:41:19 +00:00
stephena 5c75ff1c15 Finally added a large patch from SpiceWare which adds an extended
cart RAM tab to the debugger.  This is tailored to each respective
cart bankswitch type, allowing much more information to be shown than
you'd see in the normal RAM area.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2921 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2014-06-13 16:28:28 +00:00
adavie d0092580e0 Bankswitching for ROM banks now working OK.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2911 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2014-06-06 23:29:00 +00:00
adavie 68c3c42254 first "working" DASH code
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
2014-06-06 14:52:10 +00:00
adavie f7f80ff05b fixed shift for ROM bank size
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2907 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2014-06-04 15:29:51 +00:00
adavie f99afe12dd rewrite 3E/3F functionality and optimal usage of ROM when RAM blocks overwrite.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2906 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2014-06-04 14:29:33 +00:00
adavie 053ce36518 fixed a minor bank usage init inconsistency
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2903 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2014-06-03 21:21:11 +00:00
adavie abdd770e38 Adjusted bank() and bankCount() functions according to advice from SA.
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
2014-06-03 21:17:54 +00:00
adavie 40c8c81245 autoformatted. still stabilising to stella standard.
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
2014-06-03 13:53:49 +00:00
adavie 6d6dd7632f modified poke to handle the new bank encoding (a single byte, with the RAM/ROM bit encoded).
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2899 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2014-06-03 13:04:35 +00:00
adavie 009b36bd5c Modified for a single hotspot, as the bank switching is encoded in the value written to the bank address anyway.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2897 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2014-06-03 12:05:00 +00:00
stephena e81f2b0ffd Added preliminary support for DASH bankswitching scheme by A. Davie.
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
2014-06-02 20:41:19 +00:00