Commit Graph

2963 Commits

Author SHA1 Message Date
Stephen Anthony 14567207ff Fix minor warnings that come up in g++ and not clang, and fixes for which cause warnings in the other compiler. 2019-03-09 18:01:38 -03:30
Fabrice Fontaine 74450028fc undef PAGE_SIZE
PAGE_SIZE is sometimes already defined by the toolchain so undef it:

/home/naourr/work/instance-3/output/host/bin/x86_64-linux-g++ -MMD -MF "src/debugger/.deps/CpuDebug.d" -MQ "src/debugger/CpuDebug.o" -MP -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -Os   -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -x c++ -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-multichar -Wunused -fno-rtti -Woverloaded-virtual -Wnon-virtual-dtor -std=c++14 -fomit-frame-pointer -D_GLIBCXX_USE_CXX11_ABI=1 -DUNIX -DBSPF_UNIX -DWINDOWED_SUPPORT -DSOUND_SUPPORT -DDEBUGGER_SUPPORT -DJOYSTICK_SUPPORT -DCHEATCODE_SUPPORT  -Isrc/emucore -Isrc/common -Isrc/common/tv_filters -Isrc/gui -Isrc/emucore/tia -Isrc/emucore/tia/frame-manager -I/home/naourr/work/instance-3/output/host/x86_64-buildroot-linux-musl/sysroot/usr/bin/../../usr/include/SDL2 -D_REENTRANT -Isrc/unix -Isrc/debugger -Isrc/debugger/gui -Isrc/yacc -Isrc/cheat -c src/debugger/CpuDebug.cxx -o src/debugger/CpuDebug.o
In file included from /home/naourr/work/instance-3/output/host/x86_64-buildroot-linux-musl/sysroot/usr/include/limits.h:8:0,
                 from /home/naourr/work/instance-3/output/host/opt/ext-toolchain/x86_64-buildroot-linux-musl/include/c++/7.4.0/climits:42,
                 from src/common/bspf.hxx:28,
                 from src/debugger/CartDebug.cxx:18:
src/emucore/System.hxx:64:29: error: expected unqualified-id before numeric constant
     static constexpr uInt16 PAGE_SIZE = (1 << PAGE_SHIFT);

