Commit Graph

89 Commits

Author SHA1 Message Date
Stephen Anthony 298eea04cf Fix Pitfall II not working (fixes #661).
Note that I've refactored all the constructors to prevent this issue from happening again.
It already happened with 3E+/3E, and now DPC/F8.  Also, FA2/FA looked suspicious.
2020-06-10 16:59:27 -02:30
Stephen Anthony 5c879d4a48 Fixed interaction with ideal ROM size between 3E and 3E+. 2020-06-09 15:56:31 -02:30
Stephen Anthony e497405216 Make sure 3E+ ROMs are always internally sized as a multiple 1024 bytes. 2020-06-09 12:32:14 -02:30
Stephen Anthony 5f2fbc8618 Fix some common errors causing crashes when ROM sizes aren't what we expect (fixes #654). 2020-06-07 14:49:27 -02:30
thrust26 9685887833 fixed 3E bankswitching 2020-05-03 08:45:15 +02:00
thrust26 646f2a1daa fix some Clang-Tidy warnings
small bugfix for CartFA2
2020-04-16 09:40:15 +02:00
thrust26 a823fad32c refactored Cart3E+ 2020-04-15 20:59:06 +02:00
thrust26 00e67f1a51 add RAM bank support to CartEnhanced
refactor Cart3E
differentiate between ROM and RAM banks (TODO: check debugger)
2020-04-15 14:53:05 +02:00
thrust26 cf9c109681 Merge branch 'master' into refactor/cart 2020-04-13 19:35:52 +02:00
thrust26 79ea4c5a67 fix 3E disassembly (bankSize() override) 2020-04-13 19:34:34 +02:00
thrust26 56cbc4dc6f intermediate commit for refactoring 3E (something got broken in disassembly before) 2020-04-13 18:05:44 +02:00
Stephen Anthony defeee600e A little more optimization to 3E scheme. 2020-04-02 20:44:13 -02:30
Christian Speckner 29fcc9644f 3E: improve debugger handling for writes to ROM space. 2020-04-02 21:18:56 +02:00
Christian Speckner b93a07dcfa 3E: fix invalid access on write to ROM. 2020-04-02 21:14:49 +02:00
thrust26 e91bc140cd fix poke access counter offset
add a few more bank switching types
2020-04-02 12:03:35 +02:00
thrust26 8b550a3a11 differentiate ROM read/write access (done for Atari standard and 3E bankswitching) 2020-04-01 22:14:22 +02:00
thrust26 96131e2f7f first shot at #586 (Heat Map) (TODO: differentiate cartridge read/write access)
add Cartridge::bankSize method (TODO: varying bank sizes)
add Cartridge::bankOrigin detection method (TODO: banks smaller 4K)
2020-04-01 11:06:03 +02:00
thrust26 d2fbbdbf61 rename code access into ROM access to better reflect the usage 2020-03-30 09:22:45 +02:00
Stephen Anthony 9ad47ae5f3 Updated copyright to 2020. Happy New Year to anyone reading this! 2019-12-31 13:48:56 -03:30
Stephen Anthony 54de3415ea More default initialization updates, in the process making c'tors smaller/non-existent.
I've already found a few potential bugs where instance variables weren't being initialized at all.
2019-12-29 18:36:56 -03:30
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
thrust26 9a44366f85 add option to break on RAM writes to read ports 2019-09-15 17:04:25 +02:00
Thomas Jentzsch f0ddb8caa8 partial fix for issue #537 (RAM writes to read port) 2019-09-12 11:08:26 +02:00
thrust26 279e54378d some fixes for last commit 2019-09-07 14:36:13 +02:00
thrust26 d7c4b1a7b9 Add considering addresses for current bank. This is important for types where the 4K ROM address space is segmented into smaller slices, so there can be more than one bank at a time.
This addresses #536.
2019-09-07 14:29:33 +02:00
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 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 dea62573f8 More carts converted to new RWP code. 2018-12-17 21:25:08 -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 3d879d0080 Updated copyright date to 2018. A few days early, but nobody will mind ... 2017-12-29 17:10:37 -03:30
Stephen Anthony 35624553b6 First pass at code cleanup from enabling higher levels of warnings in clang/gcc. 2017-10-11 12:23:54 -02: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 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 ed766b5bb2 Cleanup some whitespace issues.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@3254 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2016-01-23 18:16:09 +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 9e23bc3580 Some bugs indicated by running Stella through Coverity. Note that many
of these aren't actually bugs per-se, but are to follow good programming
practices.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@3234 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2015-12-05 01:30:17 +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