Commit Graph

1178 Commits

Author SHA1 Message Date
thrust26 d15690f5f1 added mirrors 2017-10-08 10:43:26 +02:00
Christian Speckner bff13fb008 Comment. 2017-10-07 19:50:29 +02:00
Christian Speckner 47f528c4d3 Inject FrameManager instance into TIA. 2017-10-07 19:48:06 +02:00
Christian Speckner a452d83b39 Coding style. 2017-10-07 18:48:02 +02:00
Christian Speckner 6aecade2c3 Dcumentation. 2017-10-07 18:26:53 +02:00
thrust26 c6593e6c58 this should be working 2017-10-07 18:25:56 +02:00
thrust26 f862e1c97d progress... 2017-10-07 14:17:34 +02:00
Christian Speckner a400238c19 Refactor FrameManager to extend AbstractFrameManager. 2017-10-07 01:41:47 +02:00
thrust26 61bf556e5b it compiles again 2017-10-06 23:06:59 +02:00
Stephen Anthony f38b40415f Minor refactoring of AVox/SaveKey classes (use delegating c'tor). 2017-10-05 20:57:02 -02:30
Stephen Anthony 9fc8b9fcc0 Fixed crash when specifying an invalid controller type on the commandline. 2017-10-04 18:35:55 -02:30
Stephen Anthony 90a6c35061 Removed ability to manually select CompuMate controllers (fixes #229). 2017-10-04 17:43:21 -02:30
Stephen Anthony d99d3a16f5 Fix crash when using CompuMate scheme but not using CM controllers.
The code now never looks at the controller type for CM ROMs, but just creates the required controllers.
This means that we no longer actually need a special CompuMate controller type anywhere in the code, since selecting it has become redundant.
2017-10-03 20:17:23 -02:30
Christian Speckner d52562975d AbstractFrameManager adjustments. 2017-10-03 23:08:14 +02:00
thrust26 cd189050ec Fixed wrong display of swapped controllers in debugger 2017-10-03 18:42:46 +02:00
thrust26 8348525f14 before cleanup 2017-10-03 16:33:33 +02:00
Stephen Anthony bec1784d18 Added infrastructure to call methods on AVox/SaveKey controllers from InputDialog.
Thomas, you will need to edit InputDialog::eraseEEPROM and finish the logic there.
2017-10-02 19:57:21 -02:30
thrust26 43e9693959 added 'echo' command to debugger prompt 2017-10-02 14:23:08 +02:00
Christian Speckner d220888474 Abstract common frame manager interface. 2017-10-02 00:52:56 +02:00
Stephen Anthony 924e92214f Fixes for several minor issues in the last few commits:
- move files from src/windows to proper location
- formatting fixes to match style in other files

This fixes all compile issues in Linux; still TODO is fix Windows and OSX.
2017-10-01 16:23:53 -02:30
thrust26 00cb377c0a finalized trackball widgets 2017-10-01 13:06:34 +02:00
thrust26 4fe9317ad2 Refactored FlashWidget, SaveKeyWidget and AtariVoxWidget 2017-10-01 12:00:07 +02:00
thrust26 f77cd9ab06 Updated VS project file, reworked SaveKey/AtariVox widget, started with implementing trackball widgets for debugger (AmigaMouse working) 2017-10-01 09:52:39 +02:00
thrust26 ecd8d0ff22 Fixed and refactored controller selection 2017-09-30 12:03:45 +02:00
thrust26 a92ceed195 SaveKey/AtariVox detects EEPROM areas accessed by ROM and allows erasing only these in the debugger. 2017-09-29 20:12:41 +02:00
Christian Speckner 7965b84553 Merge branch 'master' into refactoring/frame_manager 2017-09-27 23:27:44 +02:00
Christian Speckner b3228aaad7 Work around g++ bug on OSX. 2017-09-25 22:06:21 +02:00
Stephen Anthony e7b732b115 Allow access to current frame count from TIA; minor formatting cleanup. 2017-09-23 10:20:36 -02:30
thrust26 ba764fdc06 added _cyclesLo and _cyclesHi to debugger prompt 2017-09-19 20:49:48 +02:00
Stephen Anthony aed2945a56 First pass at continuous state saving in emulation mode, accessible by the debugger:
- Toggle this with Alt-r.  When enabled, state is saved each frame to memory (up to 100 slots)
- Upon entering the debugger, rewind is immediately available, allowing to rewind (for example) back past a breakpoint
- Testing is definitely required.
2017-09-18 20:29:52 -02:30
Stephen Anthony 628f981121 Various cleanups to documentation and snapshots:
- Changelog updated for recent fixed from Thomas J.
- Minor formatting fixes in TIASurface class
- Updated documentation for 'ss1x' mode; snapshots now have only scaling disabled, not effects removed
- Updated snapshots for change in ss1x, and also ran them all through pngcrush, to optimize size
2017-09-18 19:50:37 -02:30
thrust26 5fe51112dd fixed #214, now "usemouse.always" is checked too 2017-09-18 20:48:49 +02:00
thrust26 ed47816303 fixed issue #201 with new reRender method
in phosphor modes buffers are simply copied form phosphor buffer, else the screen is rendered again
2017-09-18 15:49:30 +02:00
thrust26 11367e6a17 1x snapshots now support all 4 phosphor/Blargg combinations 2017-09-18 09:27:51 +02:00
thrust26 8aad8afda7 fixed 1x snapshot problem when phosphor was disabled 2017-09-17 23:58:52 +02:00
thrust26 b3eaaac5ed enable phosphor and TV effects for 1x snapshots 2017-09-17 23:38:59 +02:00
Stephen Anthony f442fae890 Fixed graphical corrution when saving snapshots in 1x mode
- Phosphor is now also disabled in this mode
2017-09-17 16:46:56 -02:30
thrust26 5b0965ad6c Fixed the fix. 2017-09-17 17:28:03 +02:00
thrust26 f0ced8ae4c Fixed 1x snapshot bug with phosphor #222 2017-09-17 17:20:48 +02:00
Christian Speckner c682dd1c27 Microoptimization: avoid function dispatch overhead. 2017-09-17 14:12:37 +02:00
thrust26 7d72265088 added TIA access tracking
improved ZP-RAM/Stack tracking
2017-09-17 10:35:45 +02:00
Christian Speckner 8485b0820f Collisions are disabled during vblank. 2017-09-17 01:35:01 +02:00
thrust26 cfa40722b9 updated poke(), now CPU emulation provides the flags
improved ZP/stack access tracking and output
added ZP code tracking
2017-09-16 22:37:19 +02:00
thrust26 3bf809a137 refined access tracking for ZP, Stack and IO addresses
improved RIOT RAM output in Distella
2017-09-16 17:38:37 +02:00
Stephen Anthony 03c1ab17fd Added access tracking to M6532 for ZP and IO addresses. 2017-09-16 10:37:42 -02:30
thrust26 7f65fad7cf preliminary implementation for ZP-RAM access tracking
extra access type flag for poke()
2017-09-16 13:48:04 +02:00
thrust26 10e6d483b1 added access tracking via poke()
code cleanup in DiStella and CartDebug
2017-09-16 08:54:32 +02:00
Stephen Anthony 7b63dc6f22 Cleanups to System class (call methods, remove debugging code). 2017-09-15 23:42:20 -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 ca69e2ed73 Refactor code and comments for TIA and RIOT 'page access' stuff. 2017-09-15 21:22:10 -02:30
thrust26 5f68b0565d 2nd part of Distella updates 2017-09-15 14:56:54 +02:00
Christian Speckner c26372da4c Dot. 2017-09-13 20:37:54 +02:00
thrust26 95b04b2baa 1st part of Distella improvements 2017-09-13 16:04:54 +02:00
Stephen Anthony 648ed74527 Oops, missed one variable in the 64-bit clock conversion. 2017-09-12 11:04:59 -02:30
Stephen Anthony 483013baa7 Make PaddleReader constants private, to guard against same variable names used elsewhere. 2017-09-09 17:28:21 -02:30
Sergio Prado 391601d238 Fix error when building with uClibc-ng for ARM
The uClibc-ng C library defines a type called R0 when compiling for ARM,
that conflits with a global variable called R0 from PaddleReader.cxx.

src/emucore/tia/PaddleReader.cxx:25:3: error: ‘constexpr const double R0’ redeclared as different kind of symbol
   R0 = 1.5e3,
   ^
/home/sprado/workspace/build/buildroot/build/stella_uclibc/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/sys/ucontext.h:42:3: note: previous declaration ‘<anonymous enum> R0’
   R0 = 0,
   ^~

So let's redefine R0 as a private member of the PaddleReader class.

Signed-off-by: Sergio Prado <sergio.prado@e-labworks.com>
2017-09-09 17:25:29 -02:30
Stephen Anthony b7bf3b79b2 First pass at a consistent default for load/saving files that don't have a
pre-defined location (ROM files and disassemblies, etc).
- Repurposed the snapshot load/save folders by changing OSystem::defaultSnapLoadDir to OSystem::defaultLoadDir, and similar for the save dir
- In Windows, this directory will now be 'Documents\Stella', while in Linux/OSX it will be $HOME
- Testing still required for Windows and OSX; only Linux is confirmed to work for now
2017-09-09 15:06:21 -02:30
Stephen Anthony 9190943534 Added debugging output for FSNode. 2017-09-09 14:02:36 -02:30
Stephen Anthony 823c693a9e Final updates for recent 64-bit cycles refactoring. 2017-09-08 18:52:03 -02:30
Stephen Anthony c4d04ffe26 CartCDF and friends refactoring (have similar functionality):
- rework music fetcher code; there can never be a negative cycle count
- use get/put double Serializer methods for doubles.
2017-09-08 18:36:06 -02:30
Stephen Anthony ebb8725126 Refactor System::myCycles to be 64-bit instead of 32-bit.
- The cycles counter is now essentially monotonically increasing (ie, we never need to worry about it going backwards and giving a negative difference, simplifying a lot of code
- There are now reset() methods in all places that keep track of system cycles, but they are used for a full reset only; not called each frame like before (which had to be done to prevent overflow).
2017-09-08 11:29:30 -02:30
Stephen Anthony eafe102daa Refactor StateManager and RewindManager for eventual use outside debugger. 2017-09-03 23:02:15 -02:30
Christian Speckner 5ca9b7912b Fix a very minor timing glitch in paddle emulation. 2017-09-02 00:53:08 +02:00
Christian Speckner 2757c906cb More TIA documentation. 2017-09-02 00:46:54 +02:00
Stephen Anthony c2302c2e71 Cart::getImage refactoring: use uInt32, since sizes are never negative. 2017-09-01 10:23:17 -02:30
Stephen Anthony 754c901b5a Fix minor typos, but also a compile error (missing closing comments). 2017-08-31 22:03:41 -02:30
Christian Speckner cd390bcc5a TIA documentation. 2017-09-01 00:48:28 +02:00
Stephen Anthony 4440aabc56 Final updates for bankswitch schemes, updating documentation.
- Some schemes are not completely documented and/or implemented, and in those cases a FIXME has been added.
2017-08-31 19:21:20 -02:30
Stephen Anthony 6cf4aa4832 Further refactoring of bankswitching schemes, and removal of 'MC' scheme.
- MC is being removed, since the code has never been tested, and a test ROM has never been created
2017-08-31 15:31:27 -02:30
Stephen Anthony 31907f4be1 More peek/poke refactoring, and improved comments in bankswitching schemes. 2017-08-31 13:01:45 -02:30
Stephen Anthony 68f80f04d9 Peek/poke refactoring for next batch of bankswitch schemes. 2017-08-30 20:44:18 -02:30
Stephen Anthony a5d9550f2f First pass at cleanup of the peek/poke API from Device class:
- remove peek and poke from classes where the addressing is set up such that they aren't needed
- where possible, move from using 'myCurrentBank << 12' everywhere, to precomputing the value (perhaps a small optimization, but still valid)
2017-08-30 19:45:57 -02:30
Stephen Anthony 8cf8200908 Fixed logic error in detecting 'Alt' key.
DirtyHairy, it looks like you removed a negation and replaced it with
a positive (ie, you removed an _ifndef_, not an _ifdef_) :)
2017-08-30 19:41:16 -02:30
Christian Speckner fd85f9d0d5 Basic support for plain UNIX-style builds on OSX. 2017-08-30 23:13:07 +02:00
Stephen Anthony 2930e74333 Updated FE debugger support to allow changing banks dynamically. 2017-08-30 17:22:56 -02:30
Stephen Anthony 1358be402f Update explanation of FE scheme, and minor code optimization. 2017-08-30 16:53:00 -02:30
Stephen Anthony d37b89e2fd Oops, for Alex I used his github username, not the AtariAge one. 2017-08-30 12:00:26 -02:30
Stephen Anthony ae8304563d Updated credits for recent 'FE' research. 2017-08-30 11:52:02 -02:30
Stephen Anthony 92cd739001 Added 'Zippy the Porcupine' info to ROM properties database. 2017-08-30 11:09:06 -02:30
Stephen Anthony 3a02c54b0a Updated FE scheme to that described by the original FE patent application.
- This emulation is much simpler, and takes the scheme from being
esoteric to being a simple hotspot-based scheme
- The original patent application for the FE scheme describes in perfect
detail what is happening, and although the previous code worked, it
was complex and actually hid what was really happening.

Now that the scheme is hotspot-based, the debugger can be extended to
work better with it.  That part comes next.
2017-08-29 22:03:11 -02:30
Stephen Anthony 792421e67d Updated ROM properties database (Champ Games, mostly). 2017-08-23 22:12:40 -02:30
Stephen Anthony 52c16d604b Update TIA shadow registers for HMCLR (and code cleanup). Fixes #211. 2017-08-22 16:38:52 -02:30
Stephen Anthony 21bf401836 Commandline arguments 'holdxxx' now work correctly (fixes #209). 2017-08-22 14:15:30 -02:30
Christian Speckner 5661b245c7 Fix object positions in debugger (getting + setting), documentation. 2017-08-22 15:16:13 +02:00
Christian Speckner 8367ef9828 Documentation typo. 2017-08-20 23:57:11 +02:00
Christian Speckner 25bf4f55d6 Prevent ystart detection code from oscillating between 'fixed' and 'floating'. Documentation. 2017-08-20 23:54:04 +02:00
Christian Speckner 168c7ba201 Fix genesis controller initial state. 2017-08-20 23:39:30 +02:00
Stephen Anthony 6e55d98ad7 Fixed inconsistent Alt-p phosphor behaviour (fixes #196). 2017-08-19 19:48:41 -02:30
Stephen Anthony 48a99c6b6b Make Random class serializable, and save to state files. 2017-08-18 12:36:54 -02:30
Stephen Anthony c1f7c5c90b Fix potential app lockups when emulated CPU execution fails in the debugger. 2017-08-16 19:00:32 -02:30
Stephen Anthony 4f336eddeb Added 'threads' commandline argument, to enable/disable multi-threading.
- Still TODO is expose this in the UI, but the infrastructure is there
- For now, this defaults to off
2017-08-14 21:29:48 -02:30
Christian Speckner 6d1a306b52 Blargg and phosphor threading by Thomas Jentzsch. 2017-08-14 09:20:42 -02:30
Stephen Anthony 7a9cde3e4d CDF updates (with versioning) from Spiceware. 2017-08-14 09:11:54 -02:30
Stephen Anthony f57d69a023 Fixed reading collision of ball and playfield (fixes #189). 2017-08-13 14:43:31 -02:30
Stephen Anthony 55111c4ccb Fixed minor warning for potential uninitialized variable. 2017-08-09 22:38:39 -02:30
Stephen Anthony 1e7e4cbe20 More TIA rendering optimizations. 2017-08-08 12:11:45 -02:30
Stephen Anthony 8759f340e8 Oops, premature optimization; it broke changing phosphor blend level. 2017-08-07 18:56:13 -02:30
Stephen Anthony 1dc78a9b5b Pre-calculate phosphor colours, and remove redundant shift parameter.
This leads to nice speedups in the TIASurface::render() method.
2017-08-07 18:39:30 -02:30
Stephen Anthony 322af0fb38 Fixed code where emplace_back was being used incorrectly. 2017-08-06 13:57:09 -02:30
Stephen Anthony e2b78b6df7 Remove redundant checks for 'ramrandom'; the code is checking a boolean,
then calling a method and checking the boolean again.
2017-08-06 13:30:45 -02:30