Fixes:
 - http://autobuild.buildroot.org/results/22a9b009749af2a0862750a1fb2b2dc7167cd589

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
2019-03-09 17:02:47 -03:30
Stephen Anthony a5ca6b8ca5 Start of purging 'Display_Height' from the codebase.
- We've already removed it from the UI, now it's removed from consideration altogether
- For now, NTSC ROMS use 240, PAL 250; this will change when we get aspect ratio working
2019-03-09 16:27:33 -03:30
Stephen Anthony 91c98ceed2 Converted another plain enum to 'enum class'. 2019-03-09 16:02:43 -03:30
Stephen Anthony 51981d633d When compiled for R77, use 'minimal_ui' mode. 2019-03-09 14:35:22 -03:30
Stephen Anthony fa59b6b9d2 Updated R77 audio settings. 2019-03-09 13:23:07 -03:30
Stephen Anthony 374a318556 More R77 improvements.
- Don't allow ROM launcher to go above '/mnt/games'
- Remember 'lastrom' selected in ROM launcher
2019-03-09 12:48:39 -03:30
Stephen Anthony f508ca2634 First pass at porting R77-specific changes to mainline.
- more work is required here, since I'm unable to test on a real R77 yet
- changes will also be required in the manually generated config.mak
2019-03-09 12:22:33 -03:30
thrust26 9b6cae5684 Minor fixes for 3E+ 2019-03-05 20:22:08 +01:00
Stephen Anthony 61828ac695 Don't create an empty 'stella.pro' file when possible.
- Not a big deal, but several people are complaining when 'ghost' files are created
- If file doesn't already exist and there is nothing to add, simply don't create one
- Alternatively, we should delete the file if it's zero-sized, but that requires changes to FSNode.
2019-03-04 20:12:21 -03:30
Stephen Anthony 9f6b91cff6 Completely remove OSystem/FrameBuffer/Settings dependency on AVox/SaveKey.
- Added a new callback that enables sending messages back to the parent (Console)
2019-03-03 22:03:44 -03:30
Stephen Anthony 3b15f8da5d Move SerialPort declaration/instantiation directly into AtariVox.
- This is the only class that uses it, so it makes no sense for OSystem to even care about it
2019-03-03 21:30:53 -03:30
Stephen Anthony 784793cae3 Fix compile warnings from clang8; this class still needs more work though. 2019-03-03 15:18:58 -03:30
Stephen Anthony 8856789438 Fixed minor compile error in Linux. 2019-03-02 15:28:00 -03:30
thrust26 21da4a6388 move ROM path selection into UIDialog
deleted ConfigPathDialog class (TODO: update non VS project files)
2019-03-02 19:04:18 +01:00
Stephen Anthony 7bd355d759 Fix another warning from clang8.
- This one isn't serious at all, but my OCD doesn't allow any warnings to pass :)
2019-03-02 12:17:07 -03:30
Stephen Anthony abc3b3a32b Fix warnings generated by clang 8.
- Several more still exist, and are mostly related to C-style code
- It has long been my intent to remove as much C-style code as possible
2019-03-02 12:06:08 -03:30
Christian Speckner d04b5dd64b More inlining for performance. 2019-03-02 00:08:22 +01:00
Christian Speckner 2a9bfd6b23 Optimizations to TIA movement mode. 2019-03-01 23:35:52 +01:00
Christian Speckner 2b19f4ab5e Use ystart / layout autodetection and real FrameManager in profiling run. 2019-02-28 23:56:02 +01:00
Christian Speckner ac398ac31b Profiling. 2019-02-27 23:41:08 +01:00
Christian Speckner 1ba1332501 Fix fallout from rebase. 2019-02-27 22:44:11 +01:00
Christian Speckner 05260ca006 More refactoring: remove dependency of System on OSystem. 2019-02-27 22:40:25 +01:00
Stephen Anthony b93c95e041 Updated VS project for new profiling classes. 2019-02-26 22:23:22 -03:30
Stephen Anthony e7169ac010 Completely removed OSystem dependency for Cart classes. 2019-02-26 21:37:35 -03:30
Stephen Anthony 61cf68cb98 Move `getTicks()` from OSystem to TimerManager.
- This allows OSystem dependency to be removed in a few places (WIP).
- It more properly belongs in TimerManager, which has other functionality related to std::chrono.
- Historically this was a virtual method in OSystem, since different ports implemented it differently.  Now that we use proper C++11 code, it doesn't need to be there anymore.
- Changed from a virtual call to a static call, so it's probably even a little faster.
2019-02-26 19:20:28 -03:30
Christian Speckner 85acaef8cd Refactoring: remove dependency of TIA and M6532 on Console. 2019-02-26 23:43:22 +01:00
Christian Speckner 806045cb1c Open ROMs for profiling, refactoring. 2019-02-26 22:46:54 +01:00
Christian Speckner 58d7846f6b Profiling CLI. Wip. 2019-02-25 23:56:57 +01:00
Christian Speckner 6709b43f9c Remove (u)Int32 vs. (u)Int64 for R77. 2019-02-25 23:54:49 +01:00
thrust26 37afed9778 Merge branch 'master' of https://github.com/stella-emu/stella 2019-02-25 19:50:47 +01:00
thrust26 a251ccf3d6 another small unsafe optimization 2019-02-25 19:50:33 +01:00
Stephen Anthony ae589e1655 Some fixes to last commit
- if autodetection fails, we still want to see what was set in properties
- if type is not set to 'AUTO', we don't want to autodetect at all
2019-02-25 09:31:14 -03:30
Stephen Anthony f15d1ec7a5 Fixed crash in ROM launcher when openROM failed (typically on 0-byte file). 2019-02-25 09:17:06 -03:30
thrust26 d716f42b5c one small unsafe optimization for register 15 2019-02-25 11:36:42 +01:00
Stephen Anthony 42f9fc88f1 Fixed macOS compilation
- Like Windows, the 'basedir' stuff isn't implemented yet
2019-02-24 20:03:29 -03:30
Stephen Anthony c5099cf292 Windows port compiles again, but 'basedir.txt' functionality removed
- Still need to work on '-basedir' and '-baseinappdir'.
2019-02-24 19:50:30 -03:30
Stephen Anthony 88afab2d22 More restructuring of the OSystem and derived class interaction
- Each derived class no longer calls methods from the base class
- The base class now directly queries the derived class with a pure virtual method, making sure it is called
- Implemented 'basedir' commandline argument for Linux

Windows and macOS currently won't compile.  I'll work on those next.
2019-02-24 19:14:55 -03:30
thrust26 28d1113523 Thumbulator::fetch16 can fetch only ROM when optimized 2019-02-24 14:39:52 +01:00
thrust26 6f94174989 Merge branch 'master' of https://github.com/stella-emu/stella 2019-02-24 09:24:11 +01:00
thrust26 bb3075947b segfault Stella protection added
some more small optimizations (fetch32 removed)
2019-02-24 09:23:57 +01:00
Stephen Anthony d5180ba649 Improve variable/method naming in Settings class. 2019-02-23 17:07:50 -03:30
Stephen Anthony 032b08cca1 Fixed compilation errors in macOS. I still need to think about the Settings stuff, though. 2019-02-23 16:02:13 -03:30
Stephen Anthony 814977e968 Cleaned up Settings API, and moved to C++ maps instead of vectors. 2019-02-23 15:21:11 -03:30
thrust26 d188b5024f one more missing optimization 2019-02-23 19:02:25 +01:00
thrust26 b32d3eba49 oops 2019-02-23 16:09:39 +01:00
thrust26 486494eb7a defined UNSAFE_OPTIMIZATIONS in Thumbulator 2019-02-23 16:09:00 +01:00
thrust26 bac5a86832 minor Thumbulator optimizations and code cleanup 2019-02-23 12:05:53 +01:00
thrust26 9910398be8 added profiling targets 2019-02-23 12:03:21 +01:00
thrust26 e245655747 Revert "optimized Thumbulator.cxx"
This reverts commit 9a09675e55.
2019-02-22 20:11:19 +01:00
thrust26 38366b65bb optimized complex conditional branches in Thumbulator (affects ~5% instructions) 2019-02-22 14:50:52 +01:00
Stephen Anthony 324ba22180 Updated comments. 2019-02-21 22:18:46 -03:30
Stephen Anthony 130fcf1dfc Fairly large refactoring of Settings class
- Completely separate Settings and OSystem; the former no longer uses the latter at all
- Moved separate Settings methods directly into that class, exposing less info outside the class
- Reworked loading/saving config files; this may break macOS port (not tested yet)
- Next thing TODO is convert Settings class to use map instead of vectors
2019-02-21 21:55:08 -03:30
thrust26 9a09675e55 optimized Thumbulator.cxx 2019-02-21 22:56:18 +01:00
thrust26 330f4d8f29 mini project update 2019-02-21 17:38:28 +01:00
Stephen Anthony 904821cff9 Refactoring of settings load/save functionality
- commandline parsing is now done in main function
- loading of settings is handled by OSystem
- settings that are used only in main are not accessible globally
- beginnings of converting Settings class to use map instead of linear arrays
2019-02-20 23:43:29 -03:30
Christian Speckner 092c32cda5 Always reserve one thread for emulation. 2019-02-21 00:58:00 +01:00
Stephen Anthony 8808f7b5e0 Check in WIP on config paths before I screw something up (already happened multiple times). 2019-02-20 14:06:39 -03:30
Christian Speckner e80e15538b Thumbulator optimizations.
Pre-decode ROM image and turn instruction dispatch into a switch.
2019-02-20 00:32:48 +01:00
Stephen Anthony 9735806b2f Partially revert commit for #368; we need more work before this can be enabled.
Fixes issue with fullscreen TIA image disappearing.
2019-02-18 18:17:08 -03:30
Christian Speckner f511f9fbe7 Use and alternate between two textures for TIA image.
* Avoids blocking if the texture is still locked in the rendering pipeline
      and fixes framerates on the R77.
2019-02-18 21:17:16 +01:00
thrust26 2d0221ae1f improvement for hardcoded keys in Inputdialog 2019-02-18 20:20:14 +01:00
Stephen Anthony 8f800d97b9 First pass at cleaning up the various config file location mess
- only 'romdir' is configurable; the rest are now always under the 'basedir'
- next step is to allow 'basedir' to be configurable, and optionally use the APP dir
- ConfigPathDialog dialog is now almost empty (only contains romdir), so perhaps this can move elsewhere
2019-02-16 15:26:24 -03:30
Stephen Anthony 90e6cfa26b Fixed minor compile warnings in clang
- method with same name but different parameter mirroring one in base class
- missing newline, etc.
2019-02-16 12:10:52 -03:30
thrust26 3c6b8339e1 a bit controller detection refactoring 2019-02-16 11:46:42 +01:00
thrust26 9580385f21 2nd push for last commit 2019-02-15 23:47:33 +01:00
thrust26 e81326eefb auto detect controller in GameInfoDialog when started from Launcher 2019-02-15 23:46:09 +01:00
thrust26 9fba356d8b RomInfoWidget auto detects controllers and displays results 2019-02-15 22:19:19 +01:00
thrust26 ccee7e4dc6 enable "Swap Paddles" when paddles are auto detected 2019-02-15 19:41:55 +01:00
thrust26 e3d40f9285 corrected controller labels in GameInfoDialog/Controller 2019-02-15 18:29:35 +01:00
thrust26 83636b9791 updated Stella.pro for some of my own games 2019-02-15 17:58:47 +01:00
thrust26 2cc035e4eb improved keyboard controller detection
small doc update
2019-02-15 16:29:13 +01:00
Stephen Anthony f94fd34f99 Updated macOS project files to Xcode 10, fixing any remaining warnings. 2019-02-14 19:07:05 -03:30
Stephen Anthony 7c88c372ac Fixed negative values shown as positive in debugger (fixes #414). 2019-02-14 18:32:23 -03:30
thrust26 481c63f980 defined default hotkey for sound on/off 2019-02-14 19:01:21 +01:00
Thomas Jentzsch 40e12f0465 Merge branch 'master' of https://github.com/stella-emu/stella 2019-02-14 18:49:04 +01:00
Stephen Anthony 6d550793f8 Fix minor compile warning in clang. 2019-02-14 12:02:13 -03:30
Thomas Jentzsch 7215f2bbeb changed volume hotkey handling
changing volume also enables sound
changing phoshor also enables phosphor mode
2019-02-14 11:07:17 +01:00
Thomas Jentzsch fa66711c8a moved SaveKey detection to a safer spot 2019-02-14 08:46:50 +01:00
Thomas Jentzsch 6bb4d67efd Merge branch 'master' of https://github.com/stella-emu/stella 2019-02-14 08:40:54 +01:00
thrust26 b5fce21b2f implemented mute Hotkey (TODO: default key)
small improvement for Amiga mouse detection
minor Windows project file fix
2019-02-13 20:03:58 +01:00
Thomas Jentzsch a0ab78fcfc fixed Windows project file 2019-02-13 14:45:04 +01:00
thrust26 9857fa888b improve trackball controller detection 2019-02-12 22:18:19 +01:00
thrust26 8855804635 improved SaveKey detection 2019-02-12 19:24:36 +01:00
thrust26 3c2549d348 slightly improved Genesis detection
corrected tab widgets in GameInfoDialog
2019-02-11 23:02:08 +01:00
thrust26 a4456e6af8 improved controller detection and added Genesis
adapted GameInfoDialog to controller detection
moved detection from OSystem to Console
2019-02-11 22:10:30 +01:00
Stephen Anthony 854a891a36 Minor fixes for compile warnings/errors in Linux. 2019-02-11 11:36:13 -03:30
thrust26 b6b5930a2d Merge branch 'master' of https://github.com/stella-emu/stella 2019-02-11 15:53:07 +01:00
thrust26 c1067fde83 first shot at automatic controller detection 2019-02-11 15:52:51 +01:00
Christian Speckner 1d5ff5322b Retron77: use 32bit integers everywhere for performance. 2019-02-10 22:40:58 +00:00
Christian Speckner 13cedefc8f Fix build without debugger support. 2019-02-10 21:59:23 +00:00
Stephen Anthony 9d31d4a519 Fixed 'F8' autodetection to be a little more robust. 2019-02-10 10:39:54 -03:30
Stephen Anthony 0c8478d842 Various fixes to 'evdev-joystick'
- Added extra udev rules from Tom Hafner (2600-daptor)
- Make code compile without any warnings under maximum clang settings
2019-02-07 21:11:36 -03:30
thrust26 25eb9cd4ab cosmetic change (labeled A/B difficulties) 2019-02-03 12:26:46 +01:00
Stephen Anthony a1342afe34 Fixed bug in peek handling for 2K and 4K ROMs.
This fixes cheatcode handling for those schemes.
2019-01-27 13:13:08 -03:30
thrust26 c3671ac095 each tab can now have a defined width (see DeveloperDialog) 2019-01-26 23:34:12 +01:00
thrust26 532b629a93 redesign of TIA options 2019-01-17 09:08:31 +01:00
thrust26 46f7668216 added missing oddball TIA options 2019-01-16 17:58:02 +01:00
thrust26 bd0984fc98 renamed player inverted HMOVE phase clock option, methods and keys
added missile inverted HMOVE phase clock option
2019-01-14 22:52:30 +01:00
thrust26 fad141b5de some code cleanup 2019-01-13 09:58:26 +01:00
thrust26 0449e24146 defined various TIA types in developer options 2019-01-12 15:51:38 +01:00
thrust26 da78065996 fixed view of disabled checkbox 2019-01-12 12:14:14 +01:00
thrust26 fee5f57179 disabled some developer options for 'Player settings'
updated doc and changes
2019-01-12 12:00:35 +01:00
thrust26 f80f291cec minor optimizations and formatting 2019-01-10 21:08:12 +01:00
thrust26 cadfbdd767 fixed changing debug colors status without confirmation 2019-01-06 20:13:04 +01:00
thrust26 e2dabba309 updated serializers
added some game names to new TIA settings
2019-01-06 18:04:19 +01:00
thrust26 da269fefed added TIA tab to developer options with 5 options for oddball TIAs
started disabling some options for player settings
2019-01-06 13:48:53 +01:00
thrust26 b5de674c58 added missing prefixes 2019-01-05 23:01:21 +01:00
thrust26 11c90f296e reverts unwanted change 2019-01-05 16:07:35 +01:00
thrust26 5e89b4d02b started to eliminate magic numbers in new TIA code 2019-01-05 15:34:19 +01:00
Stephen Anthony 2806c0da58 When we update/change serialization, we need to update the header too. 2019-01-04 19:52:08 -03:30
thrust26 5fd3c017f6 added missing serializing 2019-01-05 00:07:45 +01:00
thrust26 f4de083a2b Extra playfield delay added as Developer option. 2019-01-04 14:18:35 +01:00
thrust26 3f9e82ab79 some minor typo fixes/alignments 2019-01-03 22:46:35 +01:00
thrust26 9a8afd5e7b preliminary extra buttons for CommandDialog 2019-01-03 09:53:13 +01:00
thrust26 9e81ad4c13 enabled TimeMachine by default and increased defaults 2019-01-02 10:53:46 +01:00
Stephen Anthony ebfff85cb6 Fixed nasty C-style string conversion to upper/lower-case. 2019-01-01 15:22:30 -03:30
Stephen Anthony 3e85ae4d47 Bumped version number. 2019-01-01 12:32:39 -03:30
Stephen Anthony 275666b0af The annual copyright year update. 2019-01-01 11:35:51 -03:30
thrust26 fdea8aa82e Made console type change immediate 2019-01-01 14:35:14 +01:00
thrust26 1f64eecf4e fixed #401
added 7800 related messages for color/pause switches
2019-01-01 13:49:09 +01:00
thrust26 dc978b041a removed PADDLES_IDIR option (superfluous)
fixed properties for 'Dancing Plate (Unknown) (PAL)'
2018-12-31 12:23:23 +01:00
thrust26 0b77a5e140 Merge branch 'master' of https://github.com/stella-emu/stella 2018-12-30 18:47:50 +01:00
thrust26 e2a0fe9ffb Dialogs do remember their wanted size, so that OptionsDialog's dialogs are recreated only when necessary. 2018-12-30 18:47:35 +01:00
Stephen Anthony ae69545056 Classes that have unique_ptr in headers can't also have defaulted d'tors.
I haven't figured out exactly why this is yet, but compilation fails in gcc and clang otherwise.
2018-12-30 10:23:16 -03:30
thrust26 b1811f5a9f Dialogs remember and restore their previous focus when being reopened 2018-12-30 11:13:36 +01:00
thrust26 33f7c5b7e8 Remember and restore focus for all tabs of a Dialog 2018-12-30 10:37:59 +01:00
thrust26 cd8d7498d3 Dialogs are only recreated if their size is LARGER than the current framebuffer 2018-12-30 10:29:20 +01:00
thrust26 c1d5020ea0 Partial fix for #399, sometimes(!) the initial tab has the correct widget focused 2018-12-29 23:30:12 +01:00
thrust26 c5c3014819 Merge branch 'master' of https://github.com/stella-emu/stella 2018-12-29 23:22:10 +01:00
thrust26 7dd4242e63 some code improvements and fixes for #326 2018-12-29 23:21:56 +01:00
Stephen Anthony 04030757f0 Updated properties to RomHunter v15. 2018-12-28 17:55:15 -03:30
thrust26 b5f5ddefad (mostly) implemented #326
TODO: use empty buttons
2018-12-28 17:42:19 +01:00
thrust26 84300914cc fixed #397
Added SET_LAST_POKE for STA/STX/STY using absolute addressing (frequently used wasting 1 cycle) and PHA.
2018-12-28 12:36:00 +01:00
thrust26 6987c06337 reorganized GameInfoDialog 2018-12-28 11:17:56 +01:00
thrust26 fe810826ca Implemented #369 2018-12-27 21:29:43 +01:00
thrust26 f86ba39c88 initial update for #368 2018-12-27 11:47:41 +01:00
Stephen Anthony e4a1ba50e6 Final updates for 6.0 release (we hope). 2018-12-22 11:46:54 -03:30
Christian Speckner b466393712 x kSamples -> xk samples 2018-12-21 08:54:45 +01:00
Christian Speckner 098a2a5fb1 Parse strings and float in the same locale in which they were serializwd. 2018-12-20 23:48:52 +01:00
Stephen Anthony b40a614cee Rework `Cartridge::initializeStartBank()` to require a specific starting bank.
Randomization and reading from properties still work too.
Fixes issues in several ROMs that essentially were getting bank randomization even though it was disabled.
2018-12-20 18:37:27 -03:30
Stephen Anthony 497bfc92db Added ROM properties for a few ROMs included with the R77. 2018-12-19 17:02:30 -03:30
Stephen Anthony 9c1b9ae00e Fix bug when taking snapshots in 1x mode; once started, it never stopped. 2018-12-19 14:26:15 -03:30
Stephen Anthony 933c4d7d3c Mac-related files/folders are now using 'macOS' naming scheme. 2018-12-19 11:46:09 -03:30
Stephen Anthony 6a17467e99 Slight space savings for load/save state. 2018-12-19 10:46:16 -03:30
Stephen Anthony ae3df81967 Use 'SDL_GetDisplayUsableBounds' if available (gives dimensions with dock/taskbar taken into account)
- This still needs some testing on Windows/OSX, so docs aren't updated yet
- If it ends up not working, I will '#if 0' it for the 6.0 release.
2018-12-18 23:07:34 -03:30
nanochess a92cf466cb Desired desktop resolution minus dock for Mac OS X (requires SDL-2.0.5 or higher) 2018-12-18 23:01:13 -03:30
Stephen Anthony f33ac273dd Remove debugging code. 2018-12-18 22:00:01 -03:30
Stephen Anthony 269fc7bc19 Updated OSX project file for new classes. 2018-12-18 21:53:40 -03:30
Stephen Anthony 9c64a8fdad Update libpng to latest version. 2018-12-18 21:30:34 -03:30