Compare commits

..

1327 Commits

Author SHA1 Message Date
Stephen Anthony 7b5c19ff5e Fix warning from clang-tidy. 2025-04-19 16:11:51 -02:30
Stephen Anthony 709237c79c Fix minor warning from clang-20. 2025-04-19 12:59:04 -02:30
thrust26 b753f6eefa added joystick detection pattern for RubyQ 2025-03-29 21:14:17 +01:00
Stephen Anthony aaa6c15475 Updated included libpng to v1.6.47. 2025-03-17 15:21:17 -02:30
Stephen Anthony dccefede9b Fix minor warning from clang-tidy.
Test if commit is working on repo after reorg changes.
2025-02-16 13:34:58 -03:30
Christian Speckner 17652d9348 Attempt to fix MacOS CI. 2025-02-16 10:30:44 +01:00
Christian Speckner d9d4ea0ad4 Clarify licensing for PGO ROMs. 2025-02-16 10:24:53 +01:00
thrust26 d67ac42bbc enhanced duplicated local label handling (fixes #1067) 2025-02-13 19:54:43 +01:00
thrust26 60e07663d1 aligned gray PAL colors in standard palette (fixes #1066) 2025-02-09 00:18:09 +01:00
thrust26 4c8740f309 Merge branch 'master' of https://github.com/stella-emu/stella 2025-02-08 20:28:33 +01:00
thrust26 acaeed8322 added mirrors to 3E hotspots
adapted derived 3E+ so that it does not use the mirrors
2025-02-08 20:28:22 +01:00
Stephen Kitt 37e02b5a69 Detect _host_prefix and allow cross pkg-config (#1065)
stella fails to cross build from source on Unix-style platforms,
because ./configure hard codes the build architecture pkg-config and
thus fails finding libraries. It already has a bit of knowledge about
cross compilation and actually considers a _host_prefix for some
tools. Unfortunately, _host_prefix is not yet generally initialized
and it also does not prepend _host_prefix to pkg-config.

This fixes these issues.

Signed-off-by: Stephen Kitt <steve@sk2.org>
Co-authored-by: Helmut Grohne <helmut@subdivi.de>
2025-01-31 21:27:22 +00:00
thrust26 d4f3187ee0 added four more axis to joystick handlers (fixes #1063) 2025-01-17 20:10:42 +01:00
Stephen Anthony 122409e6f8 Include latest required vcruntime libs, so Stella can start again. 2025-01-02 17:49:47 -03:30
thrust26 34e4439729 fixed #1053 2025-01-01 09:50:33 +01:00
Stephen Anthony 9b0c8c18de Updated copyright to 2025. To anyone reading these logs, Happy New Year! 2024-12-31 19:25:08 -03:30
thrust26 108478aaab fixed problems with VS project file 2024-12-31 19:49:48 +01:00
thrust26 175d578c07 changed VS setting for PGO 2024-12-30 15:48:27 +01:00
thrust26 0852d72dc9 Merge branch 'master' of https://github.com/stella-emu/stella 2024-12-30 12:41:18 +01:00
thrust26 e4b4b08c46 fixed a bug where the combination of RAM banks and PlusROM would break a game (this should fix #1058) 2024-12-30 12:41:01 +01:00
Stephen Anthony 0197b406b8 Fixes for minor warnings from clang-tidy. 2024-12-29 17:25:05 -03:30
thrust26 727917773e code cleanup 2024-12-29 12:15:12 +01:00
thrust26 d4b5cf6659 eliminated cycles() method in TIA.hxx 2024-12-29 12:14:52 +01:00
thrust26 56a82682d5 started working on emulating VBLANK during VSYNC 2024-12-29 10:59:14 +01:00
Stephen Anthony 0933f1ae66 More const fixes, this time from suggestions from VS code analyzer. 2024-12-20 19:24:20 -03:30
Stephen Anthony 6dfef64461 Disable warnings from external libs (SDL) in VS code analysis mode. 2024-12-20 16:29:02 -03:30
Stephen Anthony 27b109b483 Fixed non UTF-8 chars. 2024-12-20 14:47:37 -03:30
jfroco abb92327c0 libretro: add reload/next game (#1059)
- Enable reload/next game option in Core options
- Map reload/next game action to X button
2024-12-18 11:41:12 +01:00
thrust26 682cdb0e28 added PAL60 signature check to auto detect display type (resolves #1061) 2024-12-17 23:03:57 +01:00
thrust26 146bec13ee moved loading of config and DASM list & symbols files before executing auto scripts 2024-12-15 22:29:25 +01:00
thrust26 13cf6aaacd slightly enhanced PlusROM display in debugger (keeps last send/receive now) 2024-12-13 09:33:15 +01:00
Stephen Anthony f744e34687 Fix potential uninitialized array access. 2024-12-10 21:23:05 -03:30
thrust26 ac64828880 fixed #1057 2024-12-09 16:09:54 +01:00
thrust26 f6b1d674db improved default NTSC custom palette 2024-12-09 15:24:38 +01:00
Stephen Anthony 6fe0e61332 Use constexpr. 2024-12-05 17:57:24 -03:30
thrust26 991a6b2447 Merge branch 'master' of https://github.com/stella-emu/stella 2024-12-01 09:33:20 +01:00
thrust26 ce37689720 improved 'help' command in debugger prompt (case insensitive now) 2024-12-01 09:33:09 +01:00
Stephen Anthony 18c1b44419 Fix whitespace. 2024-11-17 19:14:20 -03:30
SvOlli 09679fb228 Debian build requires libgtest-dev, but is not specified (#1049)
Co-authored-by: Sven Oliver Moll <svolli@svolli.de>
2024-11-10 20:13:54 +00:00
Stephen Anthony 41fa2922f9 Updated libpng to latest release. 2024-10-31 16:13:50 -02:30
Stephen Anthony e787941351 Updated httplib to latest release. 2024-10-31 16:07:37 -02:30
Stephen Anthony f2164a9637 Remove executable bit on data files. 2024-10-21 14:27:31 -02:30
Eric Warmenhoven 173a87f41b ios/tvos: properly set min supported version (#1048) 2024-10-21 15:30:52 +00:00
thrust26 5e6ef2eaf7 Merge branch 'master' of https://github.com/stella-emu/stella 2024-10-20 09:59:25 +02:00
thrust26 51b8b06e91 added missing "PlusROM support enabled" initialization 2024-10-20 09:59:15 +02:00
Stephen Anthony f77ddc6fee Match style in surrounding code for FileListWidget. 2024-10-19 16:54:47 -02:30
thrust26 6b982c8325 added PlusROM support developer option (fixes #1019) 2024-10-19 10:01:16 +02:00
thrust26 c9311529cb fixed #1047 2024-10-17 15:48:16 +02:00
Stephen Anthony 594380b2f9 Fix doc to match commit to webpage docs. 2024-10-17 10:21:29 -02:30
Stephen Anthony c003a21362 Update docs; macOS 10.13 is the minimum supported version. 2024-10-10 17:03:18 -02:30
Stephen Anthony ec8a8df269 For Windows build, remove *all* DLL's before install, and only install
SDL2.dll.
2024-10-07 17:05:27 -02:30
Stephen Anthony 3faee00fa7 Re-add ZIP build for Windows. 2024-10-07 16:28:50 -02:30
Stephen Anthony 02e0ff625b Fix misplaced PNG files. 2024-10-07 16:23:31 -02:30
Stephen Anthony dded9debdb Fixes from clang-tidy-19 that didn't make it for the last release. 2024-10-06 20:27:25 -02:30
Stephen Anthony 5d034cec3c Automatically remove old DLL's for Windows install.
This fixes exe not starting with latest release.
2024-10-06 20:25:59 -02:30
Stephen Anthony d55b1aec0d Update release to version 7. 2024-10-04 13:46:46 -02:30
Stephen Anthony 01f8382c81 Fix macOS build script. 2024-10-03 12:44:17 -02:30
Stephen Anthony d7e9b98951 Getting docs ready for 7.0 release. 2024-10-02 12:50:28 -02:30
Stephen Anthony 5ef3ebc287 Fix filename case. 2024-10-02 12:10:47 -02:30
Stephen Anthony 14eb4226a5 Update Xcode project to v16. 2024-10-02 11:37:05 -02:30
Eric Warmenhoven 56c18f57f9 libretro: fix gitlab CI (#1044) 2024-10-02 10:50:01 -02:30
thrust26 d91cdcb1ec minor doc fixes 2024-09-26 22:02:12 +02:00
Stephen Anthony 29a3f90648 Potential speedup in Windows FSNode::getChildren().
Worst case is it doesn't improve at all.
2024-09-18 20:42:24 -02:30
thrust26 323b6c9721 changed buttonLast type (fixes #1043) 2024-09-09 10:28:20 +02:00
thrust26 d577e0feeb Some fixes to ELF doc 2024-09-07 09:01:00 +02:00
Stephen Anthony 3f70246896 Updated docs, merged back changes made to live page. 2024-09-06 21:30:49 -02:30
thrust26 0cb4de07f3 updated screenshots for ELF developer options 2024-09-06 17:20:43 +02:00
Stephen Anthony 1c604d6dc2 Fix missing initializations. 2024-09-01 01:16:23 -02:30
Christian Speckner 357527370e Merge remote-tracking branch 'origin/late-hmove-experiments' 2024-08-31 18:49:51 +02:00
Christian Speckner 7f3a4d34bb Remove cast. 2024-08-29 20:49:24 +02:00
Stephen Anthony d4fd9292e1 libretro: Fix interfacing with paddle sensitivity. 2024-08-29 14:27:28 -02:30
Stephen Anthony bdaf399df1 Minor fixes for warnings from clang-tidy. 2024-08-28 21:51:40 -02:30
thrust26 78c77d0a9a Oops 2024-08-28 12:17:01 +02:00
thrust26 18eeef3be6 removed dynamic_cast
removed unused method in Debugger
2024-08-28 11:09:15 +02:00
Stephen Anthony 03a9e858cd Fix minor warnings from clang-tidy. 2024-08-27 22:27:53 -02:30
Stephen Anthony 63bcb3e22f Fix Unix build; minor formatting fixes. 2024-08-27 21:34:13 -02:30
Christian Speckner bca3892757 Finish state widget. 2024-08-27 22:07:00 +02:00
Christian Speckner e0dc373741 Fix race on startup. 2024-08-27 22:06:48 +02:00
Christian Speckner 005fa382cb Fix bad downcast. 2024-08-27 21:15:32 +02:00
Christian Speckner 0bc0843adc Add ellipsis. 2024-08-27 21:15:32 +02:00
Stephen Anthony 5bd4121064 Added missing class to Xcode project file. 2024-08-27 10:54:12 -02:30
Christian Speckner ff4d7f2e9c Add ELF state widget. 2024-08-26 22:48:12 +02:00
Stephen Anthony b7ffc112de Add missing class to Xcode project. 2024-08-26 14:37:51 -02:30
Stephen Anthony 50ea6fd00f Update sqlite to latest release. 2024-08-24 11:43:42 -02:30
Stephen Anthony 2dab3fab17 Updated httplib to latest release. 2024-08-24 11:35:16 -02:30
Stephen Anthony 414b7947a6 Fix misplaced files in Visual Studio project file. 2024-08-23 21:24:49 -02:30
Stephen Anthony df3ebd6fa9 Update libpng and zlib to latest releases. 2024-08-23 21:18:00 -02:30
Stephen Anthony 1d43d19e36 Update config.{guess,sub} to latest versions. 2024-08-23 20:52:04 -02:30
Stephen Anthony 9b631344bc Clean up Makefile a little, removing obsolete warning flags. 2024-08-23 20:45:49 -02:30
Stephen Anthony 50199cac48 Fixes for suggestions from clang-tidy; mostly missing initializations. 2024-08-23 20:00:44 -02:30
Christian Speckner 98be025035 Fixes, make sure that an error during reload is visible after the launcher starts. 2024-08-23 22:43:18 +02:00
Christian Speckner b5009a353a Improve handling of errors during console reload. 2024-08-22 13:10:12 +02:00
Christian Speckner 99fe920390 Avoid crash if strict mode is enabled, console is reloaded and linking fails. 2024-08-21 23:09:32 +02:00
Christian Speckner 40a6427d25 Ignore unresolved relocations unless ARM set to strict mode. 2024-08-21 22:46:58 +02:00
Christian Speckner 5d27786116 Implement ARM image export. 2024-08-21 22:36:54 +02:00
Christian Speckner 5756641f2c Fix build warning. 2024-08-21 10:32:24 +02:00
Christian Speckner a5c76df1b2 Add UI for saving ARM image. 2024-08-20 23:11:18 +02:00
Stephen Anthony 8e3cb19950 Adding missing class to VS project. 2024-08-20 14:32:48 -02:30
Christian Speckner be04d30134 Start work on ELF debug widget. 2024-08-20 18:49:47 +02:00
Stephen Anthony 14b93e7b55 Fix potential data loss in state save file. 2024-08-16 12:56:36 -02:30
Stephen Anthony 106413cd87 Fixes for minor clang-tidy warnings. 2024-08-14 18:42:37 -02:30
Christian Speckner b9ffb761b0 State loads. 2024-08-14 22:25:26 +02:00
Christian Speckner 8d5cd5d7b1 Refactoring, include "rom image" in save. 2024-08-14 21:21:37 +02:00
thrust26 65b56d691a updated doc for short late HMOVEs 2024-08-14 12:44:01 +02:00
Christian Speckner 1b83ef98f3 State saves. 2024-08-13 23:15:00 +02:00
thrust26 6b944f258d enhanced UI and settings for TIA glitch "short late HMOVEs" 2024-08-13 14:54:03 +02:00
thrust26 e6aebaa736 removed warning 2024-08-13 13:57:48 +02:00
Christian Speckner 2f4ce7668b Gobble movement pulse on clock 0. 2024-08-13 13:13:28 +02:00
Christian Speckner 17272af6a9 Sync time on bus snoops. 2024-08-12 21:53:34 +02:00
Christian Speckner ce659c3cd7 Force inline read methods, tread big endian the same way. 2024-08-12 21:37:38 +02:00
thrust26 ab36b0e725 added ELF speed constants everywhere 2024-08-11 20:00:46 +02:00
thrust26 20dd7ebeae Merge branch 'master' of https://github.com/stella-emu/stella 2024-08-11 19:48:23 +02:00
thrust26 4eb9319150 added reload requirement text for ELF ROMs 2024-08-11 19:48:03 +02:00
Stephen Anthony a3bd550cb3 Minor style/formatting fixes. 2024-08-11 14:25:39 -02:30
Christian Speckner 9fa896354f Move debug dump to CLI option, don't dump by default. 2024-08-11 15:59:13 +02:00
Christian Speckner 0e3fc4f3a6 Remove debug code. 2024-08-11 15:46:22 +02:00
Christian Speckner c01703ce1f Add R_ARM_REL32 . 2024-08-11 15:40:55 +02:00
Christian Speckner e61efe6765 Fix and hook up speed setting. 2024-08-11 15:21:47 +02:00
Christian Speckner 9bf342c998 Implement "strict mode". 2024-08-11 14:54:02 +02:00
thrust26 cf8d751105 fixed reordering bug 2024-08-11 12:50:10 +02:00
Christian Speckner 563c28dd66 Fix race condition with use-after-free in TimerManager. 2024-08-11 11:31:43 +02:00
Christian Speckner 417e37c51f Fix use-after-free on the audio thread when Console is destroyed. 2024-08-11 11:26:58 +02:00
Christian Speckner 412225bc04 Throw on invalid relocation type. 2024-08-11 11:26:58 +02:00
thrust26 14eac4bc62 ELF correctly sorted in display list 2024-08-11 09:22:45 +02:00
thrust26 507702ef25 replaced "cycles" with "MIPS" in DeveloperDialog 2024-08-11 08:33:25 +02:00
Christian Speckner f16c9b4c02 Remove unnecessary check. 2024-08-10 23:49:31 +02:00
thrust26 b4cb3c54a5 Merge branch 'master' of https://github.com/stella-emu/stella 2024-08-10 15:52:55 +02:00
thrust26 76dfe8563d Added new and changed existing ARM developer options
TODO: doc
2024-08-10 15:50:15 +02:00
Christian Speckner 74e25cb8e0 Set ELF system type and palette according to game props. 2024-08-10 12:35:52 +02:00
Christian Speckner dd046c4f7c Trap if add would switch instruction set. 2024-08-10 09:29:23 +02:00
Christian Speckner 434ff28458 Implement most of vcslib. 2024-08-08 22:45:46 +02:00
Christian Speckner d8bad1efc7 Silence warnings. 2024-08-08 21:57:14 +02:00
Christian Speckner c8ac92ee9f Work around clang idiosyncrasies. 2024-08-08 21:43:00 +02:00
Stephen Anthony e48c8fbedb Merge branch 'master' into elf 2024-08-07 18:00:26 -02:30
Stephen Anthony 3be7e6e4a7 Potential optimization for AudioChannel. Fix spelling mistake. 2024-08-07 17:58:12 -02:30
Stephen Anthony e4a665e7d2 Merge branch 'master' into elf 2024-08-07 12:14:59 -02:30
Stephen Anthony 7e8c868df7 Various fixes to latest sound code (style, clang-tidy, etc.) 2024-08-07 12:14:07 -02:30
Stephen Illingworth 5d68a1fd1c Improvement to volume sampling in TIA audio (#1038)
volume of audio channels sampled every on every tick. sum of samples is
averaged and a new sample output twice per scanline

this fixes issues with ROMs that change the volume of the audio multiple
times per scanline. for example, the experimental ROM in the following
thread now works correctly

https://forums.atariage.com/topic/370460-8-bit-digital-audio-from-2600/

(note that the ROM does not initialise the machine cleanly and so running
the emulator with developer options (random memory etc.) can cause
incorrect audio)
2024-08-07 10:18:42 +02:00
Stephen Anthony 4b86397f9c Fix narrowing issue. 2024-08-06 22:36:39 -02:30
Stephen Anthony 24309542e4 Replace C-style macros with C++ inlines using reinterpret_cast. 2024-08-06 22:07:50 -02:30
Stephen Anthony e574566116 Fix C-style rand(); use our Random class instead. 2024-08-06 21:42:29 -02:30
Stephen Anthony 190c9c01b0 Convert C-style union and malloc/free to C++ std::variant and unique_ptr. 2024-08-06 20:28:44 -02:30
Stephen Anthony ba1b163f92 Fix warning for potential incorrect rounding.
The proper approach is std::lround, but it won't be constexpr until C++23.
2024-08-06 16:52:08 -02:30
Stephen Anthony 934fa282ba Revert "Fix warning for rand(); NOLINT for now, as the proper fix isn't until C++23."
This reverts commit 5ce96542cb.
2024-08-06 16:50:33 -02:30
Stephen Anthony 5ce96542cb Fix warning for rand(); NOLINT for now, as the proper fix isn't until C++23. 2024-08-06 16:48:59 -02:30
Stephen Anthony 2d83fc0a26 Add `TIDY` clang-tidy script to tools. 2024-08-05 16:12:27 -02:30
Stephen Anthony bf9515f34d libretro: Run clang-tidy on all files. 2024-08-03 21:15:22 -02:30
Stephen Anthony 4e546f1891 Fixes from clang-tidy for the entire codebase, including header files. 2024-08-03 20:35:45 -02:30
Stephen Anthony 752219d4e2 Fix Visual Studio build for json header rename. 2024-08-02 16:11:39 -02:30
Stephen Anthony 428ef20a06 Rename json.hxx to json.hpp, just as it's distributed.
This has the nice side-effect of removing it from processing with clang-tidy.
2024-08-02 14:49:10 -02:30
Stephen Anthony 34a6b6979b Run clang-tidy on `src/debugger`. 2024-08-02 09:47:59 -02:30
Stephen Anthony 54538fa46c libretro: Add cart ELF support. 2024-08-01 17:29:14 -02:30
Stephen Anthony d4423d40f8 Fix Windows compile error from last commit. 2024-08-01 12:36:36 -02:30
Stephen Anthony a6d47814fd More fixes for warnings from clang-tidy, in `src/cheat` and `src/common`. 2024-08-01 12:20:40 -02:30
Stephen Anthony 4773c53f8f Fix potential overflow in cycle calculation. 2024-07-31 13:41:42 -02:30
Stephen Anthony 151becc4fb Fix compile error from last commit. 2024-07-31 13:37:38 -02:30
Stephen Anthony 86bb28d042 More fixes for warnings from clang-tidy. 2024-07-31 12:45:14 -02:30
Stephen Anthony 406f1e6956 Merge branch 'master' into elf 2024-07-30 18:03:53 -02:30
thrust26 c3b500ae61 removed interrupt handling code 2024-07-30 21:49:00 +02:00
Stephen Anthony 7c97728895 Use std::clamp. 2024-07-30 16:42:48 -02:30
thrust26 b367744e0e Fixed undefined order of startup vector peeks
Added ELF test ROMs
2024-07-30 20:52:04 +02:00
Stephen Anthony 986d631b7c Fix some clang-tidy warnings. 2024-07-30 14:52:21 -02:30
Stephen Anthony 75e54fd3ee Add ELF files to Xcode project. 2024-07-30 14:47:40 -02:30
Christian Speckner 52c51b525f Timing improvements. 2024-07-30 08:22:48 +02:00
Christian Speckner 9c54139460 Improve timing emulation, bump ARM MIPS to 190 for now. 2024-07-30 01:25:03 +02:00
Christian Speckner f0e7b122e8 Hack around buggy ARM code that accesses low memory. 2024-07-29 23:39:39 +02:00
Christian Speckner e47b2bb373 Implement init function, more vcslib -> mattress monkeys works. 2024-07-29 23:13:45 +02:00
Christian Speckner cfcec77e0b Implement more of vcslib. 2024-07-29 22:29:45 +02:00
Christian Speckner 3e1bd09b0b Fix memset. 2024-07-29 20:25:53 +02:00
Christian Speckner 7d5d19948e Minor optimizations. 2024-07-29 19:06:33 +02:00
Christian Speckner 306ec76786 Bus snooping. 2024-07-29 18:56:12 +02:00
Christian Speckner 443a14a604 Sync timing, limit the amount of queued transactions. 2024-07-29 18:21:37 +02:00
Christian Speckner 341f745684 Bus stuffing. 2024-07-28 14:13:49 +02:00
Christian Speckner e4e6878fdb Fix memset. 2024-07-28 00:12:53 +02:00
Christian Speckner d7a9ab4110 More fixes, implement more parts of vcslib. 2024-07-27 23:52:22 +02:00
Christian Speckner d2f5b74cdd Assorted fixes -> ARM executes. 2024-07-27 22:48:27 +02:00
Christian Speckner 32b8bbd32e Hook up ARM emulation. Crashes and dies right now. 2024-07-27 21:28:13 +02:00
Christian Speckner 39eb36083b Fixup thumb disassembly for debugging. 2024-07-27 21:00:32 +02:00
Christian Speckner b1e31ed032 Another stab at windows. 2024-07-27 14:25:20 +02:00
Christian Speckner 8462cdf6cd Another stab at fixing windows, set stack pointer. 2024-07-27 11:17:01 +02:00
Christian Speckner b537b6d8a9 Setup ARM for execution. 2024-07-27 10:56:40 +02:00
Christian Speckner fde5414b24 Attempt to fix windows build. 2024-07-27 00:52:26 +02:00
Christian Speckner cfaae11366 Complete vcslib bootstrap. 2024-07-27 00:49:28 +02:00
Christian Speckner e529fb6690 Refactoring. 2024-07-27 00:05:48 +02:00
Stephen Anthony ca3dea0155 Fix missing file in Xcode project. 2024-07-26 14:28:24 -02:30
Christian Speckner 2f239d90f9 Stub vcslib. 2024-07-25 23:10:05 +02:00
Christian Speckner 0dc1431397 Fix data segment mapping. 2024-07-24 23:26:56 +02:00
Christian Speckner 17c5d8a9a9 Start hooking up ARM: memory map. 2024-07-24 23:17:17 +02:00
Christian Speckner 1a4d8c442f Seems addend is calculated differently. 2024-07-23 23:10:28 +02:00
Christian Speckner e34ea5c03e Write out elf image for debugging. 2024-07-23 22:28:34 +02:00
Christian Speckner 7a20a87715 Finish (untested) cortex M0. 2024-07-23 22:00:17 +02:00
Stephen Anthony 01bdba70b0 Fix Xcode build issues. 2024-07-23 12:50:46 -02:30
Christian Speckner 1080723095 Start to adapt thumbulator. 2024-07-21 22:23:26 +02:00
Christian Speckner 00337b1a3b Finalize linker tests. 2024-07-18 22:39:07 +02:00
Christian Speckner 6e24e500db More relocation tests. 2024-07-15 22:50:23 +02:00
Christian Speckner 86315bb0e4 Tests for jump / call relocation. 2024-07-15 22:27:30 +02:00
Stephen Anthony f85d45e8bc Fix some warnings/suggestions from clang-tidy.
@DirtyHairy, hope you don't mind.
2024-07-15 13:21:26 -02:30
Christian Speckner f0b372ec3a More tests. 2024-07-14 20:28:40 +02:00
Christian Speckner 68ad6eed1f More linker tests. 2024-07-14 11:22:30 +02:00
Christian Speckner 0edc24856e Fix test setup, first slab of linker tests. 2024-07-13 23:30:21 +02:00
Christian Speckner 3486e3087e Refactor to prepare for unit tests. 2024-07-13 22:05:02 +02:00
Christian Speckner bca8a9ff07 Typo. 2024-07-13 21:50:45 +02:00
Christian Speckner a39ca385ad Introduce a separate segment for rodata. 2024-07-13 21:43:57 +02:00
Christian Speckner 523a812d84 cs 2024-07-13 20:44:02 +02:00
Christian Speckner 9f80be42f2 Wording. 2024-07-12 23:33:57 +02:00
Christian Speckner f6e8ccc220 Refactoring. 2024-07-12 23:23:27 +02:00
Christian Speckner a1b7745904 Init an preinit arrays. 2024-07-12 23:05:11 +02:00
Christian Speckner a5f9f1d351 Refactoring, fixes, lookup tables. 2024-07-12 21:52:18 +02:00
Christian Speckner b29826ee93 Fixes + stubs. 2024-07-11 23:19:06 +02:00
Christian Speckner 732d4ea4e1 BL / B.W encoding tests 6 fixes. 2024-07-11 23:19:06 +02:00
Christian Speckner 7d2b40672a Formatting. 2024-07-11 23:19:06 +02:00
Stephen Anthony 3ad74cdeb9 Fix build and warnings for Xcode project. 2024-07-11 13:16:38 -02:30
Christian Speckner fa4558526d Logging. 2024-07-11 00:57:34 +02:00
Christian Speckner 0590819119 Pull in gtest for unit tests. 2024-07-11 00:57:16 +02:00
Christian Speckner bd44bd2f8f Refactoring, fix external function pointers. 2024-07-10 08:35:47 +02:00
Christian Speckner dc6a88e61f Logging. 2024-07-10 08:28:45 +02:00
Christian Speckner 7c4022c30c Woefully untested ELF linker. 2024-07-09 20:11:35 +02:00
Christian Speckner 0f9be132e0 More cleanup. 2024-07-07 13:20:10 +02:00
Christian Speckner 01f53cec6d Refactoring. 2024-07-07 09:34:17 +02:00
Christian Speckner 436f9888a5 Cleanup. 2024-07-07 09:25:37 +02:00
Christian Speckner b38d9ad537 Fixes, load and parse relocations. 2024-07-05 23:57:12 +02:00
Christian Speckner 204ff51409 Include info in section. 2024-07-05 23:00:33 +02:00
Christian Speckner 9be997a0f4 Style, paranoia. 2024-07-05 22:57:24 +02:00
Stephen Anthony 25d06c2770 Fix Windows build. 2024-07-04 20:40:07 -02:30
Christian Speckner 923d32268a Parse symbols. 2024-07-04 23:27:14 +02:00
Christian Speckner 962bddae9b Minor refactoring. 2024-07-04 22:04:06 +02:00
Christian Speckner 80c686fc62 Port and hook up ELF basic parser. 2024-07-02 22:39:05 +02:00
Christian Speckner 15cb626994 Style. 2024-07-01 00:09:56 +02:00
Christian Speckner ae9b558bc5 Refactoring, properly model bus activity. 2024-07-01 00:08:36 +02:00
Christian Speckner 1fb7053411 Boot into overblank. 2024-06-30 17:16:32 +02:00
Stephen Anthony 4b80a12661 Fix file permissions. 2024-06-30 11:29:29 -02:30
Christian Speckner f4837ec174 Fix ELF signature detection, read value stream. 2024-06-30 11:56:07 +02:00
Christian Speckner 64126610be Fix windows build. 2024-06-30 11:03:05 +02:00
Christian Speckner 3b018602e2 Fix division by zero. 2024-06-30 11:00:46 +02:00
Christian Speckner ccfe94d616 Sttub and hook up ELF cartridge. 2024-06-30 10:30:41 +02:00
thrust26 c8b38099e8 ELF doc updates 2024-06-23 23:10:38 +02:00
thrust26 28caaa6cc0 spelling 2024-06-22 21:09:01 +02:00
thrust26 f6beb2c39a added link for Mediafire launcher images and bezels 2024-06-22 21:06:27 +02:00
Stephen Anthony 6298093c3f Fix warning from clang-tidy.
Original code is left there, commented out, since the intent isn't clear.
2024-06-14 21:41:53 -02:30
Stephen Anthony 45fe09d037 Replace Map::find with Map::contains where appropriate. 2024-06-14 18:51:58 -02:30
thrust26 9d10519857 Merge branch 'master' of https://github.com/stella-emu/stella 2024-06-14 09:20:15 +02:00
thrust26 73de4a6258 small disassembler fix to avoid dirty mirror addresses in code 2024-06-14 09:19:51 +02:00
Stephen Anthony bfe59b00b5 Oops, pruned a little too much in last commit. 2024-06-13 20:49:53 -02:30
Stephen Anthony 37a9c6587d Remove workaround for missing C++20 support.
Since this is only one required of many, and the rest can't be worked around, there's really no point to keep this one either.
2024-06-13 20:35:58 -02:30
thrust26 0d99e2874b Enhanced E7 disassembling 2024-06-12 14:05:43 +02:00
thrust26 2755caaf0f fixed underflow in FrameLayoutDetector 2024-06-12 09:48:53 +02:00
Stephen Anthony d9ab573603 libretro: Fix Makefile for recently added cart classes. 2024-06-07 22:34:09 -02:30
thrust26 2b603a3776 improved disassembly of immediate color loads 2024-06-05 19:32:40 +02:00
Stephen Anthony 78b671e20d Updated Xcode project for CartJANE. 2024-06-05 11:19:23 -02:30
thrust26 69feb2fb08 Added JANE bankswitching (for Tarzan prototype) 2024-06-05 15:27:41 +02:00
thrust26 0efa910af4 Merge branch 'master' of https://github.com/stella-emu/stella 2024-06-04 09:51:58 +02:00
thrust26 d19f9d88aa added check which ignores invalid frames (too many scanlines) during frame detection (fixes Tarzan) 2024-06-04 09:51:47 +02:00
Stephen Anthony 08098d89d4 Update Xcode project. 2024-06-03 11:50:18 -02:30
thrust26 75735c9d0b Merge branch 'master' of https://github.com/stella-emu/stella 2024-06-03 13:27:23 +02:00
thrust26 2d1cb7d24c added option to enable thumb cycle counting via emulated ROM 2024-06-03 13:27:10 +02:00
Christian Speckner 13bb5d61bb Remove logging code. 2024-06-02 19:27:11 +02:00
Christian Speckner dcaa48565d Try to update xcode version. 2024-06-02 19:21:28 +02:00
Christian Speckner cfb9ebd91a More logging. 2024-06-02 18:59:38 +02:00
Christian Speckner cdb923628a Dump MacOS version, arch. 2024-06-02 17:31:33 +02:00
Christian Speckner 9a0437aa2f Ups, wrong line. 2024-06-02 12:18:33 +02:00
Christian Speckner fe8c0a0b66 Log clang and gcc (alias?) version in CI / MacOS. 2024-06-02 12:18:01 +02:00
Christian Speckner 3f72999e44 Add W(T)F8 to XCode build. 2024-06-01 00:10:47 +02:00
thrust26 f891b9dd0a updated doc for WF8 2024-05-30 19:48:50 +02:00
thrust26 6008bdd48a added WF8 (Todo: doc) 2024-05-30 19:25:36 +02:00
thrust26 a28c57f93d added WF8 detection and test ROMs
(cherry picked from commit 28050d5d9cfa502b4f0214c2b9e322a36dc0c4bf)
2024-05-30 19:20:15 +02:00
thrust26 275e4a4f51 fix Linux builds
(cherry picked from commit 2ed846e53004a535c68153057d0646e04f9d4302)
2024-05-30 19:14:13 +02:00
thrust26 2beb93b28e added missing new files
(cherry picked from commit 29c5578f8cb014b57740bc56e5382fa303449b8a)
2024-05-30 19:14:13 +02:00
thrust26 156626fc1c added WF8 bankswitching (TODO: doc and autodetect)
(cherry picked from commit 4814f216cd69f5382b85f961e8729c4fc28f115e)
2024-05-30 19:14:12 +02:00
Stephen Anthony 82c975fbae Attempt to fix C++20 'compliant' compilers that don't actually support <numbers>. 2024-05-13 21:00:15 -02:30
Stephen Anthony f9cd1f0dc5 More 'using enum' in places where it seems appropriate. 2024-05-12 18:24:55 -02:30
Stephen Anthony 085e1737b3 Fix spelling mistake in nearestNeightBour.
Use new C++20 feature 'using enum ...' in switch statements.
I'm not convinced this is best in all cases; for now I use it sparingly.
2024-05-10 21:21:03 -02:30
Stephen Anthony 8217b08128 Fixed string vs. string_view code that works in VS but not gcc/clang. 2024-05-10 20:51:40 -02:30
Stephen Anthony 5fd6e2328b Convert stringstream::str() to stringstream::view() where applicable. 2024-05-10 20:33:04 -02:30
Stephen Anthony cb80c00629 Revert "More cleanups."
This reverts commit fdc1f106f8.

Oops, a little too eager here.
2024-05-09 20:10:55 -02:30
Stephen Anthony fdc1f106f8 More cleanups. 2024-05-09 19:59:51 -02:30
Stephen Anthony 7ea1cc650f More C++20 additions, fix Windows build failures. 2024-05-09 19:50:19 -02:30
Stephen Anthony 4d67dcbaf7 Oops, forgot an include in last commit. 2024-05-09 19:29:40 -02:30
Stephen Anthony 5ec4915301 Some C++20 additions. 2024-05-09 19:26:20 -02:30
thrust26 36f3f26ffa made joystick default controller for libretro.cxx
fixed libretro VS project
2024-05-09 18:34:41 +02:00
Eric Warmenhoven 78ff25f0f9 On older Xcode/g++ versions the c++20 standard was called c++2a. (#1031) 2024-05-09 10:47:50 -02:30
Stephen Anthony 43debd45d5 Simplified Windows InnoSetup for 64-bit only builds. 2024-05-08 20:17:50 -02:30
Stephen Anthony 017a4d1444 Remove 32-bit builds from CI on Github and Gitlab. 2024-05-08 19:47:40 -02:30
Stephen Anthony 45acce752d Remove 32-bit builds; going forward, only 64-bit is supported. 2024-05-08 19:44:13 -02:30
Stephen Anthony 20f714c5d5 Fix CI compiling for Windows. 2024-05-08 19:35:32 -02:30
Stephen Anthony a0a0232f4d Move codebase to requiring C++20, and fix resultant non-standard code. 2024-05-08 19:13:23 -02:30
thrust26 b57549e029 improved QuadTari auto detection and setup 2024-05-07 17:14:40 +02:00
thrust26 305ad0551a enabled warning for extra qualifier errors 2024-05-06 21:33:43 +02:00
thrust26 6920160d81 fixed compile error 2024-05-06 20:44:01 +02:00
thrust26 6e260274d9 added auto detection for QuadTari controllers 2024-05-06 19:32:14 +02:00
thrust26 5bf3dba8c9 minor property update (2/2) 2024-05-04 00:12:10 +02:00
thrust26 4446232c6a Merge branch 'master' of https://github.com/stella-emu/stella 2024-05-03 07:56:19 +02:00
thrust26 55251c6507 minor property update 2024-05-03 07:56:03 +02:00
Stephen Anthony 18ff42d25f Fixes for suggestions from clang-tidy. 2024-05-01 17:25:29 -02:30
Stephen Anthony 6d5235c1b8 Minor syntax corrections. 2024-04-04 14:25:47 -02:30
lodefmode 01c5ac3a33 MVC: Stay in title mode when valid file not found. (#1023) 2024-04-04 14:18:32 -02:30
lodefmode 268f357b13 Reach first/last movie frame, show both fields and mute. (#1020) 2024-03-08 15:19:43 -03:30
thrust26 3db62a8f3b Fixed MVC debugger crash 2024-03-07 20:55:29 +01:00
thrust26 359f40028e Fixed PlusROM detection (fixes #1021) 2024-03-07 18:28:52 +01:00
thrust26 1c3fcebc4b another overflow fix (see #1017) 2024-03-03 11:56:45 +01:00
Christian Speckner 74855eee78 Fix overflow. 2024-03-03 11:31:18 +01:00
thrust26 52fd4b8393 fixed #1018 2024-02-29 21:17:37 +01:00
Stephen Anthony 212b023ac8 Refactor a little; SDL-specific header stuff should stay in SDL_lib.hxx. 2024-02-02 11:23:36 -03:30
Stephen Anthony 1aee7b9246 libretro: fix #1013 2024-02-02 11:10:13 -03:30
Stephen Anthony d89b74b36c Disable various URL buttons if using a version of SDL that doesn't support it. 2024-02-02 00:29:29 -03:30
Stephen Anthony 264dcf884b Fixed minor clang warning. 2024-02-01 12:29:57 -03:30
Christian Speckner 86f847115f Fix life display in solaris. 2024-01-31 21:07:22 +01:00
thrust26 08abd79850 fixed and adjusted build w/o IMAGE_SUPPORT 2024-01-31 19:57:42 +01:00
thrust26 5fc82a66b2 fixed #1011 2024-01-30 17:27:53 +01:00
thrust26 95d3be60f0 made random hotspots peeks a developer option
added check for duplicate hotkeys
2024-01-30 15:40:48 +01:00
Stephen Anthony 41abca8a29 Fix minor warnings from clang. 2024-01-26 13:08:24 -03:30
thrust26 822837aefd enhanced and optimized auto-phosphor 2024-01-25 12:24:18 +01:00
thrust26 15cb66df0e added many phosphor properties 2024-01-24 13:24:56 +01:00
thrust26 580b86904b added auto-phosphor (resolves #1009) 2024-01-24 11:24:21 +01:00
thrust26 01a0941ffb slightly optimized movementTick
copied movementTick comments from ball to player and missile
2024-01-20 10:29:34 +01:00
thrust26 c902f94e99 added Cosmic Ark to profiled ROMs (starfield effect) 2024-01-19 09:41:17 +01:00
thrust26 7f8a1f9e8a updated WhatsNewDialog 2024-01-18 16:15:02 +01:00
thrust26 d87b7b793f minor doc update 2024-01-13 19:37:17 +01:00
thrust26 a4e8a5e4b5 Merge branch 'master' of https://github.com/stella-emu/stella 2024-01-13 11:16:57 +01:00
thrust26 780edfe9bd some random ROM polishing 2024-01-13 11:16:47 +01:00
Stephen Anthony 8b79368b2e Fixed up current changelog for interim 6.7.1 release. 2024-01-12 16:13:07 -03:30
thrust26 2365f65b2e minor property updates 2024-01-12 19:51:53 +01:00
thrust26 02b204d1b9 added random ROM loading option (resolves #995) 2024-01-11 10:11:20 +01:00
thrust26 e9dff90979 more work on bezel name properties 2024-01-07 10:50:10 +01:00
thrust26 ba4184fc61 cleaned and updated bezel name properties 2024-01-06 12:00:54 +01:00
thrust26 942e0659cf added detected bezel name to GameInfoDialog 2024-01-06 10:28:02 +01:00
thrust26 c44a7abe0a Merge branch 'master' of https://github.com/stella-emu/stella 2024-01-06 10:26:30 +01:00
thrust26 bca1f9e2a9 fixed empty file listing bug 2024-01-06 10:26:20 +01:00
Stephen Anthony bb419a7c69 Moved some changes from 7.0 into 6.7.1. 2024-01-05 22:01:13 -03:30
thrust26 2252be4a86 block keyboard directory navigation in files-only mode 2024-01-05 22:39:36 +01:00
thrust26 2e2c870e38 added file browser button for bezel selection 2024-01-05 22:23:44 +01:00
thrust26 157ce930ae fixed swapped parameters 2024-01-05 22:16:52 +01:00
lodefmode 87324ed3fa Reach first/last movie frame, show both fields and mute. (#1003) 2024-01-04 08:52:04 +01:00
thrust26 a729d207eb added lots of bezels (using ChatGpt and Python) 2024-01-03 21:39:27 +01:00
Stephen Anthony 175756dd1f Bumped copyright for 2024. Happy New Year for anyone following these commits! 2024-01-01 12:38:25 -03:30
thrust26 4e4bf34e62 final update for 2023 (properties again) 2023-12-31 16:53:08 +01:00
thrust26 08fa71141f updated properties (mostly PAL-60 added) 2023-12-29 13:06:58 +01:00
thrust26 eb8985762f updated/added properties for Turbo 2023-12-13 20:17:23 +01:00
thrust26 5a48ed79c5 worked on PAL palette (brighter) 2023-11-26 15:43:19 +01:00
Stephen Anthony f2350d5d18 clang-tidy: Fix a few remaining warnings. 2023-11-17 18:58:05 -03:30
Stephen Anthony d7ab11d7d5 Minor fixes for Xcode. 2023-11-17 12:40:01 -03:30
Stephen Anthony c315bd6655 clang-tidy: convert 'endl' to '\n' for performance. 2023-11-16 14:34:02 -03:30
Stephen Anthony 0d0a5a1ddf clang-tidy: Remove redundant header includes. 2023-11-16 12:26:39 -03:30
thrust26 81d6628bd8 fixed spelling 2023-11-14 20:32:48 +01:00
thrust26 c3d4c2c36d Merge branch 'master' of https://github.com/stella-emu/stella 2023-11-14 20:30:57 +01:00
thrust26 208aca7e9a added trace logging like z26 (fixes #204) 2023-11-14 20:30:42 +01:00
Stephen Anthony d36a33098d Fix 'dangling else' warning from clang. 2023-11-08 19:07:38 -03:30
thrust26 43ff2cd1e2 Revert "enhanced color switches"
This reverts commit 6a4c4668e3.
2023-11-04 17:50:26 +01:00
thrust26 6a4c4668e3 enhanced color switches
enhanced Stella version information
2023-11-04 17:37:29 +01:00
Stephen Anthony 687d4ace0e Updated included libpng and zlib to latest release. 2023-10-25 22:18:46 -02:30
thrust26 201d7da936 Merge branch 'master' of https://github.com/stella-emu/stella 2023-10-16 17:42:25 +02:00
thrust26 dcde9bd35b fixed missing events in debugger 2023-10-16 17:42:18 +02:00
Stephen Anthony 85b9738b2a Fixes for suggestions from clang-tidy. 2023-10-15 13:53:46 -02:30
thrust26 aaae28287f Merge branch 'master' of https://github.com/stella-emu/stella 2023-10-02 10:04:17 +02:00
thrust26 8aca3ce406 added that peeks to ROM hotspots return random values 2023-10-02 10:04:05 +02:00
Stephen Anthony 06581eb845 Fix minor warnings from clang. 2023-09-23 18:34:02 -02:30
lodefmode 83c5920810 Movie Cart PAL format (#990)
* MVC format expanded to include vsync, vblank, overscan, visible, and framerate.
Allows for playback of various formats including, PAL.

* Match MovieCart title screen format to detected timing.
Does not affect encoded video content, just title screen.

* simple moviecart PAL examples

---------

Co-authored-by: LoDef Mode <lodef.mode@gmail.ca>
2023-09-16 15:43:25 +02:00
thrust26 9e5da28a65 fixed comments and minor enhancement in CartFE 2023-09-15 13:52:39 +02:00
thrust26 af7f02f0e9 minor RomImageWidget polishing 2023-09-15 11:10:34 +02:00
thrust26 3004121685 changed FE bankswitching code to support up to 8 banks 2023-09-15 08:44:02 +02:00
thrust26 cd1dc3aea2 Merge branch 'master' of https://github.com/stella-emu/stella 2023-09-14 20:01:25 +02:00
thrust26 0a89640b44 fixed warnings 2023-09-14 20:01:13 +02:00
Christian Speckner e11f04fe51 Remove -Weverything 2023-09-14 19:48:49 +02:00
thrust26 972d3e2f0c fixed build without image support 2023-09-14 19:37:27 +02:00
Stephen Anthony 7bd3bf6e39 Fix ROM audit in Windows (fixes #988). 2023-09-12 19:42:15 -02:30
Stephen Anthony 066d948983 Fix missing first char when navigating ZIP files (fixes #989). 2023-09-12 13:57:23 -02:30
thrust26 63543e825a minor property fix 2023-09-12 16:44:56 +02:00
thrust26 2754edd176 enhanced CartCV to support small ROMs (Part 3) 2023-09-12 11:22:45 +02:00
thrust26 140657c453 enhanced CartCV to support small ROMs (Part 2) 2023-09-11 23:41:23 +02:00
thrust26 4c74e61039 enhanced CartCV to support small ROMs 2023-09-11 22:26:01 +02:00
Stephen Anthony ccecfe8717 Add bezel class to Xcode project. 2023-09-05 14:03:45 -02:30
Stephen Anthony 5724632520 Fix minor warnings from clang. 2023-09-02 01:08:05 -02:30
thrust26 3d6cb7148f added ROM image widget to tab order and moved event handling into it
added launcher list paging events for controllers
2023-09-01 11:44:59 +02:00
thrust26 5bfa377b00 some polishing for LauncherDialog (incl. doc) 2023-08-31 23:11:13 +02:00
thrust26 403d6859ea fixed #984 2023-08-31 21:43:10 +02:00
thrust26 d8db5e869e added keyboard and controller support for image zooming 2023-08-31 19:57:45 +02:00
thrust26 7631123e1f reworked some comments 2023-08-31 18:09:19 +02:00
thrust26 f1688288d6 added launcher image zooming 2023-08-31 17:59:51 +02:00
Christian Speckner 69969ab866 Never use alpha blending for source surfaces in QIS. 2023-08-30 22:40:52 +02:00
Christian Speckner babef459b0 Account for HiDPI scaling when validating QIS blitter. 2023-08-30 22:40:31 +02:00
Christian Speckner 37bad6befc Fix allocation. 2023-08-29 23:33:04 +02:00
thrust26 a8c75b5c5a fixed build without IMAGE_SUPPORT 2023-08-29 23:20:19 +02:00
thrust26 236322c2cb next oops 2023-08-29 16:41:09 +02:00
thrust26 6d8101454b a few more bezel property updates 2023-08-29 16:19:05 +02:00
thrust26 5d72ba12f7 Improved error handling when loading bezels 2023-08-29 13:51:10 +02:00
thrust26 c1ca4db5da minor CartDetector and property update 2023-08-29 13:50:23 +02:00
thrust26 3ddcc22d10 fixed zoom when switching bezel paths 2023-08-28 11:16:27 +02:00
thrust26 4c19253805 extended list of known renderers to latest SDL 2023-08-28 09:07:22 +02:00
thrust26 b821415cc0 fixed zoom clamping 2023-08-27 22:39:50 +02:00
thrust26 11607b69b4 Revert "experimenting with not clearing the framebuffer during emulation"
This reverts commit ee1f0e2999.
2023-08-27 22:37:55 +02:00
thrust26 3ad95c9ba2 improved the code for rendering non-rounded bezels only on load (this should work) 2023-08-27 16:57:36 +02:00
thrust26 e0523ddeeb minor zoom fix 2023-08-27 11:13:37 +02:00
thrust26 ebb2467f38 fixed BrowserDialog reuse
defined bezel help links
2023-08-27 11:05:33 +02:00
thrust26 ee1f0e2999 experimenting with not clearing the framebuffer during emulation
added rounded bezel auto-detection and handling
2023-08-27 10:16:45 +02:00
thrust26 2b025249f5 oops 2023-08-27 08:14:02 +02:00
thrust26 27bf99717d reversed parameter order in FrameBuffer::renderTIA 2023-08-27 08:00:14 +02:00
Stephen Anthony 5262d66216 libretro: fix build issues with new bezel code. 2023-08-26 14:42:52 -02:30
thrust26 c6e798b5a0 fix current zoom level when enabling bezels 2023-08-26 18:21:58 +02:00
Stephen Anthony 97587960fc Fixes for warnings from clang. 2023-08-26 12:23:06 -02:30
thrust26 044bffc806 aligned VS project filters with folder structure 2023-08-26 14:54:07 +02:00
thrust26 f9d9a3aa68 Merge remote-tracking branch 'remotes/origin/feature/bezels' 2023-08-26 14:06:31 +02:00
thrust26 c51d7be893 the usual IX fix 2023-08-26 14:02:44 +02:00
thrust26 776acc4533 added bezel hotkeys
renamed bezel settings
moved Bezel class to common
2023-08-26 13:50:39 +02:00
thrust26 44056ef7b3 added bezel docs 2023-08-26 13:40:36 +02:00
thrust26 3f1d80deef more bezel property updates 2023-08-26 13:39:10 +02:00
thrust26 839724cbae added more bezel properties 2023-08-26 09:03:44 +02:00
thrust26 c0bc013505 a few minor changes 2023-08-25 21:31:17 +02:00
Stephen Anthony 90d667de43 Updated sqlite3 to latest version (3.43.0). 2023-08-25 13:47:20 -02:30
thrust26 8988df04c9 updated bezel properties and matching 2023-08-25 18:12:07 +02:00
thrust26 ae8d587f3b IX fix #2 2023-08-25 17:04:55 +02:00
thrust26 5c5a1e37bf IX fix 2023-08-25 16:41:51 +02:00
thrust26 fc34df3516 refactored bezel code
added variable bezel window support
2023-08-25 15:57:21 +02:00
Stephen Anthony e7f15ba665 Fix compile error for libretro, and minor warnings from clang. 2023-08-24 12:31:06 -02:30
thrust26 cc818ed9c5 reverted to working (fixed) borders 2023-08-23 18:03:36 +02:00
thrust26 32cbd2c38f added bezel borders 2023-08-23 17:47:58 +02:00
thrust26 991de73177 IX build fix 2023-08-22 15:48:06 +02:00
thrust26 229c5ab1f7 added automatic bezel name generation 2023-08-22 14:54:09 +02:00
thrust26 ac1bbf7183 added missing change 2023-08-21 22:51:43 +02:00
thrust26 6acb7a6412 added property for bezel file names 2023-08-21 22:34:33 +02:00
thrust26 3782a4fe7e preliminary doc updates 2023-08-21 13:01:23 +02:00
thrust26 2202f58901 fixed bezel blend mode bug (only showed with TV-effects && Interpolation enabled)
changed default hotkey for correct aspect ratio
2023-08-21 10:50:47 +02:00
thrust26 6b38bc3f5a fixed info message positioning
made image paths changeable without restart
2023-08-20 07:46:33 +02:00
thrust26 56d6cb8926 some small fixes 2023-08-19 19:25:50 +02:00
thrust26 8d8bea8525 bezels working now (TODO: testing, doc) 2023-08-19 18:12:32 +02:00
thrust26 5fb2cc8d8c some changes for alpha channel support (still doesn't work :( ) 2023-08-17 20:31:42 +02:00
thrust26 868a3eeef3 first try 2023-08-17 18:18:15 +02:00
thrust26 aaa10ea414 fixed duplicate events (menu + emulation) in debugger 2023-08-16 07:28:35 +02:00
Stephen Anthony 7f9a595c22 Updated Xcode for recent class additions. 2023-08-07 13:45:02 -02:30
thrust26 beef0bd457 trying to fix Linux build 2023-08-05 15:43:56 +02:00
thrust26 4e60a6b0db added 03E0 bankswitching for Brazilian Parker Bros ROMs (resolves #887) 2023-08-05 15:20:46 +02:00
thrust26 d8636f764b added a tweak which allows searching for ROM names containing a space without starting the ROMs 2023-08-04 15:14:27 +02:00
thrust26 3714f634da update doc for removed "show all files" option
eliminated magic number for initially focus widget in LauncherDialog.cxx
2023-08-04 09:20:35 +02:00
thrust26 4a74ea10fc added some extra description for the controller port assignment 2023-08-03 18:18:03 +02:00
Stephen Anthony 08c4c68b74 Remove 'launcherroms' option, in the process fixing #851. 2023-08-02 18:19:50 -02:30
Stephen Anthony e25c427557 A cleaner fix for the last commit. 2023-08-02 13:25:22 -02:30
Stephen Anthony 0d8f62c996 Fix error using string_view where string is expected. This needs to be fixed in json eventually. 2023-08-02 13:12:56 -02:30
Stephen Anthony 6cff524e32 Fixes for minor clang warnings. 2023-08-02 12:52:12 -02:30
thrust26 0fe232ffd3 added default mapping controller port option (resolves #897) 2023-08-02 17:03:57 +02:00
Stephen Anthony 26d0eb5c01 Some cleanup of CartAR class, in preparation for moving some code from System class. 2023-08-01 17:44:44 -02:30
Stephen Anthony ded5074d11 Some optimizations to FSNodePOSIX. 2023-07-01 22:05:05 -02:30
Stephen Anthony db7fd59423 Potential speedup in FSNodeWINDOWS::getSize(). 2023-06-30 22:40:05 -02:30
Stephen Anthony 608ed4f748 Update Xcode project to recommended settings. 2023-06-22 10:54:00 -02:30
Stephen Anthony 95c49d764b Add missing class to Xcode. 2023-06-22 10:53:03 -02:30
thrust26 abd4e5c8d9 added tootips to Options dialog (resolves #977) 2023-06-15 13:31:44 +02:00
Stephen Anthony 868b2fd7cb Minor fixes for suggestions from clang-tidy. 2023-06-14 19:47:17 -02:30
thrust26 9659a0a9af reordered cart detection order to improve correct detection rate 2023-06-14 14:08:11 +02:00
thrust26 07cf16aa27 fixed some warnings in VS 2023-06-14 09:58:31 +02:00
thrust26 ef55d93525 minor fixes 2023-06-14 09:51:37 +02:00
thrust26 f572ab0946 added phosphor to Amidar game properties 2023-06-14 09:50:56 +02:00
thrust26 33cd6bf4f2 fixed QuadTari mapping storage 2023-06-12 17:45:18 +02:00
thrust26 f0bd196372 Merge branch 'master' of https://github.com/stella-emu/stella 2023-06-11 19:44:53 +02:00
thrust26 479a077e0e trying to fix #974 2023-06-11 19:44:41 +02:00
Stephen Anthony 9b65e6a2e4 Adding missing include (fixes #971). 2023-06-04 19:26:27 -02:30
thrust26 d8ee31ec1f minor fixes for GL bankswitching 2023-06-04 14:24:32 +02:00
thrust26 307b36b8c4 Merge branch 'master' of https://github.com/stella-emu/stella 2023-06-03 21:03:24 +02:00
thrust26 6c6eaed995 added limited GameLine Master Module bankswitching support 2023-06-03 21:03:07 +02:00
Stephen Anthony c10bc4d83e Update sqlite3 library. 2023-05-16 18:58:46 -02:30
thrust26 76eec054a6 changed CommaVid ROMs to 4K size (fixes #969) 2023-05-09 12:26:12 +02:00
Stephen Anthony 3bcce2c481 Oops, wrong commit last time; fix compile error in gcc 13. 2023-05-05 16:49:00 -02:30
Stephen Anthony 7e20db0210 Fixed compile error in gcc 13. 2023-05-05 16:26:47 -02:30
thrust26 d0e066eb22 Merge branch 'master' of https://github.com/stella-emu/stella 2023-05-03 19:04:15 +02:00
thrust26 a3fa688819 Added note for special chars in Windows filenames 2023-05-03 19:03:58 +02:00
Stefan aa38cb79b6 Fixed typos (#966)
Thanks for the PR.
2023-04-27 13:50:04 -02:30
Stephen Anthony 99cb62f6d3 Minor fixes from clang-tidy. 2023-04-17 16:59:44 -02:30
thrust26 197203e8f6 added missing PlusROM support for E7 bankswitching (fixes #965) 2023-04-09 15:18:24 +02:00
Thomas Jentzsch 989fecc351 enhanced/fixed some controller default mappings 2023-03-26 10:23:38 +02:00
Thomas Jentzsch 6726089791 2nd Libretro fix attempt 2023-03-24 18:59:30 +01:00
Thomas Jentzsch 7e41759b04 trying to fix Libretro pipeline build error 2023-03-24 17:46:36 +01:00
Thomas Jentzsch 10b133c50f fixed libretro builds 2023-03-24 16:24:06 +01:00
Thomas Jentzsch fe99919dd0 added right controller KEYBOARD properties for Star Raiders (auto detected as Joy 2B+) 2023-03-19 17:56:16 +01:00
Thomas Jentzsch 920d9ce91f added paging for PromptWidget output
fixed disAsm of graphic bits
2023-03-19 10:46:21 +01:00
Thomas Jentzsch 55099ecbdd trying to address #962 for Linus & MacOS 2023-03-18 21:06:06 +01:00
Thomas Jentzsch fc3b983080 added alternative theme, switchable via hotkey. this is a preparation for SDL2 supporting system theme change events (day/night) soon 2023-03-15 17:06:52 +01:00
Thomas Jentzsch 3faefe7c46 minor fixes to debugger cart info 2023-03-15 16:46:43 +01:00
Thomas Jentzsch 492fce7645 added missing changed class 2023-03-15 14:44:01 +01:00
Thomas Jentzsch 22fd81aa7d fixed odd ROM sizes for 3E+ (fixed #960 2023-03-15 13:57:30 +01:00
Thomas Jentzsch 3a389752bd catch exception in BSPF::stoi (fixes #958) 2023-02-27 19:43:23 +01:00
Stephen Anthony bda42c3236 Some fixes for warnings from cppcheck. 2023-02-18 15:33:28 -03:30
Stephen Anthony dd3d18ce8a Attempt to fix macOS automated builds. 2023-02-16 17:57:30 -03:30
Thomas Jentzsch f6087efe92 fixed right controller detection for Maze Craze 2023-02-16 19:20:16 +01:00
Thomas Jentzsch 38d790b552 enhanced PlusROM dialog to show device id 2023-02-08 09:50:36 +01:00
Stephen Anthony 24942e2c20 Fix minor spelling mistake; there are no castrated goats here :) 2023-01-29 12:17:48 -03:30
Thomas Jentzsch 38c45e0fee added "code in RAM" execution check for F4SC, F6SC and F8SC (addresses #933) 2023-01-29 12:55:03 +01:00
Thomas Jentzsch a3c862900d minor fix for unwind/rewind display string 2023-01-29 10:01:38 +01:00
Stephen Anthony e7b0fcc45c Fix missing const caught by clang-tidy. 2023-01-28 19:22:31 -03:30
Thomas Jentzsch 4d8d30bd96 added two missing debugger save states 2023-01-28 10:22:07 +01:00
Stephen Anthony 336a0bf22a A few items I forgot in the last commit. 2023-01-26 17:04:05 -03:30
Stephen Anthony e21a0400f4 Further optimization to FSNodeWINDOWS; eliminate function call. 2023-01-26 16:44:16 -03:30
Thomas Jentzsch 1f2e9bbb28 fixed jittering driving controller when using keyboard 2023-01-25 17:02:48 +01:00
Thomas Jentzsch 74a3b42903 re-enabled mouse and Stelladaptor input for Driving Controller (fixes #951) 2023-01-18 17:01:21 +01:00
Thomas Jentzsch 9c16cccdef Another attempt to fix #931 in a good way. 2023-01-17 23:04:52 +01:00
Thomas Jentzsch 8a4d629061 Merge branch 'master' of https://github.com/stella-emu/stella 2023-01-17 16:29:23 +01:00
Thomas Jentzsch 27f1968ef6 stop disassembling at areas marked as ROW (fixes #931) 2023-01-17 16:29:11 +01:00
Stephen Anthony af526c0288 Small optimization; don't unnecessarily clear buffers. 2023-01-08 21:52:24 -03:30
Stephen Anthony ada36cd3d7 Fix Xcode project after recent refactoring. 2023-01-06 11:38:34 -03:30
Thomas Jentzsch db75df51b4 improved driving controller responsiveness to digital input 2023-01-06 00:43:38 +01:00
Thomas Jentzsch ec982482aa fixed saving driving controller mappings 2023-01-05 22:21:15 +01:00
Thomas Jentzsch 7779dea09b fixed Joy2B+ code for libretro 2023-01-05 08:37:48 +01:00
hunterk 18afccf2b8 add Joy2B+ support to libretro (#950)
fixes #949 and returns input to Elevator Agent game
2023-01-05 08:33:14 +01:00
Stephen Anthony 6e1bc4c77c Fix compile error in clang-16; large number of constexpr string_view causes compile error. 2022-12-30 21:17:02 -03:30
Stephen Anthony c51b372a53 Updated httplib, libpng and sqlite libs to latest releases. 2022-12-30 19:56:45 -03:30
Stephen Anthony a0ee07fdc3 Remove FIXME for string_view conversion. 2022-12-30 18:34:12 -03:30
Stephen Anthony bdffdd7b9d Minor string optimizations. 2022-12-30 18:00:37 -03:30
Stephen Anthony ca59a8f3c8 Updated files to 2023; an early Happy New Year to anyone reading this logs. 2022-12-30 14:11:04 -03:30
Stephen Anthony e2fc5010bf Updated UNIX config files to latest version. 2022-12-30 14:08:34 -03:30
Stephen Anthony 61f8e202e7 Minor formatting fixes. 2022-12-29 20:03:24 -03:30
Stephen Anthony 1252d1da94 Another string_view conversion. 2022-12-29 15:22:38 -03:30
Stephen Anthony c81bdf642b Convert MD5 functionality to proper C++17 class. 2022-12-29 12:25:39 -03:30
Stephen Anthony d5f77514ab Various fixes for suggestions from clang-16. 2022-12-29 10:19:14 -03:30
Stephen Anthony 5efaebca76 Remove std::stoi completely; reimplement with std::from_chars and string_view. 2022-12-28 20:57:31 -03:30
Thomas Jentzsch 200caa8423 Merge branch 'master' of https://github.com/stella-emu/stella 2022-12-28 14:12:42 +01:00
Thomas Jentzsch 3a5ec79227 Added images processing files (Windows only) 2022-12-28 14:12:23 +01:00
Stephen Anthony c2a80ada0e Add experimental 'mold' linker support to configure for UNIX. 2022-12-27 10:58:01 -03:30
Thomas Jentzsch ba5630e50b updated doc for new high score game support 2022-12-25 10:14:41 +01:00
Thomas Jentzsch 204a865da4 added some more high score properties (resolves #929) 2022-12-25 10:07:51 +01:00
Stephen Anthony 301f20889e Consolidate and refactor some code (mostly string conversions). 2022-12-24 16:42:08 -03:30
Stephen Anthony 217f52822d Fix potential crash on empty string. 2022-12-24 13:21:13 -03:30
Stephen Anthony d428c6ac9a More conversions to string_view. 2022-12-23 20:01:24 -03:30
Thomas Jentzsch 2dba71290d reworked RiotWidget 2022-12-22 14:25:05 +01:00
Stephen Anthony 64ed418bb5 And a few more string_view conversions. 2022-12-21 20:36:35 -03:30
Stephen Anthony 02d7b85fd9 Yet more conversion of 'const char*' to string_view. 2022-12-21 20:20:30 -03:30
Stephen Anthony eaca65d452 More conversion of 'const char*' to string_view. 2022-12-21 19:24:37 -03:30
Thomas Jentzsch 8637c11338 reworked TIAWidget 2022-12-21 18:59:12 +01:00
Stephen Anthony e407fd9d17 Eliminate redundant checks for empty strings. 2022-12-21 12:25:40 -03:30
Stephen Anthony 7c3200500e Improve Bankswitch class efficiency by using string_view. 2022-12-20 22:16:11 -03:30
Thomas Jentzsch b382878d0e fixed two bugs regarding Joy2B+ controller 2022-12-20 11:07:53 +01:00
Stephen Anthony 06699aafa0 Yet more conversion of 'const string&' to 'string_view'. 2022-12-19 19:33:19 -03:30
Stephen Anthony e2534af4e8 Updated changelog. 2022-12-19 17:24:08 -03:30
Stephen Anthony 50a2823da6 More conversion of 'const string&' to 'string_view'. 2022-12-19 17:21:36 -03:30
Thomas Jentzsch 1966a9b805 enhanced missile state display in debugger
updated 3E+ comments
2022-12-19 11:38:43 +01:00
Stephen Anthony 8c7d8931f2 Default to using system-wide libsqlite3 on Linux/UNIX systems.
Fix for slow exit from app in this mode is now fixed.
2022-12-18 21:18:56 -03:30
Thomas Jentzsch 80d0db751f fixed messages lost when changing state with auto pause enabled (fixes #944) 2022-12-17 11:03:48 +01:00
Stephen Anthony 859dacdf63 Convert 'const string&' to 'string_view', as per C++17 recommendations. WIP. 2022-12-16 19:15:30 -03:30
Thomas Jentzsch bc12f241e5 minor UI update to Power-on options dialog 2022-12-16 09:07:18 +01:00
Thomas Jentzsch 262c2c18f7 3e+ comments fixed 2022-12-14 18:15:27 +01:00
Stephen Anthony fef3437579 Restrict RAM searching to hex values only. 2022-12-11 15:50:40 -03:30
Thomas Jentzsch 8ca1fc5ad5 added middle mouse button support (emulates double click) 2022-12-06 19:21:07 +01:00
Stephen Anthony 3e23e2f8bf Updated zlib to latest version (1.2.13). 2022-12-04 20:42:14 -03:30
Stephen Anthony 2cdb52d1fa Some refactoring in ZipHandler. Debugging code present for now. 2022-12-04 18:38:43 -03:30
Thomas Jentzsch 3370ca4afc fixed multi segment cart disassembly 2022-12-04 18:15:11 +01:00
Thomas Jentzsch e9efdbc3a1 slightly optimized Thumb emulation for R77 2022-12-03 00:38:31 +01:00
Thomas Jentzsch f677acf273 and some more (forgot to save) 2022-12-02 19:52:03 +01:00
Thomas Jentzsch e5bb3c9ff8 some code cleanup 2022-12-02 19:51:24 +01:00
Stephen Anthony 2efbca4ef8 Disable warning for deadcode in Thumbulator. 2022-12-02 12:20:36 -03:30
Thomas Jentzsch 6e86a2472f added Release PGO x64 build configuration for VS 2022-12-02 10:42:21 +01:00
Stephen Anthony d02f06e6a3 Convert more defines to static constexpr, take 2. 2022-12-01 19:13:44 -03:30
Stephen Anthony 746619a177 Revert "Convert more defines to static constexpr."
This reverts commit 62ad70bed5.

Mistakenly checked in debug code for another part of the codebase.
2022-12-01 19:08:27 -03:30
Stephen Anthony 62ad70bed5 Convert more defines to static constexpr. 2022-12-01 19:04:01 -03:30
Stephen Anthony 2761ffa793 Fix missing braces on switch/case block. 2022-12-01 18:46:53 -03:30
Stephen Anthony 36c0457cb3 Convert defines to static constexpr. 2022-12-01 18:31:31 -03:30
Stephen Anthony 380169f23c Implemented suggestions from clang-tidy-16 (mostly emplace vs. push_back). 2022-12-01 15:39:21 -03:30
Thomas Jentzsch a0787d92da added some ARM ROMs for profiling 2022-11-30 15:09:33 +01:00
Thomas Jentzsch 6293372122 added a few more FORCE_INLINE and inline hints 2022-11-30 09:33:04 +01:00
Thomas Jentzsch 05679d604e next try 2022-11-29 16:44:47 +01:00
Thomas Jentzsch 51f8d904d2 Revert "improved inlining in VS (I hope this doesn't break the code again)"
This reverts commit 46f2b6aac0.
2022-11-29 16:10:43 +01:00
Thomas Jentzsch 46f2b6aac0 improved inlining in VS (I hope this doesn't break the code again) 2022-11-29 14:07:51 +01:00
Christian Speckner 1bbcd07da0 Fix build. 2022-11-29 12:18:38 +01:00
Thomas Jentzsch 752b779699 trying to fix build errors 2022-11-29 11:12:08 +01:00
Thomas Jentzsch ceb3ba9fd3 accelerated emulation by using forced inlines 2022-11-29 10:53:31 +01:00
Thomas Jentzsch 7febd63f99 added global FORCE_INLINE macro
used FORCE_INLINE macro in Thumbulator
2022-11-29 09:23:39 +01:00
Thomas Jentzsch 06934fa8d0 optimized thumb flags handling 2022-11-28 22:12:48 +01:00
Thomas Jentzsch 4c09d07e07 Merge branch 'master' of https://github.com/stella-emu/stella 2022-11-27 13:10:22 +01:00
Thomas Jentzsch 2bfb885e87 optimized thumb branch instructions 2022-11-27 13:10:02 +01:00
Stephen Anthony 75c6efbe9c Update Linux build script. 2022-11-24 16:04:15 -03:30
Stephen Anthony 9bf2373e71 Make automated builds use latest SDL (2.26) where possible. 2022-11-24 15:35:09 -03:30
Thomas Jentzsch 4a62657cd3 fixed 7800 pause button 2022-11-23 22:29:43 +01:00
Stephen Anthony 62f48dc662 Updates to Xcode project for Xcode 14. 2022-11-23 15:27:11 -03:30
Stephen Anthony c48d878a20 Updated to latest sqlite3 release. 2022-11-20 15:31:26 -03:30
Stephen Anthony 78a6b00dde Fix typo. 2022-11-17 15:36:35 -03:30
Stephen Anthony 074c169c8c More 'const char* const' fixes. 2022-11-13 12:31:36 -03:30
Stephen Anthony 26610f44d9 Minor fixes to FSNodePOSIX. 2022-11-12 21:44:50 -03:30
Stephen Anthony 5748de3833 Use already calculated file size, and cache for later use. 2022-11-11 20:26:14 -03:30
Stephen Anthony 4f39859c49 Stop WAV playing when exiting a KidVid ROM and starting a non-KidVid one. 2022-11-03 21:42:14 -02:30
Stephen Anthony 885b5e971a Yet more cleanups in FSNodeWINDOWS. 2022-10-29 16:12:39 -02:30
Thomas Jentzsch d8b2877649 added VSYNC warning to console info overlay in developer mode 2022-10-20 12:48:51 +02:00
Stephen Anthony 3337086601 Speed up file/directory access in Windows by 3-4x. 2022-10-18 17:21:13 -02:30
Stephen Anthony 4302488754 More cleanups to FSNodeWINDOWS. 2022-10-15 19:54:51 -02:30
Stephen Kitt f05aeb3e46 Use apt-get instead of apt (#938)
This avoids warnings about apt's suitability for use in scripts.

Signed-off-by: Stephen Kitt <steve@sk2.org>

Signed-off-by: Stephen Kitt <steve@sk2.org>
2022-10-13 09:31:14 -02:30
Stephen Kitt db185d326c Upgrade GHAs to drop save-state and set-output (#939)
This bumps actions/checkout to v3.1.0 and microsoft/setup-msbuild to
v1.1.3, which switch to environment files. See
https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
for context and
https://github.com/actions/checkout/releases/tag/v3.1.0 and
https://github.com/microsoft/setup-msbuild/releases/tag/v1.1.3 for
details of the changes.

Signed-off-by: Stephen Kitt <steve@sk2.org>

Signed-off-by: Stephen Kitt <steve@sk2.org>
2022-10-13 11:26:37 +02:00
Stephen Anthony 65e4959a75 More cleanups to FSNodeWINDOWS. 2022-10-12 18:45:24 -02:30
Thomas Jentzsch 7914f4a1b3 fixed build test 2022-10-12 22:21:10 +02:00
Thomas Jentzsch ecfc678a18 failed build test 2022-10-12 22:03:48 +02:00
Stephen Anthony 38dc5173ec More cleanups to FSNodePOSIX. 2022-10-12 12:58:00 -02:30
Stephen Anthony 93df53e751 Add missing directory separator that sometimes is missing in SQL database file. 2022-10-11 18:45:46 -02:30
Stephen Anthony 4ef65aa88b Remove Readme.txt, replace with README.md (which contains the former). 2022-10-10 23:33:51 -02:30
Stephen Anthony d6f1973688 Remove appveyor script; we can always re-enable if required. 2022-10-10 23:28:33 -02:30
Stephen Kitt 963c7866dc Run the build GHA on pushes as well as PRs (#937)
This ensures that commits get a checkmark if they pass all tests.

Signed-off-by: Stephen Kitt <steve@sk2.org>

Signed-off-by: Stephen Kitt <steve@sk2.org>
2022-10-10 18:33:56 -02:30
Stephen Anthony f6762cb96d Some optimizations for FSNodeWINDOWS. 2022-10-10 18:26:45 -02:30
Stephen Anthony ae5b448478 More optimization for FSNodePOSIX. 2022-10-10 17:05:22 -02:30
Stephen Anthony 75f93c566b Some minor optimizations to FSNodePOSIX. 2022-10-10 16:40:25 -02:30
Stephen Kitt 2d7aa7cbb8 Add a GitHub action to build on Windows (#936)
This reproduces the Appveyor build for 32- and 64-bit Windows.

Signed-off-by: Stephen Kitt <steve@sk2.org>

Signed-off-by: Stephen Kitt <steve@sk2.org>
2022-10-10 15:28:03 -02:30
Stephen Kitt 8ff021d1f8 Add a GitHub action to build on Linux and macOS (#935)
As with Travis CI, the test is only deemed successful on each platform
if the Stella build completes successfully.

For Linux, the test runs on Ubuntu with the toolchain test build
repository, using G++ 9, and the packaged version of SDL2, which is
guaranteed to be at least 2.0.10.

For macOS, SDL2 2.0.10 is still built from the upstream source code;
however that no longer builds with the newer Xcode versions available
in GHAs, so the build now uses "Unix-style" ./configure && make.

The runners provide two cores on Linux and three cores on macOS, so
the compile stages use the appropriate -j setting to build in
parallel.

Signed-off-by: Stephen Kitt <steve@sk2.org>

Signed-off-by: Stephen Kitt <steve@sk2.org>
2022-10-10 14:45:55 -02:30
Stephen Anthony dc888cf888 Fix minor warning from clang-tidy. 2022-10-09 21:50:57 -02:30
Stephen Anthony 031eb78fd8 Separate sound mute and enable functionality.
Mute simply changes the sound level; disabling sound completely is now done separately.
2022-10-09 21:28:35 -02:30
Thomas Jentzsch 44161326ad updated debugger doc for timers (screenshots) 2022-10-09 15:00:29 +02:00
Thomas Jentzsch 7736d65c84 fixed jitter emulation 2022-10-09 12:15:01 +02:00
Thomas Jentzsch bd51fbdac5 fixed frame layout detection 2022-10-09 07:38:08 +02:00
Stephen Anthony 7fd7f4df10 Updated sqlite3 to latest version. 2022-10-08 23:26:12 -02:30
Stephen Anthony ae75b94f23 Updated httplib to latest version. 2022-10-08 22:26:35 -02:30
Stephen Anthony 3ed08681ef Updated PNG lib to latest version. 2022-10-08 22:22:48 -02:30
Stephen Anthony c8192955b3 Updated JSON lib to latest version. 2022-10-08 22:15:53 -02:30
Stephen Anthony edc82b3888 Suggested fixes from clang-tidy. 2022-10-08 20:33:59 -02:30
Stephen Anthony 27f84976da Fix minor warning: parameter mirrors instance variables. 2022-10-08 20:11:31 -02:30
Thomas Jentzsch 5f1d6ee028 reworked timer syntax and code and fixed some bugs 2022-10-08 11:54:38 +02:00
Thomas Jentzsch 13e74507cb Merge branch 'master' of https://github.com/stella-emu/stella 2022-10-07 09:29:18 +02:00
Thomas Jentzsch 9b62b15637 fixed launcher image navigation for HiDPI mode 2022-10-07 09:29:02 +02:00
Stephen Anthony ce533245cf Add new class to Xcode project. 2022-10-06 13:20:53 -02:30
Stephen Anthony 64bcd660b2 Fix minor compile issues. 2022-10-06 13:07:27 -02:30
Thomas Jentzsch 9406bc7c6b ...plus a fix for the make file 2022-10-06 17:07:11 +02:00
Thomas Jentzsch 8682b5bda0 Merge branch 'master' of https://github.com/stella-emu/stella 2022-10-06 17:04:40 +02:00
Thomas Jentzsch ad8e5eb3f7 ...and the usual missing new files 2022-10-06 17:04:12 +02:00
Stephen Anthony 2a6fdcdb3d Fixed typo in module.mk. 2022-10-06 12:33:45 -02:30
Thomas Jentzsch 7a39ca8b6e added user defined timers to debugger (TODO: screenshots) 2022-10-06 16:55:00 +02:00
Thomas Jentzsch 7655f7cd8a Fixed "logBreaks" output in debugger 2022-10-03 18:16:14 +02:00
Stephen Anthony 79efea994a Some refactoring of SoundSDL2, placing WAV handling in its own inner class. 2022-10-01 21:06:12 -02:30
Thomas Jentzsch d6acadc329 fixed unwanted button up events in UI navigation 2022-10-01 21:21:20 +02:00
Thomas Jentzsch aebc097e95 enhanced UI navigation with a controller
added "Cancel" option to LauncherDialog context menu if opened with a controller
updated docs for image navigation in LauncherDialog
2022-10-01 11:07:02 +02:00
Stephen Anthony 72c6e69bf0 First pass at separating Sound mute/pause functionality.
This will need lots of testing, since it touches many parts of the code.
2022-09-24 21:33:39 -02:30
Stephen Anthony f98fef11db Fixed crash in resampling WAV playing; forgot to create an array.
Make WAV resampling default behaviour.
2022-09-19 01:33:36 -02:30
Stephen Anthony b927f214f3 Use unique_ptr instead of C-style allocations. 2022-09-18 16:56:57 -02:30
Thomas Jentzsch d0c94e5e14 eliminated frequent memory allocation while playing WAV files 2022-09-16 15:18:24 +02:00
Thomas Jentzsch ce684daacc fixed WAV echo problem and enabled on-the-fly resampling 2022-09-15 18:34:37 +02:00
Thomas Jentzsch 26d6f0db69 added on-the-fly WAV resampling (disabled, causes echo) 2022-09-15 15:21:10 +02:00
Thomas Jentzsch 37f8a5595f removed debug code and cast warning 2022-09-14 19:34:30 +02:00
Thomas Jentzsch af5272cff4 fixed interrupted WAV continuing to play at restart 2022-09-14 17:38:47 +02:00
Thomas Jentzsch 077366f34b fixed Sound muting for WAV files 2022-09-14 13:39:24 +02:00
Stephen Anthony 2208460aee More 'const' conversion, with help from clang-15. 2022-09-13 22:52:59 -02:30
Thomas Jentzsch 0330545769 implemented gapless playback for WAV files (KidVid) 2022-09-13 15:24:19 +02:00
Thomas Jentzsch 67a55e5769 added messages for Kid Vid 2022-09-10 15:56:25 +02:00
Thomas Jentzsch ca2542d3a1 added mute all songs option for Kid Vid 2022-09-09 14:09:46 +02:00
Stephen Anthony 8978295e84 Eliminate unused variable. 2022-09-08 22:59:11 -02:30
Stephen Anthony 397d7a003e Update appveyor Windows CI builds to use latest SDL. 2022-09-08 22:08:39 -02:30
Thomas Jentzsch a77569d1e5 enhanced KidVid to allow selecting and starting the games via console switches 2022-09-08 19:43:58 +02:00
Thomas Jentzsch 35bebad0f8 fixed cut off Kid Vid songs 2022-09-07 12:26:03 +02:00
Thomas Jentzsch 40c77bba71 minor Kid Vid doc update 2022-09-06 08:56:56 +02:00
Thomas Jentzsch 0d5bc7e7ac enhanced KidVid song skipping
removed clicks at end of songs
2022-09-05 23:15:21 +02:00
Stephen Anthony fb0736b2e0 Bumped state number for changes to KidVid state file. 2022-09-04 14:31:15 -02:30
Thomas Jentzsch 4f1b1ab97e refactored KidVid code a bit
updated doc
2022-09-04 18:40:46 +02:00
Stephen Anthony 87eee88752 Bump state version for KidVid; clean up some typos. 2022-09-04 12:55:53 -02:30
Thomas Jentzsch 497cf09a98 added KidVid tape state serializing 2022-09-04 10:03:40 +02:00
Thomas Jentzsch cd147492be updated doc for Kid Vid 2022-09-04 08:48:19 +02:00
Stephen Anthony f753d47c71 Add stubs to KidVid for save/load functionality (TODO). 2022-09-03 22:43:42 -02:30
Stephen Anthony 6924a3d159 Minor formatting cleanups for recent commits. 2022-09-03 20:10:22 -02:30
Thomas Jentzsch c7cac63a38 added WAV file volume adjustment (resolves #77) 2022-09-03 20:56:38 +02:00
Stephen Anthony d54e7f34fe Fix a few minor compiler warnings.
Make WAV play methods not pure virtual, so we can change them without affecting libretro.
2022-09-03 14:51:20 -02:30
Stephen Anthony 574b60588b libretro: Fix compile failure from latest Sound changes. 2022-09-03 14:08:09 -02:30
Stephen Anthony 287a035440 Fix minor compile warning. 2022-09-03 13:13:29 -02:30
Thomas Jentzsch 9b1238464e added WAV playing and adapted KidVid code accordingly 2022-09-03 16:54:33 +02:00
Stephen Anthony 8e246e200c Convert KidVid file I/O to C++ ifstreams. 2022-09-02 10:14:14 -02:30
Thomas Jentzsch d0fad1091a some KidVid refactoring 2022-09-02 08:18:55 +02:00
Stephen Anthony 74c0613147 One last fix for Xcode project. 2022-09-01 15:24:37 -02:30
Stephen Anthony 02a8970bb6 Finally fixed Xcode project. 2022-09-01 15:07:57 -02:30
Stephen Anthony 5f0ded46ce More fixes to Xcode project. 2022-09-01 14:12:52 -02:30
Thomas Jentzsch 371c369ae4 Merge branch 'master' of https://github.com/stella-emu/stella 2022-09-01 17:47:35 +02:00
Thomas Jentzsch 59c1b21b01 allow playing KidVid without tapes 2022-09-01 17:47:19 +02:00
Stephen Anthony b8812d7b6b Second pass at fixing Xcode project. 2022-09-01 13:05:26 -02:30
Stephen Anthony c8b3bd8ba0 First pass at fixing Xcode project. 2022-09-01 12:52:03 -02:30
Stephen Anthony 99d81cc58c Test commit from my Mac. 2022-09-01 12:19:47 -02:30
Thomas Jentzsch 98b06cffc0 reworked KidVid code a little bit (still not working) 2022-09-01 13:58:43 +02:00
Stephen Anthony d6c1481d17 Fix minor initialization warning. 2022-08-25 20:57:57 -02:30
Thomas Jentzsch 4b79864ccc disabled random start bank for MDM bankswitching ROMs 2022-08-22 09:36:38 +02:00
Thomas Jentzsch 21f1154c07 fixed multiple images crash when no images exist 2022-08-22 09:35:53 +02:00
Stephen Anthony 9179a5b1f0 Fix minor warning with g++ and tinyexif. 2022-08-21 19:42:37 -02:30
Stephen Anthony 2048c8f2a6 Final batch of fixes from clang-tidy (for now). 2022-08-21 19:33:08 -02:30
webgeek1234 af50ea273c libretro: android: Fix jni source paths (#921)
Change-Id: Ic580fee9833b4110ddcead0033e8106871b22241
2022-08-21 21:14:15 +02:00
Stephen Anthony 109d36a1c2 Second pass at fixes for suggestions from clang-tidy. 2022-08-21 13:53:52 -02:30
Thomas Jentzsch 3e59afb4cf added alternative debugger snapshot naming option 2022-08-21 12:49:13 +02:00
Stephen Anthony 7f86868cbe Merge branch 'master' of github.com:stella-emu/stella 2022-08-20 15:32:45 -02:30
Stephen Anthony 84a63da5da Yay, got clang-tidy working again. First pass at fixing suggestions. 2022-08-20 15:32:15 -02:30
Thomas Jentzsch 85c6172224 Merge branch 'master' of https://github.com/stella-emu/stella 2022-08-20 20:00:27 +02:00
Thomas Jentzsch 72a4254272 added "swchb" command to debugger 2022-08-20 20:00:03 +02:00
Stephen Anthony 4dfdc1b0f8 libretro: Second pass at fixing Android builds. 2022-08-19 18:40:42 -02:30
Stephen Anthony 8063a3dacd libretro: Attempt to fix Android build script. 2022-08-19 16:05:55 -02:30
Stephen Anthony 17a29dec98 Update .gitignore for recent directory changes. 2022-08-19 15:26:17 -02:30
Thomas Jentzsch 2a6adb536e made image area in Launcher a square to allow better display of vertical oriented images (e.g. boxes)
changed unused image area background to black
2022-08-19 10:23:34 +02:00
Stephen Anthony a117ebd31e Fixed a few new paths missed in previous commits. 2022-08-18 19:15:28 -02:30
Stephen Anthony ec7d93b065 Fix Windows auto-builds. 2022-08-18 19:06:18 -02:30
Thomas Jentzsch df59607b4d updated .gitignore for reorganized folders 2022-08-18 21:46:16 +02:00
Thomas Jentzsch 66dbd35807 fixed paths for Libretro 2022-08-18 21:40:21 +02:00
Thomas Jentzsch 4fdf485020 updated doc for reordered launcher top widgets 2022-08-18 20:03:48 +02:00
Thomas Jentzsch ded7982835 enhanced multiple image sorting
improved image memory allocation
2022-08-18 16:31:54 +02:00
Stephen Anthony c3586060df More rearrangements of classes in Visual Studio project file.
Some fixes for suggestions from VS.
2022-08-17 19:11:41 -02:30
Stephen Anthony 53fd31408f Remove debugging code. 2022-08-17 18:30:27 -02:30
Thomas Jentzsch 2ae4cc49e4 removed a debug cerr 2022-08-17 20:36:26 +02:00
Thomas Jentzsch 2b37ae9ca6 two small fixes 2022-08-17 20:32:49 +02:00
Stephen Anthony 0184fc34d2 Placed all debugger gui files in `src/debugger/gui` in Visual Studio. 2022-08-17 12:54:24 -02:30
Stephen Anthony 1c42ef7ebb Fix `yacc` directory in Visual Studio. 2022-08-17 12:45:22 -02:30
Stephen Anthony 633735e085 Move `yacc` directory to `src/debugger`. 2022-08-17 12:38:40 -02:30
Stephen Anthony b7722796a5 Fix Visual Studio project file for `src/lib` reorg. 2022-08-17 12:16:09 -02:30
Stephen Anthony 9a04d5275f Move various libs to `src/lib`. Again, expect some breakage. 2022-08-17 11:41:31 -02:30
Stephen Anthony 83a7337bc5 Fix paths in Windows build script. 2022-08-17 11:16:20 -02:30
Stephen Anthony cfaf737e92 First pass at moving platform-specific code to src/os.
Likely there *will* be breakage.
2022-08-17 10:50:57 -02:30
Stephen Anthony 7c5ab476da Fixed segfault; reference to string was removed after it was assigned. 2022-08-17 09:40:13 -02:30
Stephen Anthony af728db149 Fix tinyexif in Visual Studio. 2022-08-17 08:05:42 -02:30
Stephen Anthony 241ee4803e Fixed tinyexif in Linux. Now to fix it in Windows. 2022-08-17 07:48:27 -02:30
Thomas Jentzsch 7b7cf84594 updated doc for multiple images format 2022-08-17 10:46:50 +02:00
Thomas Jentzsch 93beb78754 added reading EXIF from JPG images 2022-08-17 10:08:57 +02:00
Thomas Jentzsch a57ca5edc1 made ROM info delay adaptive
some cleanup of the new JPG reading code
2022-08-17 09:17:04 +02:00
Stephen Anthony be5ea25619 Fix nanojpeg in Visual Studio. 2022-08-16 21:57:57 -02:30
Stephen Anthony bba721375d Second pass at JPG support. nanojpeg *really* doesn't like being split into h/c files. 2022-08-16 21:45:19 -02:30
Stephen Anthony 5598490601 Fix PNG/JPG loading in Linux. 2022-08-16 21:20:09 -02:30
Thomas Jentzsch 81bc5188f5 and the usual, missing update of the .mk file 2022-08-16 22:11:40 +02:00
Thomas Jentzsch a54163dbf7 the usual, forgotten new files 2022-08-16 22:08:40 +02:00
Thomas Jentzsch 576f1cb6fe Merge branch 'master' of https://github.com/stella-emu/stella 2022-08-16 22:07:35 +02:00
Thomas Jentzsch c9ea1aa791 added JPG loading support 2022-08-16 22:03:06 +02:00
Stephen Anthony a9e63c1349 Fix minor compile warning in g++. 2022-08-16 14:05:33 -02:30
Stephen Anthony 2998131b74 Updated Xcode build for missing class. 2022-08-15 14:22:43 -02:30
Thomas Jentzsch 6d0cb6d458 updated doc for multiple launcher images (TODO: R77) 2022-08-15 14:12:07 +02:00
Stephen Anthony ea84f0a194 libretro: Clean up redundant cxx files. 2022-08-14 20:25:41 -02:30
Thomas Jentzsch 1a309235b8 improved pending rom update handling
added using a regular expression for searching images
2022-08-14 15:22:40 +02:00
Stephen Anthony df2330989d We don't need to check for directory, since we're using FSNode::ListMode::FilesOnly. 2022-08-13 21:24:03 -02:30
Thomas Jentzsch 82a5106b85 added multiple image searching delay 2022-08-14 00:53:03 +02:00
Stephen Anthony 65c5498cda Fix compile error under g++. 2022-08-13 17:22:02 -02:30
Thomas Jentzsch f2e465c969 optimized image filter filter 2022-08-13 21:17:55 +02:00
Thomas Jentzsch 7810b9f575 and some more fixes 2022-08-13 15:12:41 +02:00
Thomas Jentzsch 76659c10de some fixes and cleanup 2022-08-13 10:09:44 +02:00
Stephen Anthony 4b73c9486c Fix compile error in Linux. 2022-08-12 16:43:01 -02:30
Thomas Jentzsch 9355ac7fc9 fixed reversed image directions 2022-08-12 20:52:25 +02:00
Thomas Jentzsch eb1fe32c0a updated make file for new class 2022-08-12 20:47:31 +02:00
Thomas Jentzsch c648706e82 Merge remote-tracking branch 'remotes/origin/feature/multiimages' 2022-08-12 20:45:28 +02:00
Thomas Jentzsch c43c6ad5be added image navigation display
added keyboard image navigation (TODO: controller)
2022-08-12 20:12:10 +02:00
Thomas Jentzsch 7590b9bad2 added reading and displaying image labels 2022-08-12 11:40:21 +02:00
Thomas Jentzsch 1883c5ab58 added multiple image searching and switching 2022-08-10 20:59:02 +02:00
Thomas Jentzsch 59fe1888c4 preparing for #916 2022-08-10 08:19:12 +02:00
Stephen Anthony c9181e5add Some fixes for suggestions from cppcheck. 2022-08-09 14:34:53 -02:30
Thomas Jentzsch 731432d676 a few minor changes (finally resolves #913 and #914) 2022-08-06 09:20:13 +02:00
Thomas Jentzsch 70daa0868a added bankswitching type to displayed multi cart information 2022-08-05 18:57:11 +02:00
Stephen Anthony 999f9bfd5b Implemented suggestions from various linting tools. 2022-08-04 22:15:04 -02:30
Stephen Anthony 25dd887283 Fixed compile error. 2022-08-04 18:38:10 -02:30
Thomas Jentzsch 6f5d4e3fff added disabling of some Game properties widgets for multi carts
added ROM name to Game properties title
2022-08-04 22:56:12 +02:00
Thomas Jentzsch 809119ff46 Update README.md 2022-08-02 15:51:02 +02:00
Thomas Jentzsch 2697c7bd47 Update README.md 2022-08-02 15:50:23 +02:00
Thomas Jentzsch e88797253e Update README.md 2022-08-02 15:47:16 +02:00
Thomas Jentzsch 0ef63d4b79 Update README.md 2022-08-02 15:44:38 +02:00
Thomas Jentzsch 78e859725e updated doc for optional filtering of Game Properties/Emulation/Types using ROM size 2022-08-02 12:33:14 +02:00
Thomas Jentzsch 5e4a8b66d3 added optional filtering of Game Properties/Emulation/Types using ROM size (TODO: doc) 2022-07-30 21:24:39 +02:00
Thomas Jentzsch a6746103ec added if loading by ROM property name fails, try ROM file name (fixes #911) 2022-07-15 11:11:56 +02:00
Thomas Jentzsch 87da2de653 enhanced scanline based frame layout detection to fractional values, this allows combining results with color based layout overruling 2022-07-14 20:03:45 +02:00
Stephen Anthony bc5aaac936 Fix minor compile warnings. 2022-07-13 11:32:27 -02:30
Thomas Jentzsch ffec4ea576 added optional autodetection of PAL-60 & NTSC-50 2022-07-13 10:34:15 +02:00
Thomas Jentzsch 2ca38d65bb improved Windows command line output 2022-07-07 21:29:38 +02:00
Thomas Jentzsch a1f6194c53 fixed console output not working under Windows 2022-07-07 20:25:30 +02:00
Thomas Jentzsch b8527cd5ef Some minor polishing on LauncherDialog 2022-07-05 11:45:17 +02:00
Thomas Jentzsch 5b736d13d9 Revert "Doubled gap before "Filter" label"
This reverts commit 84c391e17d.
2022-07-05 09:23:09 +02:00
Thomas Jentzsch 84c391e17d Doubled gap before "Filter" label 2022-07-05 09:18:14 +02:00
splendidnut 526544e355 Suggested layout changes for the Launcher UI. (#910)
* Changed the layout in the new Launcher UI to have the controls in a more natural order.

* Changed the layout using provided feedback in the Github pull-request.
- Swapped button locations for Options and Help.
- Moved Reload button to be left of the Filter label/field.
- Updated screenshots in docs directory

* Updated screenshots in docs directory to show Favorites folder in file listing.

Co-authored-by: splendidnut <pblackman@gmail.com>
2022-07-05 08:48:26 +02:00
Thomas Jentzsch cd129decfc updated PathWidget to skip reloading if path has not changed 2022-07-02 20:59:33 +02:00
Stephen Anthony 5b3c4eb2d1 Fix warnings in gcc and clang for missing initializers.
Normally I would disable the warning completely (everywhere), but it's very useful to have.
In this case, the code can be much faster, as it saves having to initialize empty string objects.  So we disable the warning selectively.
2022-07-01 10:05:35 -02:30
Thomas Jentzsch a5d79817ef removed superfluous empty initializers
made InputDialog slightly wider
2022-07-01 10:27:17 +02:00
Thomas Jentzsch fd3915af18 Compacted controller mappings doc 2022-07-01 10:00:26 +02:00
Stephen Anthony 4c243b6738 Added Joy2B classes to Xcode project. 2022-06-30 13:25:07 -02:30
Thomas Jentzsch 0a81ecc574 oops 2022-06-30 16:43:54 +02:00
Thomas Jentzsch c7f4dacc69 Merge branch 'master' of https://github.com/stella-emu/stella 2022-06-30 16:33:07 +02:00
Thomas Jentzsch e0c1aecfc3 fixed filename of Joy2BPlusWidget 2022-06-30 16:32:53 +02:00
Stephen Anthony 358140dbf4 Fix compilation in Linux (module.mk incorrect). 2022-06-30 08:53:18 -02:30
Thomas Jentzsch 37c090d649 added Joy 2B+ support (resolves #909) 2022-06-30 12:54:12 +02:00
Thomas Jentzsch ec2b531f45 enhanced keyboard controller detection (except MagiCard) (fixes #908) 2022-06-29 23:40:13 +02:00
Thomas Jentzsch 192897354d 7800 pause is now working again (fixes #905)
updated doc for 7800 pause hotkey
2022-06-26 19:39:18 +02:00
Stephen Anthony 40206d8af8 libretro: disable TV jitter until it settings are exposed through the UI.
This fixes rolling on NTSC ROMs that worked previous to 6.7 release.
2022-06-18 18:09:06 -02:30
Stephen Kitt 70d15a5629 Add Terminus font licensing information (#902)
src/gui/Stella*tFont.hxx are derived from the Terminus font, whose
license requires the full copyright notice and license to be provided
with original or modified versions of the font.

This adds the missing information.

Signed-off-by: Stephen Kitt <steve@sk2.org>
2022-06-18 14:18:27 +02:00
Stephen Anthony 6a38fcef05 Fix automated Windows builds. 2022-06-14 17:49:47 -02:30
Stephen Anthony 3521f60225 Refactored 'FilesystemNode' -> 'FSNode', in preparation for large overhaul of these classes. 2022-06-14 16:28:20 -02:30
Stephen Anthony 93f6635ea8 Bumped version number for next release. It's probably some time away yet; certainly not this year.
One requirement is it will require C++17 fully. So that means g++-10 at minimum, Visual Studio 2022, and the latest version of Xcode.
2022-06-14 15:52:07 -02:30
Stephen Anthony 32e726b5f4 Updated to Visual Studio 2022. 2022-06-14 15:40:40 -02:30
Stephen Anthony 6b003a8cd6 Final commit for 6.7 release. 2022-06-13 10:54:19 -02:30
Stephen Anthony fd9fdfd47e Check in some WIP code; still working on issue 851. 2022-06-12 16:54:36 -02:30
Stephen Anthony 94836cda4d Update Visual Studio for new BUS class, and fix some minor warnings. 2022-06-11 21:27:36 -02:30
Stephen Anthony 70f70c21bb Fixed some warnings from the previous BUS commit, and added support for Linux/UNIX. 2022-06-11 20:55:43 -02:30
Darrell Spice, Jr cb892a91bf Updated BUS to support some of the older demos. (#898) 2022-06-11 20:40:12 -02:30
Stephen Anthony 20ca8efd1f Updated changelog for new macOS M1 support. 2022-06-11 19:33:58 -02:30
Stephen Anthony a84e89eb22 Updated changelog for last commit. 2022-06-11 19:31:52 -02:30
Stephen Anthony 4926a912ff Added getSize() to FSNodeZIP. This allows to detect too large files in ZIP files. 2022-06-11 19:15:44 -02:30
Thomas Jentzsch 2b2e47db34 Merge branch 'master' of https://github.com/stella-emu/stella 2022-06-10 17:37:23 +02:00
Thomas Jentzsch 600e593040 changed controller ID from 'J..' to 'C..' 2022-06-10 17:36:19 +02:00
Stephen Anthony 879d9b2722 Pushed 6.7 release to Monday, June 13.
This is the last time, I promise :)
2022-06-09 19:18:33 -02:30
Stephen Anthony 96c06f9c30 Minor formatting fix.
Just my OCD kicking in.
2022-06-09 17:33:03 -02:30
Thomas Jentzsch 129df6a057 some minor fixes 2022-06-09 12:20:44 +02:00
Stephen Anthony 16fa171e95 Detect file size in FSNodeWINDOWS. 2022-06-08 18:48:40 -02:30
Christian Speckner 8b1371e830 R77: cut down what's new in order to fit screen and avoid crash. 2022-06-08 19:12:48 +00:00
Christian Speckner 88b2d9ad84 Fix memory corruption if history is empty. 2022-06-08 19:11:52 +00:00
Stephen Anthony 19b7fd33a8 Fix minor compile warning from Xcode. 2022-06-07 12:19:48 -02:30
Thomas Jentzsch e9887146ad added missing PlusROM code to CartBUS.cxx 2022-06-06 22:26:47 +02:00
Stephen Anthony 77afcc4de6 First pass at detecting ROM file size and not loading ROMs that are too large.
Note that this only works in UNIX for now; still TODO for Windows and ZIP files.
For the TODO, the current code still loads ROMs, but just doesn't ignore large files.
2022-06-05 20:58:03 -02:30
Stephen Anthony 7102ec1823 libretro: Fix compile errors due to missing JitterEmulation functionality. 2022-06-05 20:39:19 -02:30
Stephen Anthony cbb61a3ee4 Pushed 6.7 release to June 11. 2022-06-05 19:29:49 -02:30
Stephen Anthony 2309ed2eae std::min and std::max are templates, and can't be combined with 'using'. 2022-06-05 11:40:04 -02:30
Stephen Anthony 3baf404873 Make code a little more concise; should have done this in the last commit. 2022-06-05 11:10:44 -02:30
Stephen Anthony 0503927ec1 Fix minor compile warnings in clang. 2022-06-05 11:02:25 -02:30
Thomas Jentzsch 96ff09b86a enhanced jitter (resolves #316) 2022-06-05 15:14:51 +02:00
Stephen Anthony dfa9ffbea6 Add extra warning about using brace initialization on json when we shouldn't. 2022-06-04 11:53:28 -02:30
Thomas Jentzsch 3a03da20e6 fixed curly bracket initialization for json map (yields arrays!) 2022-06-04 13:40:23 +02:00
Christian Speckner 783bebb658 Fix out-of-bounds. 2022-06-04 08:45:39 +02:00
Thomas Jentzsch 556f8d9492 added properties for Indy 500 Menu hack 2022-06-03 09:09:41 +02:00
Stephen Anthony 9fdce554ce Fixed some potential out-of-bounds accesses detected by _GLIBCXX_DEBUG. 2022-05-31 16:49:52 -02:30
Stephen Anthony 2f585b1ae5 Move release date for 6.7 to June 6. 2022-05-29 19:29:09 -02:30
Stephen Anthony c159d1f9e7 Modified last commit to use more extensive 'DEBUG' checks with glibc.
This detects other issues; I guess I have more work to do :)
2022-05-29 18:46:29 -02:30
Stephen Anthony 9bd3a0a601 Enable _GLIBCXX_ASSERTIONS in debug compile mode in Linux/UNIX. 2022-05-29 18:41:52 -02:30
Stephen Anthony 749bf98ad2 Fix a few array out of bounds accesses (fixes #806).
Note that this applies to mainline too, not just libretro.
2022-05-29 16:40:17 -02:30
Stephen Anthony 53fe13be97 Updated httplib to latest released version. 2022-05-29 13:21:55 -02:30
Stephen Anthony 9571811236 Updated sqlite files to latest released version. 2022-05-29 13:03:12 -02:30
Stephen Anthony 9f01010020 Bumped version # for event and state files, since both have non-compatible changes since the 6.6 release. 2022-05-29 12:58:20 -02:30
Stephen Anthony ab78968b20 Updated to latest zlib release (1.2.12). 2022-05-28 17:59:00 -02:30
Stephen Anthony 3600aa96f1 Fix json handing when compiling with g++ compiler.
This fixes issues with not loading joystick mappings with g++.
2022-05-28 16:51:17 -02:30
Stephen Anthony 8dbbba4026 Fixed wrong date in documentation. 2022-05-27 19:38:57 -02:30
Thomas Jentzsch 36def4682a enhanced debugger doc (closes #892) 2022-05-26 16:11:59 +02:00
Christian Speckner e4edfcc8ad Merge remote-tracking branch 'origin/6.6-r77' 2022-05-24 21:55:13 +00:00
Stephen Anthony b2f4cac901 Updated internal properties database to RomHunter v17. 2022-05-23 19:45:40 -02:30
Stephen Anthony cf77fd5116 Fixed creation and merging of stella.pro to DefProps.hxx. 2022-05-20 19:07:04 -02:30
Thomas Jentzsch ff1703bd1c minor fix to WhatsNewDialog 2022-05-17 18:05:03 +02:00
Stephen Anthony 25a8ed7e8c Updated release date for upcoming 6.7 release. 2022-05-17 12:57:09 -02:30
Stephen Anthony e18be00776 Fix crash when directory doesn't exist in BrowserWidget (fixes #888). 2022-05-14 14:59:22 -02:30
Thomas Jentzsch 6aa81dbdda improved Mindlink support 2022-05-09 19:04:23 +02:00
Stephen Anthony 2656cdcdff Fixes for a few minor warnings from cppcheck. 2022-05-08 17:50:16 -02:30
Stephen Anthony 343a6a0924 Minor fixes for warnings from some lint tools. 2022-05-08 13:55:17 -02:30
Thomas Jentzsch 712d7046d3 two minor fixes for multi-segment ROM disassemblies 2022-05-05 12:28:47 +02:00
Thomas Jentzsch 75fa3eb438 allow quick select for directories starting with non-letter chars (fixes #891) 2022-05-05 00:20:33 +02:00
Thomas Jentzsch 75b4d5b362 fixed saved disassembly for extra RAM 2022-05-03 10:18:27 +02:00
Stephen Anthony 15863b10b6 Improve processing files that aren't valid ROMs.
Now, the extension is actually checked before opening the ROM.
Streaming ROMs (MVC) are already taken care of, but still TODO is limit read to Cart::maxSize().
2022-04-30 18:53:39 -02:30
Thomas Jentzsch 819f000fb7 fixed disassembling of ZP-RAM code (fixes #890) 2022-04-30 21:24:36 +02:00
Thomas Jentzsch df90ece66d corrected RESMPx for double sized players (fixes #889) 2022-04-21 18:57:33 +02:00
Stephen Anthony 5f2b621ebb Fix minor warning from clang. 2022-04-19 11:30:28 -02:30
Thomas Jentzsch 9274cb8f8c improved disassembly of multi segment ROMs (see #568) 2022-04-19 11:10:09 +02:00
Stephen Anthony 20bac793dd Eliminate warning for unused parameter. 2022-04-16 21:54:16 -02:30
Stephen Anthony 97487cdaef When opening ROMs, ignore error messages in certain cases. 2022-04-16 21:52:10 -02:30
Stephen Anthony fcc5fbf439 Fix parsing large MVC files causing lockup/crash in GUI (fixes # 829).
Still TODO is deal with large files other than MVC, and also ZIP files.
At least the logic for analyzing size is now in one method (OSystem::openROM).
2022-04-16 19:25:50 -02:30
Thomas Jentzsch 4e17fc28ab added regex for PAL-N in filename (->NTSC50) 2022-04-13 11:27:53 +02:00
Thomas Jentzsch d74d6c3c61 improved bank origin detection (fixes #428) 2022-04-11 09:14:01 +02:00
Thomas Jentzsch 6fbf4c3bb3 Fixed spelling of EconoBanking 2022-04-10 16:25:15 +02:00
Thomas Jentzsch 3d358fb814 fixed company name into Fotomania 2022-04-10 16:16:12 +02:00
Stephen Anthony dd1f9326a3 Disable warnings in Xcode for all files we don't control. 2022-04-09 13:08:58 -02:30
Stephen Anthony 5fae122479 Added recent class additions to Xcode project.
Fixed some minor issues in VS project.
Minor formatting fixes.
2022-04-09 12:19:18 -02:30
Thomas Jentzsch f742dd7688 fixed path of Cart0FA0Widget 2022-04-09 14:55:21 +02:00
Thomas Jentzsch 728c7409f3 added 0FA0 (Mania) bankswitching
modified UA bankswitching accordingly
2022-04-09 10:26:22 +02:00
Stephen Anthony 224de3184f Eliminated BSPF::getenv(), as only the UNIX version is used.
I spent a lot of time trying to eliminate warnings in the Windows version of this
function, only to realize it's only ever used in POSIX-specific code!
2022-04-08 19:51:15 -02:30
Stephen Anthony 54dc514ec3 Fix minor warning from cppcheck. 2022-04-08 11:23:26 -02:30
Thomas Jentzsch 4df3c17c3c added hotkey tooltips to CommandDialog 2022-04-07 11:14:46 +02:00
Thomas Jentzsch e787bb3e2b some minor doc updates 2022-04-06 11:48:13 +02:00
Thomas Jentzsch 63d46d0291 aligned hotkey display format with doc 2022-04-06 11:46:14 +02:00
Thomas Jentzsch 018b956ede added some more hotkey tooltips to GameInfoDialog 2022-04-05 18:07:31 +02:00
Stephen Anthony 844f52bd5a Some more const updates for Mac port. 2022-04-04 16:27:13 -02:30
Stephen Anthony 3ee56801f6 Eliminate unused variable. 2022-04-04 13:46:41 -02:30
Thomas Jentzsch b078aff86d added hotkey tooltips to debugger 2022-04-04 17:38:21 +02:00
Stephen Anthony a24d3e67bc Minor 'const' updates to POSIX classes. 2022-04-03 20:36:39 -02:30
Stephen Anthony d7cc995164 Speed up linking in Visual Studio, per recommendations given after
compiling.
2022-04-03 16:01:32 -02:30
Stephen Anthony bd5ec219fa Fix methods aliasing superclass methods without using virtual/override. 2022-04-03 15:58:57 -02:30
Thomas Jentzsch c008a9cf84 Merge branch 'master' of https://github.com/stella-emu/stella 2022-04-03 19:55:59 +02:00
Thomas Jentzsch 40c5c46c38 fixed #885 (detected settings display overwritten by auto pause) 2022-04-03 19:55:42 +02:00
Stephen Anthony 2541184c93 Updated M6502.ins/m4 to use static_cast and const. 2022-04-03 12:51:59 -02:30
Stephen Anthony 77931d203d Make DefProps constexpr. 2022-04-02 21:45:42 -02:30
Stephen Anthony 875a42dd0f Converted more C-style code to C++. 2022-04-02 21:04:06 -02:30
Stephen Anthony 26367296b0 Fourth pass at updates for warnings from Visual Studio. 2022-04-02 19:25:35 -02:30
Thomas Jentzsch f3099a90c9 Added hotkey display to tooltips 2022-04-02 19:07:28 +02:00
Stephen Anthony 26104ab685 Fix compile error; I forget to test changes in debug mode. 2022-03-31 18:54:40 -02:30
Stephen Anthony 240cbe2c06 Third pass at updates for warnings from Visual Studio. 2022-03-31 17:20:19 -02:30
Thomas Jentzsch 6ecdde356f optimized Thumbulator range checks 2022-03-30 14:20:11 +02:00
Thomas Jentzsch 4334e28171 Merge branch 'master' of https://github.com/stella-emu/stella 2022-03-29 19:18:35 +02:00
Thomas Jentzsch e55390cb6a enhanced range checks for Thumbulator
changed initial Thumb code stack pointer
2022-03-29 19:18:11 +02:00
Stephen Anthony e95f2fdbe0 Second pass at fixing warning from Visual Studio (const and C-style casts). 2022-03-28 22:00:26 -02:30
Stephen Anthony da75f11860 First pass at fixing warning from Visual Studio (const and C-style casts).
This isn't all the code, just checking in the WIP so far.
It's not exciting work like new features, etc, but is required to keep the codebase clean.
I actually find it kind of relaxing; taking a short break from new features.
2022-03-27 18:09:55 -02:30
Christian Speckner 2e624d5312 Xcode: target local arch for debug build, create fat binary for release. 2022-03-22 22:50:29 +01:00
Stephen Anthony 2b43161fa1 Minor updates for warnings from cppcheck. 2022-03-18 14:58:39 -02:30
Thomas Jentzsch 5df0159c96 minor tweaks 2022-03-16 16:12:55 +01:00
Thomas Jentzsch 4580be954c added another UA bankswitching detection pattern 2022-03-08 18:33:12 +01:00
Thomas Jentzsch ca31a22b47 updated game properties 2022-03-06 12:26:33 +01:00
Thomas Jentzsch 2b5e658db0 updated Changes.txt and WhatsNewDialog 2022-03-06 11:57:22 +01:00
eds-collabora d22618d491 Paddle mode enhancements (#861)
* Separate control precedence for paddles A and B

Previously, the paddle pair was treated as a single unit as far as
event overrides were concerned, so an analog input on paddle B would
prevent a mouse or even another digital controller from controlling
paddle A.

This commit separates out paddle A and B as far as event handling is
concerned. The same steps are applied, but now events affecting paddle
A will not preempt events of other types for paddle B from being
tested, and vice versa.

* Paddle mode enhancements

Map paddles to distinct controllers. For two player games, having
both players share a single controller isn't ideal. Instead, put
- Left A -> joystick 0
- Left B -> joystick 1
- Right A -> joystick 2
- Right B -> joystick 3
2022-03-06 11:23:31 +01:00
Stephen Anthony 40440f38dc Fix lockup on ZIP files containing errors (fixes #871). 2022-03-05 18:47:12 -03:30
Stephen Anthony 619fbbded1 Update sqlite to latest release. 2022-03-01 17:07:33 -03:30
Thomas Jentzsch a49f628c57 reapply color loss when switching TV format (fixes #880) 2022-02-28 09:32:41 +01:00
Thomas Jentzsch 2f8f72a729 Merge branch 'master' of https://github.com/stella-emu/stella 2022-02-26 19:04:28 +01:00
Thomas Jentzsch a4fa651575 updated CDFJ+ driver description 2022-02-26 19:04:15 +01:00
Stephen Anthony 8c3da1ce93 Eliminate redundant code. 2022-02-26 13:23:31 -03:30
Thomas Jentzsch 8e0ff82fe1 updated .gitignore 2022-02-25 11:17:38 +01:00
Thomas Jentzsch 9b62cd5282 updated launcher doc 2022-02-25 11:01:19 +01:00
Stephen Anthony ae8ebea664 Minor update: convert a define to C++ constexpr. 2022-02-24 16:55:05 -03:30
Thomas Jentzsch 5d425f7e3e more work on doc tables 2022-02-24 09:16:22 +01:00
Darrell Spice, Jr b02128fd38 Fixed CDFJ+ issue if the first byte of the cartridge contained a value of FF_OFFSET thru FF_OFFSET + $23 (#879)
Updated Thumbulator's debug mode to allow run-time updating of the FF_OFFSET value.
2022-02-24 07:59:29 +01:00
Thomas Jentzsch b6d9acaee6 fixed read access to write port if write port uses upper address range (fixes #878) 2022-02-23 21:53:32 +01:00
Thomas Jentzsch 8f694762ca Merge branch 'master' of https://github.com/stella-emu/stella 2022-02-23 21:21:18 +01:00
Thomas Jentzsch fb889bc15c truncated state files (fixes #875) 2022-02-23 21:21:01 +01:00
Stephen Anthony 7b031ee121 Minor fixes to CartCDF; use C++ constexpr instead of C-style defines. 2022-02-23 15:19:37 -03:30
Thomas Jentzsch 024e3717b1 cleaned table look in doc 2022-02-23 19:42:29 +01:00
Thomas Jentzsch 8bc8b6fb0b minor fix for Global Hotkeys and Stelladaptors 2022-02-23 19:23:49 +01:00
Darrell Spice, Jr 7b87f237b3 Updated CDFJ+ with support for LDX # and LDY # fast fetchers, as well as a fast fetcher offset value. Also updates to the CDF Debugger. (#877) 2022-02-22 08:56:47 +01:00
Thomas Jentzsch d4b2137462 fixed patching ZP-RAM code (fixes #874) 2022-02-17 11:56:53 +01:00
Thomas Jentzsch a71a67455b enhanced launcher context menu with direct Game properties dialog link 2022-02-16 21:54:20 +01:00
Thomas Jentzsch d9bb0c3ee6 added ARM chip type auto detection (resolves #873) 2022-02-15 12:33:46 +01:00
Stephen Anthony cf1bca29ad Fix minor warnings. 2022-02-08 20:26:21 -03:30
Thomas Jentzsch f0d375bb77 fixed ARM timers (#fixes 872) 2022-02-08 22:35:59 +01:00
Thomas Jentzsch 11fb04aef2 added display name to display logging 2022-02-06 10:19:15 +01:00
Thomas Jentzsch b3195762a3 added PlusROM change tracking 2022-02-05 08:51:48 +01:00
Thomas Jentzsch b8a1793f23 added PlusROM info to debugger (resolves #844)
added PlusROM user info to System log
2022-02-04 20:12:59 +01:00
Stephen Anthony 07d94887ee Fix compile failure in BSPF_UNIX (ie, Linux). 2022-02-02 09:57:54 -03:30
Thomas Jentzsch 06b5d78496 added option for automatic pause/continue of emulation depending on focus (resolves #870) 2022-02-02 11:42:39 +01:00
Stephen Anthony fc41fbc02f libretro: Use standard C++17 code instead of Windows-specific code. 2022-02-01 16:14:03 -03:30
Thomas Jentzsch 0084942f18 Libretro: Some code cleanup
Libretro: Renamed "Paddle" into "Analog"
2022-02-01 09:58:04 +01:00
Keith Bowes 3a6ce6ced1 [libretro] Update libretro.h (#869) 2022-02-01 09:24:15 +01:00
Stephen Anthony 6ecdadcf7b libretro: Fix minor compile warning. 2022-01-31 18:12:00 -03:30
Thomas Jentzsch 1d49959db1 Libretro: added analog paddle sensitivity
Libretro: added console switches mappings for 2nd (joypad) controller
2022-01-31 09:02:44 +01:00
Thomas Jentzsch d6986852df added light gun position scaling (now it works with a mouse) 2022-01-30 23:42:19 +01:00
Thomas Jentzsch b422f7f782 updated Libretro VS project file 2022-01-30 19:26:31 +01:00
Thomas Jentzsch c767485700 trying to fix Libretro build failure 2022-01-30 11:38:03 +01:00
Thomas Jentzsch 5f55c86f50 added analog paddle mapping for Libretro
added input descriptions for Libretro
2022-01-30 11:12:51 +01:00
Thomas Jentzsch de1a97c94e added light gun to input description list 2022-01-29 18:30:40 +01:00
Thomas Jentzsch 830a34d745 second attempt of implementing light gun support for Libretro 2022-01-29 12:15:46 +01:00
Thomas Jentzsch ce3fdec7c1 first attempt of implementing light gun support for Libretro 2022-01-29 11:37:00 +01:00
Thomas Jentzsch 096f2434c0 added missing controller mappings 2022-01-26 19:34:03 +01:00
eds-collabora d0def4a56f Update documentation for keybindings in Driving Mode (#868)
The default keybindings remain the same as they did, they are just
no longer shared with the Joystick Mode.
2022-01-26 18:58:47 +01:00
eds-collabora 9158d4346a Reorder "Driving" within the event mapping widget (#867) 2022-01-24 09:19:38 +01:00
eds-collabora 5b2a365d2a Fixes for driving mode changes (#866)
- Use a float divisor to reduce the high resolution counter to a gray
  code. This gives a more stable rate of change for the gray code when
  using a sensitivity other than 1.
- Slightly remap the axis space, so that the positive and negative
  ranges are the same. The new range is [64,-1] [1, 64]. We don't need
  zero, because of the analog dead zone.
- Reorder the Event enum as suggested for on PR860.
2022-01-21 08:38:30 +01:00
Thomas Jentzsch 97e55f8a63 fixed the fix 2022-01-20 13:02:41 +01:00
Thomas Jentzsch 069768e18c fixed #864 (SC-RAM reads from write ports) 2022-01-20 12:21:53 +01:00
eds-collabora a6f9c33ded Driving mode enhancements (#860)
The driving controller is closer to a paddle controller than a
joystick, but doesn't have hard stops.

This patch adds:
- A dedicated set of event bindings for driving.
- The option to use an analogue steering input from a regular joystick
  axis, and a separate higher resolution counter to assist with this.
2022-01-19 15:23:14 +01:00
Stephen Anthony 05449510fb Fixed code signing issues in latest Xcode for Mac. 2022-01-07 20:46:25 -03:30
Stephen Anthony e710da1e0c Fix 'nib' warning in latest version of Xcode for Mac.
I'm not sure this is the best way to do it, but I don't really know Obj-C.
2022-01-07 20:20:23 -03:30
Stephen Anthony 4628f711b8 Update copyright to 2022. Happy New Year! 2021-12-31 16:07:17 -03:30
Stephen Anthony cdf62286ec Yet more formatting issues I forgot in the last commit. 2021-12-30 11:40:42 -03:30
Stephen Anthony b072a5d9f8 Minor formatting changes I forgot in a previous commit. 2021-12-30 11:38:34 -03:30
Christopher Obbard 40284f3b63 joystick: Add menuMode mappings before emulationMode mappings (#847)
For some controllers, the initial default (i.e. when the controller
is first attached) mappings seem to not work in emulation mode, but
work just fine in menu mode. The emulation mode mappings are shown
in the UI, but do not work until the second time the emulator is
started.

From debugging, even in emulation mode the joyMap is returning
menu bindings when in-game. Fix this bug by adding the emulation
mode mappings before the menu mode mappings.

Fixes: 857369aad5 ("fix attempt for #692")
Signed-off-by: Christopher Obbard <chris.obbard@collabora.com>
2021-12-30 11:12:48 -03:30
Thomas Jentzsch 227702c6bc Merge branch 'master' of https://github.com/stella-emu/stella 2021-12-21 11:25:35 +01:00
Thomas Jentzsch b08c277995 fixed and enhanced audio frequency display in debugger 2021-12-21 11:25:17 +01:00
Stephen Anthony 6e3e2890bf Added some missing help options to configure script. 2021-12-19 23:40:19 -03:30
Stephen Anthony 5e6f488675 Make configure script use system libsqlite3, if requested (disabled by default). 2021-12-19 23:36:13 -03:30
Stephen Anthony 59f46aea97 Disable warnings for sqlite in Visual Studio. 2021-12-19 22:02:35 -03:30
Thomas Jentzsch 7c3dd3f2aa fixed virtual folders (fixes #855) 2021-12-19 09:05:10 +01:00
Stephen Anthony 0c9a0f2216 More cleanups to VS project. 2021-12-18 18:45:28 -03:30
Stephen Anthony c6c9cc957e Some cleanups to Visual Studio project for warnings.
Disable all warnings from httplib.h, since we don't control that code.
Fix a few warnings recommended by VS, and disable the rest.
2021-12-18 18:26:10 -03:30
Stephen Anthony d901b987aa Fix minor warnings from clang-13. 2021-12-18 14:15:58 -03:30
Stephen Anthony dff6fe7ef8 Fix for missing 'CC' compiler in configure script (fixes #856). 2021-12-18 12:47:53 -03:30
Thomas Jentzsch fb605dde5c removed two unused variables (fixes #856) 2021-12-18 09:44:53 +01:00
Thomas Jentzsch bf1a383504 updated docs (incl. R77)
enhanced launcher code for R77
2021-12-17 15:40:34 +01:00
Thomas Jentzsch a11639fbbe added a few minor enhancements to the BrowserDialog 2021-12-17 10:38:32 +01:00
Thomas Jentzsch a59126aa30 aligned button sizes in launcher 2021-12-17 10:28:34 +01:00
Christian Speckner 525c812073 Fix crash by shrinking "What's new?" 2021-12-16 21:04:51 +00:00
Thomas Jentzsch 1d55abbe5e fixed Launcher filtering of ZIPs not containing any valid ROMs 2021-12-16 09:51:11 +01:00
Christian Speckner d0892bdcce Typo. 2021-12-15 19:18:29 +00:00
Stephen Anthony 20082fbec8 Updated Xcode project, and various fixes for Xcode and MacOS 12. 2021-12-15 13:32:57 -03:30
Christian Speckner bebb1aca28 What's new for R77 2021-12-15 16:09:18 +00:00
Thomas Jentzsch db4630127b finally added a help button to the launcher 2021-12-15 16:28:21 +01:00
Thomas Jentzsch a061f8af10 trying to fix menu problems with analog controllers 2021-12-15 12:56:29 +00:00
Thomas Jentzsch 9ed02758fc trying to fix menu problems with analog controllers 2021-12-15 12:26:00 +01:00
Thomas Jentzsch 2b36a827ac fixed minor compiler warning 2021-12-14 23:21:26 +01:00
Stephen Anthony 124ee44d39 Fix minor compile warnings. 2021-12-14 18:47:11 -03:30
Thomas Jentzsch f1c8f7b2b6 enhanced folder navigation in launcher 2021-12-14 22:31:09 +01:00
Thomas Jentzsch 15c50bf4b5 added the (usual) missing files :| 2021-12-13 15:39:40 +01:00
Thomas Jentzsch 369a5dfc16 refactored file navigation bar into own class
enhanced BrowserDialog
2021-12-13 15:38:59 +01:00
Fabrice Fontaine 41f7d70990 configure: add CC (#854)
Add CC to fix the following build failure when cross-compiling which is
raised since
37c72b1dc7:

out/src/sqlite/sqlite3.o: file not recognized: file format not recognized

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
2021-12-12 18:16:52 -03:30
Thomas Jentzsch 764f6bc1b9 fixed virtual folder handling when "romdir" is a virtual folder 2021-12-12 09:45:49 +01:00
Thomas Jentzsch e2576c1f99 minor refactoring 2021-12-12 09:23:13 +01:00
Thomas Jentzsch 27507fc4a4 Fixed double backspace action in launcher 2021-12-12 09:09:45 +01:00
Stephen Anthony 21dace2015 Fix minor compile warning from clang. 2021-12-11 20:02:04 -03:30
Thomas Jentzsch 4871650e65 Redo 3b0d25983 2021-12-11 23:34:43 +01:00
Thomas Jentzsch 1a6a79fb2e Revert "k"
This reverts commit 158536722b.
2021-12-11 23:31:10 +01:00
Thomas Jentzsch 8ae39732ec Merge branch 'master' of https://github.com/stella-emu/stella 2021-12-11 23:28:17 +01:00
Thomas Jentzsch 3b0d259833 refactored new launcher code a bit 2021-12-11 23:26:21 +01:00
Thomas Jentzsch 158536722b k 2021-12-11 23:14:04 +01:00
Thomas Jentzsch 73b79cae7d limit message display frames to 120 (fixes #852) 2021-12-11 23:13:35 +01:00
Thomas Jentzsch 81eba12884 added launcher directory history 2021-12-11 16:45:24 +01:00
Stephen Anthony 47e3bd5ffe Remove Icon.o from Linux build. 2021-12-07 12:54:47 -03:30
Thomas Jentzsch cda621f217 removed Icon.cxx 2021-12-07 16:14:58 +01:00
Thomas Jentzsch 49693b2d12 makefile updated 2021-12-07 15:40:04 +01:00
Thomas Jentzsch 945f7effc7 refactored LauncherDialog
fixed shortcuts in Launcher while in Filter field
2021-12-07 15:39:24 +01:00
Thomas Jentzsch 3e034ff854 minor cosmetic to changes of LauncherDialog & ProgressDialog 2021-12-06 11:13:45 +01:00
Thomas Jentzsch 13235e298b revamped LauncherDialog
added option to disable bottom buttons
2021-12-05 18:08:38 +01:00
Thomas Jentzsch 0a6560b47f added "remove all" options for favorites 2021-12-03 20:57:34 +01:00
Thomas Jentzsch 59f8b8c16d fixed Libretro compile error 2021-12-03 20:27:35 +01:00
Thomas Jentzsch e7b89da825 added option to disable favorites 2021-12-03 19:49:18 +01:00
Thomas Jentzsch b819b6102a fixed the quit bug in issue #850 2021-12-03 17:28:48 +01:00
Thomas Jentzsch c94c525816 fixed '~' handling in ZIP files (fixes #849) 2021-12-03 16:45:58 +01:00
Thomas Jentzsch 6d5a3c9d22 Revert "fixed"
This reverts commit 7056d2df10.
2021-12-03 16:45:09 +01:00
Thomas Jentzsch 7056d2df10 fixed 2021-12-03 16:39:53 +01:00
Thomas Jentzsch 5b6bc5e707 added home button
fixed virtual directories missing issue (see #848)
2021-12-03 14:06:35 +01:00
Thomas Jentzsch d7f5148429 added favorite directories 2021-12-02 23:27:02 +01:00
Thomas Jentzsch a3368b92f3 fixed selecting of last ROM when list is reloaded 2021-12-01 20:06:30 +01:00
Thomas Jentzsch f0b3d1c0ba minor update to PF debug colors 2021-12-01 11:33:18 +01:00
Thomas Jentzsch 2458df8db9 added score mode glitch emulation TIA option (resolves #587) 2021-11-30 23:07:59 +01:00
Christian Speckner 3dab241fee Fix build on gcc 10. 2021-11-30 21:31:41 +00:00
Christian Speckner 5c35750d54 Fix PGO on gcc 10. 2021-11-30 21:31:23 +00:00
Thomas Jentzsch 598938a249 enhanced launcher context menu display 2021-11-30 16:24:21 +01:00
Thomas Jentzsch b1ef197f89 slightly enhanced launcher context menu 2021-11-30 11:13:46 +01:00
Stephen Anthony 4e6219db8e Eliminate warning about enum's in clang. 2021-11-29 18:16:29 -03:30
Stephen Anthony 11dbf63db7 Fix minor compile warnings. 2021-11-29 17:21:29 -03:30
Thomas Jentzsch ddffa287eb added removing of deleted ROMs from virtual lists 2021-11-29 18:23:58 +01:00
Stephen Anthony 639fb2a8b4 Update Xcode for new classes. 2021-11-29 13:40:02 -03:30
Stephen Anthony b588457045 Fix minor compile warnings/errors. 2021-11-29 13:27:56 -03:30
Thomas Jentzsch 66bd354e3e fixed unwanted website openings 2021-11-29 11:40:51 +01:00
Thomas Jentzsch 414a505b71 updated doc 2021-11-29 11:34:48 +01:00
Thomas Jentzsch ff8a48f1b2 add option for removing recent/popular files
tried to fix the Linux compile problem
renamed the (internal) Settings keys used to store the favorites
further updated doc
2021-11-29 09:27:41 +01:00
Thomas Jentzsch 849923968d added tracking of user favorites, recently played and most popular games
added virtual directories for selecting tracked games
extended launcher context menu and shortcuts
2021-11-28 17:33:54 +01:00
Thomas Jentzsch ecf7afea70 fix long press navigation bug (fixes #845) 2021-11-28 11:58:17 +01:00
Stephen Anthony e4bb59a760 Some small optimizations. 2021-11-25 17:38:58 -03:30
Thomas Jentzsch c8102fdce9 fixed uppercase search in launcher 2021-11-25 18:58:06 +01:00
Thomas Jentzsch 0dbb419c83 Merge branch 'master' of https://github.com/stella-emu/stella 2021-11-25 11:24:28 +01:00
Thomas Jentzsch 218452dc8d added option to show/hide file extensions
updated doc
2021-11-25 11:20:56 +01:00
Thomas Jentzsch 76d4043e6c added option to show/hide file extensions
updated doc
2021-11-25 11:07:19 +01:00
Thomas Jentzsch 0b66321bfc added icons to file lists and removed special directory name formatting 2021-11-24 23:27:42 +01:00
Thomas Jentzsch e681373d16 Merge branch 'master' of https://github.com/stella-emu/stella 2021-11-23 10:19:15 +01:00
Thomas Jentzsch 905135f3ce added option for toggling autofire (resolves #843) 2021-11-23 10:11:56 +01:00
Thomas Jentzsch 84b03e8b70 added option for toggling autofire 2021-11-23 09:37:40 +01:00
Thomas Jentzsch ff5735a3f0 enhanced global keys handling for fullscreen mode
reordered events for Event Mappings dialog
2021-11-21 11:02:11 +01:00
Stephen Anthony 2f06f8c86e Fixed incorrect path for documentation pics when building UNIX image. 2021-11-18 20:49:42 -03:30
Stephen Anthony 6a48cbe64a Updated config files from gnu.org. 2021-11-18 20:48:48 -03:30
Thomas Jentzsch 0f20464445 fixed #841 (setting of phosphor properties) 2021-11-17 19:43:50 +01:00
Stephen Anthony 6b894c803a Final commit for 6.6. 2021-11-16 10:20:41 -03:30
Stephen Anthony c2e6392564 Updated release date to Tuesday, Nov. 16. 2021-11-15 13:00:18 -03:30
Thomas Jentzsch 3930b7e5ca fixed #837 (empty path crashes BrowserDialog) 2021-11-14 15:08:58 +01:00
Stephen Anthony 7b6adb986e Getting ready for 6.6 release. 2021-11-10 14:07:13 -03:30
Stephen Anthony 77b8af771c Update Xcode project; fix Mac build. 2021-11-10 13:12:38 -03:30
Thomas Jentzsch 76a2579e85 Added data grid navigation shortcuts to debugger doc 2021-11-08 17:33:55 +01:00
Thomas Jentzsch 22646e2307 enhanced effects info for PNG snapshots 2021-11-06 13:17:52 +01:00
Thomas Jentzsch 19f0ef5c10 refactored scanline definition 2021-11-04 10:36:12 +01:00
Thomas Jentzsch f21add69a4 forgot to save before committing :) 2021-11-04 09:24:50 +01:00
Thomas Jentzsch 8aa358c2cf updated WhatsNewDialog and Changes.txt
changed developer mode hotkey
2021-11-04 09:23:53 +01:00
Thomas Jentzsch 2555844cdc added switching to bilinear scaling if QIS makes no sense
added 5th scanline mask (aperture grille)
aligned brightness of all scanline masks
updated doc for scanline masks
2021-11-02 11:49:44 +01:00
Thomas Jentzsch abe0d9cf8a added different mask pattern for scanline emulation 2021-11-01 17:55:45 +01:00
Thomas Jentzsch ec6e9394ec disabled random startup bank for CartWD 2021-11-01 08:07:13 +01:00
Thomas Jentzsch f934b9e05e added the usual missing new files 2021-10-30 15:09:33 +02:00
Thomas Jentzsch 9b5f2782df added hotkey for toggling Developer Settings sets 2021-10-30 14:56:03 +02:00
Thomas Jentzsch 4a585c788f renamed one global hot key adjustment 2021-10-30 09:55:23 +02:00
Thomas Jentzsch a924dc6173 added hotkeys for adjusting TV jitter roll 2021-10-30 09:20:51 +02:00
Stephen Anthony 45672f3ee2 Fix compile warnings in gcc/clang. 2021-10-29 14:39:51 -02:30
Thomas Jentzsch 512f4ec43c refactored GlobalKeyHandler 2021-10-29 10:23:14 +02:00
Thomas Jentzsch 735c17f832 replaced dynamic with static cast 2021-10-28 15:50:24 +02:00
Thomas Jentzsch ca03979556 trying to fix Libretro build (part 2) 2021-10-28 15:18:09 +02:00
Thomas Jentzsch 9b02321025 trying to fix Libretro build 2021-10-28 15:17:00 +02:00
Thomas Jentzsch 3972a79cf6 refactored global key handling into own class 2021-10-28 14:06:13 +02:00
Thomas Jentzsch 397246eb71 made BrowserDialog comparing parents instead of parent's sizes (fixes #836) 2021-10-27 19:39:45 +02:00
Thomas Jentzsch ef2b91c7f6 improved UI and doc for interpolation (unavailable for Software renderer) 2021-10-27 11:39:43 +02:00
Thomas Jentzsch 3a90dd4558 added suppression of unwanted global hotkey repeats 2021-10-27 11:13:37 +02:00
Thomas Jentzsch 47db1c9297 refactored AppMode definition 2021-10-27 10:23:41 +02:00
Thomas Jentzsch b1302e2cad fixed two duplicate hotkeys 2021-10-26 10:20:24 +02:00
Thomas Jentzsch f2423348b4 fixed global hotkey for mouse control
minor global hotkey refactoring
2021-10-26 10:11:38 +02:00
Stephen Anthony 8adeaae8ce Fix segfault on some systems when using BrowserDialog during a program run.
Remove old debugging print code.
2021-10-24 13:57:40 -02:30
Stephen Anthony bd7f948d3a Fix gcc warning with braces around MACRO. 2021-10-23 21:51:13 -02:30
Stephen Anthony 3f7cff8902 Fix minor warnings with semicolons. 2021-10-22 19:14:40 -02:30
Thomas Jentzsch fda928912f prevent creating lots of zero-size debugger script files when autosave is enabled 2021-10-21 14:07:33 +02:00
Thomas Jentzsch c59368e118 made PlusROMs command line ID temporary 2021-10-20 20:28:35 +02:00
Thomas Jentzsch 605a155cf5 minor tooltip change for ARM chips emulated 2021-10-20 12:22:17 +02:00
Thomas Jentzsch 38449a9962 removed 'WE' prefix from PlusROM id 2021-10-18 12:32:34 +02:00
Thomas Jentzsch 3394584aa8 switched to new PlusROMs header scheme 2021-10-17 19:33:04 +02:00
Thomas Jentzsch a0338f92a8 fixed Windows serial port names list 2021-10-17 17:29:56 +02:00
Thomas Jentzsch 3feb843a53 updated PlusROM backend wording 2021-10-17 14:53:26 +02:00
Thomas Jentzsch a6f749af41 just a few minor changes 2021-10-17 10:59:11 +02:00
Thomas Jentzsch 9a518a53b9 reactivated direct peeks for PlusROMs 2021-10-16 22:55:08 +02:00
Stephen Anthony 5f1faf9cc7 VS project no longer supports WinXP builds (take 2) 2021-10-16 17:21:31 -02:30
Thomas Jentzsch 9d9d18ca21 renamed bank locked into hotspots locked 2021-10-16 17:30:39 +02:00
Thomas Jentzsch fbcb8dd09d added bank locking in debugger to PlusROM (maybe we should rename it into hotspot locking?) 2021-10-16 17:18:10 +02:00
Thomas Jentzsch 8f81b59e88 disable audio sample saving when TimeMachine is disabled (fixes #835) 2021-10-15 12:10:00 +02:00
Thomas Jentzsch e0564c0661 fixed render recreation 2021-10-15 10:31:37 +02:00
Thomas Jentzsch eafac57d1d fixes #834 (major renderer memory leak) 2021-10-14 19:35:49 +02:00
Thomas Jentzsch 2e4a20e914 added address sanitizer configuration to VS 2021-10-14 17:10:11 +02:00
Thomas Jentzsch 69afdb7e90 fix positioning of invisible window (see #833) 2021-10-12 09:26:21 +02:00
Christian Speckner 63a5845964 More accurate error message. 2021-10-11 17:59:36 +02:00
Christian Speckner eb1eceb685 Make logger threadsafe. 2021-10-11 17:59:00 +02:00
Christian Speckner bb479e5010 Fix segfault on invalid PlusROM URL. 2021-10-11 17:46:47 +02:00
Thomas Jentzsch b0ed0f6568 updated doc screenshots 2021-10-10 20:33:31 +02:00
Thomas Jentzsch a85562c01e reverted some previous, superfluous changes 2021-10-10 15:52:13 +02:00
Stephen Anthony 0fe84ca24c Fix minor compile warning from clang. 2021-10-10 10:34:04 -02:30
Thomas Jentzsch 2fc4ad7383 Merge branch 'master' of https://github.com/stella-emu/stella 2021-10-10 12:06:20 +02:00
Thomas Jentzsch 62bcb851bb added message display for PlusROMs (TODO: update screenshots)
renamed message display setting
extended PlusROM support to ARM carts (TODO: test)
2021-10-10 12:06:01 +02:00
Thomas Jentzsch 6bf4a971f2 saving changes for the merge 2021-10-10 08:44:31 +02:00
Stephen Anthony e38e6afa35 Remove C-style 'srand()' and use our already existing 'Random' class.
This also fixes a warning of NULL vs. nullptr.
2021-10-09 20:22:59 -02:30
Stephen Anthony 307bd279b4 Fix compilation in VS, no longer support WinXP. 2021-10-09 20:18:07 -02:30
Christian Speckner 8af0d8716a Fix callback usage. 2021-10-10 00:08:44 +02:00
Thomas Jentzsch 96217eeca5 initial commit 2021-10-09 23:28:28 +02:00
Thomas Jentzsch bc437cee0c updated PlusROM doc 2021-10-09 09:15:38 +02:00
Thomas Jentzsch d28cc2144d Minor cosmetic change of previous commit 2021-10-09 09:14:27 +02:00
Thomas Jentzsch 9c2059b472 added missing timer interrupt registers 2021-10-09 09:08:23 +02:00
Thomas Jentzsch 5e01adfc43 resolved #796 by adding event migration 2021-10-05 21:38:56 +02:00
Thomas Jentzsch ec2d815ca3 fixed and enhanced PlusROM hotspot handling 2021-10-04 10:13:16 +02:00
Thomas Jentzsch 0647dd855b added frame drop logging 2021-10-04 10:11:24 +02:00
Thomas Jentzsch 9a0f8a1c73 fixed QuadTari controller settings 2021-10-04 10:07:42 +02:00
Thomas Jentzsch 2b8807c664 moved PlusROM id generation outside GUI code 2021-10-02 08:42:05 +02:00
Stephen Anthony 5287750dca Fixed minor warnings with clang 13. 2021-10-01 13:57:46 -02:30
Thomas Jentzsch 50ae506764 added PlusROM detection display
simplified PlusROM id generation logic
shortened QuadTari.name()
2021-10-01 17:00:10 +02:00
Thomas Jentzsch ee294db395 enhanced PlusROM, now reads id and nick from Settings
added PlusROM id generation to PlusRomsSetupDialog
2021-10-01 12:24:53 +02:00
Thomas Jentzsch 80ce5f9ac9 added missing write method to QuadTari (fixes #832, SaveKey not working in QT) 2021-09-28 21:43:46 +02:00
Thomas Jentzsch b32b287f83 added regex for PAL-M in filename (->NTSC) 2021-09-27 22:08:53 +02:00
Thomas Jentzsch 025b319181 added actual ROM size to ROM info (developer mode only) 2021-09-26 10:11:17 +02:00
Thomas Jentzsch 0bb570a0dc fixed #830 (Debugger window messed up) 2021-09-25 19:07:17 +02:00
Thomas Jentzsch 16d870e067 minor code cleanups 2021-09-25 11:00:59 +02:00
Thomas Jentzsch 0dd1d9b39f added E7 support for 12K ROMs 2021-09-24 23:38:15 +02:00
Thomas Jentzsch 8cf708846c Merge branch 'master' of https://github.com/stella-emu/stella 2021-09-24 22:49:52 +02:00
Thomas Jentzsch 221dbbf652 renamed E7 cart classes 2021-09-24 22:43:11 +02:00
Stephen Anthony 949992f277 Fix Linux/libretro builds for no-longer-existing classes. 2021-09-24 18:09:59 -02:30
Thomas Jentzsch fb8bf85408 merged E7 bankswitching classes 2021-09-24 22:22:48 +02:00
Thomas Jentzsch c4dd323807 tweaked TIA randomization a bit 2021-09-21 18:43:55 +02:00
Thomas Jentzsch d151c08f29 minor debugger 'tia' command formatting enhancement 2021-09-21 09:37:00 +02:00
Thomas Jentzsch 89e0cf960c added SCABS info for FE bankswitching (fixes #753) 2021-09-20 16:43:02 +02:00
Thomas Jentzsch 33fde54f79 added 256 in 1 Megatronix test ROM and properties 2021-09-20 16:32:25 +02:00
Thomas Jentzsch 55f028a668 added missing persisting of several settings when using hotkeys 2021-09-20 09:26:57 +02:00
lodefmode 3f8acc1485 Misc fixes (#828)
* - Street demo was missing audio.

* - pause playback at end of file to avoid annoying audio buzz

* - Fixed intermittent failure to forward step.
2021-09-19 14:23:30 -02:30
Thomas Jentzsch bbc6453213 fixed TV type autodetection failing when randomizing TIA 2021-09-19 18:20:30 +02:00
Thomas Jentzsch f086056100 improved TIA randomization 2021-09-19 17:39:17 +02:00
Thomas Jentzsch dc0021a015 fixed enhanced multicarts handling
added, mixed type X in 1 test ROM
2021-09-19 12:52:36 +02:00
Thomas Jentzsch 826ae7d005 Merge pull request #827 from lodefmode/master
OSD tidy + better demos
2021-09-19 10:54:11 +02:00
Thomas Jentzsch fc8d247093 enhanced UA bankswitching detection
enhanced multicarts, now support all bankswitching types
added X in 1 test ROMs
updated doc
2021-09-19 10:08:02 +02:00
Lo Def 0b4cde4b8c - Level bars now aligned with sprite positions to lessen flicker 2021-09-19 00:22:45 -04:00
lodefmode 0c8a822bb4 Merge branch 'stella-emu:master' into master 2021-09-18 22:43:38 -04:00
Thomas Jentzsch fcbc70f516 updated TIA random default 2021-09-18 21:56:25 +02:00
Lo Def 68be66cc16 Merge branch 'master' of github-lodefmode:lodefmode/stella 2021-09-18 15:51:35 -04:00
Lo Def 30e7b6fd33 - square off last image line before drawing OSD text 2021-09-18 15:50:13 -04:00
Thomas Jentzsch bd30d5a4a6 changed random TIA default in player settings
updated doc
2021-09-18 21:47:22 +02:00
Thomas Jentzsch 592f2fbd8a changed paddle center properties default
added paddle center properties to most games
2021-09-18 12:18:07 +02:00
Thomas Jentzsch 3b6dba3b84 fixed VS compiler warnings (yes, sometimes VS is more strict than anything else :) 2021-09-15 20:23:57 +02:00
Stephen Anthony 8bf7eb46e2 Fix compilation in Linux (missing entry in module.mk).
Fix compilation warnings in a few places.
Use float instead of floats and doubles in Paddles class (otherwise we get warnings).  Thomas, can you check that this doesn't affect functionality?
2021-09-15 15:14:31 -02:30
Thomas Jentzsch 48ab233b87 finalized new paddle settings 2021-09-15 18:02:10 +02:00
Thomas Jentzsch b20cda468c Merge remote-tracking branch 'remotes/origin/master' into feature/paddle_options 2021-09-15 17:59:09 +02:00
Thomas Jentzsch 8be62f44f3 Merge pull request #825 from lodefmode/master
Fixed random spotty backgrounds.
2021-09-12 22:05:57 +02:00
Lo Def 306ef926f7 Fixed background color shifting when consecutives frames encoded. 2021-09-12 15:55:47 -04:00
lodefmode 808195f2d2 Random pixels betwen OSD and bars (#824)
* Support background color changes
 - pf/background used to change background color once per line
   resulting in higher visual quality.

* - blank out left/right sides
  based on kernel modifications by Thomas Jentzch
  work in progress, stray pixel remaining

* MovieCart: Fixed delayed right side kernel

* MovieCart: Fixed random pixels between OSD + bars
2021-09-12 16:49:07 -02:30
lodefmode e51364e2ab Merge branch 'stella-emu:master' into master 2021-09-12 15:03:44 -04:00
Lo Def 2fe085546c Merge branch 'master' of github-lodefmode:lodefmode/stella 2021-09-12 14:59:14 -04:00
Lo Def cbfb265c7c MovieCart: Fixed random pixels between OSD + bars 2021-09-12 14:58:35 -04:00
Lo Def 2de31f2f96 MovieCart: Fixed delayed right side kernel 2021-09-12 13:46:58 -02:30
Lo Def 667efbe4dd - blank out left/right sides
based on kernel modifications by Thomas Jentzch
  work in progress, stray pixel remaining
2021-09-12 13:46:58 -02:30
Lo Def 6ac9f638a9 Support background color changes
- pf/background used to change background color once per line
   resulting in higher visual quality.
2021-09-12 13:46:58 -02:30
lodefmode 4e5afa177f Merge branch 'stella-emu:master' into master 2021-09-12 11:34:18 -04:00
Lo Def 1bba98aa65 MovieCart: Fixed delayed right side kernel 2021-09-12 11:30:24 -04:00
Lo Def 6d08aa70fe - blank out left/right sides
based on kernel modifications by Thomas Jentzch
  work in progress, stray pixel remaining
2021-09-12 05:30:20 -04:00
Thomas Jentzsch c4e0884da5 renamed Menu class into OptionsMenu 2021-09-10 22:16:19 +02:00
Thomas Jentzsch 4b0e7b3d19 added doc for TIA randomization (see #126) 2021-09-10 11:34:13 +02:00
Thomas Jentzsch ce75418893 added TIA randomization (see #126), TODO: doc 2021-09-10 09:36:31 +02:00
Thomas Jentzsch ee385a8cf0 updated docs 2021-09-09 19:53:40 +02:00
Thomas Jentzsch 393a588aa9 added preliminary dead zone code for analog events
changed some wording
2021-09-09 18:11:38 +02:00
Thomas Jentzsch d97a38a51f forget to save before committing :) 2021-09-09 17:15:50 +02:00
Thomas Jentzsch 0495c975a4 fixed properties for Telepathy (after breaking them) 2021-09-09 17:11:19 +02:00
Thomas Jentzsch 0ee5b6681b refactored dead zone and mouse sensitivity setting management 2021-09-09 16:40:06 +02:00
Thomas Jentzsch 2b522ca814 one more controller spelling fix 2021-09-09 13:57:12 +02:00
Thomas Jentzsch 9bd225d280 fixed some controller spellings 2021-09-09 11:47:26 +02:00
Thomas Jentzsch 58d8b684d5 fixed properties for Mind Maze (no MindLink controller used) 2021-09-09 11:20:38 +02:00
Thomas Jentzsch db2081a2c6 fixed MindLink controller (resolves #821) 2021-09-09 10:21:26 +02:00
Thomas Jentzsch 466023fac3 added right port paddles for Decathlon (NTSC) 2021-09-08 18:23:03 +02:00
Thomas Jentzsch 126a9fd1ac added Kid Vid detection 2021-09-08 08:27:06 +02:00
Lo Def b9b792418d Support background color changes
- pf/background used to change background color once per line
   resulting in higher visual quality.
2021-09-08 01:59:37 -04:00
Thomas Jentzsch 43873a1d66 added new paddle options (TODO: deadzone and testing with real controllers, remove test code) 2021-09-07 11:39:33 +02:00
Thomas Jentzsch 8344f78445 some work on PlusROMs support 2021-09-07 11:38:30 +02:00
Thomas Jentzsch 7dfebef26f fixed wording 2021-09-07 08:46:59 +02:00
Stephen Anthony 2bf74e6ceb libretro: Re-enable rewind support (fixes #820). 2021-09-06 20:24:52 -02:30
Thomas Jentzsch 10eed9a28f improved last commit by using 'using' :) 2021-09-06 13:07:03 +02:00
Thomas Jentzsch 2a44255a30 enhanced tooltips (per cell and/or whole widget) for DataGridWidget
updated debugger doc
2021-09-06 10:31:48 +02:00
Stephen Anthony 3d46f0b942 Merge branch 'master' of github.com:stella-emu/stella 2021-09-05 17:16:24 -02:30
Stephen Anthony 4d9b132835 libretro: Fix segfault when starting Stella. For now, this also disables rewind. 2021-09-05 17:15:49 -02:30
Thomas Jentzsch b0e4d47a7f added _inTim and timInt pseudo registers (resolves #168) 2021-09-05 19:20:30 +02:00
Thomas Jentzsch 738f2d4a0e added missing missile state tracking to debugger 'tia' command. 2021-09-05 07:54:28 +02:00
Thomas Jentzsch 8d62336553 enhanced debugger 'tia' command 2021-09-04 19:25:01 +02:00
Thomas Jentzsch f059ea73e8 fixed missing control key support in LauncherDialog's filter 2021-09-03 21:43:05 +02:00
Thomas Jentzsch dbeeab064a fixed EditableWidget bug #819 2021-09-03 21:42:02 +02:00
Thomas Jentzsch 2fa60f0bca cleaned the PlusROM setup code a bit 2021-09-02 09:07:14 +02:00
Thomas Jentzsch 2d8ef7f1b3 added some doc for the PlusROM functionality 2021-09-02 08:36:40 +02:00
Thomas Jentzsch 981b5c8fc3 missing files (again) 2021-09-01 14:11:28 +02:00
Thomas Jentzsch 0b5a3b9b36 made PlusROM nick input dialog working
added settings for nick and id
TODO: doc
2021-09-01 14:06:09 +02:00
Thomas Jentzsch c8193c3550 added missing class 2021-08-31 21:26:17 +02:00
Thomas Jentzsch a844eb84af added missing class 2021-08-31 17:05:51 +02:00
Thomas Jentzsch 22819463f7 does NOT compile! 2021-08-31 17:04:27 +02:00
Stephen Anthony 3ba95f3d67 Add HTTP_LIB support for Visual Studio. 2021-08-30 20:33:20 -02:30
Stephen Anthony 4a1e511494 Wrap calls to httplib inside a define. This allows to build without such support.
- Linux has this enabled by default, R77 disabled by default
- Still TODO is get it working for Windows and Mac
2021-08-30 19:30:45 -02:30
Stephen Anthony d14f67b19f Fix compilation in Linux for missing http_lib header file. 2021-08-30 18:51:21 -02:30
Christian Speckner d534e5cde2 Pluscart networking. 2021-08-30 22:54:08 +02:00
Thomas Jentzsch 334edbeff1 updated docs and WhatsNewDialog 2021-08-29 09:29:38 +02:00
Stephen Anthony 5dd0146d4d Fix minor compiler warning, and bump version number for state file. 2021-08-28 17:40:24 -02:30
Stephen Anthony 63b9024ce9 Fix minor compiler warning. 2021-08-28 17:19:31 -02:30
Stephen Anthony 79dcbc2975 Merge branch 'feature/lodefmode-moviecart' 2021-08-28 17:17:32 -02:30
Stephen Anthony 0b63decafc Added preliminary support for 'MVC' bankswitching scheme by Rob Bairos. 2021-08-28 17:16:45 -02:30
Thomas Jentzsch 52958304c7 updated Player and Missile serializing for previous commit 2021-08-28 14:14:37 +02:00
Thomas Jentzsch c98dd49594 added different debug colors for player/missile copies (resolves #713) 2021-08-28 10:54:49 +02:00
Stephen Anthony f32e539bc0 Merge branch 'master' into feature/lodefmode-moviecart 2021-08-26 19:42:43 -02:30
Stephen Anthony f214f3697d Fix minor compiler warnings in g++ and clang. 2021-08-26 19:17:18 -02:30
Thomas Jentzsch 8bd023f1a1 reformatted the ARM fatal error popup a little bit 2021-08-25 23:15:52 +02:00
Thomas Jentzsch 66233326b6 added "Check for Update" button to HelpDialog (see #407) 2021-08-25 22:19:41 +02:00
Thomas Jentzsch d7b34387bd Improved #807 fix 2021-08-25 17:59:26 +02:00
Thomas Jentzsch 0c22737e64 Fixed games count when there is no parent directory (fixes #807) 2021-08-25 17:34:44 +02:00
Thomas Jentzsch 91786be2d9 improved progress bar handling for long running file list operations 2021-08-24 12:16:30 +02:00
Thomas Jentzsch 1335dc3fd7 changed Air Raid properties to NTSC-50 format (fixes #812) 2021-08-23 19:53:07 +02:00
Thomas Jentzsch 4bab5eee2e trying to fix #808 2021-07-11 08:47:45 +02:00
Thomas Jentzsch 280eb13226 intermediate Thumb cycle count commit (part 2) 2021-07-08 15:47:11 +02:00
Thomas Jentzsch 54c9097144 intermediate Thumb cycle count commit 2021-07-08 15:46:41 +02:00
Thomas Jentzsch a872c8fb42 another fix for MAMCR
further improved merged I-S cycles
2021-07-02 17:40:30 +02:00
Thomas Jentzsch 8d9ca0657a added emulation of merged I-S cycles
improved ARM timers
fixed MAMCR register emulation
2021-07-01 15:40:49 +02:00
Thomas Jentzsch 1e55231f3c extended single cycle access to everything except Flash 2021-06-29 17:44:08 +02:00
Stephen Anthony 059bacde34 Fix minor warnings in g++10. 2021-06-27 12:25:21 -02:30
Thomas Jentzsch eff25e007e fixed a bug in branch cycle counting (now the test value is less than 0.1% off) 2021-06-27 13:04:35 +02:00
Thomas Jentzsch 47c6b66e51 added more chips types for ARM cycle count
added missing cycle counts for push and pop
added music update cycles to ARM cycle count for CDFJ
fixed stmia cycle counts
2021-06-27 09:44:42 +02:00
Thomas Jentzsch 4547077120 added DEGREE and ELLIPSIS chars to allowed PopUpWidget chars 2021-06-27 09:31:52 +02:00
Stephen Anthony 73139b6521 Fix minor warnings from g++10.3. 2021-06-25 15:40:06 -02:30
Thomas Jentzsch 19f65a75ad fixed #805 (ROMs detect QuadTari as Genesis) 2021-06-25 11:24:34 +02:00
Thomas Jentzsch e58c8e45dd added that digital audio considers console timing
added a 10% factor to ARM cycle count when digital audio is enabled
2021-06-25 09:18:26 +02:00
Thomas Jentzsch b4772a4443 trying to fix Libretro builds 2021-06-24 16:56:17 +02:00
Thomas Jentzsch aadd10deeb further enhanced ARM cycle counts 2021-06-24 16:21:00 +02:00
Thomas Jentzsch ba5bbe6172 slightly improved cart type detection 2021-06-22 19:23:28 +02:00
Thomas Jentzsch 27182d2c46 fixed extra cycle in ARM cycle counts 2021-06-16 19:59:31 +02:00
Thomas Jentzsch 2db390d8c0 added directory navigation support to launcher 'Select' button 2021-06-16 17:23:24 +02:00
Thomas Jentzsch 7cea6ffa8b fixed ARM branch cycles (not taken = 1)
added cycle change tracking
2021-06-16 12:39:58 +02:00
Thomas Jentzsch 92d197e471 Improved cycle counting for MUL instruction
Made ARM Timers functional
2021-06-15 18:55:32 +02:00
Thomas Jentzsch 2aee4c161b switched ARM cycle counting to "real" cycles 2021-06-15 17:31:08 +02:00
Thomas Jentzsch 2e66631587 fixed unwanted input consuming 2021-06-15 10:53:32 +02:00
Stephen Anthony d31a8fd938 Added missing file to Xcode, and fixed compile error. 2021-06-14 14:58:22 -02:30
Stephen Anthony 44d2c78381 libretro: Fix compile error from missing file in Makefile. 2021-06-14 14:33:19 -02:30
Thomas Jentzsch 8ffc778214 added missing file 2021-06-14 17:21:04 +02:00
Thomas Jentzsch 0d8d7de170 added UI elements for ARM cycles to debugger widgets
refactored ARM cart classes a bit
2021-06-14 16:24:42 +02:00
Thomas Jentzsch d8c2cdf019 added command line options to include (coarse) ARM cycles into system cycles 2021-06-13 12:18:44 +02:00
Thomas Jentzsch c7fbfb6d47 renamed everything "keypad" into "keyboard" 2021-06-12 17:20:33 +02:00
Thomas Jentzsch f98afa13cf removed Stell/2600-daptor renaming 2021-06-11 16:50:39 +02:00
Lo Def 61f5b1aa2a Fixed stepping forward faster than stepping back 2021-06-11 10:13:39 -02:30
Lo Def 4578be499d Keep vblank lines consistently at 36 each field. 2021-06-11 10:13:39 -02:30
Thomas Jentzsch 6af8794113 added change tracking to ARM stats 2021-06-09 10:50:32 +02:00
Thomas Jentzsch 381ba8f991 added last but one ARM stats to debug widgets 2021-06-09 09:32:14 +02:00
Stephen Anthony 72f64dd84d First pass at state load/save for MVC scheme. 2021-06-08 20:48:12 -02:30
Lo Def c18034385e Remove partial top and bottom line for square area 2021-06-05 16:33:19 -02:30
Stephen Anthony b9ff4e375b Revert to old way of handling framebuffer surfaces.
Still TODO is fix crash when FileListWidget is used (BrowserDialog).
2021-05-28 22:12:12 -02:30
Thomas Jentzsch 80ac696c43 disabled random start bank for 3E+ carts (fixes #800) 2021-05-20 19:19:29 +02:00
Thomas Jentzsch 11db027a0a fixed common button clash for R77 with keypad 2021-05-18 20:58:45 +02:00
Thomas Jentzsch 9c1cd5117c removed SA erasing and adding in case they are added in ID order 2021-05-17 23:24:35 +02:00
Thomas Jentzsch e55bf475cf reverted GUID part of last commit 2021-05-17 14:51:58 +02:00
Thomas Jentzsch e02ec9870f added GUID hash to controller name
renamed Joystick Database into Controller Database
2021-05-16 21:17:40 +02:00
Thomas Jentzsch 6ac5dc9915 implemented adding *all* SA to the database again when one SA is added (fixes #754) 2021-05-16 11:25:03 +02:00
Thomas Jentzsch 7afc53b081 trying to fix #793 2021-05-15 20:45:05 +02:00
Thomas Jentzsch 8e4daf4b60 converted combo map saving into json format (resolves #793) 2021-05-15 11:55:10 +02:00
Thomas Jentzsch f8972dc11b fixed history scrolling 2021-05-14 09:32:03 +02:00
Thomas Jentzsch 4560da840b fixed autosave 2021-05-13 23:13:06 +02:00
Thomas Jentzsch 7583e5d655 enhanced save command, saves to user directory by default
added "autosave" command
2021-05-13 17:26:22 +02:00
Thomas Jentzsch 14960f8115 improved/fixed some event renaming (sorry) 2021-05-12 23:31:29 +02:00
Stephen Anthony 49a25c7bde libretro: Fix compile error with recent event renaming. 2021-05-12 13:55:21 -02:30
Thomas Jentzsch c7de953fdd made port naming (left/right) consistent (see #796) 2021-05-11 22:51:40 +02:00
Thomas Jentzsch 525e781f3f Updated Changes.txt and WhatsNewDialog 2021-05-11 20:20:03 +02:00
Thomas Jentzsch b374fb048f added clearHistory command for PromptWidget (see #240) 2021-05-10 20:30:32 +02:00
Stephen Anthony 4a7659bad2 Fix minor warnings from g++11. 2021-05-10 15:04:01 -02:30
Thomas Jentzsch 0370f39fe8 refactored history buffer and increased max size from 20 to 1000 2021-05-10 16:06:43 +02:00
Thomas Jentzsch 31761f7249 added history filtering and duplicate removal (see #240) 2021-05-10 12:35:28 +02:00
Thomas Jentzsch 05c77cc6a6 minor polishing of PromptWidget 2021-05-09 20:19:30 +02:00
Thomas Jentzsch a39a03309e Refactored PromptWidget a bit 2021-05-09 19:21:15 +02:00
Thomas Jentzsch e5e4e542b2 further improved debugger tab auto complete (see #240) 2021-05-09 11:23:14 +02:00
Thomas Jentzsch 30c58be443 added game properties for two Simone Serra games 2021-05-08 10:36:56 +02:00
Thomas Jentzsch 9308efcd9d enhanced tab auto complete for _functions 2021-05-08 10:35:37 +02:00
Thomas Jentzsch 83af23081f Merge branch 'master' of https://github.com/stella-emu/stella 2021-05-07 23:13:38 +02:00
Thomas Jentzsch b68b587cc1 enhanced PromptWidget tab auto complete (camel case) 2021-05-07 23:13:28 +02:00
Stephen Anthony 57dff93271 Fix minor warning from g++11. 2021-05-06 19:56:37 -02:30
Thomas Jentzsch b20b1c1bfe added URL properties for prototypes 2021-05-06 13:23:54 +02:00
Thomas Jentzsch 975a6940a5 added option to log breaks and traps instead of interrupting emulation (resolves #741) 2021-05-06 10:29:45 +02:00
Thomas Jentzsch d8fad47e93 switched user palette loading to on demand 2021-05-04 23:04:44 +02:00
Thomas Jentzsch 36b3c70ef6 merged new URL properties 2021-05-04 16:00:13 +02:00
Thomas Jentzsch 8bc9b00660 added links for many homebrews 2021-05-04 15:01:49 +02:00
Stephen Anthony cc6d53d561 Fix libretro build. 2021-05-03 20:59:35 -02:30
Stephen Anthony 9ac88c6662 Move detection of MVC file out of FSNode class. There are several reasons for this:
- It more properly belongs in the class actually opening the ROM, since FSNode can represent more than just ROM files.
 - Some ports don't have proper FSNode support, so MVC would break there.
 - In general, it makes FSNode::read more general, able to read partial files.
2021-05-03 20:35:11 -02:30
Thomas Jentzsch 33234936f2 Added aborting editing (closes #726) 2021-05-03 20:26:50 +02:00
Stephen Anthony ddefa7a66e Fix warning about 'sequence-points' from gcc. 2021-04-30 15:02:16 -02:30
thrust26 502b73f288 merged emulation and UI event mapping tabs 2021-04-30 19:10:52 +02:00
thrust26 4d784d4a5b fixed occasional NoType mappings being saved and loaded 2021-04-30 14:00:30 +02:00
thrust26 f4d135fc6e disabled focus handling for ColorWidget (reduces draws) 2021-04-29 10:17:04 +02:00
thrust26 b1f98f7ce4 reworked Palette settings a bit 2021-04-28 23:16:29 +02:00
thrust26 547b2e4bdf enhanced links in HelpDialog
fixed link color for Dark theme
2021-04-25 21:08:06 +02:00
Lo Def 4c7684bf74 Merge remote-tracking branch 'upstream/feature/lodefmode-moviecart' into feature/lodefmode-moviecart 2021-04-25 00:07:50 -04:00
Lo Def fb164fb740 (MovieCart) Avoid unnecessary shuffling of color data during encoding
and decoding, as new kernel does not require it.
2021-04-24 23:46:46 -04:00
thrust26 bccb2d3cb2 redesigned RomInfoWidget link display
enhanced AboutDialog with more links
2021-04-24 11:53:26 +02:00
Stephen Anthony 435bf7cb8a Fix crash in debugger. Much more work still required here. 2021-04-23 18:00:44 -02:30
Stephen Anthony c19a86147a Added support for Mac. 2021-04-23 15:08:49 -02:30
Stephen Anthony 0a2e25cdec A few more formatting cleanups. 2021-04-22 20:08:14 -02:30
Stephen Anthony f35864406c More updates to MovieCart to match Stella style. 2021-04-22 16:07:09 -02:30
Stephen Anthony 7dabe6a781 (MovieCart) Implemented left_line/right_line kernel adaptations by Thomas Jentzsch 2021-04-22 15:30:44 -02:30
Stephen Anthony 5419a3b9a9 Fix minor compiler warnings. 2021-04-22 11:18:45 -02:30
thrust26 cc3b17a00e added functional links to RomInfoWidget
added links to Robot City and Aardvark ROMs
2021-04-22 14:43:56 +02:00
thrust26 5a2d0345ec Merge branch 'master' of https://github.com/stella-emu/stella 2021-04-22 11:43:26 +02:00
thrust26 1b9e885370 enhanced StaticTextWidget to display links
adapted AboutDialog accordingly
2021-04-22 11:43:08 +02:00
Stephen Anthony ed07f642cd Some cleanups for moviecart code.
- Compiles in Linux now, and without any warnings or errors
 - Converted some code to use that already in Stella
 - Formatting cleanups to match Stella style
2021-04-21 22:13:38 -02:30
Stephen Anthony 82666d6e43 Merge branch 'feature-moviecart' of git://github.com/lodefmode/stella into feature/lodefmode-moviecart 2021-04-21 19:47:14 -02:30
Stephen Anthony a0e666aef2 Next development cycle (for 6.6) begins. 2021-04-21 14:59:31 -02:30
thrust26 a593fdfb49 added basic valid URL checks to cartridge links 2021-04-21 16:53:05 +02:00
thrust26 204c1f092c implemented cartridge links in GameInfoDialog (see #788) 2021-04-21 16:14:30 +02:00
thrust26 8d67d9a2e5 enhanced the debugger exit fix 2021-04-21 15:03:29 +02:00
thrust26 c7869803b1 cleaned up debugger exiting code (fixes #516) 2021-04-21 14:12:13 +02:00
Stephen Anthony b9f4a9258f Final updates for 6.5.3 release.
Added debugging note when not using SDL 2.0.14, so we know that OpenURL won't work.
2021-04-20 12:33:11 -02:30
thrust26 b50798242a updated help key for macOS 2021-04-20 10:02:10 +02:00
thrust26 0e51197934 moved and renamed help action in InputDialog 2021-04-20 08:38:22 +02:00
thrust26 4f73d84f49 added help key to HelpDialog 2021-04-20 08:35:02 +02:00
thrust26 d9140500db added one more debugger help link 2021-04-19 21:56:40 +02:00
thrust26 d3166fee1d added some more debugger help links 2021-04-19 21:38:36 +02:00
thrust26 eed55ed3b1 bug fix 2021-04-19 11:42:33 +02:00
thrust26 a61f5f5977 added doc links to snapshot archive 2021-04-18 19:38:06 +02:00
thrust26 9d427d5260 improved context-sensitive help, now also works per widget, tab or tab group 2021-04-18 17:59:06 +02:00
Stephen Anthony f4a8947528 Fix method in header and implementation with different parameter. 2021-04-18 12:11:24 -02:30
thrust26 7f98563a6f enhanced help with optional direct URL 2021-04-18 08:24:59 +02:00
thrust26 b28526da7d added help anchor to LauncherDialog 2021-04-17 21:33:59 +02:00
thrust26 2cdd9bc1f6 added help anchor to DebuggerDialog 2021-04-17 20:59:29 +02:00
thrust26 a83683a902 fixed anchor in HTML 2021-04-17 19:52:41 +02:00
thrust26 091ccf3506 fixed anchor 2021-04-17 19:49:16 +02:00
Stephen Anthony b22b4d963a Updated docs for 6.5.3 release for April 20 (this can change if necessary). 2021-04-17 14:59:16 -02:30
thrust26 4e9f1fc9c5 Merge branch 'master' of https://github.com/stella-emu/stella 2021-04-17 18:40:24 +02:00
thrust26 37c27ef52b updated doc and snapshots for help button 2021-04-17 18:34:35 +02:00
Stephen Anthony a4edbe8b85 Fix non-ASCII character in ROM properties. 2021-04-17 13:23:25 -02:30
Stephen Anthony 59708aab62 Fix missing comma in EventHandler class. 2021-04-17 13:20:48 -02:30
Stephen Anthony 4e71ab3c79 Fix compilation when using SDL < 2.0.14 (needed for SDL_OpenURL).
Abstract SDL functionality into SDL-specific class, away from Dialog class.
2021-04-17 13:18:10 -02:30
thrust26 0a77776cd2 added help hotkey in UI mode (F1)
added missing anchors
2021-04-17 16:55:40 +02:00
thrust26 0248e4a6dc added help links to most dialogs (see #740)
TODO: tab specific help?
2021-04-17 13:31:36 +02:00
thrust26 15aa163b84 updated props for coming Aardvark ROM release 2021-04-17 09:59:21 +02:00
thrust26 cd497bc8a5 Updated Changes.txt 2021-04-14 22:34:48 +02:00
thrust26 fd5713d764 forgot to save before committing... 2021-04-12 22:45:24 +02:00
thrust26 e66bfc2c99 fixed palette and custom BLARGG settings saving (see #787) 2021-04-12 22:38:41 +02:00
Stephen Anthony 8c29b3749f Update to Xcode project file. 2021-04-07 12:26:24 -02:30
thrust26 083bc8b556 do not map QuadTari-only events if no QuadTari is used 2021-04-06 19:06:00 +02:00
Stephen Anthony 8834f4770f Fix minor warning in clang. 2021-04-06 13:15:49 -02:30
thrust26 2841ac52ca fixed HiDPI mode
(note to myself: sometimes initialization is bad)
2021-04-06 16:53:44 +02:00
thrust26 30656f73c2 adapt desktop size and maximum TIA zoom level to display used 2021-04-06 15:56:01 +02:00
Lo Def 65180d524f (MovieCart) combined subfolder of classes into CartMVC 2021-04-05 23:39:26 -04:00
thrust26 6fa24835c0 Merge branch 'master' of https://github.com/stella-emu/stella 2021-04-05 22:01:15 +02:00
thrust26 d7a3ab5b6c Swapped (Shift+)Backspace keys between Frying and CompuMate Backspace 2021-04-05 22:00:38 +02:00
Christian Speckner df9758903a Fix genesis widget. 2021-04-05 20:31:49 +02:00
Stephen Anthony eec90382e7 Very small cleanup to Makefile. 2021-04-05 13:40:43 -02:30
Christian Speckner dde7ab5936 Fix update order, change genesis to pull pin to ground. 2021-04-05 17:54:12 +02:00
Christian Speckner c33bccbc61 Properly model analog input. 2021-04-05 15:46:30 +02:00
Rob Bairos 0e39371e76 (MovieCart) Limit reading of image data to single frame
when its likely an MVC file. This avoids reading of GB of data.
2021-04-05 09:27:51 -04:00
Rob Bairos 6593e25f41 MovieCart
Streaming image and audio content created by presenting dynamic
1K of data on the bus, with On Screen Display. Volume, Brightness
and Shuttle controlled by joystick and console switches.
Original implementation: github.com/lodefmode/moviecart
2021-04-05 09:27:20 -04:00
Christian Speckner eccf1d0d36 Forgot to save. 2021-04-05 14:17:10 +02:00
Christian Speckner db44445386 PaddleReader goes AnalogReadout. 2021-04-05 14:16:29 +02:00
Christian Speckner 077cd38c76 Use a more realistic resistance in dump mode. 2021-04-04 00:36:20 +02:00
Christian Speckner 5004b439bd Typo. 2021-04-02 00:18:52 +02:00
Christian Speckner 3902778b12 Adjust paddle parameters, improve keyboard controller emulation, emulate cap discharge, 2021-04-02 00:15:13 +02:00
twinaphex bdd7035fef (Libretro/macOS) Add ARM64 rules 2021-03-27 20:42:43 -02:30
thrust26 4836dd0be1 Merge branch 'master' of https://github.com/stella-emu/stella 2021-03-23 22:12:11 +01:00
thrust26 ffcf26d822 fixed missing immediate disassembling 2021-03-23 22:11:28 +01:00
twinaphex 537f85d391 (Libretro) Fix ios9 build 2021-03-15 10:17:24 -02:30
twinaphex 7a8b5c276c (Libretro) Add more platforms to gitlab 2021-03-14 11:53:09 -02:30
thrust26 24cf13c535 improved QuadTari fix 2021-03-02 19:01:50 +01:00
thrust26 c1a488f19f fixed QuadTari handling for controller types != joysticks 2021-03-02 14:01:57 +01:00
thrust26 491e377752 fixed 360° char 2021-03-02 13:29:07 +01:00
thrust26 199f120d91 Merge branch 'master' of https://github.com/stella-emu/stella 2021-02-27 10:37:43 +01:00
thrust26 aae9027383 removed two non-implemented methods 2021-02-27 10:37:31 +01:00
Thomas Jentzsch a340e43f7c Merge pull request #773 from skitt/spelling-fix
Another spelling fix ("toggle")
2021-02-26 10:48:36 +01:00
Stephen Kitt bfc091b975 Another spelling fix ("toggle")
Signed-off-by: Stephen Kitt <steve@sk2.org>
2021-02-26 10:09:39 +01:00
1038 changed files with 156221 additions and 73512 deletions

68
.github/workflows/build.yml vendored Normal file
View File

@ -0,0 +1,68 @@
---
name: Build
on:
pull_request:
push:
permissions: {}
jobs:
linux:
name: Linux
runs-on: ubuntu-latest
steps:
- name: Check out the repository
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8
- name: Install SDL2
run: |
sudo apt-get update
sudo apt-get install libsdl2-dev
- name: Build Stella
run: |
./configure && make -j2 all
macos:
name: macOS
runs-on: macos-latest
steps:
- uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: '16.2'
- name: Check out the repository
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8
- name: Install SDL2
run: |
curl https://www.libsdl.org/release/SDL2-2.26.0.tar.gz | tar xzf -
mkdir SDL2-2.26.0/build
cd SDL2-2.26.0/build
../configure && make -j3 && sudo make install
- name: Build Stella
run: |
./configure && make -j3 all
windows:
name: Windows
runs-on: windows-latest
strategy:
matrix:
platform: [x64]
env:
Platform: ${{ matrix.platform }}
SDL2_version: 2.26.0
steps:
- name: Check out the repository
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8
- name: Set up MSBUILD
uses: microsoft/setup-msbuild@34cfbaee7f672c76950673338facd8a73f637506
- name: Install SDL2
shell: cmd
run: |
curl -o "C:\SDL2-devel.zip" "https://www.libsdl.org/release/SDL2-devel-%SDL2_version%-VC.zip"
7z x "C:\SDL2-devel.zip" -o"C:\"
xcopy /S "C:\SDL2-%SDL2_version%\include" src\common
if %Platform%==x64 xcopy /S "C:\SDL2-%SDL2_version%\lib\x64" src\os\windows
- name: Build Stella
run: |
msbuild src\os\windows\Stella.sln

18
.gitignore vendored
View File

@ -10,7 +10,9 @@ src/**/*.tlog
out
out.pgo
out.pgen
out.test
stella
stella-test
stella-pgo
stella-pgo-generate
*.diff
@ -18,15 +20,17 @@ project.xcworkspace/
xcuserdata/
.DS_Store
build/
src/macosx/M6502.ins
src/os/macos/M6502.ins
*.dSYM
.vscode/c_cpp_properties.json
.vscode/settings.json
src/windows/sdl/*
src/windows/x64/*
src/windows/Win32/*
src/windows/Stella.vcxproj.user
src/windows/*.bak
src/os/windows/sdl/*
src/os/windows/x64/*
src/os/windows/Win32/*
src/os/windows/Stella.vcxproj.user
src/os/windows/*.bak
src/os/libretro/x64/*
src/os/libretro/Stella.vcxproj.user
.vs/*
.tgitconfig
src/**/*.psess
@ -38,3 +42,5 @@ src/tools/fonts/*
a.out
*.json
*.sqlite3
*.bak
debian/files

View File

@ -1,60 +1,148 @@
# DESCRIPTION: GitLab CI/CD for libRetro (NOT FOR GitLab-proper)
##############################################################################
################################# BOILERPLATE ################################
##############################################################################
# Core definitions
.core-defs:
variables:
JNI_PATH: src/libretro
MAKEFILE_PATH: src/libretro
JNI_PATH: src/os/libretro
MAKEFILE_PATH: src/os/libretro
CORENAME: stella
# Inclusion templates, required for the build to work
include:
- template: Jobs/Code-Quality.gitlab-ci.yml
- project: 'libretro-infrastructure/ci-templates'
file: '/libnx-static.yml'
- project: 'libretro-infrastructure/ci-templates'
file: '/linux-x64.yml'
################################## DESKTOPS ################################
# Windows 64-bit
- project: 'libretro-infrastructure/ci-templates'
file: '/windows-x64-mingw.yml'
# Linux 64-bit
- project: 'libretro-infrastructure/ci-templates'
file: '/linux-x64.yml'
# MacOS 64-bit
- project: 'libretro-infrastructure/ci-templates'
file: '/osx-x64.yml'
# MacOS ARM 64-bit
- project: 'libretro-infrastructure/ci-templates'
file: '/osx-arm64.yml'
################################## CELLULAR ################################
# Android
- project: 'libretro-infrastructure/ci-templates'
file: '/android-jni.yml'
# iOS
- project: 'libretro-infrastructure/ci-templates'
file: '/ios-arm64.yml'
# iOS (armv7)
- project: 'libretro-infrastructure/ci-templates'
file: '/ios9.yml'
################################## CONSOLES ################################
# Nintendo Switch
- project: 'libretro-infrastructure/ci-templates'
file: '/libnx-static.yml'
# tvOS (AppleTV)
- project: 'libretro-infrastructure/ci-templates'
file: '/tvos-arm64.yml'
#################################### MISC ##################################
# Stages for building
stages:
- build-prepare
- build-shared
- build-static
- test
#Desktop
libretro-build-linux-x64:
extends:
- .libretro-linux-x64-make-default
- .core-defs
##############################################################################
#################################### STAGES ##################################
##############################################################################
#
################################### DESKTOPS #################################
# Windows 64-bit
libretro-build-windows-x64:
extends:
- .libretro-windows-x64-mingw-make-default
- .core-defs
# Android
android-armeabi-v7a:
# Linux 64-bit
libretro-build-linux-x64:
extends:
- .libretro-android-jni-armeabi-v7a
- .libretro-linux-x64-make-default
- .core-defs
image: $CI_SERVER_HOST:5050/libretro-infrastructure/libretro-build-amd64-ubuntu:latest
before_script:
- export NUMPROC=$(($(nproc)/5))
- sudo apt-get update -qy
- sudo apt-get install -qy software-properties-common
- sudo add-apt-repository -y ppa:savoury1/build-tools
- sudo add-apt-repository -y ppa:savoury1/gcc-defaults-12
- sudo apt-get update -qy
- sudo apt-get install -qy gcc-12 g++-12
# This container's existing installations of gcc and CMake are way too old
variables:
CC: /usr/bin/gcc-12
CXX: /usr/bin/g++-12
CXXFLAGS: -Wno-deprecated-declarations # Deprecation warnings aren't helpful on the libretro Gitlab
# MacOS 64-bit
libretro-build-osx-x64:
tags:
- mac-apple-silicon
extends:
- .libretro-osx-x64-make-default
- .core-defs
android-arm64-v8a:
# MacOS ARM 64-bit
libretro-build-osx-arm64:
tags:
- mac-apple-silicon
extends:
- .libretro-android-jni-arm64-v8a
- .libretro-osx-arm64-make-default
- .core-defs
android-x86_64:
################################### CELLULAR #################################
# Android ARMv7a
# android-armeabi-v7a:
# extends:
# - .libretro-android-jni-armeabi-v7a
# - .core-defs
# Android ARMv8a
# android-arm64-v8a:
# extends:
# - .libretro-android-jni-arm64-v8a
# - .core-defs
# Android 64-bit x86
# android-x86_64:
# extends:
# - .libretro-android-jni-x86_64
# - .core-defs
# iOS
libretro-build-ios-arm64:
tags:
- mac-apple-silicon
extends:
- .libretro-android-jni-x86_64
- .core-defs
android-x86:
extends:
- .libretro-android-jni-x86
- .libretro-ios-arm64-make-default
- .core-defs
# Static
libretro-build-libnx-aarch64:
# tvOS
libretro-build-tvos-arm64:
extends:
- .libretro-libnx-static-retroarch-master
- .libretro-tvos-arm64-make-default
- .core-defs
################################### CONSOLES #################################
# Nintendo Switch
# libretro-build-libnx-aarch64:
# extends:
# - .libretro-libnx-static-retroarch-master
# - .core-defs

View File

@ -1,63 +0,0 @@
# Build matrix / environment variables are explained on:
# http://about.travis-ci.org/docs/user/build-configuration/
# This file can be validated on: http://lint.travis-ci.org/
language: cpp
matrix:
include:
- os: linux
dist: xenial
compiler: gcc
env: GCC=9 CC=gcc-9 CXX=g++-9
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- gcc-9
- g++-9
update: true
- os: osx
osx_image: xcode11.3
compiler: clang
addons:
homebrew:
update: true
install:
- |
old_cwd=$(pwd)
cd ~
if [[ "$HOST" == macosx-* ]]; then
curl -O https://www.libsdl.org/release/SDL2-2.0.10.tar.gz
tar xzf SDL2-2.0.10.tar.gz
cd SDL2-2.0.10/Xcode/SDL
sed -i -e 's/@rpath//g' SDL.xcodeproj/project.pbxproj
xcodebuild -configuration Release
mkdir -p ~/Library/Frameworks/
ln -s `pwd`/build/Release/SDL2.framework ~/Library/Frameworks/
else
curl -O https://www.libsdl.org/release/SDL2-2.0.10.tar.gz
tar xzf SDL2-2.0.10.tar.gz
cd SDL2-2.0.10
mkdir build
cd build
../configure
make
sudo make install
fi
cd $old_cwd
script:
- |
./configure
make all

15
.vscode/settings.json vendored
View File

@ -14,6 +14,7 @@
"C_Cpp.intelliSenseEngine": "Default",
"files.insertFinalNewline": true,
"files.associations": {
"*.h": "cpp",
"__functional_base": "cpp",
"array": "cpp",
"istream": "cpp",
@ -103,6 +104,18 @@
"version": "cpp",
"shared_mutex": "cpp",
"compare": "cpp",
"concepts": "cpp"
"concepts": "cpp",
"__verbose_abort": "cpp",
"any": "cpp",
"charconv": "cpp",
"csignal": "cpp",
"execution": "cpp",
"numbers": "cpp",
"span": "cpp",
"unordered_set": "cpp",
"variant": "cpp",
"hash_map": "cpp",
"format": "cpp",
"*.inc": "cpp"
}
}

View File

@ -9,7 +9,7 @@
SSSS ttt eeeee llll llll aaaaa
===========================================================================
Release 6.5.2 for Linux, macOS and Windows
Release 7.0 for Linux, macOS and Windows
===========================================================================
The Atari 2600 Video Computer System (VCS), introduced in 1977, was the
@ -21,25 +21,21 @@ all of your favourite Atari 2600 games again! Stella was originally
developed for Linux by Bradford W. Mott, however, it has been ported to a
number of other platforms and is currently maintained by Stephen Anthony.
This is the 6.5.2 release of Stella for Linux, macOS and Windows. The
This is the 7.0 release of Stella for Linux, macOS and Windows. The
distributions currently available are:
* Binaries for Windows 7/8/10 :
Stella-6.5.2-win32.exe (32-bit EXE installer)
Stella-6.5.2-x64.exe (64-bit EXE installer)
Stella-6.5.2-windows.zip (32/64 bit versions)
* Binary for Windows 7/8/10/11 :
Stella-7.0-x64.exe (64-bit EXE installer)
Stella-7.0-windows.zip (64 bit ZIP version)
* Binary distribution for macOS 10.7 and above :
Stella-6.5.2-macos.dmg (64-bit Intel)
* Binary distribution for macOS 10.13 and above :
Stella-7.0-macos.dmg (ARM M1 and 64-bit Intel)
* Binary distribution for 64-bit Ubuntu :
stella_6.5.2-1_amd64.deb
* Binary distribution for 64-bit Redhat :
stella-6.5.2-2.x86_64.rpm
stella_7.0-1_amd64.deb
* Source code distribution for all platforms :
stella-6.5.2-src.tar.xz
stella-7.0-src.tar.xz
Distribution Site

View File

@ -12,6 +12,198 @@
Release History
===========================================================================
7.0 to 7.1 (xxx x, 202x)
* Added developer option for disabling PlusROM support (TODO: Doc)
* Enhanced PAL-60 detection, searches for signature (e.g. PAL60) in ROM
* Enhanced VSYNC emulation, considers VBLANK now too
6.7.1 to 7.0 (October 5, 2024)
* Enhanced ROM launcher to allow multiple images per ROM.
* Made heaps of additional images available for the ROM launcher.
* Added searching by filename for ROM launcher images.
* Added option to start random ROM.
* Added automatically enabled phosphor modes.
* Enhanced Game Properties dialog for multigame ROMs.
* Added 2nd UI theme and hotkey for toggling UI theme.
* Added bezel support (incl. Sinden Lightgun).
* Added optional type format detection based on colors used.
* Added Joy2B+ controller support.
* Added auto detection for QuadTari attached controllers.
* Enhanced Kid Vid support to play tape audio.
* Added port selection, used for controller default mapping.
* Added missing PlusROM support for E7 bankswitching.
* Enhanced movie cart (MVC) support.
* Accelerated emulation up to ~15% (ARM).
* Added limited GameLine Master Module bankswitching support.
* Added 03E0 bankswitching for Brazilian Parker Bros ROMs.
* Added WF8 bankswitching used by some certain Coleco white carts.
* Added JANE bankswitching used by Coleco's Tarzan prototype.
* Added ELF mapper for Mattress Monkeys.
* Added BUS bankswitching support for some older demos.
* Fixed broken 7800 pause key support.
* Added developer option for random hotspot peek values.
* Added user defined CPU cycle timers to debugger.
* Removed 'launcherroms' option, since it was causing some issues.
* Codebase now uses C++20 features, which means a minimum of gcc-11
or clang-10 for Linux/Mac, and Visual Studio 2022 for Windows.
-Have fun!
6.7 to 6.7.1 (January 15, 2024)
* Fixed broken mouse and Stelladaptor input for Driving Controller.
* For UNIX systems: Now defaults to using system-installed libsqlite3
when available, and fixes delay on exiting app experienced on some
systems.
6.6 to 6.7 (June 13, 2022)
* IMPORTANT NOTES:
- Because of fixes to JSON handling, all remappings will be reset
to defaults; if you had custom mappings, they will need to be
re-entered again.
- Because of internal changes, all state files are now invalid.
* Completely reworked the file launcher:
- Redesigned user interface
- Added tracking of user favorites, recently played and most popular
games
- Added virtual directories for selecting tracked games
- Added quick path navigation
- Added navigation history
- Added icons for files and directories
- Added option to show/hide file extensions
- Extended context menu and shortcuts
- Fixed sluggish behaviour when reading large and/or invalid files
* Added hotkey display to tooltips.
* Added option to automatically pause emulation when focus is lost.
* Added option to toggle autofire mode.
* Improved controller mappings for Paddles.
* Improved controller mappings for Driving controllers.
* Improved Mindlink support.
* Added another oddball TIA glitch option for score mode color.
* Enhanced TV jitter emulation (TODO: doc).
* Enhanced support for CDFJ+ bankswitching type.
* Added 0FA0 bankswitching for Fotomania ROMs.
* Added ARM chip auto detection.
* Extended support for older BUS (experimental) ROMs that worked
with an older, obsolete version of the BUS scheme; special thanks
to SpiceWare for the code.
* Fixed Stella crash due to invalid ZIP files.
* Fixed TV mode auto detection in some ARM ROMs.
* Fixed color loss when switching TV mode from/to PAL.
* Fixed score mode glitch emulation corner case.
* Fixed state messages staying on screen forever.
* Added M1 support for the macOS build.
* Debugger improvements:
- added PlusROM information
- fixed patching code in ZP-RAM
- improved bank origin detection
* Updated internal ROM properties database to ROM-Hunter version 17
(thanks go to RomHunter for his tireless research in this area).
Related to this, updated the snapshot collection.
6.5.3 to 6.6 (November 16, 2021)
* Added preliminary PlusROM support for saving high scores.
* Added preliminary support for 'MVC' bankswitching scheme by
Rob Bairos.
* Added web links for many games.
* Added dead zone and linearity settings for analog controllers.
* Added 'Check for Update' button to Help dialog.
* Added different mask patterns for scanline emulation.
* Fixed MindLink controller.
* Fixed SaveKey not working with QuadTari.
* Added TIA randomization on startup option.
* Added different debug color luminances for player and missile copies.
* Added hotkeys for TV roll speed and toggling 'Developer settings' sets.
* Debugger: enhanced prompt's auto complete and history.
* Debugger: added optional logging of breaks and traps.
* Debugger: added Thumb cycle counting.
6.5.2 to 6.5.3 (April 20, 2021)
* Added context-sensitive help.
* Improved support of multiple monitors with different resolutions.
* Improved analog input reading (Paddles, Keyboards...).
* Fixed QuadTari support for controller types other than Joysticks.
* Fixed palette and TV effects saving for Retron77.
* Fixed immediate disassembling when switching options in debugger.
6.5.1 to 6.5.2 (February 25, 2021)
* Fixed broken Driving Controller support for Stelladaptor/2600-daptor
@ -23,8 +215,6 @@
* Added CPU usage stats to ARM cart classes debug widgets.
-Have fun!
6.5 to 6.5.1 (January 24, 2021)

View File

@ -12,7 +12,7 @@
License Information and Copyright Notice
===========================================================================
Copyright (c) 1995-2021 by Bradford W. Mott, Stephen Anthony and the
Copyright (c) 1995-2025 by Bradford W. Mott, Stephen Anthony and the
Stella Team
This program is free software; you can redistribute it and/or modify it

View File

@ -8,7 +8,7 @@
## SS SS tt ee ll ll aa aa
## SSSS ttt eeeee llll llll aaaaa
##
## Copyright (c) 1995-2021 by Bradford W. Mott, Stephen Anthony
## Copyright (c) 1995-2025 by Bradford W. Mott, Stephen Anthony
## and the Stella Team
##
## See the file "License.txt" for information on usage and redistribution of
@ -26,6 +26,7 @@ LDFLAGS := -pthread
INCLUDES :=
LIBS :=
OBJS :=
OBJS_TEST :=
PROF :=
MODULES :=
@ -47,28 +48,53 @@ else
CFLAGS:= -O2
endif
ifndef CXXFLAGS_TEST
CXXFLAGS_TEST := $(CXXFLAGS)
endif
ifndef CFLAGS_TEST
CFLAGS_TEST := $(CFLAGS)
endif
ifndef LDFLAGS_TEST
LDFLAGS_TEST := $(LDFLAGS)
endif
CXXFLAGS+= -Wall -Wextra -Wno-unused-parameter
CFLAGS+= -Wall -Wextra -Wno-unused-parameter
CXXFLAGS_TEST+= -Wall -Wextra -Wno-unused-parameter
CFLAGS_TEST+= -Wall -Wextra -Wno-unused-parameter
ifdef HAVE_GCC
CXXFLAGS+= -Wno-multichar -Wunused -Woverloaded-virtual -Wnon-virtual-dtor -std=c++17
CFLAGS+= -Wno-multichar -Wunused
CXXFLAGS+= -Wno-multichar -Wunused -Woverloaded-virtual -std=c++20
CFLAGS+= -Wunused
CXXFLAGS_TEST+= -Wno-multichar -Wunused -Woverloaded-virtual -std=c++20
CFLAGS_TEST+= -Wno-multichar -Wunused
endif
ifdef HAVE_CLANG
CXXFLAGS+= -Wno-multichar -Wunused -Woverloaded-virtual -Wnon-virtual-dtor -std=c++17
CFLAGS+= -Wno-multichar -Wunused
CXXFLAGS+= -Wunused -Woverloaded-virtual -std=c++20
CFLAGS+= -Wunused
CXXFLAGS_TEST+= -Wno-multichar -Wunused -Woverloaded-virtual -std=c++20
CFLAGS_TEST+= -Wno-multichar -Wunused
endif
ifdef CLANG_WARNINGS
EXTRA_WARN=-Weverything -Wno-c++17-extensions -Wno-c++98-compat-pedantic \
EXTRA_WARN=-Wno-c++98-compat-pedantic -Wno-undefined-func-template \
-Wno-switch-enum -Wno-conversion -Wno-covered-switch-default \
-Wno-inconsistent-missing-destructor-override -Wno-float-equal \
-Wno-documentation -Wno-float-equal \
-Wno-exit-time-destructors -Wno-global-constructors -Wno-weak-vtables \
-Wno-four-char-constants -Wno-padded
-Wno-four-char-constants -Wno-padded -Wno-reserved-identifier \
-Wno-duplicate-enum -Wno-unsafe-buffer-usage
CXXFLAGS+= $(EXTRA_WARN)
CFLAGS+= $(EXTRA_WARN)
CXXFLAGS_TEST+= $(EXTRA_WARN)
CFLAGS_TEST+= $(EXTRA_WARN)
endif
ifdef PROFILE
@ -78,8 +104,8 @@ ifdef PROFILE
endif
ifdef DEBUG
CXXFLAGS += -g
CFLAGS += -g
CXXFLAGS += -g -Wp,-D_GLIBCXX_DEBUG
CFLAGS += -g -Wp,-D_GLIBCXX_DEBUG
else
ifdef HAVE_GCC
CXXFLAGS+= -fomit-frame-pointer
@ -107,12 +133,14 @@ ifdef STELLA_BUILD_ROOT
else
OBJECT_ROOT := out
endif
OBJECT_ROOT_TEST := out.test
OBJECT_ROOT_PROFILE_GENERERATE := out.pgen
OBJECT_ROOT_PROFILE_USE := out.pgo
EXECUTABLE := stella$(EXEEXT)
EXECUTABLE_PROFILE_GENERATE := stella-pgo-generate$(EXEEXT)
EXECUTABLE_PROFILE_USE := stella-pgo$(EXEEXT)
EXECUTABLE_TEST := stella-test$(EXEEXT)
PROFILE_DIR = $(CURDIR)/test/roms/profile
PROFILE_OUT = $(PROFILE_DIR)/out
@ -145,14 +173,17 @@ ifdef HAVE_GCC
CFLAGS_PROFILE_USE += -fprofile-use -fprofile-dir=$(PROFILE_OUT)
LDFLAGS_PROFILE_GENERATE += -fprofile-generate
STELLA_PROFILE_GENERATE := $(STELLA_PROFILE_GENERATE) && \
rm -fr $(PROFILE_OUT)/$(OBJECT_ROOT_PROFILE_USE) && \
mv $(PROFILE_OUT)/$(OBJECT_ROOT_PROFILE_GENERERATE) $(PROFILE_OUT)/$(OBJECT_ROOT_PROFILE_USE)
(rm -fr $(PROFILE_OUT)/$(OBJECT_ROOT_PROFILE_USE) || true) && \
(mv $(PROFILE_OUT)/$(OBJECT_ROOT_PROFILE_GENERERATE) $(PROFILE_OUT)/$(OBJECT_ROOT_PROFILE_USE) || true)
endif
all: $(EXECUTABLE)
pgo: $(EXECUTABLE_PROFILE_USE)
test: $(EXECUTABLE_TEST)
./$(EXECUTABLE_TEST)
######################################################################
# Various minor settings
######################################################################
@ -175,8 +206,8 @@ MODULES += \
src/emucore \
src/emucore/tia \
src/emucore/tia/frame-manager \
src/common/repository/sqlite \
src/sqlite
src/emucore/elf \
src/common/repository/sqlite
######################################################################
# The build rules follow - normally you should have no need to
@ -194,6 +225,7 @@ DEPDIRS = $(addsuffix /$(DEPDIR),$(MODULE_DIRS))
DEPFILES =
OBJ=$(addprefix $(OBJECT_ROOT)/,$(OBJS))
OBJ_TEST=$(addprefix $(OBJECT_ROOT_TEST)/,$(OBJS_TEST))
OBJ_PROFILE_GENERATE=$(addprefix $(OBJECT_ROOT_PROFILE_GENERERATE)/,$(OBJS))
OBJ_PROFILE_USE=$(addprefix $(OBJECT_ROOT_PROFILE_USE)/,$(OBJS))
@ -201,6 +233,9 @@ OBJ_PROFILE_USE=$(addprefix $(OBJECT_ROOT_PROFILE_USE)/,$(OBJS))
$(EXECUTABLE): $(OBJ)
$(LD) $(LDFLAGS) $(PRE_OBJS_FLAGS) $+ $(POST_OBJS_FLAGS) $(LIBS) $(PROF) -o $@
$(EXECUTABLE_TEST): $(OBJ_TEST)
$(LD) $(LDFLAGS_TEST) $(PRE_OBJS_FLAGS) $+ $(POST_OBJS_FLAGS) $(LIBS) -lgtest -lgtest_main -o $@
$(EXECUTABLE_PROFILE_GENERATE): $(OBJ_PROFILE_GENERATE)
$(LD) $(LDFLAGS_PROFILE_GENERATE) $(PRE_OBJS_FLAGS) $+ $(POST_OBJS_FLAGS) $(LIBS) $(PROF) -o $@
@ -215,7 +250,7 @@ clean:
-$(RM) -fr \
$(OBJECT_ROOT) $(OBJECT_ROOT_PROFILE_GENERERATE) $(OBJECT_ROOT_PROFILE_USE) \
$(EXECUTABLE) $(EXECUTABLE_PROFILE_GENERATE) $(EXECUTABLE_PROFILE_USE) \
$(PROFILE_OUT) $(PROFILE_STAMP)
$(OBJECT_ROOT_TEST) $(PROFILE_OUT) $(PROFILE_STAMP)
.PHONY: all clean dist distclean
@ -243,6 +278,16 @@ $(OBJECT_ROOT)/%.o: %.cxx
$(merge_dep)
$(OBJECT_ROOT)/%.o: %.c
$(create_dir)
$(CC) $(CXX_UPDATE_DEP_FLAG) $(CFLAGS_TEST) $(CPPFLAGS) -c $(<) -o $@
$(merge_dep)
$(OBJECT_ROOT_TEST)/%.o: %.cxx
$(create_dir)
$(CXX) $(CXX_UPDATE_DEP_FLAG) $(CXXFLAGS_TEST) $(CPPFLAGS) -c $(<) -o $@
$(merge_dep)
$(OBJECT_ROOT_TEST)/%.o: %.c
$(create_dir)
$(CC) $(CXX_UPDATE_DEP_FLAG) $(CFLAGS) $(CPPFLAGS) -c $(<) -o $@
$(merge_dep)
@ -280,6 +325,14 @@ $(OBJECT_ROOT)/%.o: %.c
$(create_dir)
$(CC) $(CXX_UPDATE_DEP_FLAG) $(CFLAGS) $(CPPFLAGS) -c $(<) -o $@
$(OBJECT_ROOT_TEST)/%.o: %.cxx
$(create_dir)
$(CXX) $(CXX_UPDATE_DEP_FLAG) $(CXXFLAGS_TEST) $(CPPFLAGS) -c $(<) -o $@
$(OBJECT_ROOT_TEST)/%.o: %.c
$(create_dir)
$(CC) $(CXX_UPDATE_DEP_FLAG) $(CFLAGS_TEST) $(CPPFLAGS) -c $(<) -o $@
$(OBJECT_ROOT_PROFILE_GENERERATE)/%.o: %.cxx
$(create_dir)
$(CXX) $(CXX_UPDATE_DEP_FLAG) $(CXXFLAGS_PROFILE_GENERATE) $(CPPFLAGS) -c $(<) -o $@
@ -317,11 +370,11 @@ install: all
$(INSTALL) -d "$(DESTDIR)$(BINDIR)"
$(INSTALL) -c -m 755 "$(srcdir)/stella$(EXEEXT)" "$(DESTDIR)$(BINDIR)/stella$(EXEEXT)"
$(INSTALL) -d "$(DESTDIR)$(DOCDIR)"
$(INSTALL) -c -m 644 "$(srcdir)/Announce.txt" "$(srcdir)/Changes.txt" "$(srcdir)/Copyright.txt" "$(srcdir)/License.txt" "$(srcdir)/README-SDL.txt" "$(srcdir)/Readme.txt" "$(srcdir)/Todo.txt" "$(srcdir)/docs/index.html" "$(srcdir)/docs/debugger.html" "$(DESTDIR)$(DOCDIR)/"
$(INSTALL) -c -m 644 "$(srcdir)/Announce.txt" "$(srcdir)/Changes.txt" "$(srcdir)/Copyright.txt" "$(srcdir)/License.txt" "$(srcdir)/README-SDL.txt" "$(srcdir)/README.md" "$(srcdir)/Todo.txt" "$(srcdir)/docs/index.html" "$(srcdir)/docs/debugger.html" "$(DESTDIR)$(DOCDIR)/"
$(INSTALL) -d "$(DESTDIR)$(DOCDIR)/graphics"
$(INSTALL) -c -m 644 $(wildcard $(srcdir)/docs/graphics/*.png) "$(DESTDIR)$(DOCDIR)/graphics"
$(INSTALL) -d "$(DESTDIR)$(DATADIR)/applications"
$(INSTALL) -c -m 644 "$(srcdir)/src/unix/stella.desktop" "$(DESTDIR)$(DATADIR)/applications"
$(INSTALL) -c -m 644 "$(srcdir)/src/os/unix/stella.desktop" "$(DESTDIR)$(DATADIR)/applications"
$(INSTALL) -d "$(DESTDIR)$(DATADIR)/icons/hicolor/16x16/apps"
$(INSTALL) -d "$(DESTDIR)$(DATADIR)/icons/hicolor/22x22/apps"
$(INSTALL) -d "$(DESTDIR)$(DATADIR)/icons/hicolor/24x24/apps"
@ -357,7 +410,7 @@ src/emucore/M6502.ins: src/emucore/M6502.m4
m4 src/emucore/M6502.m4 > src/emucore/M6502.ins
# Special rule for windows icon stuff (there's probably a better way to do this ...)
src/windows/stella_icon.o: src/windows/stella.ico src/windows/stella.rc
windres --include-dir src/windows src/windows/stella.rc src/windows/stella_icon.o
src/os/windows/stella_icon.o: src/os/windows/stella.ico src/os/windows/stella.rc
windres --include-dir src/os/windows src/os/windows/stella.rc src/os/windows/stella_icon.o
.PHONY: deb bundle test install uninstall

View File

@ -15,6 +15,10 @@ Please check the list of known issues first (see below) before reporting new one
If you encounter any issues, please open a new issue on the project
[issue tracker](https://github.com/stella-emu/stella/issues).
Note: Please do **not** report issues regarding platforms other than PC and RetroN 77
(e.g. Libretro) here. The Stella Team is not responsible for these forks and cannot
help with them.
# Known issues
Please check out the [issue tracker](https://github.com/stella-emu/stella/issues) for

View File

@ -1,10 +0,0 @@
Stella is a multi-platform Atari 2600 VCS emulator which allows you to
play all of your favourite Atari 2600 games on your PC. You'll find the
Stella Users Manual in the docs subdirectory. If you'd like to verify
that you have the latest release of Stella, visit the Stella Website at:
https://stella-emu.github.io
Enjoy,
The Stella Team

View File

@ -1,32 +0,0 @@
image: Visual Studio 2019
shallow_clone: true
environment:
matrix:
- Platform: x64
- Platform: Win32
Configuration: Release
SDL2_version: 2.0.12
install:
- cmd: |
curl -o "C:\SDL2-devel.zip" "https://www.libsdl.org/release/SDL2-devel-%SDL2_version%-VC.zip"
7z x "C:\SDL2-devel.zip" -o"C:\"
xcopy /S "C:\SDL2-%SDL2_version%\include" src\common
if %Platform%==x64 xcopy /S "C:\SDL2-%SDL2_version%\lib\x64" src\windows
if %Platform%==Win32 xcopy /S "C:\SDL2-%SDL2_version%\lib\x86" src\windows
build_script:
- cmd: |
msbuild src\windows\Stella.sln
artifacts:
- path: '**\stella.exe'

View File

@ -4,7 +4,9 @@
# contains the module name, a trick we use so we can keep multiple different
# module object lists, one for each module.
MODULE_OBJS-$(MODULE) := $(MODULE_OBJS)
MODULE_TEST_OBJS-$(MODULE) := $(MODULE_TEST_OBJS)
# If not building as a plugin, add the object files to the main OBJS list
#OBJS += $(MODULE_LIB-$(MODULE))
OBJS += $(MODULE_OBJS)
OBJS_TEST += $(MODULE_TEST_OBJS)

1637
config.guess vendored

File diff suppressed because it is too large Load Diff

3376
config.sub vendored

File diff suppressed because it is too large Load Diff

141
configure vendored
View File

@ -13,6 +13,16 @@
# use environment vars if set
CXXFLAGS="$CXXFLAGS $CPPFLAGS"
if test -n "$CXXFLAGS_TEST"; then
CXXFLAGS_TEST="$CXXFLAGS_TEST $CPPFLAGS"
else
CXXFLAGS_TEST="$CXXFLAGS"
fi
if test -z "$LDFLAGS_TEST"; then
LDFLAGS_TEST="$LDFLAGS"
fi
# default option behaviour yes/no
_build_gui=yes
_build_windowed=yes
@ -20,18 +30,22 @@ _build_sound=yes
_build_debugger=yes
_build_joystick=yes
_build_cheats=yes
_build_httplib=yes
_build_png=yes
_build_sqlite3=yes
_build_zip=yes
_build_static=no
_build_profile=no
_build_debug=no
_build_release=no
_build_mold=no
# more defaults
_ranlib=ranlib
_install=install
_ar="ar cru"
_strip=strip
_pkg_config=pkg-config
_mkdir="mkdir -p"
_echo=printf
_cat=cat
@ -214,11 +228,15 @@ Optional Features:
--disable-profile
--enable-debug build with debugging symbols [disabled]
--disable-debug
--enable-release build with all optimizations, for final release [disabled]
--disable-release
--use-mold-linker use mold linker (experimental) [disabled]
Optional Libraries:
--with-sdl-prefix=DIR Prefix where the sdl2-config script is installed (optional)
--with-libpng-prefix=DIR Prefix where libpng is installed (optional)
--with-zlib-prefix=DIR Prefix where zlib is installed (optional)
--with-gtest-prefix=DIR Prefix where googletest is installed (optional)
Some influential environment variables:
LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
@ -227,6 +245,8 @@ Some influential environment variables:
CXXFLAGS C++ compiler flags
CPPFLAGS C++ preprocessor flags, e.g. -I<include dir> if you have
headers in a nonstandard directory <include dir>
LDFLAGS_TEST linker flags for unit tests
CXXFLAGS_TEST C++ compiler flags for unit tests
EOF
exit 0
@ -260,6 +280,7 @@ for ac_option in $@; do
--disable-debug) _build_debug=no ;;
--enable-release) _build_release=yes ;;
--disable-release) _build_release=no ;;
--use-mold-linker) _build_mold=yes ;;
--with-sdl-prefix=*)
arg=`echo $ac_option | cut -d '=' -f 2`
_sdlpath="$arg:$arg/bin"
@ -273,6 +294,11 @@ for ac_option in $@; do
_prefix=`echo $ac_option | cut -d '=' -f 2`
ZLIB_CFLAGS="-I$_prefix/include"
ZLIB_LIBS="-L$_prefix/lib"
;;
--with-gtest-prefix=*)
_prefix=`echo $ac_option | cut -d '=' -f 2`
CXXFLAGS_TEST="$CXXFLAGS_TEST -I$_prefix/include"
LDFLAGS_TEST="$LDFLAGS_TEST -L$_prefix/lib"
;;
--host=*)
_host=`echo $ac_option | cut -d '=' -f 2`
@ -318,12 +344,17 @@ mingw32-cross)
_host_cpu=i386
_host_prefix=i386-mingw32msvc
;;
*)
"")
guessed_host=`$_srcdir/config.guess`
_host_cpu=`echo $guessed_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
_host_os=`echo $guessed_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
_host_vendor=`echo $guessed_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
;;
*)
_host_cpu=`echo "$_host" | sed 's/^\([^-]*\)-.*/\1/'`
_host_os=`echo "$_host" | sed 's/-\([^-]*\)-[^-]*$/\1/'`
_host_prefix="$_host"
;;
esac
#
@ -339,9 +370,6 @@ arm-riscos-aof)
psp)
EXEEXT=".elf"
;;
gp2x)
EXEEXT=""
;;
*)
EXEEXT=""
;;
@ -374,7 +402,7 @@ else
fi
for compiler in $compilers; do
if test_compiler "$compiler -std=c++17"; then
if test_compiler "$compiler -std=c++20"; then
CXX=$compiler
echo $CXX
break
@ -537,6 +565,7 @@ if test -n "$_host"; then
_build_windowed=no
_build_debugger=no
_build_cheats=no
_build_httplib=no
;;
mingw32-cross)
echo "Cross-compiling for Windows using MinGW."
@ -603,6 +632,9 @@ fi
# Cross-compilers use their own commands for the following functions
if test -n "$_host_prefix"; then
_strip="$_host_prefix-$_strip"
if command -v "$_host_prefix-$_pkg_config" >/dev/null 2>&1; then
_pkg_config="$_host_prefix-$_pkg_config"
fi
fi
#
@ -616,7 +648,7 @@ if test "$_build_zip" = yes ; then
#include <zlib.h>
int main(void) { return strcmp(ZLIB_VERSION, zlibVersion()); }
EOF
cc_check $LDFLAGS $CXXFLAGS $ZLIB_CFLAGS $ZLIB_LIBS -lz && _zlib=yes
cc_check $LDFLAGS $CXXFLAGS $ZLIB_CFLAGS $ZLIB_LIBS `$_pkg_config --libs zlib` && _zlib=yes
if test "$_zlib" = yes ; then
echo "$_zlib"
@ -642,7 +674,7 @@ if test "$_build_png" = yes ; then
#include <png.h>
int main(void) { return printf("%s\n", PNG_HEADER_VERSION_STRING); }
EOF
cc_check $LDFLAGS $CXXFLAGS $LIBPNG_CFLAGS $LIBPNG_LIBS `pkg-config --libs libpng` && _libpng=yes
cc_check $LDFLAGS $CXXFLAGS $LIBPNG_CFLAGS $LIBPNG_LIBS `$_pkg_config --libs libpng` && _libpng=yes
if test "$_libpng" = yes ; then
echo "$_libpng"
@ -655,6 +687,30 @@ else
_build_png=no
fi
#
# Check for sqlite3
#
echocheck "libsqlite3"
if test "$_build_sqlite3" = yes ; then
_libsqlite3=no
cat > $TMPC << EOF
#include <stdio.h>
#include <sqlite3.h>
int main(void) { return printf("%s\n", SQLITE_VERSION); }
EOF
cc_check $LDFLAGS $CXXFLAGS `$_pkg_config --libs sqlite3` && _libsqlite3=yes
if test "$_libsqlite3" = yes ; then
echo "$_libsqlite3"
else
echo "built-in"
_build_sqlite3=yes
fi
else
echo "built-in"
_build_sqlite3=yes
fi
#
# figure out installation directories
#
@ -765,23 +821,29 @@ echo
find_sdlconfig
SRC="src"
SRC_OS="$SRC/os"
SRC_LIB="$SRC/lib"
CORE="$SRC/emucore"
COMMON="$SRC/common"
TIA="$SRC/emucore/tia"
ELF="$SRC/emucore/elf"
TIA_FRAME_MANAGER="$SRC/emucore/tia/frame-manager"
TV="$SRC/common/tv_filters"
GUI="$SRC/gui"
DBG="$SRC/debugger"
DBGGUI="$SRC/debugger/gui"
YACC="$SRC/yacc"
YACC="$SRC/debugger/yacc"
CHEAT="$SRC/cheat"
LIBPNG="$SRC/libpng"
ZLIB="$SRC/zlib"
LIBPNG="$SRC_LIB/libpng"
LIBJPG="$SRC_LIB/nanojpeg"
LIBJPGEXIF="$SRC_LIB/tinyexif"
ZLIB="$SRC_LIB/zlib"
SQLITE_REPO="$SRC/common/repository/sqlite"
SQLITE_LIB="$SRC/sqlite"
JSON="$SRC/json"
SQLITE_LIB="$SRC_LIB/sqlite"
JSON="$SRC_LIB/json"
HTTP_LIB="$SRC_LIB/httplib"
INCLUDES="-I$CORE -I$COMMON -I$TV -I$TIA -I$TIA_FRAME_MANAGER -I$JSON -I$SQLITE_REPO -I$SQLITE_LIB"
INCLUDES="-I$CORE -I$COMMON -I$TV -I$TIA -I$TIA_FRAME_MANAGER -I$ELF -I$JSON -I$SQLITE_REPO"
INCLUDES="$INCLUDES `$_sdlconfig --cflags`"
if test "$_build_static" = yes ; then
@ -797,26 +859,30 @@ LD=$CXX
case $_host_os in
unix)
DEFINES="$DEFINES -DBSPF_UNIX"
MODULES="$MODULES $SRC/unix"
INCLUDES="$INCLUDES -I$SRC/unix"
MODULES="$MODULES $SRC_OS/unix"
INCLUDES="$INCLUDES -I$SRC_OS/unix"
;;
darwin)
DEFINES="$DEFINES -DBSPF_UNIX -DMACOS_KEYS"
MODULES="$MODULES $SRC/unix"
INCLUDES="$INCLUDES -I$SRC/unix"
MODULES="$MODULES $SRC_OS/unix"
INCLUDES="$INCLUDES -I$SRC_OS/unix"
if test "$have_clang" == yes; then
CXXFLAGS="$CXXFLAGS -Wno-poison-system-directories"
if test -n "$CXXFLAGS_TEST"; then
CXXFLAGS_TEST="$CXXFLAGS_TEST -Wno-poison-system-directories"
fi
fi
_libsqlite3=no
;;
retron77)
DEFINES="$DEFINES -DBSPF_UNIX -DRETRON77"
MODULES="$MODULES $SRC/unix $SRC/unix/r77"
INCLUDES="$INCLUDES -I$SRC/unix -I$SRC/unix/r77"
MODULES="$MODULES $SRC_OS/unix $SRC_OS/unix/r77"
INCLUDES="$INCLUDES -I$SRC_OS/unix -I$SRC_OS/unix/r77"
;;
win32)
DEFINES="$DEFINES -DBSPF_WINDOWS"
MODULES="$MODULES $SRC/windows"
INCLUDES="$INCLUDES -I$SRC/windows"
MODULES="$MODULES $SRC_OS/windows"
INCLUDES="$INCLUDES -I$SRC_OS/windows"
LIBS="$LIBS -lmingw32 -lwinmm"
;;
*)
@ -855,20 +921,34 @@ if test "$_build_cheats" = yes ; then
INCLUDES="$INCLUDES -I$CHEAT"
fi
if test "$_build_httplib" = yes ; then
DEFINES="$DEFINES -DHTTP_LIB_SUPPORT"
INCLUDES="$INCLUDES -I$HTTP_LIB"
fi
if test "$_build_png" = yes ; then
DEFINES="$DEFINES -DPNG_SUPPORT"
DEFINES="$DEFINES -DIMAGE_SUPPORT"
INCLUDES="$INCLUDES -I$LIBJPG -I$LIBJPGEXIF"
MODULES="$MODULES $LIBJPGEXIF"
if test "$_libpng" = yes ; then
LIBS="$LIBS -lpng"
LIBS="$LIBS `$_pkg_config --libs libpng`"
else
MODULES="$MODULES $LIBPNG"
INCLUDES="$INCLUDES -I$LIBPNG"
fi
fi
if test "$_libsqlite3" = yes ; then
LIBS="$LIBS `$_pkg_config --libs sqlite3`"
else
MODULES="$MODULES $SQLITE_LIB"
INCLUDES="$INCLUDES -I$SQLITE_LIB"
fi
if test "$_build_zip" = yes ; then
DEFINES="$DEFINES -DZIP_SUPPORT"
if test "$_zlib" = yes ; then
LIBS="$LIBS -lz"
LIBS="$LIBS `$_pkg_config --libs zlib`"
else
MODULES="$MODULES $ZLIB"
INCLUDES="$INCLUDES -I$ZLIB"
@ -887,12 +967,24 @@ if test "$_build_release" = no ; then
_build_release=
fi
if test "$_build_mold" = yes ; then
LDFLAGS="-fuse-ld=mold"
fi
# Workaround until we deal with autodetection of C compiler properly
# Or we remove C files from Stella entirely, by making them C++
if test -z "$CC"; then
CC=cc
fi
echo "Creating config.mak"
cat > config.mak << EOF
# -------- Generated by configure -----------
CC := $CC
CXX := $CXX
CXXFLAGS := $CXXFLAGS
CXXFLAGS_TEST := $CXXFLAGS_TEST
LD := $LD
LIBS += $LIBS
RANLIB := $_ranlib
@ -930,6 +1022,7 @@ INCLUDES += $INCLUDES
OBJS += $OBJS
DEFINES += $DEFINES
LDFLAGS += $LDFLAGS
LDFLAGS_TEST += $LDFLAGS_TEST
$_config_mk_data
EOF

28
debian/changelog vendored
View File

@ -1,3 +1,31 @@
stella (7.0) stable; urgency=high
* Version 7.0 release
-- Stephen Anthony <sa666666@gmail.com> Sat, 5 Oct 2024 17:09:59 -0230
stella (6.7) stable; urgency=high
* Version 6.7 release
-- Stephen Anthony <sa666666@gmail.com> Mon, 13 Jun 2022 17:09:59 -0230
stella (6.6) stable; urgency=high
* Version 6.6 release
-- Stephen Anthony <sa666666@gmail.com> Tue, 16 Nov 2021 17:09:59 -0230
stella (6.5.3) stable; urgency=high
* Version 6.5.3 release
-- Stephen Anthony <sa666666@gmail.com> Tue, 20 Apr 2021 17:09:59 -0230
stella (6.5.2) stable; urgency=high
* Version 6.5.2 release

1
debian/control vendored
View File

@ -3,6 +3,7 @@ Maintainer: Stephen Anthony <sa666666@gmail.com>
Section: otherosfs
Priority: optional
Build-Depends: debhelper (>= 10~),
libgtest-dev,
libpng-dev,
libsdl2-dev,
zlib1g-dev

14
debian/copyright vendored
View File

@ -1,18 +1,18 @@
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0
Upstream-Name: stella
Source: https://stella-emu.github.io
Copyright: 1995-2021 Bradford W. Mott, Stephen Anthony and the Stella Team
Copyright: 1995-2025 Bradford W. Mott, Stephen Anthony and the Stella Team
License: GPL-2+
Files: *
Copyright: 1995-2021 Bradford W. Mott, Stephen Anthony and the Stella
Copyright: 1995-2025 Bradford W. Mott, Stephen Anthony and the Stella
Team
License: GPL-2+
Files: debian/*
Copyright: 1998-2004 Tom Lear <tom@trap.mtview.ca.us>
2006 Mario Iseli <admin@marioiseli.com>
2010-2021 Stephen Kitt <skitt@debian.org>
2010-2025 Stephen Kitt <skitt@debian.org>
License: GPL-2+
Files:
@ -73,7 +73,7 @@ License: RSA
These notices must be retained in any copies of any part of this
documentation and/or software.
Files: src/libpng/*
Files: src/lib/libpng/*
Copyright: 1995-1996 Guy Eric Schalnat, Group 42, Inc.
1996-1997 Andreas Dilger
1998-2013 Glenn Randers-Pehrson
@ -112,7 +112,7 @@ License: libpng
risk of satisfactory quality, performance, accuracy, and effort is
with the user.
Files: src/libretro/libretro.h
Files: src/os/libretro/libretro.h
Copyright: 2010-2017 The RetroArch team
License: MIT
Permission is hereby granted, free of charge, to any person obtaining
@ -135,7 +135,7 @@ License: MIT
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Files: src/macos/*
Files: src/os/macos/*
Copyright: 2005-2006 Mark Grebe
License: GPL-2+
@ -164,7 +164,7 @@ License: GPL-2
License version 2 can be found in
`/usr/share/common-licenses/GPL-2'.
Files: src/zlib/*
Files: src/lib/zlib/*
Copyright: 1995-2012, 2016 Jean-loup Gailly and Mark Adler
License: zlib
This software is provided 'as-is', without any express or implied

4
debian/docs vendored
View File

@ -2,7 +2,7 @@ Announce.txt
Changes.txt
Copyright.txt
README-SDL.txt
Readme.txt
README.md
docs/*.html
doc/graphics/*.png
docs/graphics/*.png
Todo.txt

View File

@ -15,7 +15,7 @@
<body>
<center><b><font size="7">Stella</font></b></center>
<center><h4><b>Release 6.5.2</b></h4></center>
<center><h4><b>Release 7.0</b></h4></center>
<center><h1><b>Integrated Debugger</b></h1></center>
<center><h4><b>(a work in progress)</b></h4></center>
<br>
@ -45,6 +45,7 @@
<li><a href="#PseudoRegisters">Pseudo-Registers</a></li>
<li><a href="#Watches">Watches</a></li>
<li><a href="#Traps">Traps</a></li>
<li><a href="#Timers">Timers</a></li>
</ul>
</li>
<li><a href="#SaveWork">Save your work!</a></li>
@ -102,10 +103,10 @@ feature that no other 2600 debugger has; it's <b>completely</b> cross-platform.<
breakpoints as you want.</li>
<li>Conditional breakpoints - Break running program when some arbitrary
condition is true (e.g. "breakif {a == $7f &amp;&amp; c}" will break when the Accumulator value is $7f and the Carry flag is true, no matter where
condition is true (e.g. "breakIf {a == $7f &amp;&amp; c}" will break when the Accumulator value is $7f and the Carry flag is true, no matter where
in the program this happens). Unlike the cond breaks in PCAE, Stella's
are *fast*: the emulation will run at full speed unless you use lots
of breakif's at the same time, or have a slow CPU.</li>
of breakIf's at the same time, or have a slow CPU.</li>
<li>Watches - View contents of a location/register before every
debugger prompt.</li>
@ -172,7 +173,7 @@ feature that no other 2600 debugger has; it's <b>completely</b> cross-platform.<
<li>Data sources for the CPU SP/A/X/Y registers, showing the resolved/source
address of of load operands.</li>
<li>Scanline advance (like frame advance, break at beginning
of next scanline).</li>
of next scanLine).</li>
<li>TIA display is updated during step/trace, so we can see our
scanlines being drawn as it happens. This isn't 100% perfect: unlike
a real TIA, the one in Stella only updates when it's written to.</li>
@ -183,7 +184,7 @@ feature that no other 2600 debugger has; it's <b>completely</b> cross-platform.<
named after the ROM image.</li>
<li>Saving the current debugger state to a script file (including
breakpoints, traps, etc).</li>
<li>Built-in functions for use with "breakif", to support common conditions
<li>Built-in functions for use with "breakIf", to support common conditions
(such as breaking when the user presses Game Select...)</li>
<li>Patching ROM in-place.</li>
<li>Save patched ROM</li>
@ -251,9 +252,9 @@ command on the command line, or alternatively within the ROM launcher in
</p>
<p>Using the ` key will always enter the debugger at the end of
the frame (for NTSC games usually scanline 262). This is because Stella only checks
the frame (for NTSC games usually scanLine 262). This is because Stella only checks
for keystrokes once per frame. Once in the debugger, you can control
execution by stepping one instruction, scanline, or frame at a time
execution by stepping one instruction, scanLine, or frame at a time
(or more than one at a time, using commands in the prompt). You can
also set breakpoints or traps, which will cause the emulator to enter
the debugger when they are triggered, even if it happens in mid-frame.</p>
@ -310,7 +311,7 @@ more convenient.
</li>
<li>
"&lt;rom_filename&gt;.sym" (located in the same directory as the ROM)</br>
If you provied the -l and -s parameters DASM will create these two files during
If you provide the -l and -s parameters DASM will create these two files during
assembly. Stella uses the file content to display the correct labels.
</li>
</ul>
@ -345,56 +346,57 @@ size can be configured e.g. in the
<p>
<table BORDER=1 cellpadding=4>
<tr>
<th>Key</th>
<th>Function</th>
<th>Key</th>
</tr>
<tr>
<td>Step &#185;</td>
<td>Control + S</td>
<td>Step</td>
</tr>
<tr>
<td>Trace &#185;</td>
<td>Control + T</td>
<td>Trace</td>
</tr>
<tr>
<td>Scan +1 &#185;</td>
<td>Control + L</td>
<td>Scan +1</td>
</tr>
<tr>
<td>Frame +1 &#185;</td>
<td>Control + F</td>
<td>Frame +1</td>
</tr>
<tr>
<td>Alt + Left arrow</td>
<td>Rewind 1</td>
<td>Alt + Left arrow</td>
</tr>
<tr>
<td>Shift-Alt + Left arrow</td>
<td>Rewind 10</td>
<td>Shift-Alt + Left arrow</td>
</tr>
<tr>
<td>Alt + Down arrow</td>
<td>Rewind all</td>
<td>Alt + Down arrow</td>
</tr>
<tr>
<td>Alt + Right arrow</td>
<td>Unwind 1</td>
<td>Alt + Right arrow</td>
</tr>
<tr>
<td>Shift-Alt + Right arrow</td>
<td>Unwind 10</td>
<td>Shift-Alt + Right arrow</td>
</tr>
<tr>
<td>Alt + Up arrow</td>
<td>Unwind all</td>
<td>Alt + Up arrow</td>
</tr>
<tr>
<td>Backquote (`)</td>
<td>Run, exits debugger</td>
<td>Backquote (`), Escape</td>
</tr>
</table>
</p>
For MacOS use 'Cmd' instead of &nbsp;'Alt' key.
<p>&#185;: External I/O input is ignored, the state of the <a href="#IOTab">I/O Tab</a> remains unchanged.</p>
<p>To the left of the global buttons, you find the 'Options...' button.</p>
<ul>
<p><img src="graphics/debugger_options.png"></p>
@ -408,7 +410,7 @@ in detail in the <a href="index.html">User's Guide</a>.</p>
<p>The debugger tracks changes to the CPU, TIA and RIOT registers and RAM by
displaying changed locations or registers with a red background after each step,
trace, scanline, or frame advance. This sounds simple, and it is, but
trace, scanLine, or frame advance. This sounds simple, and it is, but
it's also amazingly useful.</p>
<p>One clarification about the change tracking: it only tracks when values
@ -428,25 +430,28 @@ or Supermon for the C=64.</p>
Bash-style commands are also supported:</p>
<table border="1" cellpadding=4>
<tr><th>Key</th><th>Function</th></tr>
<tr><td>Home</td><td>Move cursor to beginning of line</td></tr>
<tr><td>End</td><td>Move cursor to end of line</td></tr>
<tr><td>Delete</td><td>Remove character to right of cursor</td></tr>
<tr><td>Backspace</td><td>Remove character to left of cursor</td></tr>
<tr><td>Control + A</td><td>Same function as 'Home'</td></tr>
<tr><td>Control + E</td><td>Same function as 'End'</td></tr>
<tr><td>Control + D</td><td>Same function as 'Delete'</td></tr>
<tr><td>Control + K</td><td>Remove all characters from cursor to end of line</td></tr>
<tr><td>Control + U</td><td>Remove all characters from cursor to beginning of line</td></tr>
<tr><td>Control + W</td><td>Remove entire word to left of cursor</td></tr>
<tr><td>Shift + PgUp</td><td>Scroll up through previous commands one screen/page</td></tr>
<tr><td>Shift + PgDown</td><td>Scroll down through previous commands one screen/page</td></tr>
<tr><td>Shift + Up</td><td>Scroll up through previous commands one line</td></tr>
<tr><td>Shift + Down</td><td>Scroll down through previous commands one line</td></tr>
<tr><td>Shift + Home</td><td>Scroll to beginning of commands</td></tr>
<tr><td>Shift + End</td><td>Scroll to end of commands</td></tr>
<tr><th>Function</th><th>Key</th></tr>
<tr><td>Move cursor to beginning of line</td><td>Home</td></tr>
<tr><td>Move cursor to end of line</td><td>End</td></tr>
<tr><td>Remove character to right of cursor</td><td>Delete</td></tr>
<tr><td>Remove character to left of cursor</td><td>Backspace</td></tr>
<tr><td>Same function as 'Home'</td><td>Control + A</td></tr>
<tr><td>Same function as 'End'</td><td>Control + E</td></tr>
<tr><td>Same function as 'Delete'</td><td>Control + D</td></tr>
<tr><td>Remove all characters from cursor to end of line</td><td>Control + K</td></tr>
<tr><td>Remove all characters from cursor to beginning of line</td><td>Control + U</td></tr>
<tr><td>Remove entire word to left of cursor</td><td>Control + W</td></tr>
<tr><td>Copy current line</td><td>Control + C</td></tr>
<tr><td>Cut current line</td><td>Control + X</td></tr>
<tr><td>Paste over current line</td><td>Control + V</td></tr>
<tr><td>Scroll up through previous commands one screen/page</td><td>Shift + PgUp</td></tr>
<tr><td>Scroll down through previous commands one screen/page</td><td>Shift + PgDown</td></tr>
<tr><td>Scroll up through previous commands one line</td><td>Shift + Up</td></tr>
<tr><td>Scroll down through previous commands one line</td><td>Shift + Down</td></tr>
<tr><td>Scroll to beginning of commands</td><td>Shift + Home</td></tr>
<tr><td>Scroll to end of commands</td><td>Shift + End</td></tr>
</table>
<p>You can also scroll with the mouse. Copy and paste is not yet supported.</p>
<p>You can also scroll with the mouse. Copy and paste is currently only supported for a complete line.</p>
<p>To see the available commands, enter "help". For extended help, type "help cmd",
where 'cmd' is the command you wish to know about. The available commands are listed
@ -467,16 +472,16 @@ just by re-running the relevant commands in the prompt.</p>
<h3><a name="TabCompletion">Tab Key Auto-Complete</a></h3>
<p>While entering a command, label or function, you can type a partial name and
press the Tab key to attempt to auto-complete it. If you've ever used
press the (Shift +) Tab key to attempt to auto-complete it. If you've ever used
"bash", this will be immediately familiar. If not, try it: load up
a ROM, go to the debugger, type "g" (but don't press Enter),
then hit Tab. The "g" will change to "gfx" (since this is the only
built-in command starting with a "g"). If there are multiple possible
completions (try with "tr" instead of "g"), you'll see a list of them,
and your partial name will be completed as far as possible.
completions (try with "tr" instead of "g"), you can tab through them.
After the first character, the autocompletion considers all
characters in the right order as a match (e.g. "twf" will be completed to
"trapwriteif").</p>
"trapWriteIf"). Alternatively you can make use of the camel case names and type
e.g. "tWI" ("trapWriteIf") or "lAS" ("LoadAllStates").</p>
<p>Tab completion works on all labels: built-in, loaded from a symbol file,
or set during debugging with the "define" command. It also works with
@ -609,7 +614,7 @@ command that takes arguments.</p>
<h4><a name="Breakpoints">Breakpoints</a></h4>
<p>A breakpoint is a "hotspot" in your program that causes the emulator
to stop emulating and jump into the debugger. You can set as many
to stop emulating and jump into the debugger &#185;. You can set as many
breakpoints as you like. The command is "break xx yy" where xx is any
expression and yy a bank number. Both arguments are optional. If you have
created a symbol file, you can use labels for the expression.</p>
@ -630,8 +635,11 @@ set it. In the example, "break kernel" will remove the breakpoint.
The "break" command can be thought of as a *toggle*: it turns the
breakpoint on &amp; off, like a light switch.</p>
<p>You could also use "clearbreaks" to remove all the breakpoints. Also,
there is a "listbreaks" command that will list them all.</p>
<p>You could also use "clearBreaks" to remove all the breakpoints. Also,
there is a "listBreaks" command that will list them all.</p>
<p>&#185; By enabling "logBreaks" you can log the current state into
the System Log and continue emulation instead.</p>
<h4><a name="ConditionalBreaks">Conditional Breaks</a></h4>
@ -661,10 +669,10 @@ is the "!" operator): !(*SWCHB&amp;1). The parentheses are necessary as
we want to apply the ! to the result of the &amp;, not just the first term
(the "*SWCHB").</p>
<p>"breakif !(*SWCHB&amp;1)" will do the job for us. However, it's an ugly mess
<p>"breakIf !(*SWCHB&amp;1)" will do the job for us. However, it's an ugly mess
of letters, numbers, and punctuation. We can do a little better:</p>
<p>"breakif { !(*SWCHB &amp; 1 ) }" is a lot more readable, isn't it? If
<p>"breakIf { !(*SWCHB &amp; 1 ) }" is a lot more readable, isn't it? If
you're going to use readable expressions with spaces in them,
enclose the entire expression in curly braces.</p>
@ -673,9 +681,9 @@ condition that depends on input (like SWCHB) will always happen at the
end of a frame. This is different from how a real 2600 works, but most
ROMs only check for input once per frame anyway.</p>
<p>Conditional breaks appear in "listbreaks", numbered starting from
zero. You can remove a cond-break with "delbreakif number", where
the number comes from "listbreaks" or by entering the same conditional break again.</p>
<p>Conditional breaks appear in "listBreaks", numbered starting from
zero. You can remove a cond-break with "delBreakIf number", where
the number comes from "listBreaks" or by entering the same conditional break again.</p>
<p>Any time the debugger is entered due to a trap, breakpoint, or
conditional break, the reason will be displayed in the
@ -684,16 +692,16 @@ conditional break, the reason will be displayed in the
<h4><a name="Functions">Functions</a></h4>
<p>There is one annoyance about complex expressions: once we
remove the conditional break with "delbreakif" or "clearbreaks",
remove the conditional break with "delBreakIf" or "clearBreaks",
we'd have to retype it (or search backwards with the up-arrow key)
if we wanted to use it again.</p>
<p>We can avoid this by defining the expression as a function, then using
"breakif function_name":</p>
"breakIf function_name":</p>
<pre>
function gameReset { !(*SWCHB &amp; 1 ) }
breakif gameReset
breakIf gameReset
</pre>
<p>Now we have a meaningful name for the condition, so we can use it again.
@ -703,16 +711,16 @@ if the Game Select switch is pressed. We want to break when the user
presses both Select and Reset:</p>
<pre>
breakif { gameReset &amp;&amp; gameSelect }
breakIf { gameReset &amp;&amp; gameSelect }
</pre>
<p>User-defined functions appear in "listfunctions", which shows the label
<p>User-defined functions appear in "listFunctions", which shows the label
and expression for each function. Functions can be removed with
"delfunction label", where the labels come from "listfunctions".</p>
"delFunction label", where the labels come from "listFunctions".</p>
<h4><a name="BuiltInFunctions">Built-in Functions</a></h4>
<p>Stella has some pre-defined functions for use with the "breakif"
<p>Stella has some pre-defined functions for use with the "breakIf"
command. These allow you to break and enter the debugger on various
conditions without having to define the conditions yourself.</p>
@ -723,24 +731,24 @@ Stella debugger.</p>
<table border="1" cellpadding=4>
<tr><th>Function</th><th>Definition</th><th>Description</th></tr>
<tr><td> _joy0left</td><td> !(*SWCHA &amp; $40)</td><td> Left joystick moved left</td></tr>
<tr><td> _joy0right</td><td> !(*SWCHA &amp; $80)</td><td> Left joystick moved right</td></tr>
<tr><td> _joy0up</td><td> !(*SWCHA &amp; $10)</td><td> Left joystick moved up</td></tr>
<tr><td> _joy0down</td><td> !(*SWCHA &amp; $20)</td><td> Left joystick moved down</td></tr>
<tr><td> _joy0button</td><td> !(*INPT4 &amp; $80)</td><td> Left joystick button pressed</td></tr>
<tr><td> _joy1left</td><td> !(*SWCHA &amp; $04)</td><td> Right joystick moved left</td></tr>
<tr><td> _joy1right</td><td> !(*SWCHA &amp; $08)</td><td> Right joystick moved right</td></tr>
<tr><td> _joy1up</td><td> !(*SWCHA &amp; $01)</td><td> Right joystick moved up</td></tr>
<tr><td> _joy1down</td><td> !(*SWCHA &amp; $02)</td><td> Right joystick moved down</td></tr>
<tr><td> _joy1button</td><td> !(*INPT5 &amp; $80)</td><td> Right joystick button pressed</td></tr>
<tr><td> _joy0Left</td><td> !(*SWCHA &amp; $40)</td><td> Left joystick moved left</td></tr>
<tr><td> _joy0Right</td><td> !(*SWCHA &amp; $80)</td><td> Left joystick moved right</td></tr>
<tr><td> _joy0Up</td><td> !(*SWCHA &amp; $10)</td><td> Left joystick moved up</td></tr>
<tr><td> _joy0Down</td><td> !(*SWCHA &amp; $20)</td><td> Left joystick moved down</td></tr>
<tr><td> _joy0Fire</td><td> !(*INPT4 &amp; $80)</td><td> Left joystick fire button pressed</td></tr>
<tr><td> _joy1Left</td><td> !(*SWCHA &amp; $04)</td><td> Right joystick moved left</td></tr>
<tr><td> _joy1Right</td><td> !(*SWCHA &amp; $08)</td><td> Right joystick moved right</td></tr>
<tr><td> _joy1Up</td><td> !(*SWCHA &amp; $01)</td><td> Right joystick moved up</td></tr>
<tr><td> _joy1Down</td><td> !(*SWCHA &amp; $02)</td><td> Right joystick moved down</td></tr>
<tr><td> _joy1Fire</td><td> !(*INPT5 &amp; $80)</td><td> Right joystick fire button pressed</td></tr>
<tr><td> _select</td><td> !(*SWCHB &amp; $02)</td><td> Game Select pressed</td></tr>
<tr><td> _reset</td><td> !(*SWCHB &amp; $01)</td><td> Game Reset pressed</td></tr>
<tr><td> _color</td><td> *SWCHB &amp; $08</td><td> Color/BW set to Color</td></tr>
<tr><td> _bw</td><td> !(*SWCHB &amp; $08)</td><td> Color/BW set to BW</td></tr>
<tr><td> _diff0b</td><td> !(*SWCHB &amp; $40)</td><td> Left difficulty set to B (easy)</td></tr>
<tr><td> _diff0a</td><td> *SWCHB &amp; $40</td><td> Left difficulty set to A (hard)</td></tr>
<tr><td> _diff1b</td><td> !(*SWCHB &amp; $80)</td><td> Right difficulty set to B (easy)</td></tr>
<tr><td> _diff1a</td><td> *SWCHB &amp; $80</td><td> Right difficulty set to A (hard)</td></tr>
<tr><td> _diff0B</td><td> !(*SWCHB &amp; $40)</td><td> Left difficulty set to B (easy)</td></tr>
<tr><td> _diff0A</td><td> *SWCHB &amp; $40</td><td> Left difficulty set to A (hard)</td></tr>
<tr><td> _diff1B</td><td> !(*SWCHB &amp; $80)</td><td> Right difficulty set to B (easy)</td></tr>
<tr><td> _diff1A</td><td> *SWCHB &amp; $80</td><td> Right difficulty set to A (hard)</td></tr>
</table>
<p>Don't worry about memorizing them all: the Prompt "help" command
@ -756,36 +764,38 @@ that holds 'number of scanlines' on an actual console).</p>
<table border="1" cellpadding=4>
<tr><th>Function</th><th>Description</th></tr>
<tr><td> _bank</td><td> Currently selected bank</td></tr>
<tr><td> _cclocks</td><td> Color clocks on a scanline</td></tr>
<tr><td> _cycleshi</td><td> Higher 32 bits of number of cycles since emulation started</td></tr>
<tr><td> _cycleslo</td><td> Lower 32 bits of number of cycles since emulation started</td></tr>
<tr><td> _fcount</td><td> Number of frames since emulation started</td></tr>
<tr><td> _fcycles</td><td> Number of cycles since frame started</td></tr>
<tr><td> _ftimreadcycles</td><td>Number of cycles used by timer reads since frame started</td></tr>
<tr><td> _fwsynccycles</td><td>Number of cycles skipped by WSYNC since frame started</td></tr>
<tr><td> _icycles</td><td> Number of cycles of last instruction</td></tr>
<tr><td> _scan</td><td> Current scanline count</td></tr>
<tr><td> _scanend</td><td> Scanline count at end of last frame</td></tr>
<tr><td> _scycles</td><td> Number of cycles in current scanline</td></tr>
<tr><td> _timwrapread</td><td> Timer read wrapped on this cycle</td></tr>
<tr><td> _timwrapwrite</td><td> Timer write wrapped on this cycle</td></tr>
<tr><td> _vblank</td><td> Whether vertical blank is enabled (1 or 0)</td></tr>
<tr><td> _vsync</td><td> Whether vertical sync is enabled (1 or 0)</td></tr>
<tr><td> _cClocks</td><td> Color clocks on a scanLine</td></tr>
<tr><td> _cyclesHi</td><td> Higher 32 bits of number of cycles since emulation started</td></tr>
<tr><td> _cyclesLo</td><td> Lower 32 bits of number of cycles since emulation started</td></tr>
<tr><td> _fCount</td><td> Number of frames since emulation started</td></tr>
<tr><td> _fCycles</td><td> Number of cycles since frame started</td></tr>
<tr><td> _fTimReadCycles</td><td>Number of cycles used by timer reads since frame started</td></tr>
<tr><td> _fWsyncCycles</td><td>Number of cycles skipped by WSYNC since frame started</td></tr>
<tr><td> _iCycles</td><td> Number of cycles of last instruction</td></tr>
<tr><td> _inTim</td><td> Current INTIM value</td></tr>
<tr><td> _scan</td><td> Current scanLine count</td></tr>
<tr><td> _scanEnd</td><td> Scanline count at end of last frame</td></tr>
<tr><td> _sCycles</td><td> Number of cycles in current scanLine</td></tr>
<tr><td> _timInt</td><td> Current TIMINT value</td></tr>
<tr><td> _timWrapRead</td><td> Timer read wrapped on this cycle</td></tr>
<tr><td> _timWrapWrite</td><td> Timer write wrapped on this cycle</td></tr>
<tr><td> _vBlank</td><td> Whether vertical blank is enabled (1 or 0)</td></tr>
<tr><td> _vSync</td><td> Whether vertical sync is enabled (1 or 0)</td></tr>
</table>
<p><b>_scan</b> always contains the current scanline count. You can use
<p><b>_scan</b> always contains the current scanLine count. You can use
this to break your program in the middle of your kernel. Example:</p>
<pre>
breakif _scan==#64
breakIf _scan==#64
</pre>
<p>This will cause Stella to enter the debugger when the TIA reaches the
beginning of the 64th scanline.</p>
beginning of the 64th scanLine.</p>
<p><b>_bank</b> always contains the currently selected bank. For 2K or 4K
(non-bankswitched) ROMs, it will always contain 0. One useful use is:</p>
<pre>
breakif { pc==myLabel &amp;&amp; _bank==1 }
breakIf { pc==myLabel &amp;&amp; _bank==1 }
</pre>
<p>This is similar to setting a regular breakpoint, but it will only trigger
@ -804,8 +814,8 @@ pointed to by the Y register, even if the Y register changes.</p>
<p>The watches are numbered. The numbers are printed along with the
watches, so you can tell which is which. To delete a watch use the
"delwatch" command with the watch number (1 to whatever). You can
also delete them all with the "clearwatches" command.</p>
"delWatch" command with the watch number (1 to whatever). You can
also delete them all with the "clearWatches" command.</p>
<p>Note that there's no real point in watching a label or CPU register
without dereferencing it: Labels are constants, and CPU registers
@ -818,7 +828,7 @@ accesses to a memory address, rather than specific location in the
program. They're useful for finding code that modifies TIA registers
or memory.</p>
<p>Traps can also combined with a condition ("trapif"). If an access
<p>Traps can also combined with a condition ("trapIf"). If an access
to a memory address is caught, the condition is evaluated additionally.
Only if the condition is true too, the emulations stops. For details
about conditions see <a href="#ConditionalBreaks"><b>Conditional Breaks</b></a> described above.</p>
@ -842,12 +852,28 @@ so the best we can do is stop before the next instruction runs.</p>
<p>Traps come in two varieties: read access traps and write access traps.
It is possible to set both types of trap on the same address (that's
what the plain "trap" command does). To set a read or write only trap,
use "trapread(if)" or "trapwrite(if)".
use "trapRead(if)" or "trapWrite(if)".
<p>All traps appear in "listtraps", numbered starting from zero. You
can remove a trap with "deltrap number", where the number comes from
"listtraps" or by entering the identical trap again. You can get rid of
all traps at once with the "cleartraps" command.</p></p>
<p>All traps appear in "listTraps", numbered starting from zero. You
can remove a trap with "delTrap number", where the number comes from
"listTraps" or by entering the identical trap again. You can get rid of
all traps at once with the "clearTraps" command.</p></p>
<h4><a name="Timers">Timers</a></h4>
<p>Timers are used to measure cycles used between two timer points. They
measure the minimum, maximum and average cycles executed between their two
timer points. Start and end points can be set via prompt command or ROM
Disassembly settings dialog.</p>
<p>If the timer point is defined without an address or bank, the current PC
address or bank are used. If a '+' is added, both timer points use address
mirrors too, a '*' triggers both timer points in any bank.</p>
<p>All timers can be shown in detail with "listTimers", a single timer
with "printTimer number". "resetTimers" allows resetting all timer statistics,
"delTimer number" removes a single timer. All timers can be deleted with the
"clearTimers" command.</p>
</br>
<h3><a name="SaveWork">Save your work!</a></h3>
@ -856,58 +882,61 @@ later re-use.</p>
<ul>
<li>
<b><a name="savecmd">save</a></b>: If you've defined a lot of complex functions, you probably will
want to re-use them in future runs of the debugger. You can save all
your functions, breakpoints, conditional breaks, traps and watches with the
"save" command. If you name your saved file the same as the ROM filename
and place it in the ROM directory, it will be auto-loaded next time you
load the same ROM in Stella. The saved file is just a plain text file
called "&lt;rom_filename&gt;.script", so you can edit it and add new functions, etc.
<b><a name="savecmd">save</a></b>: If you've defined a lot of complex
functions, you probably will want to re-use them in future runs of the
debugger. You can save all your functions, breakpoints, conditional breaks,
traps and watches with the "save" command. By default it is saved in the
user directory with the same as the ROM filename. In this case it will be
auto-loaded next time you load the same ROM in Stella. The saved file is
just a plain text file called "&lt;rom_filename&gt;.script", so you can
edit it and add more functions, etc.
<p>Use "autoSave" to automatically execute the "save" command when
exiting the debugger.</p>
<p>Note: While "save" is ROM specific, you can also create a file called
"autoexec.script" which will be loaded when the debugger starts, no matter
what ROM you have loaded.<p>
See <a href="#Startup"><b>Startup</b></a> for details.
</li>
<li>
<b>saveconfig</b>: The "saveconfig" command creates a
<b>saveConfig</b>: The "saveConfig" command creates a
<a href="#DistellaConfiguration"><b>DiStella Configuration File</b></a> which is
based on Stella's dynamic and static analysis of the current ROM.
<p>This will be automatically loaded the next time your start the debugger.
From there on, you can continue analyzing the ROM and then use "saveconfig"
again to update the configuration. You can also use "loadconfig" to load it
From there on, you can continue analyzing the ROM and then use "saveConfig"
again to update the configuration. You can also use "loadConfig" to load it
manually.
<p>Note that this is not tested for multi-banked ROMs.</p>
</li>
<li>
<b>savedis</b>:
<b>saveDis</b>:
While your are playing or debugging a game, Stella will gather dynamic
information about the ROM. It can then use that information together with
a static analysis of the ROM and therefore create a better disassembly
than DiStella alone. "savedis" allows you to save that disassembly as the
than DiStella alone. "saveDis" allows you to save that disassembly as the
result of this combined analysis.
<p>Note that this currently only works for single banked ROMs. For larger
ROMs, the created disassembly is incomplete.</p>
</li>
<li>
<p><b>saverom</b>:
If you have manipulated a ROM, you can save it with "saverom". The file is
<p><b>saveRom</b>:
If you have manipulated a ROM, you can save it with "saveRom". The file is
named "&lt;rom_filename&gt;.a26".</p>
</li>
<li>
<p><b>saveses</b>:
The "saveses" command dumps the whole prompt session into a file named
<p><b>saveSes</b>:
The "saveSes" command dumps the whole prompt session into a file named
"&lt;YYYY-MM-DD_HH-mm-ss&gt;.txt". So you can later lookup what you did exactly
when you were debugging at that time.</p>
</li>
<li>
<p><b>saveallstates</b>:
<p><b>saveAllStates</b>:
This command works identical to the save all states hotkey (Alt + F9) during emulation.
The saved states can be loaded with "loadallstates".</p>
The saved states can be loaded with "loadAllStates".</p>
</li>
<li>
<p><b>savestate</b>:
<p><b>saveState</b>:
This command works identical to the save state hotkey (F9) during emulation.
Any previously saved state can be loaded with "loadstate" plus the slot
Any previously saved state can be loaded with "loadState" plus the slot
number (0-9).</p>
</li>
</ul>
@ -921,97 +950,107 @@ Type "help 'cmd'" to see extended information about the given command.</p>
<pre>
a - Set Accumulator to &lt;value&gt;
aud - Mark 'AUD' range in disassembly
autoSave - Automatically execute "save" when exiting the debugger
base - Set default number base to &lt;base&gt; (bin, dec, hex)
bcol - Mark 'BCOL' range in disassembly
bCol - Mark 'BCOL' range in disassembly
break - Set/clear breakpoint at &lt;address&gt; and &lt;bank&gt;
breakif - Set/clear breakpoint on &lt;condition&gt;
breaklabel - Set/clear breakpoint on &lt;address&gt; (no mirrors, all banks)
breakIf - Set/clear breakpoint on &lt;condition&gt;
breakLabel - Set/clear breakpoint on &lt;address&gt; (no mirrors, all banks)
c - Carry Flag: set (0 or 1), or toggle (no arg)
cheat - Use a cheat code (see manual for cheat types)
clearbreaks - Clear all breakpoints
clearconfig - Clear DiStella config directives [bank xx]
clearsavestateifs - Clear all savestate points
cleartraps - Clear all traps
clearwatches - Clear all watches
clearBreaks - Clear all breakpoints
clearConfig - Clear DiStella config directives [bank xx]
clearHistory - Clear the prompt history
clearSaveStateIfs - Clear all saveState points
clearTimers - Clear all timers
clearTraps - Clear all traps
clearWatches - Clear all watches
cls - Clear prompt area of text
code - Mark 'CODE' range in disassembly
col - Mark 'COL' range in disassembly
colortest - Show value xx as TIA color
colorTest - Show value xx as TIA color
d - Decimal Mode Flag: set (0 or 1), or toggle (no arg)
data - Mark 'DATA' range in disassembly
debugcolors - Show Fixed Debug Colors information
debugColors - Show Fixed Debug Colors information
define - Define label xx for address yy
delbreakif - Delete conditional breakif &lt;xx&gt;
delfunction - Delete function with label xx
delsavestateif - Delete conditional savestate point &lt;xx&gt;
deltrap - Delete trap &lt;xx&gt;
delwatch - Delete watch &lt;xx&gt;
disasm - Disassemble address xx [yy lines] (default=PC)
delBreakIf - Delete conditional breakIf &lt;xx&gt;
delFunction - Delete function with label xx
delSaveStateIf - Delete conditional saveState point &lt;xx&gt;
delTrap - Delete trap &lt;xx&gt;
delTimer - Delete timer &lt;xx&gt;
delWatch - Delete watch &lt;xx&gt;
disAsm - Disassemble address xx [yy lines] (default=PC)
dump - Dump data at address &lt;xx&gt; [to yy] [1: memory; 2: CPU state; 4: input regs] [?]
exec - Execute script file &lt;xx&gt; [prefix]
exitrom - Exit emulator, return to ROM launcher
exitRom - Exit emulator, return to ROM launcher
frame - Advance emulation by &lt;xx&gt; frames (default=1)
function - Define function name xx for expression yy
gfx - Mark 'GFX' range in disassembly
help - help &lt;command&gt;
joy0up - Set joystick 0 up direction to value &lt;x&gt; (0 or 1), or toggle (no arg)
joy0down - Set joystick 0 down direction to value &lt;x&gt; (0 or 1), or toggle (no arg)
joy0left - Set joystick 0 left direction to value &lt;x&gt; (0 or 1), or toggle (no arg)
joy0right - Set joystick 0 right direction to value <x> (0 or 1), or toggle (no arg)
joy0fire - Set joystick 0 fire button to value &lt;x&gt; (0 or 1), or toggle (no arg)
joy1up - Set joystick 1 up direction to value &lt;x&gt; (0 or 1), or toggle (no arg)
joy1down - Set joystick 1 down direction to value &lt;x&gt; (0 or 1), or toggle (no arg)
joy1left - Set joystick 1 left direction to value &lt;x&gt; (0 or 1), or toggle (no arg)
joy1right - Set joystick 1 right direction to value &lt;x&gt; (0 or 1), or toggle (no arg)
joy1fire - Set joystick 1 fire button to value &lt;x&gt; (0 or 1), or toggle (no arg)
joy0Up - Set joystick 0 up direction to value &lt;x&gt; (0 or 1), or toggle (no arg)
joy0Down - Set joystick 0 down direction to value &lt;x&gt; (0 or 1), or toggle (no arg)
joy0Left - Set joystick 0 left direction to value &lt;x&gt; (0 or 1), or toggle (no arg)
joy0Right - Set joystick 0 right direction to value <x> (0 or 1), or toggle (no arg)
joy0Fire - Set joystick 0 fire button to value &lt;x&gt; (0 or 1), or toggle (no arg)
joy1Up - Set joystick 1 up direction to value &lt;x&gt; (0 or 1), or toggle (no arg)
joy1Down - Set joystick 1 down direction to value &lt;x&gt; (0 or 1), or toggle (no arg)
joy1Left - Set joystick 1 left direction to value &lt;x&gt; (0 or 1), or toggle (no arg)
joy1Right - Set joystick 1 right direction to value &lt;x&gt; (0 or 1), or toggle (no arg)
joy1Fire - Set joystick 1 fire button to value &lt;x&gt; (0 or 1), or toggle (no arg)
jump - Scroll disassembly to address xx
listbreaks - List breakpoints
listconfig - List DiStella config directives [bank xx]
listfunctions - List user-defined functions
listsavestateifs - List savestate points
listtraps - List traps
loadconfig - Load DiStella config file
loadallstates - Load all emulator states
loadstate - Load emulator state xx (0-9)
listBreaks - List breakpoints
listConfig - List DiStella config directives [bank xx]
listFunctions - List user-defined functions
listSaveStateIfs - List saveState points
listTraps - List traps
loadConfig - Load DiStella config file
loadAllStates - Load all emulator states
loadState - Load emulator state xx (0-9)
logBreaks - Logs breaks and traps and continues emulation
logTrace - Logs emulation (note: emulation may slow down and the log becomes huge soon)
n - Negative Flag: set (0 or 1), or toggle (no arg)
palette - Show current TIA palette
pc - Set Program Counter to address xx
pcol - Mark 'PCOL' range in disassembly
pgfx - Mark 'PGFX' range in disassembly
pCol - Mark 'PCOL' range in disassembly
pGfx - Mark 'PGFX' range in disassembly
print - Evaluate/print expression xx in hex/dec/binary
printTimer - Print details of timer xx
ram - Show ZP RAM, or set address xx to yy1 [yy2 ...]
reset - Reset system to power-on state
resetTimers - Reset all timers' statistics
rewind - Rewind state by one or [xx] steps/traces/scanlines/frames...
riot - Show RIOT timer/input status
rom - Set ROM address xx to yy1 [yy2 ...]
row - Mark 'ROW' range in disassembly
run - Exit debugger, return to emulator
runto - Run until string xx in disassembly
runtopc - Run until PC is set to value xx
runTo - Run until string xx in disassembly
runToPc - Run until PC is set to value xx
s - Set Stack Pointer to value xx
save - Save breaks, watches, traps and functions to file <xx or ?>
saveaccess - Save access counters to CSV file [?]
saveconfig - Save DiStella config file (with default name)
savedis - Save DiStella disassembly to file [?]
saverom - Save (possibly patched) ROM to file [?]
saveses - Save console session to file [?]
savesnap - Save current TIA image to PNG file
saveallstates - Save all emulator states
savestate - Save emulator state xx (valid args 0-9)
savestateif - Create savestate on &lt;condition&gt;
scanline - Advance emulation by &lt;xx&gt; scanlines (default=1)
save - Save breaks, watches, traps and functions to file [xx or ?]
saveAccess - Save access counters to CSV file [?]
saveConfig - Save DiStella config file (with default name)
saveDis - Save DiStella disassembly to file [?]
saveRom - Save (possibly patched) ROM to file [?]
saveSes - Save console session to file [?]
saveSnap - Save current TIA image to PNG file
saveAllStates - Save all emulator states
saveState - Save emulator state xx (valid args 0-9)
saveStateIf - Create saveState on &lt;condition&gt;
scanLine - Advance emulation by &lt;xx&gt; scanlines (default=1)
step - Single step CPU [with count xx]
stepwhile - Single step CPU while &lt;condition&gt; is true
stepWhile - Single step CPU while &lt;condition&gt; is true
swchb - Set SWCHB to value xx
tia - Show TIA state
timer - Set a timer point
trace - Single step CPU over subroutines [with count xx]
trap - Trap read/write access to address(es) xx [yy]
trapif - On &lt;condition&gt; trap R/W access to address(es) xx [yy]
trapread - Trap read access to address(es) xx [yy]
trapreadif - On &lt;condition&gt; trap read access to address(es) xx [yy]
trapwrite - Trap write access to address(es) xx [yy]
trapwriteif - On &lt;condition&gt; trap write access to address(es) xx [yy]
trapIf - On &lt;condition&gt; trap R/W access to address(es) xx [yy]
trapRead - Trap read access to address(es) xx [yy]
trapReadIf - On &lt;condition&gt; trap read access to address(es) xx [yy]
trapWrite - Trap write access to address(es) xx [yy]
trapWriteIf - On &lt;condition&gt; trap write access to address(es) xx [yy]
type - Show disassembly type for address xx [yy]
uhex - Toggle upper/lowercase HEX display
uHex - Toggle upper/lowercase HEX display
undef - Undefine label xx (if defined)
unwind - Unwind state state by one or [xx] steps/traces/scanlines/frames...
v - Overflow Flag: set (0 or 1), or toggle (no arg)
@ -1069,7 +1108,7 @@ VDELBL selects the register that is used to control the ball. This is
visualized in the debugger in the same way as the two copies of GRP0 and
GRP1</p>
<p>For many registers, writes don't take effect immediatelly as the
<p>For many registers, writes don't take effect immediately as the
TIA takes some color clocks to change state. In Stella's TIA core, this
is implemented by queueing the writes, and the contents of this queue
are visualized in the debugger in the "Queued Writes" area of the TIA tab.</p>
@ -1084,11 +1123,11 @@ in another part of the debugger).</p>
<p><img src="graphics/debugger_iotab.png"></p>
<p>As with the TIA tab, most of the values here will be self-explanatory to a 2600
developer, and almost all can be modified. However, the SWCHx registers need
developer, and many can be modified. However, the SWCHx registers need
further explanation:<p>
<p>SWCHx(W) can be modified; here, the (W) stands for write. Similarly,
SWACNT/SWBCNT can be directly modified. However, the results of reading back from
the SWCHx register are influenced by SWACNT/SWBCNT, and SWCHx(R) is a read-only display
<p>SWCHx(W/R) can be modified; here (W) stands for write, (R) for read.
Similarly, SWxCNT can be directly modified. However, the results of reading
back from the SWCHx register are influenced by SWxCNT, and SWCHx(R) is
reflecting this result.</p>
@ -1111,12 +1150,12 @@ volume resulting from the two channel volumes.</p>
<p>In the upper left of the debugger, you'll see the current frame of
video as generated by the TIA. If a complete frame hasn't been drawn,
the partial contents of the current frame will be displayed up to the
current scanline, with the contents of the old frame (in black &amp;
current scanLine, with the contents of the old frame (in black &amp;
white) filling the rest of the display. Note that if 'phosphor mode'
or TV effects are enabled, you won't see the effects here; this shows the
<b>raw</b> TIA image only.</p>
<p>To e.g. watch the TIA draw the frame one scanline at a time, you can
<p>To e.g. watch the TIA draw the frame one scanLine at a time, you can
use the 'Scan+1' button, the prompt "scan" command or the Control-L key.</p>
<p>You can also right-click anywhere in this window to show a context menu,
@ -1124,10 +1163,10 @@ as illustrated:</p>
<p><img src="graphics/debugger_tiaoutcmenu.png"></p>
<p>The options are as follows:</p>
<ul>
<li><b>Fill to scanline</b>: This option will draw all scanlines up to the
<li><b>Fill to scanLine</b>: This option will draw all scanlines up to the
vertical position where the mouse was clicked (see also <a href="#TIAZoom"><b>TIA Zoom</b></a>).</li>
<li><b>Toggle breakpoint</b>: Will toggle a conditional breakpoint at the
scanline where the mouse was clicked. You can also use a left-click or
scanLine where the mouse was clicked. You can also use a left-click or
the Prompt Tab commands to list and turn off the breakpoint
(see also <a href="#TIAZoom"><b>TIA Zoom</b></a>).</li>
<li><b>Set zoom position</b>: Influences what is shown in the TIA
@ -1148,27 +1187,27 @@ as illustrated:</p>
<p>The indicators are as follows (note that all these are read-only):</p>
<ul>
<li><b>Frame Cycls</b>: The number of CPU cycles that have been executed this frame since
VSYNC was cleared at scanline 0.</li>
VSYNC was cleared at scanLine 0.</li>
<li><b>WSync Cycls</b>: The number of CPU cycles that have been skipped by WSYNC this frame since
VSYNC was cleared at scanline 0.</li>
VSYNC was cleared at scanLine 0.</li>
<li><b>Timer Cycls</b>: The number of CPU cycles (approximately) that have been used by timer read loops since
VSYNC was cleared at scanline 0.</li>
VSYNC was cleared at scanLine 0.</li>
<li><b>Total</b>: The total number of CPU cycles since this ROM was loaded or reset.</li>
<li><b>Delta</b>: The number of CPU cycles that have been executed since the last debugger
interrupt.</li>
<li><b>Frame Cnt.</b>: The number of frames since this ROM was loaded or reset.</li>
<li><b>Scanline</b>: The scanline that's currently being drawn, and the count from the
<li><b>Scanline</b>: The scanLine that's currently being drawn, and the count from the
previous frame. Scanline 0 is the one on which VSYNC is cleared (after being set for
3 scanlines, as per the Stella Programmer's Guide).</li>
<li><b>Scan Cycle</b>: The number of CPU cycles that have been executed since the beginning
of the current scanline.</li>
of the current scanLine.</li>
<li><b>Pixel Pos</b>: The current number of visible color clocks that have been displayed on
the current scanline, starting from the beginning of the Horizontal Blank period.
the current scanLine, starting from the beginning of the Horizontal Blank period.
During HBLANK, this value will be negative (representing the number of clocks
until the first visible one). Since there are 68 color clocks per HBLANK and
160 visible clocks per scanline, the Pixel Position will range from -68 to 159.</li>
160 visible clocks per scanLine, the Pixel Position will range from -68 to 159.</li>
<li><b>Color Clock</b>: The current number of total color clocks since the beginning of this
scanline's HBLANK. This counter starts at zero, but otherwise displays the same
scanLine's HBLANK. This counter starts at zero, but otherwise displays the same
information as the Pixel Position (so Color Clock will always be 68 more than Pixel
Position, and will range from 0 to 228).</li>
</ul>
@ -1186,10 +1225,10 @@ as illustrated:</p>
<p><img src="graphics/debugger_tiazoomcmenu.png"></p>
<p>These options allow you to:</p>
<ul>
<li><b>Fill to scanline</b>: This option will draw all scanlines up to the
<li><b>Fill to scanLine</b>: This option will draw all scanlines up to the
vertical position where the mouse was clicked.</li>
<li><b>Toggle breakpoint</b>: Will toggle a conditional breakpoint at the
scanline where the mouse was clicked. You can also
scanLine where the mouse was clicked. You can also
the Prompt Tab commands to list and turn off the breakpoint.</li>
<li><b>2x|4x|8x zoom</b>: Zoom in on the image for even greater detail.</li>
</ul>
@ -1288,13 +1327,40 @@ are lost (they will NOT end up in the Carry flag).</p>
<h2><a name="M6532"><u>(K)</u> M6532/RIOT RAM</a></h2>
<p>This is a spreadsheet-like GUI for inspecting and changing the contents
of the 2600's zero-page RAM.</p>
<p>You can navigate with either the mouse or the keyboard arrow keys.
<p>You can navigate with either the mouse or the keyboard (see below).
To change a RAM location, either double-click on it or press 'Enter' while
it's highlighted. Enter the new value (hex, other formats using the bottom textboxes), then
press 'Enter' to make the change. The currently selected RAM cell
can also be changed by using the
<a href="#DataOpButtons"><b>Data Operations Buttons</b></a> or the associated
shortcut keys.</p>
<p>You can navigate all RAM grids (and other data grids too) using the following keyboard shortcuts.</p>
<table border="1" cellpadding=4>
<tr>
<th>Shortut</th><th>Description</th>
</tr>
<tr>
<td>Left arrow</td><td>Move to left cell.</td>
</tr><tr>
<td>Right arrow</td><td>Move to right cell.</td>
</tr><tr>
<td>Home</td><td>Move to leftmost cell.</td>
</tr><tr>
<td>End</td><td>Move to rightmost cell.</td>
</tr><tr>
<td>Up arrow</td><td>Move to cell above.</td>
</tr><tr>
<td>Down arrow</td><td>Move to cell below.</td>
</tr><tr>
<td>Page Up</td><td>Move to top visible row.</td>
</tr><tr>
<td>Page Down</td><td>Move to bottom visible row.</td>
</tr><tr>
<td>Shift + Page Up</td><td>Scroll one page up.</td>
</tr><tr>
<td>Shift + Page Down</td><td>Scroll one page down.</td>
</table>
<p><img src="graphics/debugger_ram.png"></p>
<p>The 'Undo' button in the upper right should be self-explanatory; it will
undo the most previous operation to one cell only. The 'Revert' button is
@ -1375,7 +1441,7 @@ labels. Normally there will be nothing there: this indicates that there's
no breakpoint set at that address. You can set and clear breakpoints by
clicking in this area. When a breakpoint is set, there will be a
red circle in this area. These are the same breakpoints as used
by the <a href="#Breakpoints">break</a> command, <b>not</b> the conditional "breakif" breakpoints
by the <a href="#Breakpoints">break</a> command, <b>not</b> the conditional "breakIf" breakpoints
(which makes sense: conditional breaks can break on any condition, the Program
Counter isn't necessarily involved).</li>
<li><b>Labels</b>: Any labels assigned to the given address, either generated
@ -1473,7 +1539,7 @@ or lowercase for "illegal" 6502 instructions (like "dcp"). If automatic resolvin
of code sections has been disabled for any reason, you'll likely see a lot
of illegal opcodes if you scroll to a data table in ROM. This can also
occur if the disassembler hasn't yet encountered addresses in the PC.
If you step/trace/scanline/frame advance into such an area, the disassembler
If you step/trace/scanLine/frame advance into such an area, the disassembler
will make note of it, and disassemble it correctly from that point on.</p>
<!-- TODO - is this true any longer?
@ -1520,13 +1586,16 @@ matches the address of the disassembly line where the mouse was clicked.</li>
<li><b>Disassemble @ current line</b>: Disassemble from the disassembly line where the mouse was clicked.
This allows to fill gaps in the disassembly and is most useful for bankswitched ROMs.</li>
<li><b>Set timer @ current line</b>: Set a timer point using the current
disassembly line's address and bank</li>
<li><b>Show tentative code</b>: Allow DiStella to do a static analysis/disassembly.</li>
<li><b>Show PC addresses</b>: Show Program Counter addresses as labels (where there
isn't already a defined label).</li>
<li><b>Show GFX as binary</b>: Switch between displaying/editing GFX and PGFX sections
in either binary or hexidecimal.</li>
in either binary or hexadecimal.</li>
<li><b>Use address relocation</b>: Corresponds to the DiStella '-r' option
(Relocate calls out of address range).</br>
@ -1541,7 +1610,7 @@ Note: The code will continue to run fine, but the ROM image will be altered.</li
<li>The ROM Widget only works on ROM or zero-page RAM separately. If your game runs
code from zero-page RAM, the disassembly will show addresses $80 to $FF (zero-page
RAM address space) only. Once your RAM routine returns, the ROM Widget will switch
back to ROM space ($1000 - $1FFF and mirrors). The same is true of the "disasm"
back to ROM space ($1000 - $1FFF and mirrors). The same is true of the "disAsm"
command; it will show either ROM or RAM space, not both at the same time.</li>
<li>The standard VCS memory map has the cartridge port at locations
@ -1610,13 +1679,13 @@ space with the appropriate directive, there are times when it will fail. There a
several options in this case:</p>
<ol>
<li><b>Manually set the directives</b>: Directives can be set in the debugger
prompt with the aud/code/col/bcol/gfx/pcol/pgfx/data/row commands. These accept an address range
prompt with the aud/code/col/bcol/gfx/pCol/pGfx/data/row commands. These accept an address range
for the given directive type. Setting a range with the same type a second time
will remove that directive from the range.</li>
<li><b>Use configuration files</b>: Configuration files can be used to automatically
load a list of directives when a ROM is loaded. These files can be generated with the
'saveconfig' command, and loaded with the 'loadconfig' command. There are also
'listconfig' and 'clearconfig' commands to show and erase (respectively) the current
'saveConfig' command, and loaded with the 'loadConfig' command. There are also
'listConfig' and 'clearConfig' commands to show and erase (respectively) the current
directive listing. Upon opening the debugger for the first time, Stella attempts
to load a configuration file from the folder containing the ROM. Assuming a ROM named "rr.a26" exists, the config file must be named <i>rr.cfg</i>.
</ul>
@ -1689,7 +1758,7 @@ but it helps to know at least a little about 6502 programming.</p>
(for that, we have to disable the collision checking code, which means
we have to find and understand it first!)</li>
<li>Set a Write Trap on the lives counter address: "trapwrite $ba"
<li>Set a Write Trap on the lives counter address: "trapWrite $ba"
in the Prompt. Exit the debugger and play until you get killed. When
you die, the trap will cause the emulator to enter the debugger with the
Program Counter pointing to the instruction *after* the one that wrote
@ -1737,7 +1806,7 @@ but it helps to know at least a little about 6502 programming.</p>
will *still* see 3 lives: Success! We've hacked Battlezone to give us
infinite lives.</li>
<li>Save your work. In the prompt: "saverom". You now
<li>Save your work. In the prompt: "saveRom". You now
have your very own infinite-lives version of Battlezone. The file will
be saved in your HOME directory (NOT your ROM directory), so you might
want to move it to your ROM directory if it isn't the current directory.

View File

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.5 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.9 KiB

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 380 B

BIN
docs/graphics/open_help.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.6 KiB

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 74 KiB

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 218 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 171 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 196 B

View File

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

File diff suppressed because it is too large Load Diff

View File

@ -58,7 +58,7 @@
<center><h1>Stella for RetroN 77</h1></center>
<center><h2>Atari 2600 VCS emulator</h2></center>
<center>Release 6.5.2</center>
<center>Release 7.0</center>
<center><h2>Quick Navigation Guide</h2></center>
<br/>
@ -77,7 +77,7 @@
<tr>
<th width=110px>Joystick</th>
<th width=100px>Button</th>
<th width=170px>Action</th>
<th width=200px>Action</th>
</tr>
<tr>
<td>Button 4</td>
@ -95,17 +95,17 @@
<td>Open settings</td>
</tr>
<tr>
<td>Button 7</td>
<td>Button 8</td>
<td>-</td>
<td>Rewind game</td>
</tr>
<tr>
<td>Button 8</td>
<td>Button 9</td>
<td>MODE</td>
<td>Select</td>
</tr>
<tr>
<td>Button 9</td>
<td>Button 10</td>
<td>RESET</td>
<td>Reset</td>
</tr>
@ -119,7 +119,7 @@
<tr>
<th width=110px>Joystick</th>
<th width=100px>Button</th>
<th width=170px>Action</th>
<th width=200px>Action</th>
</tr>
<tr>
<td>Up</td>
@ -147,10 +147,40 @@
<td>Start selected game</td>
</tr>
<tr>
<td>Button 2 or</br>hold Button 1</td>
<td>Hold Button 1</td>
<td>-</td>
<td>Open a context menu with the following choices:
<ul>
<li>Add to favorites</li>
<li>Power-On options...</li>
<li>Go to initial directory</li>
<li>Go to parent directory</li>
<li><a href="#Settings">Settings...</a></li>
</ul>
Button 2 or 6 close the menu without any action.
</td>
</tr>
<tr>
<td>Button 1 + Left</td>
<td>-</td>
<td>Display previous image</td>
</tr>
<tr>
<td>Button 1 + Right</td>
<td>-</td>
<td>Display next image</td>
</tr>
<tr>
<td>Button 1 + Up</td>
<td>-</td>
<td>Toggle image zoom</td>
</tr>
<tr>
<td>Button 2</td>
<td>SKILL P2</td>
<td>Open Power-On options</td>
</tr>
<tr>
<td>Button 4</td>
<td>COLOR, B/W</td>
@ -166,7 +196,7 @@
<tr>
<th width=110px>Joystick</th>
<th width=100px>Button</th>
<th width=170px>Action</th>
<th width=200px>Action</th>
</tr>
<tr>
<td>Up</td>
@ -234,7 +264,7 @@
<td width="41%">This dialog is similar to the PC version's
<a href="index.html#CommandMenu"><b>Command Menu</b></a>, but with some
commands especially selected for the RetroN&nbsp;77.</td>
<td><p><img src="commandsmenu_r77.png"></p></td>
<td><p><img src="graphics/commandsmenu_r77.png"></p></td>
</tr>
</table>
</p>
@ -279,7 +309,7 @@
</tr>
</table>
</td>
<td><p><img src="basic_settings.png"></p></td>
<td><p><img src="graphics/basic_settings.png"></p></td>
</tr>
</table>
</p>

View File

@ -8,7 +8,7 @@
// SS SS tt ee ll ll aa aa
// SSSS ttt eeeee llll llll aaaaa
//
// Copyright (c) 1995-2021 by Bradford W. Mott, Stephen Anthony
// Copyright (c) 1995-2025 by Bradford W. Mott, Stephen Anthony
// and the Stella Team
//
// See the file "License.txt" for information on usage and redistribution of
@ -21,19 +21,19 @@
#include "BankRomCheat.hxx"
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BankRomCheat::BankRomCheat(OSystem& os, const string& name, const string& code)
BankRomCheat::BankRomCheat(OSystem& os, string_view name, string_view code)
: Cheat(os, name, code)
{
if(myCode.length() == 7)
myCode = "0" + code;
myCode = "0" + string{code};
bank = unhex(myCode.substr(0, 2));
address = 0xf000 + unhex(myCode.substr(2, 3));
value = uInt8(unhex(myCode.substr(5, 2)));
count = uInt8(unhex(myCode.substr(7, 1)) + 1);
bank = BSPF::stoi<16>(myCode.substr(0, 2));
address = 0xf000 + BSPF::stoi<16>(myCode.substr(2, 3));
value = static_cast<uInt8>(BSPF::stoi<16>(myCode.substr(5, 2)));
count = static_cast<uInt8>(BSPF::stoi<16>(myCode.substr(7, 1)) + 1);
// Back up original data; we need this if the cheat is ever disabled
for(int i = 0; i < count; ++i)
for(int i = 0; std::cmp_less(i, count); ++i)
savedRom[i] = myOSystem.console().cartridge().peek(address + i);
}
@ -47,11 +47,11 @@ bool BankRomCheat::enable()
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bool BankRomCheat::disable()
{
int oldBank = myOSystem.console().cartridge().getBank(address);
const int oldBank = myOSystem.console().cartridge().getBank(address);
myOSystem.console().cartridge().bank(bank);
for(int i = 0; i < count; ++i)
myOSystem.console().cartridge().patch(address + i, savedRom[i]);
for(int i = 0; std::cmp_less(i, count); ++i)
myOSystem.console().cartridge().patch(address + i, savedRom[i]);
myOSystem.console().cartridge().bank(oldBank);
@ -63,10 +63,10 @@ void BankRomCheat::evaluate()
{
if(!myEnabled)
{
int oldBank = myOSystem.console().cartridge().getBank(address);
const int oldBank = myOSystem.console().cartridge().getBank(address);
myOSystem.console().cartridge().bank(bank);
for(int i = 0; i < count; ++i)
for(int i = 0; std::cmp_less(i, count); ++i)
myOSystem.console().cartridge().patch(address + i, value);
myOSystem.console().cartridge().bank(oldBank);

View File

@ -8,7 +8,7 @@
// SS SS tt ee ll ll aa aa
// SSSS ttt eeeee llll llll aaaaa
//
// Copyright (c) 1995-2021 by Bradford W. Mott, Stephen Anthony
// Copyright (c) 1995-2025 by Bradford W. Mott, Stephen Anthony
// and the Stella Team
//
// See the file "License.txt" for information on usage and redistribution of
@ -23,7 +23,7 @@
class BankRomCheat : public Cheat
{
public:
BankRomCheat(OSystem& os, const string& name, const string& code);
BankRomCheat(OSystem& os, string_view name, string_view code);
~BankRomCheat() override = default;
bool enable() override;
@ -31,7 +31,7 @@ class BankRomCheat : public Cheat
void evaluate() override;
private:
std::array<uInt8, 16> savedRom;
std::array<uInt8, 16> savedRom{};
uInt16 address{0};
uInt8 value{0};
uInt8 count{0};

View File

@ -8,7 +8,7 @@
// SS SS tt ee ll ll aa aa
// SSSS ttt eeeee llll llll aaaaa
//
// Copyright (c) 1995-2021 by Bradford W. Mott, Stephen Anthony
// Copyright (c) 1995-2025 by Bradford W. Mott, Stephen Anthony
// and the Stella Team
//
// See the file "License.txt" for information on usage and redistribution of
@ -25,9 +25,9 @@ class OSystem;
class Cheat
{
public:
Cheat(OSystem& osystem, const string& name, const string& code)
Cheat(OSystem& osystem, string_view name, string_view code)
: myOSystem{osystem},
myName{name == "" ? code : name},
myName{name.empty() ? code : name},
myCode{code} { }
virtual ~Cheat() = default;
@ -40,23 +40,6 @@ class Cheat
virtual void evaluate() = 0;
protected:
static uInt16 unhex(const string& hex)
{
int ret = 0;
for(char c: hex)
{
ret *= 16;
if(c >= '0' && c <= '9')
ret += c - '0';
else if(c >= 'A' && c <= 'F')
ret += c - 'A' + 10;
else
ret += c - 'a' + 10;
}
return ret;
}
protected:
OSystem& myOSystem;

View File

@ -8,7 +8,7 @@
// SS SS tt ee ll ll aa aa
// SSSS ttt eeeee llll llll aaaaa
//
// Copyright (c) 1995-2021 by Bradford W. Mott, Stephen Anthony
// Copyright (c) 1995-2025 by Bradford W. Mott, Stephen Anthony
// and the Stella Team
//
// See the file "License.txt" for information on usage and redistribution of
@ -25,7 +25,6 @@
#include "Font.hxx"
#include "InputTextDialog.hxx"
#include "OSystem.hxx"
#include "Props.hxx"
#include "Widget.hxx"
#include "CheatCodeDialog.hxx"
@ -43,16 +42,15 @@ CheatCodeDialog::CheatCodeDialog(OSystem& osystem, DialogContainer& parent,
VGAP = Dialog::vGap(),
VBORDER = Dialog::vBorder(),
HBORDER = Dialog::hBorder();
int xpos, ypos;
WidgetArray wid;
ButtonWidget* b;
ButtonWidget* b = nullptr;
// Set real dimensions
_w = 45 * fontWidth + HBORDER * 2;
_h = _th + 11 * (lineHeight + 4) + VBORDER * 2;
// List of cheats, with checkboxes to enable/disable
xpos = HBORDER; ypos = _th + VBORDER;
int xpos = HBORDER, ypos = _th + VBORDER;
myCheatList =
new CheckListWidget(this, font, xpos, ypos, _w - buttonWidth - HBORDER * 2 - fontWidth,
_h - _th - buttonHeight - VBORDER * 3);
@ -84,18 +82,18 @@ CheatCodeDialog::CheatCodeDialog(OSystem& osystem, DialogContainer& parent,
// Inputbox which will pop up when adding/editing a cheat
StringList labels;
labels.push_back("Name ");
labels.push_back("Code (hex) ");
labels.emplace_back("Name ");
labels.emplace_back("Code (hex) ");
myCheatInput = make_unique<InputTextDialog>(this, font, labels, "Cheat code");
myCheatInput->setTarget(this);
// Add filtering for each textfield
EditableWidget::TextFilter f0 = [](char c) {
const EditableWidget::TextFilter f0 = [](char c) {
return isprint(c) && c != '\"' && c != ':';
};
myCheatInput->setTextFilter(f0, 0);
EditableWidget::TextFilter f1 = [](char c) {
const EditableWidget::TextFilter f1 = [](char c) {
return (c >= 'a' && c <= 'f') || (c >= '0' && c <= '9');
};
myCheatInput->setTextFilter(f1, 1);
@ -107,10 +105,12 @@ CheatCodeDialog::CheatCodeDialog(OSystem& osystem, DialogContainer& parent,
wid.clear();
addOKCancelBGroup(wid, font);
addBGroupToFocusList(wid);
setHelpAnchor("Cheats");
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CheatCodeDialog::~CheatCodeDialog()
CheatCodeDialog::~CheatCodeDialog() // NOLINT (we need an empty d'tor)
{
}
@ -127,14 +127,14 @@ void CheatCodeDialog::loadConfig()
for(const auto& c: list)
{
l.push_back(c->name());
b.push_back(bool(c->enabled()));
b.push_back(c->enabled());
}
myCheatList->setList(l, b);
// Redraw the list, auto-selecting the first item if possible
myCheatList->setSelected(l.size() > 0 ? 0 : -1);
myCheatList->setSelected(!l.empty() ? 0 : -1);
bool enabled = (list.size() > 0);
const bool enabled = !list.empty();
myEditButton->setEnabled(enabled);
myRemoveButton->setEnabled(enabled);
}
@ -167,7 +167,7 @@ void CheatCodeDialog::addCheat()
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void CheatCodeDialog::editCheat()
{
int idx = myCheatList->getSelected();
const int idx = myCheatList->getSelected();
if(idx < 0)
return;
@ -232,7 +232,7 @@ void CheatCodeDialog::handleCommand(CommandSender* sender, int cmd,
{
const string& name = myCheatInput->getResult(0);
const string& code = myCheatInput->getResult(1);
if(instance().cheat().isValidCode(code))
if(CheatManager::isValidCode(code))
{
myCheatInput->close();
instance().cheat().add(name, code);
@ -247,9 +247,9 @@ void CheatCodeDialog::handleCommand(CommandSender* sender, int cmd,
{
const string& name = myCheatInput->getResult(0);
const string& code = myCheatInput->getResult(1);
bool enable = myCheatList->getSelectedState();
int idx = myCheatList->getSelected();
if(instance().cheat().isValidCode(code))
const bool enable = myCheatList->getSelectedState();
const int idx = myCheatList->getSelected();
if(CheatManager::isValidCode(code))
{
myCheatInput->close();
instance().cheat().add(name, code, enable, idx);
@ -272,7 +272,7 @@ void CheatCodeDialog::handleCommand(CommandSender* sender, int cmd,
{
const string& name = myCheatInput->getResult(0);
const string& code = myCheatInput->getResult(1);
if(instance().cheat().isValidCode(code))
if(CheatManager::isValidCode(code))
{
myCheatInput->close();
instance().cheat().addOneShot(name, code);

View File

@ -8,7 +8,7 @@
// SS SS tt ee ll ll aa aa
// SSSS ttt eeeee llll llll aaaaa
//
// Copyright (c) 1995-2021 by Bradford W. Mott, Stephen Anthony
// Copyright (c) 1995-2025 by Bradford W. Mott, Stephen Anthony
// and the Stella Team
//
// See the file "License.txt" for information on usage and redistribution of

View File

@ -8,7 +8,7 @@
// SS SS tt ee ll ll aa aa
// SSSS ttt eeeee llll llll aaaaa
//
// Copyright (c) 1995-2021 by Bradford W. Mott, Stephen Anthony
// Copyright (c) 1995-2025 by Bradford W. Mott, Stephen Anthony
// and the Stella Team
//
// See the file "License.txt" for information on usage and redistribution of
@ -16,7 +16,6 @@
//============================================================================
#include "OSystem.hxx"
#include "Console.hxx"
#include "Cheat.hxx"
#include "Settings.hxx"
#include "CheetahCheat.hxx"
@ -33,10 +32,10 @@ CheatManager::CheatManager(OSystem& osystem)
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bool CheatManager::add(const string& name, const string& code,
bool CheatManager::add(string_view name, string_view code,
bool enable, int idx)
{
shared_ptr<Cheat> cheat = createCheat(name, code);
const shared_ptr<Cheat> cheat = createCheat(name, code);
if(!cheat)
return false;
@ -68,7 +67,7 @@ bool CheatManager::add(const string& name, const string& code,
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void CheatManager::remove(int idx)
{
if(uInt32(idx) < myCheatList.size())
if(static_cast<size_t>(idx) < myCheatList.size())
{
// This will also remove it from the per-frame list (if applicable)
myCheatList[idx]->disable();
@ -79,7 +78,7 @@ void CheatManager::remove(int idx)
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void CheatManager::addPerFrame(const string& name, const string& code, bool enable)
void CheatManager::addPerFrame(string_view name, string_view code, bool enable)
{
// The actual cheat will always be in the main list; we look there first
shared_ptr<Cheat> cheat;
@ -93,8 +92,8 @@ void CheatManager::addPerFrame(const string& name, const string& code, bool enab
}
// Make sure there are no duplicates
bool found = false;
uInt32 i;
bool found{false};
uInt32 i{0};
for(i = 0; i < myPerFrameList.size(); ++i)
{
if(myPerFrameList[i]->code() == cheat->code())
@ -117,16 +116,16 @@ void CheatManager::addPerFrame(const string& name, const string& code, bool enab
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void CheatManager::addOneShot(const string& name, const string& code)
void CheatManager::addOneShot(string_view name, string_view code)
{
// Evaluate this cheat once, and then immediately discard it
shared_ptr<Cheat> cheat = createCheat(name, code);
const shared_ptr<Cheat> cheat = createCheat(name, code);
if(cheat)
cheat->evaluate();
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
shared_ptr<Cheat> CheatManager::createCheat(const string& name, const string& code) const
shared_ptr<Cheat> CheatManager::createCheat(string_view name, string_view code) const
{
if(!isValidCode(code))
return nullptr;
@ -136,14 +135,14 @@ shared_ptr<Cheat> CheatManager::createCheat(const string& name, const string& co
{
case 4: return make_shared<RamCheat>(myOSystem, name, code);
case 6: return make_shared<CheetahCheat>(myOSystem, name, code);
case 7: return make_shared<BankRomCheat>(myOSystem, name, code);
case 7: [[fallthrough]];
case 8: return make_shared<BankRomCheat>(myOSystem, name, code);
default: return nullptr;
}
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void CheatManager::parse(const string& cheats)
void CheatManager::parse(string_view cheats)
{
StringList s;
string::size_type lastPos = cheats.find_first_not_of(',', 0);
@ -186,6 +185,9 @@ void CheatManager::parse(const string& cheats)
code = s[1];
add(name, code, s[2] == "1");
break;
default:
break;
}
s.clear();
@ -195,7 +197,7 @@ void CheatManager::parse(const string& cheats)
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void CheatManager::enable(const string& code, bool enable)
void CheatManager::enable(string_view code, bool enable)
{
for(const auto& cheat: myCheatList)
{
@ -218,18 +220,17 @@ void CheatManager::loadCheatDatabase()
catch(...) { return; }
string line, md5, cheat;
string::size_type one, two, three, four;
// Loop reading cheats
while(getline(in, line))
{
if(line.length() == 0)
if(line.empty())
continue;
one = line.find('\"', 0);
two = line.find('\"', one + 1);
three = line.find('\"', two + 1);
four = line.find('\"', three + 1);
const string::size_type one = line.find('\"', 0);
const string::size_type two = line.find('\"', one + 1);
const string::size_type three = line.find('\"', two + 1);
const string::size_type four = line.find('\"', three + 1);
// Invalid line if it doesn't contain 4 quotes
if((one == string::npos) || (two == string::npos) ||
@ -254,14 +255,14 @@ void CheatManager::saveCheatDatabase()
stringstream out;
for(const auto& [md5, cheat]: myCheatMap)
out << "\"" << md5 << "\" " << "\"" << cheat << "\"" << endl;
out << "\"" << md5 << "\" " << "\"" << cheat << "\"\n";
try { myOSystem.cheatFile().write(out); }
catch(...) { return; }
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void CheatManager::loadCheats(const string& md5sum)
void CheatManager::loadCheats(string_view md5sum)
{
myPerFrameList.clear();
myCheatList.clear();
@ -270,11 +271,11 @@ void CheatManager::loadCheats(const string& md5sum)
// Set up any cheatcodes that was on the command line
// (and remove the key from the settings, so they won't get set again)
const string& cheats = myOSystem.settings().getString("cheat");
if(cheats != "")
if(!cheats.empty())
myOSystem.settings().setValue("cheat", "");
const auto& iter = myCheatMap.find(md5sum);
if(iter == myCheatMap.end() && cheats == "")
if(iter == myCheatMap.end() && cheats.empty())
return;
// Remember the cheats for this ROM
@ -285,7 +286,7 @@ void CheatManager::loadCheats(const string& md5sum)
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void CheatManager::saveCheats(const string& md5sum)
void CheatManager::saveCheats(string_view md5sum)
{
ostringstream cheats;
for(uInt32 i = 0; i < myCheatList.size(); ++i)
@ -297,20 +298,20 @@ void CheatManager::saveCheats(const string& md5sum)
cheats << ",";
}
bool changed = cheats.str() != myCurrentCheat;
const bool changed = cheats.view() != myCurrentCheat;
// Only update the list if absolutely necessary
if(changed)
{
auto iter = myCheatMap.find(md5sum);
const auto iter = myCheatMap.find(md5sum);
// Erase old entry and add a new one only if it's changed
if(iter != myCheatMap.end())
myCheatMap.erase(iter);
// Add new entry only if there are any cheats defined
if(cheats.str() != "")
myCheatMap.emplace(md5sum, cheats.str());
if(!cheats.view().empty())
myCheatMap.emplace(md5sum, cheats.view());
}
// Update the dirty flag
@ -320,12 +321,12 @@ void CheatManager::saveCheats(const string& md5sum)
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bool CheatManager::isValidCode(const string& code) const
bool CheatManager::isValidCode(string_view code)
{
for(char c: code)
for(const auto c: code)
if(!isxdigit(c))
return false;
uInt32 length = uInt32(code.length());
const size_t length = code.length();
return (length == 4 || length == 6 || length == 7 || length == 8);
}

View File

@ -8,7 +8,7 @@
// SS SS tt ee ll ll aa aa
// SSSS ttt eeeee llll llll aaaaa
//
// Copyright (c) 1995-2021 by Bradford W. Mott, Stephen Anthony
// Copyright (c) 1995-2025 by Bradford W. Mott, Stephen Anthony
// and the Stella Team
//
// See the file "License.txt" for information on usage and redistribution of
@ -38,6 +38,7 @@ class CheatManager
{
public:
explicit CheatManager(OSystem& osystem);
~CheatManager() = default;
/**
Adds the specified cheat to an internal list.
@ -49,7 +50,7 @@ class CheatManager
@return Whether the cheat was created and enabled.
*/
bool add(const string& name, const string& code,
bool add(string_view name, string_view code,
bool enable = true, int idx = -1);
/**
@ -68,7 +69,7 @@ class CheatManager
@param code The actual cheatcode
@param enable Add or remove the cheat to the per-frame list
*/
void addPerFrame(const string& name, const string& code, bool enable);
void addPerFrame(string_view name, string_view code, bool enable);
/**
Creates and enables a one-shot cheat. One-shot cheats are the
@ -78,7 +79,7 @@ class CheatManager
@param name Name of the cheat (not absolutely required)
@param code The actual cheatcode (in hex)
*/
void addOneShot(const string& name, const string& code);
void addOneShot(string_view name, string_view code);
/**
Enable/disabled the cheat specified by the given code.
@ -86,7 +87,7 @@ class CheatManager
@param code The actual cheatcode to search for
@param enable Enable/disable the cheat
*/
void enable(const string& code, bool enable);
void enable(string_view code, bool enable);
/**
Returns the game cheatlist.
@ -111,17 +112,17 @@ class CheatManager
/**
Load cheats for ROM with given MD5sum to cheatlist(s).
*/
void loadCheats(const string& md5sum);
void loadCheats(string_view md5sum);
/**
Saves cheats for ROM with given MD5sum to cheat map.
*/
void saveCheats(const string& md5sum);
void saveCheats(string_view md5sum);
/**
Checks if a code is valid.
*/
bool isValidCode(const string& code) const;
static bool isValidCode(string_view code);
private:
/**
@ -132,14 +133,14 @@ class CheatManager
@return The cheat (if was created), else nullptr.
*/
shared_ptr<Cheat> createCheat(const string& name, const string& code) const;
shared_ptr<Cheat> createCheat(string_view name, string_view code) const;
/**
Parses a list of cheats and adds/enables each one.
@param cheats Comma-separated list of cheats (without any names)
*/
void parse(const string& cheats);
void parse(string_view cheats);
private:
OSystem& myOSystem;
@ -147,7 +148,7 @@ class CheatManager
CheatList myCheatList;
CheatList myPerFrameList;
std::map<string,string> myCheatMap;
std::map<string,string, std::less<>> myCheatMap;
string myCheatFile;
// This is set each time a new cheat/ROM is loaded, for later

View File

@ -8,7 +8,7 @@
// SS SS tt ee ll ll aa aa
// SSSS ttt eeeee llll llll aaaaa
//
// Copyright (c) 1995-2021 by Bradford W. Mott, Stephen Anthony
// Copyright (c) 1995-2025 by Bradford W. Mott, Stephen Anthony
// and the Stella Team
//
// See the file "License.txt" for information on usage and redistribution of
@ -21,14 +21,14 @@
#include "CheetahCheat.hxx"
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CheetahCheat::CheetahCheat(OSystem& os, const string& name, const string& code)
CheetahCheat::CheetahCheat(OSystem& os, string_view name, string_view code)
: Cheat(os, name, code),
address{uInt16(0xf000 + unhex(code.substr(0, 3)))},
value{uInt8(unhex(code.substr(3, 2)))},
count{uInt8(unhex(code.substr(5, 1)) + 1)}
address{static_cast<uInt16>(0xf000 + BSPF::stoi<16>(code.substr(0, 3)))},
value{static_cast<uInt8>(BSPF::stoi<16>(code.substr(3, 2)))},
count{static_cast<uInt8>(BSPF::stoi<16>(code.substr(5, 1)) + 1)}
{
// Back up original data; we need this if the cheat is ever disabled
for(int i = 0; i < count; ++i)
for(uInt8 i = 0; i < count; ++i)
savedRom[i] = myOSystem.console().cartridge().peek(address + i);
}
@ -42,7 +42,7 @@ bool CheetahCheat::enable()
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bool CheetahCheat::disable()
{
for(int i = 0; i < count; ++i)
for(uInt8 i = 0; i < count; ++i)
myOSystem.console().cartridge().patch(address + i, savedRom[i]);
return myEnabled = false;
@ -53,7 +53,7 @@ void CheetahCheat::evaluate()
{
if(!myEnabled)
{
for(int i = 0; i < count; ++i)
for(uInt8 i = 0; i < count; ++i)
myOSystem.console().cartridge().patch(address + i, value);
myEnabled = true;

View File

@ -8,7 +8,7 @@
// SS SS tt ee ll ll aa aa
// SSSS ttt eeeee llll llll aaaaa
//
// Copyright (c) 1995-2021 by Bradford W. Mott, Stephen Anthony
// Copyright (c) 1995-2025 by Bradford W. Mott, Stephen Anthony
// and the Stella Team
//
// See the file "License.txt" for information on usage and redistribution of
@ -23,7 +23,7 @@
class CheetahCheat : public Cheat
{
public:
CheetahCheat(OSystem& os, const string& name, const string& code);
CheetahCheat(OSystem& os, string_view name, string_view code);
~CheetahCheat() override = default;
bool enable() override;
@ -31,7 +31,7 @@ class CheetahCheat : public Cheat
void evaluate() override;
private:
std::array<uInt8, 16> savedRom;
std::array<uInt8, 16> savedRom{};
uInt16 address{0};
uInt8 value{0};
uInt8 count{0};

View File

@ -8,7 +8,7 @@
// SS SS tt ee ll ll aa aa
// SSSS ttt eeeee llll llll aaaaa
//
// Copyright (c) 1995-2021 by Bradford W. Mott, Stephen Anthony
// Copyright (c) 1995-2025 by Bradford W. Mott, Stephen Anthony
// and the Stella Team
//
// See the file "License.txt" for information on usage and redistribution of
@ -23,10 +23,10 @@
#include "RamCheat.hxx"
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
RamCheat::RamCheat(OSystem& os, const string& name, const string& code)
RamCheat::RamCheat(OSystem& os, string_view name, string_view code)
: Cheat(os, name, code),
address{uInt16(unhex(myCode.substr(0, 2)))},
value{uInt8(unhex(myCode.substr(2, 2)))}
address{static_cast<uInt16>(BSPF::stoi<16>(myCode.substr(0, 2)))},
value{static_cast<uInt8>(BSPF::stoi<16>(myCode.substr(2, 2)))}
{
}
@ -55,5 +55,5 @@ bool RamCheat::disable()
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void RamCheat::evaluate()
{
myOSystem.console().system().poke(address, value);
myOSystem.console().system().pokeOob(address, value);
}

View File

@ -8,7 +8,7 @@
// SS SS tt ee ll ll aa aa
// SSSS ttt eeeee llll llll aaaaa
//
// Copyright (c) 1995-2021 by Bradford W. Mott, Stephen Anthony
// Copyright (c) 1995-2025 by Bradford W. Mott, Stephen Anthony
// and the Stella Team
//
// See the file "License.txt" for information on usage and redistribution of
@ -23,7 +23,7 @@
class RamCheat : public Cheat
{
public:
RamCheat(OSystem& os, const string& name, const string& code);
RamCheat(OSystem& os, string_view name, string_view code);
~RamCheat() override = default;
bool enable() override;

View File

@ -7,8 +7,10 @@ MODULE_OBJS := \
src/cheat/BankRomCheat.o \
src/cheat/RamCheat.o
MODULE_TEST_OBJS =
MODULE_DIRS += \
src/cheat
# Include common rules
# Include common rules
include $(srcdir)/common.rules

View File

@ -8,7 +8,7 @@
// SS SS tt ee ll ll aa aa
// SSSS ttt eeeee llll llll aaaaa
//
// Copyright (c) 1995-2021 by Bradford W. Mott, Stephen Anthony
// Copyright (c) 1995-2025 by Bradford W. Mott, Stephen Anthony
// and the Stella Team
//
// See the file "License.txt" for information on usage and redistribution of
@ -29,28 +29,32 @@ AudioQueue::AudioQueue(uInt32 fragmentSize, uInt32 capacity, bool isStereo)
{
const uInt8 sampleSize = myIsStereo ? 2 : 1;
myFragmentBuffer = make_unique<Int16[]>(myFragmentSize * sampleSize * (capacity + 2));
myFragmentBuffer = make_unique<Int16[]>(
static_cast<size_t>(myFragmentSize) * sampleSize * (capacity + 2));
for (uInt32 i = 0; i < capacity; ++i)
myFragmentQueue[i] = myAllFragments[i] = myFragmentBuffer.get() + i * sampleSize * myFragmentSize;
myFragmentQueue[i] = myAllFragments[i] = myFragmentBuffer.get() +
static_cast<size_t>(myFragmentSize) * sampleSize * i;
myAllFragments[capacity] = myFirstFragmentForEnqueue =
myFragmentBuffer.get() + capacity * sampleSize * myFragmentSize;
myFragmentBuffer.get() + static_cast<size_t>(myFragmentSize) * sampleSize *
capacity;
myAllFragments[capacity + 1] = myFirstFragmentForDequeue =
myFragmentBuffer.get() + (capacity + 1) * sampleSize * myFragmentSize;
myFragmentBuffer.get() + static_cast<size_t>(myFragmentSize) * sampleSize *
(capacity + 1);
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
uInt32 AudioQueue::capacity() const
{
return uInt32(myFragmentQueue.size());
return static_cast<uInt32>(myFragmentQueue.size());
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
uInt32 AudioQueue::size() const
{
lock_guard<mutex> guard(myMutex);
const lock_guard<mutex> guard(myMutex);
return mySize;
}
@ -70,9 +74,9 @@ uInt32 AudioQueue::fragmentSize() const
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Int16* AudioQueue::enqueue(Int16* fragment)
{
lock_guard<mutex> guard(myMutex);
const lock_guard<mutex> guard(myMutex);
Int16* newFragment;
Int16* newFragment = nullptr;
if (!fragment) {
if (!myFirstFragmentForEnqueue) throw runtime_error("enqueue called empty");
@ -83,7 +87,7 @@ Int16* AudioQueue::enqueue(Int16* fragment)
return newFragment;
}
const uInt8 capacity = uInt8(myFragmentQueue.size());
const auto capacity = static_cast<uInt8>(myFragmentQueue.size());
const uInt8 fragmentIndex = (myNextFragment + mySize) % capacity;
newFragment = myFragmentQueue.at(fragmentIndex);
@ -101,7 +105,7 @@ Int16* AudioQueue::enqueue(Int16* fragment)
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Int16* AudioQueue::dequeue(Int16* fragment)
{
lock_guard<mutex> guard(myMutex);
const lock_guard<mutex> guard(myMutex);
if (mySize == 0) return nullptr;
@ -124,7 +128,7 @@ Int16* AudioQueue::dequeue(Int16* fragment)
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void AudioQueue::closeSink(Int16* fragment)
{
lock_guard<mutex> guard(myMutex);
const lock_guard<mutex> guard(myMutex);
if (myFirstFragmentForDequeue && fragment)
throw runtime_error("attempt to return unknown buffer on closeSink");

View File

@ -8,7 +8,7 @@
// SS SS tt ee ll ll aa aa
// SSSS ttt eeeee llll llll aaaaa
//
// Copyright (c) 1995-2021 by Bradford W. Mott, Stephen Anthony
// Copyright (c) 1995-2025 by Bradford W. Mott, Stephen Anthony
// and the Stella Team
//
// See the file "License.txt" for information on usage and redistribution of
@ -24,7 +24,7 @@
#include "StaggeredLogger.hxx"
/**
This class implements a an audio queue that acts both like a ring buffer
This class implements an audio queue that acts both like a ring buffer
and a pool of audio fragments. The TIA emulation core fills a fragment
with samples and then returns it to the queue, receiving a new fragment
in return. The sound driver removes fragments for playback from the
@ -46,6 +46,7 @@ class AudioQueue
@param isStereo Whether samples are stereo or mono.
*/
AudioQueue(uInt32 fragmentSize, uInt32 capacity, bool isStereo);
~AudioQueue() = default;
/**
Capacity getter.
@ -133,7 +134,6 @@ class AudioQueue
StaggeredLogger myOverflowLogger{"audio buffer overflow", Logger::Level::INFO};
private:
AudioQueue() = delete;
AudioQueue(const AudioQueue&) = delete;
AudioQueue(AudioQueue&&) = delete;

View File

@ -8,7 +8,7 @@
// SS SS tt ee ll ll aa aa
// SSSS ttt eeeee llll llll aaaaa
//
// Copyright (c) 1995-2021 by Bradford W. Mott, Stephen Anthony
// Copyright (c) 1995-2025 by Bradford W. Mott, Stephen Anthony
// and the Stella Team
//
// See the file "License.txt" for information on usage and redistribution of
@ -19,12 +19,12 @@
#include "Settings.hxx"
namespace {
uInt32 lboundInt(int x, int defaultValue)
constexpr uInt32 lboundInt(int x, int defaultValue)
{
return x <= 0 ? defaultValue : x;
}
AudioSettings::Preset normalizedPreset(int numericPreset)
constexpr AudioSettings::Preset normalizedPreset(int numericPreset)
{
return (
numericPreset >= static_cast<int>(AudioSettings::Preset::custom) &&
@ -32,14 +32,14 @@ namespace {
) ? static_cast<AudioSettings::Preset>(numericPreset) : AudioSettings::DEFAULT_PRESET;
}
AudioSettings::ResamplingQuality normalizeResamplingQuality(int numericResamplingQuality)
constexpr AudioSettings::ResamplingQuality normalizeResamplingQuality(int numericResamplingQuality)
{
return (
numericResamplingQuality >= static_cast<int>(AudioSettings::ResamplingQuality::nearestNeightbour) &&
numericResamplingQuality >= static_cast<int>(AudioSettings::ResamplingQuality::nearestNeighbour) &&
numericResamplingQuality <= static_cast<int>(AudioSettings::ResamplingQuality::lanczos_3)
) ? static_cast<AudioSettings::ResamplingQuality>(numericResamplingQuality) : AudioSettings::DEFAULT_RESAMPLING_QUALITY;
}
}
} // namespace
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
AudioSettings::AudioSettings(Settings& settings)
@ -51,9 +51,10 @@ AudioSettings::AudioSettings(Settings& settings)
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void AudioSettings::normalize(Settings& settings)
{
int settingPreset = settings.getInt(SETTING_PRESET);
Preset preset = normalizedPreset(settingPreset);
if (static_cast<int>(preset) != settingPreset) settings.setValue(SETTING_PRESET, static_cast<int>(DEFAULT_PRESET));
const int settingPreset = settings.getInt(SETTING_PRESET);
const Preset preset = normalizedPreset(settingPreset);
if (static_cast<int>(preset) != settingPreset)
settings.setValue(SETTING_PRESET, static_cast<int>(DEFAULT_PRESET));
switch (settings.getInt(SETTING_SAMPLE_RATE)) {
case 44100:
@ -80,18 +81,19 @@ void AudioSettings::normalize(Settings& settings)
break;
}
int settingBufferSize = settings.getInt(SETTING_BUFFER_SIZE);
const int settingBufferSize = settings.getInt(SETTING_BUFFER_SIZE);
if (settingBufferSize < 0 || settingBufferSize > MAX_BUFFER_SIZE) settings.setValue(SETTING_BUFFER_SIZE, DEFAULT_BUFFER_SIZE);
int settingHeadroom = settings.getInt(SETTING_HEADROOM);
const int settingHeadroom = settings.getInt(SETTING_HEADROOM);
if (settingHeadroom < 0 || settingHeadroom > MAX_HEADROOM) settings.setValue(SETTING_HEADROOM, DEFAULT_HEADROOM);
int settingResamplingQuality = settings.getInt(SETTING_RESAMPLING_QUALITY);
ResamplingQuality resamplingQuality = normalizeResamplingQuality(settingResamplingQuality);
const int settingResamplingQuality = settings.getInt(SETTING_RESAMPLING_QUALITY);
const ResamplingQuality resamplingQuality =
normalizeResamplingQuality(settingResamplingQuality);
if (static_cast<int>(resamplingQuality) != settingResamplingQuality)
settings.setValue(SETTING_RESAMPLING_QUALITY, static_cast<int>(DEFAULT_RESAMPLING_QUALITY));
int settingVolume = settings.getInt(SETTING_VOLUME);
const int settingVolume = settings.getInt(SETTING_VOLUME);
if (settingVolume < 0 || settingVolume > 100) settings.setValue(SETTING_VOLUME, DEFAULT_VOLUME);
}
@ -186,7 +188,7 @@ void AudioSettings::setPreset(AudioSettings::Preset preset)
myPresetFragmentSize = 1024;
myPresetBufferSize = 6;
myPresetHeadroom = 5;
myPresetResamplingQuality = ResamplingQuality::nearestNeightbour;
myPresetResamplingQuality = ResamplingQuality::nearestNeighbour;
break;
case Preset::highQualityMediumLag:

View File

@ -8,7 +8,7 @@
// SS SS tt ee ll ll aa aa
// SSSS ttt eeeee llll llll aaaaa
//
// Copyright (c) 1995-2021 by Bradford W. Mott, Stephen Anthony
// Copyright (c) 1995-2025 by Bradford W. Mott, Stephen Anthony
// and the Stella Team
//
// See the file "License.txt" for information on usage and redistribution of
@ -26,7 +26,7 @@ class AudioSettings
{
public:
enum class Preset {
enum class Preset: uInt8 {
custom = 1,
lowQualityMediumLag = 2,
highQualityMediumLag = 3,
@ -34,23 +34,23 @@ class AudioSettings
ultraQualityMinimalLag = 5
};
enum class ResamplingQuality {
nearestNeightbour = 1,
lanczos_2 = 2,
lanczos_3 = 3
enum class ResamplingQuality: uInt8 {
nearestNeighbour = 1,
lanczos_2 = 2,
lanczos_3 = 3
};
static constexpr const char* SETTING_PRESET = "audio.preset";
static constexpr const char* SETTING_SAMPLE_RATE = "audio.sample_rate";
static constexpr const char* SETTING_FRAGMENT_SIZE = "audio.fragment_size";
static constexpr const char* SETTING_BUFFER_SIZE = "audio.buffer_size";
static constexpr const char* SETTING_HEADROOM = "audio.headroom";
static constexpr const char* SETTING_RESAMPLING_QUALITY = "audio.resampling_quality";
static constexpr const char* SETTING_STEREO = "audio.stereo";
static constexpr const char* SETTING_VOLUME = "audio.volume";
static constexpr const char* SETTING_DEVICE = "audio.device";
static constexpr const char* SETTING_ENABLED = "audio.enabled";
static constexpr const char* SETTING_DPC_PITCH = "audio.dpc_pitch";
static constexpr string_view SETTING_PRESET = "audio.preset";
static constexpr string_view SETTING_SAMPLE_RATE = "audio.sample_rate";
static constexpr string_view SETTING_FRAGMENT_SIZE = "audio.fragment_size";
static constexpr string_view SETTING_BUFFER_SIZE = "audio.buffer_size";
static constexpr string_view SETTING_HEADROOM = "audio.headroom";
static constexpr string_view SETTING_RESAMPLING_QUALITY = "audio.resampling_quality";
static constexpr string_view SETTING_STEREO = "audio.stereo";
static constexpr string_view SETTING_VOLUME = "audio.volume";
static constexpr string_view SETTING_DEVICE = "audio.device";
static constexpr string_view SETTING_ENABLED = "audio.enabled";
static constexpr string_view SETTING_DPC_PITCH = "audio.dpc_pitch";
static constexpr Preset DEFAULT_PRESET = Preset::highQualityMediumLag;
static constexpr uInt32 DEFAULT_SAMPLE_RATE = 44100;
@ -127,7 +127,7 @@ class AudioSettings
private:
Settings& mySettings;
Settings& mySettings; // NOLINT: we want a reference here
Preset myPreset{Preset::custom};
@ -135,7 +135,7 @@ class AudioSettings
uInt32 myPresetFragmentSize{0};
uInt32 myPresetBufferSize{0};
uInt32 myPresetHeadroom{0};
ResamplingQuality myPresetResamplingQuality{ResamplingQuality::nearestNeightbour};
ResamplingQuality myPresetResamplingQuality{ResamplingQuality::nearestNeighbour};
bool myIsPersistent{true};
};

View File

@ -8,7 +8,7 @@
// SS SS tt ee ll ll aa aa
// SSSS ttt eeeee llll llll aaaaa
//
// Copyright (c) 1995-2021 by Bradford W. Mott, Stephen Anthony
// Copyright (c) 1995-2025 by Bradford W. Mott, Stephen Anthony
// and the Stella Team
//
// See the file "License.txt" for information on usage and redistribution of
@ -24,7 +24,7 @@ string Base::toString(int value, Common::Base::Fmt outputBase)
{
static char vToS_buf[32]; // NOLINT : One place where C-style is acceptable
if(outputBase == Base::Fmt::_DEFAULT)
if(outputBase == Base::Fmt::DEFAULT)
outputBase = myDefaultBase;
switch(outputBase)
@ -47,74 +47,83 @@ string Base::toString(int value, Common::Base::Fmt outputBase)
case Base::Fmt::_10: // base 10: 3 or 5 bytes (depending on value)
if(value > -0x100 && value < 0x100)
std::snprintf(vToS_buf, 5, "%3d", Int16(value));
std::ignore = std::snprintf(vToS_buf, 5, "%3d", static_cast<Int16>(value));
else
std::snprintf(vToS_buf, 6, "%5d", value);
std::ignore = std::snprintf(vToS_buf, 6, "%5d", value);
break;
case Base::Fmt::_10_02: // base 10: 2 digits (with leading zero)
std::snprintf(vToS_buf, 3, "%02d", value);
std::ignore = std::snprintf(vToS_buf, 3, "%02d", value);
break;
case Base::Fmt::_10_3: // base 10: 3 digits
std::snprintf(vToS_buf, 4, "%3d", value);
std::ignore = std::snprintf(vToS_buf, 4, "%3d", value);
break;
case Base::Fmt::_10_4: // base 10: 4 digits
std::snprintf(vToS_buf, 5, "%4d", value);
std::ignore = std::snprintf(vToS_buf, 5, "%4d", value);
break;
case Base::Fmt::_10_5: // base 10: 5 digits
std::snprintf(vToS_buf, 6, "%5d", value);
std::ignore = std::snprintf(vToS_buf, 6, "%5d", value);
break;
case Base::Fmt::_10_6: // base 10: 6 digits
std::snprintf(vToS_buf, 7, "%6d", value);
std::ignore = std::snprintf(vToS_buf, 7, "%6d", value);
break;
case Base::Fmt::_10_8: // base 10: 8 digits
std::snprintf(vToS_buf, 9, "%8d", value);
std::ignore = std::snprintf(vToS_buf, 9, "%8d", value);
break;
case Base::Fmt::_16_1: // base 16: 1 byte wide
std::snprintf(vToS_buf, 2, hexUppercase() ? "%1X" : "%1x", value);
std::ignore = std::snprintf(
vToS_buf, 2, hexUppercase() ? "%1X" : "%1x", value);
break;
case Base::Fmt::_16_2: // base 16: 2 bytes wide
std::snprintf(vToS_buf, 3, hexUppercase() ? "%02X" : "%02x", value);
std::ignore = std::snprintf(
vToS_buf, 3, hexUppercase() ? "%02X" : "%02x", value);
break;
case Base::Fmt::_16_2_2:
std::snprintf(vToS_buf, 6, hexUppercase() ? "%02X.%02X" : "%02x.%02x",
value >> 8, value & 0xff );
std::ignore = std::snprintf(
vToS_buf, 6, hexUppercase() ? "%02X.%02X" : "%02x.%02x",
value >> 8, value & 0xff );
break;
case Base::Fmt::_16_3_2:
std::snprintf(vToS_buf, 7, hexUppercase() ? "%03X.%02X" : "%03x.%02x",
value >> 8, value & 0xff );
std::ignore = std::snprintf(
vToS_buf, 7, hexUppercase() ? "%03X.%02X" : "%03x.%02x",
value >> 8, value & 0xff );
break;
case Base::Fmt::_16_4: // base 16: 4 bytes wide
std::snprintf(vToS_buf, 5, hexUppercase() ? "%04X" : "%04x", value);
std::ignore = std::snprintf(
vToS_buf, 5, hexUppercase() ? "%04X" : "%04x", value);
break;
case Base::Fmt::_16_8: // base 16: 8 bytes wide
std::snprintf(vToS_buf, 9, hexUppercase() ? "%08X" : "%08x", value);
std::ignore = std::snprintf(
vToS_buf, 9, hexUppercase() ? "%08X" : "%08x", value);
break;
case Base::Fmt::_16: // base 16: 2, 4, 8 bytes (depending on value)
default:
if(value < 0x100)
std::snprintf(vToS_buf, 3, hexUppercase() ? "%02X" : "%02x", value);
std::ignore = std::snprintf(
vToS_buf, 3, hexUppercase() ? "%02X" : "%02x", value);
else if(value < 0x10000)
std::snprintf(vToS_buf, 5, hexUppercase() ? "%04X" : "%04x", value);
std::ignore = std::snprintf(
vToS_buf, 5, hexUppercase() ? "%04X" : "%04x", value);
else
std::snprintf(vToS_buf, 9, hexUppercase() ? "%08X" : "%08x", value);
std::ignore = std::snprintf(
vToS_buf, 9, hexUppercase() ? "%08X" : "%08x", value);
break;
}
return string(vToS_buf);
return {vToS_buf};
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Base::Fmt Base::myDefaultBase = Base::Fmt::_16;
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
std::ios_base::fmtflags Base::myHexflags = std::ios_base::hex;
std::ios_base::fmtflags Base::myHexflags = std::ios_base::hex; // NOLINT
} // Namespace Common
} // namespace Common

View File

@ -8,7 +8,7 @@
// SS SS tt ee ll ll aa aa
// SSSS ttt eeeee llll llll aaaaa
//
// Copyright (c) 1995-2021 by Bradford W. Mott, Stephen Anthony
// Copyright (c) 1995-2025 by Bradford W. Mott, Stephen Anthony
// and the Stella Team
//
// See the file "License.txt" for information on usage and redistribution of
@ -38,7 +38,7 @@ class Base
// The base to use for conversion from integers to strings
// Note that the actual number of places will be determined by
// the magnitude of the value itself in the general case
enum class Fmt {
enum class Fmt: uInt8 {
_16, // base 16: 2, 4, 8 bytes (depending on value)
_16_1, // base 16: 1 byte wide
_16_2, // base 16: 2 bytes wide
@ -56,7 +56,7 @@ class Base
_2, // base 2: 8 or 16 bits (depending on value)
_2_8, // base 2: 1 byte (8 bits) wide
_2_16, // base 2: 2 bytes (16 bits) wide
_DEFAULT
DEFAULT
};
public:
@ -72,31 +72,31 @@ class Base
static bool hexUppercase() { return myHexflags & std::ios_base::uppercase; }
/** Output HEX digits in 0.5/1/2/4 byte format */
static inline std::ostream& HEX1(std::ostream& os) {
static std::ostream& HEX1(std::ostream& os) {
os.flags(myHexflags);
return os << std::setw(1);
}
static inline std::ostream& HEX2(std::ostream& os) {
static std::ostream& HEX2(std::ostream& os) {
os.flags(myHexflags);
return os << std::setw(2) << std::setfill('0');
}
static inline std::ostream& HEX3(std::ostream& os)
static std::ostream& HEX3(std::ostream& os)
{
os.flags(myHexflags);
return os << std::setw(3) << std::setfill('0');
}
static inline std::ostream& HEX4(std::ostream& os) {
static std::ostream& HEX4(std::ostream& os) {
os.flags(myHexflags);
return os << std::setw(4) << std::setfill('0');
}
static inline std::ostream& HEX8(std::ostream& os) {
static std::ostream& HEX8(std::ostream& os) {
os.flags(myHexflags);
return os << std::setw(8) << std::setfill('0');
}
/** Convert integer to a string in the given base format */
static string toString(int value,
Common::Base::Fmt outputBase = Common::Base::Fmt::_DEFAULT);
Common::Base::Fmt outputBase = Common::Base::Fmt::DEFAULT);
private:
// Default format to use when none is specified
@ -108,6 +108,7 @@ class Base
private:
// Following constructors and assignment operators not supported
Base() = delete;
~Base() = delete;
Base(const Base&) = delete;
Base(Base&&) = delete;
Base& operator=(const Base&) = delete;

252
src/common/Bezel.cxx Normal file
View File

@ -0,0 +1,252 @@
//============================================================================
//
// SSSS tt lll lll
// SS SS tt ll ll
// SS tttttt eeee ll ll aaaa
// SSSS tt ee ee ll ll aa
// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator"
// SS SS tt ee ll ll aa aa
// SSSS ttt eeeee llll llll aaaaa
//
// Copyright (c) 1995-2025 by Bradford W. Mott, Stephen Anthony
// and the Stella Team
//
// See the file "License.txt" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//============================================================================
#include <cmath>
#include "OSystem.hxx"
#include "Console.hxx"
#include "EventHandler.hxx"
#include "FBSurface.hxx"
#include "PNGLibrary.hxx"
#include "PropsSet.hxx"
#include "Bezel.hxx"
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Bezel::Bezel(OSystem& osystem)
: myOSystem{osystem},
myFB{osystem.frameBuffer()}
{
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
string Bezel::getName(const string& path, const Properties& props)
{
string imageName;
int index = 1; // skip property name
do
{
imageName = getName(props, index);
if(imageName != EmptyString)
{
// Note: JPG does not support transparency
const string imagePath = path + imageName + ".png";
const FSNode node(imagePath);
if(node.exists())
break;
}
} while(index != -1);
return imageName;
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
string Bezel::getName(const Properties& props, int& index)
{
if(++index == 1)
return props.get(PropType::Bezel_Name);
// Try to generate bezel name from cart name
const string& cartName = props.get(PropType::Cart_Name);
size_t pos = cartName.find_first_of('(');
if(pos == std::string::npos)
pos = cartName.length() + 1;
if(index < 10 && pos != std::string::npos && pos > 0)
{
// The following suffixes are from "The Official No-Intro Convention",
// covering all used combinations by "The Bezel Project" (except single ones)
// (Unl) = unlicensed (Homebrews)
const std::array<string, 8> suffixes = {
" (USA)", " (USA) (Proto)", " (USA) (Unl)", " (USA) (Hack)",
" (Europe)", " (Germany)", " (France) (Unl)", " (Australia)"
};
return cartName.substr(0, pos - 1) + suffixes[index - 2];
}
if(index == 10)
{
return "Atari-2600";
}
if(index == 11)
{
index = -1;
return "default";
}
return "";
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
string Bezel::getName(int& index) const
{
return getName(myOSystem.console().properties(), index);
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
uInt32 Bezel::borderSize(uInt32 x, uInt32 y, uInt32 size, Int32 step) const
{
uInt32 *pixels{nullptr}, pitch{0};
mySurface->basePtr(pixels, pitch);
pixels += x + y * pitch;
for(uInt32 i = 0; i < size; ++i, pixels += step)
{
uInt8 r{0}, g{0}, b{0}, a{0};
myFB.getRGBA(*pixels, &r, &g, &b, &a);
if(a < 255) // transparent pixel?
return i;
}
return size - 1;
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bool Bezel::load()
{
const Settings& settings = myOSystem.settings();
bool isValid = false;
string imageName;
#ifdef IMAGE_SUPPORT
const bool show = myOSystem.eventHandler().inTIAMode() &&
settings.getBool("bezel.show") &&
(settings.getBool("fullscreen") ||
settings.getBool("bezel.windowed"));
if(show)
{
if(!mySurface)
mySurface = myFB.allocateSurface(1, 1); // dummy size
try
{
const string& path = myOSystem.bezelDir().getPath();
VariantList metaData;
int index = 0;
do
{
imageName = getName(index);
if(imageName != EmptyString)
{
// Note: JPG does not support transparency
const string imagePath = path + imageName + ".png";
const FSNode node(imagePath);
if(node.exists())
{
isValid = true;
myOSystem.png().loadImage(imagePath, *mySurface, metaData);
break;
}
}
} while(index != -1);
}
catch(const runtime_error&) { cerr << "ERROR: Bezel load\n"; }
}
#else
const bool show = false;
#endif
if(isValid)
{
const Int32 w = mySurface->width();
const Int32 h = mySurface->height();
uInt32 top{0}, bottom{0}, left{0}, right{0};
if(settings.getBool("bezel.win.auto"))
{
// Determine transparent window inside bezel image
const uInt32 xCenter = w >> 1;
top = borderSize(xCenter, 0, h, w);
bottom = h - 1 - borderSize(xCenter, h - 1, h, -w);
const uInt32 yCenter = (bottom + top) >> 1;
left = borderSize(0, yCenter, w, 1);
right = w - 1 - borderSize(w - 1, yCenter, w, -1);
}
else
{
// BP: 13, 13, 0, 0%
// HY: 12, 12, 0, 0%
// P1: 25, 25, 11, 22%
// P2: 23, 23, 7, 20%
left = std::min(w - 1, static_cast<Int32>(w * settings.getInt("bezel.win.left") / 100. + .5)); // NOLINT
right = w - 1 - std::min(w - 1, static_cast<Int32>(w * settings.getInt("bezel.win.right") / 100. + .5)); // NOLINT
top = std::min(h - 1, static_cast<Int32>(h * settings.getInt("bezel.win.top") / 100. + .5)); // NOLINT
bottom = h - 1 - std::min(h - 1, static_cast<Int32>(h * settings.getInt("bezel.win.bottom") / 100. + .5)); // NOLINT
}
//cerr << (int)(right - left + 1) << " x " << (int)(bottom - top + 1) << " = "
// << double((int)(right - left + 1)) / double((int)(bottom - top + 1));
// Disable bezel is no transparent window was found
if(left < right && top < bottom)
myInfo = Info(Common::Size(w, h), Common::Rect(left, top, right, bottom));
else
{
if(mySurface)
myFB.deallocateSurface(mySurface);
mySurface = nullptr;
myInfo = Info();
myFB.showTextMessage("Invalid bezel image ('" + imageName + "')!");
isValid = false;
}
}
else
{
myInfo = Info();
if(show)
myFB.showTextMessage("No bezel image found");
}
return isValid;
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void Bezel::apply()
{
if(isShown())
{
const uInt32 bezelW =
std::min(myFB.screenSize().w,
static_cast<uInt32>(std::round(myFB.imageRect().w() * myInfo.ratioW())));
const uInt32 bezelH =
std::min(myFB.screenSize().h,
static_cast<uInt32>(std::round(myFB.imageRect().h() * myInfo.ratioH())));
// Position and scale bezel
mySurface->setDstSize(bezelW, bezelH);
mySurface->setDstPos((myFB.screenSize().w - bezelW) / 2, // center
(myFB.screenSize().h - bezelH) / 2);
mySurface->setScalingInterpolation(ScalingInterpolation::sharp);
// Note: Variable bezel window positions are handled in VideoModeHandler::Mode
// Enable blending to allow overlaying the bezel over the TIA output
mySurface->attributes().blending = true;
mySurface->attributes().blendalpha = 100;
mySurface->applyAttributes();
mySurface->setVisible(true);
}
else
if(mySurface)
mySurface->setVisible(false);
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void Bezel::render()
{
if(mySurface)
mySurface->render();
}

151
src/common/Bezel.hxx Normal file
View File

@ -0,0 +1,151 @@
//============================================================================
//
// SSSS tt lll lll
// SS SS tt ll ll
// SS tttttt eeee ll ll aaaa
// SSSS tt ee ee ll ll aa
// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator"
// SS SS tt ee ll ll aa aa
// SSSS ttt eeeee llll llll aaaaa
//
// Copyright (c) 1995-2025 by Bradford W. Mott, Stephen Anthony
// and the Stella Team
//
// See the file "License.txt" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//============================================================================
#ifndef BEZEL_HXX
#define BEZEL_HXX
class OSystem;
class FBSurface;
class FrameBuffer;
class Properties;
#include "Rect.hxx"
/**
This class handles the bezels.
Bezels are loaded using a file name which is either a bezel name property or
is autogenerated from the cart name property. The bezels can be any size and
their transparent emulation window can be at any position. The position of
the window can be determined automatically.
+--------------------------------------+
| | display.h
+--------------------------------------+
| |
| +---------------+ |
| | window | |
| | | |
| | tia.h * zoom | |
| | | | bezel.h * zoom
| | | |
| +---------------+ |
| |
+--------------------------------------+ size
| |
+--------------------------------------+
The bezel and window sizes and their ratios are used for correct scaling.
@author Thomas Jentzsch
*/
class Bezel
{
public:
explicit Bezel(OSystem& osystem);
~Bezel() = default;
struct Info
{
private:
bool _isShown{false}; // Is bezel shown?
Common::Size _size{1, 1}; // Bezel size
Common::Rect _window{1, 1}; // Area of transparent TIA window inside bezel
public:
explicit Info() = default;
explicit Info(Common::Size size, Common::Rect window)
: _isShown{true}, _size{size}, _window{window} { }
bool isShown() const { return _isShown; }
Common::Size size() const { return _size; }
Common::Rect window() const { return _window; }
// Ratios between bezel sizes and TIA window sizes
double ratioW() const { return static_cast<double>(size().w) / window().w(); }
double ratioH() const { return static_cast<double>(size().h) / window().h(); }
};
// Structure access methods
const Info& info() const { return myInfo; }
bool isShown() const { return myInfo.isShown(); }
Common::Size size() const { return myInfo.size(); }
Common::Rect window() const { return myInfo.window(); }
// Ratio between bezel size and TIA window size
double ratioW() const { return myInfo.ratioW(); }
double ratioH() const { return myInfo.ratioH(); }
/*
Calculate size of a bezel border.
*/
uInt32 borderSize(uInt32 x, uInt32 y, uInt32 size, Int32 step) const;
/*
Load the bezel.
*/
bool load();
/*
Display scaled bezel.
*/
void apply();
/*
Render bezel surface
*/
void render();
/*
Generate bezel file name.
*/
static string getName(const string& path, const Properties& props);
private:
/*
Generate bezel file name.
*/
static string getName(const Properties& props, int& index);
/*
Generate bezel file name.
*/
string getName(int& index) const;
private:
// The parent system for the bezel
OSystem& myOSystem;
// Pointer to the FrameBuffer object
FrameBuffer& myFB;
// The bezel surface which blends over the TIA surface
shared_ptr<FBSurface> mySurface;
// Bezel info structure
Info myInfo;
private:
// Following constructors and assignment operators not supported
Bezel() = delete;
Bezel(const Bezel&) = delete;
Bezel(Bezel&&) = delete;
Bezel& operator=(const Bezel&) = delete;
Bezel& operator=(Bezel&&) = delete;
};
#endif

View File

@ -0,0 +1,250 @@
//============================================================================
//
// SSSS tt lll lll
// SS SS tt ll ll
// SS tttttt eeee ll ll aaaa
// SSSS tt ee ee ll ll aa
// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator"
// SS SS tt ee ll ll aa aa
// SSSS ttt eeeee llll llll aaaaa
//
// Copyright (c) 1995-2025 by Bradford W. Mott, Stephen Anthony
// and the Stella Team
//
// See the file "License.txt" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//============================================================================
#include "Console.hxx"
#include "EventHandler.hxx"
#include "M6502.hxx"
#include "OSystem.hxx"
#include "RewindManager.hxx"
#include "Settings.hxx"
#include "StateManager.hxx"
#include "TIA.hxx"
#include "Cart.hxx"
#include "CartELF.hxx"
#include "DevSettingsHandler.hxx"
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
DevSettingsHandler::DevSettingsHandler(OSystem& osystem)
: myOSystem{osystem}
{
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void DevSettingsHandler::loadSettings(SettingsSet set)
{
const bool devSettings = set == SettingsSet::developer;
const string& prefix = devSettings ? "dev." : "plr.";
const Settings& settings = myOSystem.settings();
myFrameStats[set] = settings.getBool(prefix + "stats");
myDetectedInfo[set] = settings.getBool(prefix + "detectedinfo");
// AtariVox/SaveKey/PlusROM access
myExternAccess[set] = settings.getBool(prefix + "extaccess");
myConsole[set] = settings.getString(prefix + "console") == "7800" ? 1 : 0;
myPlusROM[set] = devSettings ? settings.getBool("dev.plusroms.on") : true;
// Randomization
myRandomBank[set] = settings.getBool(prefix + "bankrandom");
myRandomizeTIA[set] = settings.getBool(prefix + "tiarandom");
myRandomizeRAM[set] = settings.getBool(prefix + "ramrandom");
myRandomizeCPU[set] = settings.getString(prefix + "cpurandom");
// Random hotspot peeks
myRandomHotspots[set] = devSettings ? settings.getBool("dev.hsrandom") : false;
// Undriven TIA pins
myUndrivenPins[set] = devSettings ? settings.getBool("dev.tiadriven") : false;
#ifdef DEBUGGER_SUPPORT
// Read from write ports break
myRWPortBreak[set] = devSettings ? settings.getBool("dev.rwportbreak") : false;
// Write to read ports break
myWRPortBreak[set] = devSettings ? settings.getBool("dev.wrportbreak") : false;
#endif
// Thumb ARM emulation exception
myThumbException[set] = devSettings ? settings.getBool("dev.thumb.trapfatal") : false;
myArmSpeed[set] = devSettings ? settings.getInt("dev.arm.mips") : CartridgeELF::MIPS_MAX;
// TIA tab
myTIAType[set] = devSettings ? settings.getString("dev.tia.type") : "standard";
myPlInvPhase[set] = devSettings ? settings.getBool("dev.tia.plinvphase") : false;
myMsInvPhase[set] = devSettings ? settings.getBool("dev.tia.msinvphase") : false;
myBlInvPhase[set] = devSettings ? settings.getBool("dev.tia.blinvphase") : false;
myPlLateHMove[set] = devSettings ? settings.getBool("dev.tia.pllatehmove") : false;
myMsLateHMove[set] = devSettings ? settings.getBool("dev.tia.mslatehmove") : false;
myBlLateHMove[set] = devSettings ? settings.getBool("dev.tia.bllatehmove") : false;
myPFBits[set] = devSettings ? settings.getBool("dev.tia.delaypfbits") : false;
myPFColor[set] = devSettings ? settings.getBool("dev.tia.delaypfcolor") : false;
myPFScore[set] = devSettings ? settings.getBool("dev.tia.pfscoreglitch") : false;
myBKColor[set] = devSettings ? settings.getBool("dev.tia.delaybkcolor") : false;
myPlSwap[set] = devSettings ? settings.getBool("dev.tia.delayplswap") : false;
myBlSwap[set] = devSettings ? settings.getBool("dev.tia.delayblswap") : false;
// Debug colors
myDebugColors[set] = settings.getBool(prefix + "debugcolors");
// PAL color-loss effect
myColorLoss[set] = settings.getBool(prefix + "colorloss");
// Jitter
myTVJitter[set] = settings.getBool(prefix + "tv.jitter");
myTVJitterSense[set] = settings.getInt(prefix + "tv.jitter_sense");
myTVJitterRec[set] = settings.getInt(prefix + "tv.jitter_recovery");
// States
myTimeMachine[set] = settings.getBool(prefix + "timemachine");
myStateSize[set] = settings.getInt(prefix + "tm.size");
myUncompressed[set] = settings.getInt(prefix + "tm.uncompressed");
myStateInterval[set] = settings.getString(prefix + "tm.interval");
myStateHorizon[set] = settings.getString(prefix + "tm.horizon");
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void DevSettingsHandler::saveSettings(SettingsSet set)
{
const bool devSettings = set == SettingsSet::developer;
const string& prefix = devSettings ? "dev." : "plr.";
Settings& settings = myOSystem.settings();
settings.setValue(prefix + "stats", myFrameStats[set]);
settings.setValue(prefix + "detectedinfo", myDetectedInfo[set]);
settings.setValue(prefix + "console", myConsole[set] == 1 ? "7800" : "2600");
if(myOSystem.hasConsole())
myOSystem.eventHandler().set7800Mode();
// Randomization
settings.setValue(prefix + "bankrandom", myRandomBank[set]);
settings.setValue(prefix + "tiarandom", myRandomizeTIA[set]);
settings.setValue(prefix + "ramrandom", myRandomizeRAM[set]);
settings.setValue(prefix + "cpurandom", myRandomizeCPU[set]);
if(devSettings)
{
settings.setValue("dev.plusroms.on", myPlusROM[set]);
settings.setValue("dev.hsrandom", myRandomHotspots[set]);
// Undriven TIA pins
settings.setValue("dev.tiadriven", myUndrivenPins[set]);
#ifdef DEBUGGER_SUPPORT
// Read from write ports break
settings.setValue("dev.rwportbreak", myRWPortBreak[set]);
// Write to read ports break
settings.setValue("dev.wrportbreak", myWRPortBreak[set]);
#endif
// Thumb ARM emulation exception
settings.setValue("dev.thumb.trapfatal", myThumbException[set]);
settings.setValue("dev.arm.mips", myArmSpeed[set]);
}
// AtariVox/SaveKey/PlusROM access
settings.setValue(prefix + "extaccess", myExternAccess[set]);
// TIA tab
if(devSettings)
{
settings.setValue("dev.tia.type", myTIAType[set]);
if(BSPF::equalsIgnoreCase("custom", myTIAType[set]))
{
settings.setValue("dev.tia.plinvphase", myPlInvPhase[set]);
settings.setValue("dev.tia.msinvphase", myMsInvPhase[set]);
settings.setValue("dev.tia.blinvphase", myBlInvPhase[set]);
settings.setValue("dev.tia.pllatehmove", myPlLateHMove[set]);
settings.setValue("dev.tia.mslatehmove", myMsLateHMove[set]);
settings.setValue("dev.tia.bllatehmove", myBlLateHMove[set]);
settings.setValue("dev.tia.delaypfbits", myPFBits[set]);
settings.setValue("dev.tia.delaypfcolor", myPFColor[set]);
settings.setValue("dev.tia.pfscoreglitch", myPFScore[set]);
settings.setValue("dev.tia.delaybkcolor", myBKColor[set]);
settings.setValue("dev.tia.delayplswap", myPlSwap[set]);
settings.setValue("dev.tia.delayblswap", myBlSwap[set]);
}
}
// Debug colors
settings.setValue(prefix + "debugcolors", myDebugColors[set]);
// PAL color loss
settings.setValue(prefix + "colorloss", myColorLoss[set]);
// Jitter
settings.setValue(prefix + "tv.jitter", myTVJitter[set]);
settings.setValue(prefix + "tv.jitter_sense", myTVJitterSense[set]);
settings.setValue(prefix + "tv.jitter_recovery", myTVJitterRec[set]);
// States
settings.setValue(prefix + "timemachine", myTimeMachine[set]);
settings.setValue(prefix + "tm.size", myStateSize[set]);
settings.setValue(prefix + "tm.uncompressed", myUncompressed[set]);
settings.setValue(prefix + "tm.interval", myStateInterval[set]);
settings.setValue(prefix + "tm.horizon", myStateHorizon[set]);
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void DevSettingsHandler::applySettings(SettingsSet set)
{
// *** Emulation tab ***
myOSystem.frameBuffer().showFrameStats(myFrameStats[set]);
if(myOSystem.hasConsole())
{
myOSystem.console().cartridge().enableRandomHotspots(myRandomHotspots[set]);
myOSystem.console().tia().driveUnusedPinsRandom(myUndrivenPins[set]);
myOSystem.console().cartridge().enablePlusROM(myPlusROM[set]);
// Notes:
// - thumb exceptions not updated, because set in cart constructor
// - other missing settings are used on-the-fly
}
#ifdef DEBUGGER_SUPPORT
// Read from write ports and write to read ports breaks
if(myOSystem.hasConsole())
{
myOSystem.console().system().m6502().setReadFromWritePortBreak(myRWPortBreak[set]);
myOSystem.console().system().m6502().setWriteToReadPortBreak(myWRPortBreak[set]);
}
#endif
// *** TIA tab ***
if(myOSystem.hasConsole())
{
myOSystem.console().tia().setPlInvertedPhaseClock(myPlInvPhase[set]);
myOSystem.console().tia().setMsInvertedPhaseClock(myMsInvPhase[set]);
myOSystem.console().tia().setBlInvertedPhaseClock(myBlInvPhase[set]);
myOSystem.console().tia().setPlShortLateHMove(myPlLateHMove[set]);
myOSystem.console().tia().setMsShortLateHMove(myMsLateHMove[set]);
myOSystem.console().tia().setBlShortLateHMove(myBlLateHMove[set]);
myOSystem.console().tia().setPFBitsDelay(myPFBits[set]);
myOSystem.console().tia().setPFColorDelay(myPFColor[set]);
myOSystem.console().tia().setPFScoreGlitch(myPFScore[set]);
myOSystem.console().tia().setBKColorDelay(myBKColor[set]);
myOSystem.console().tia().setPlSwapDelay(myPlSwap[set]);
myOSystem.console().tia().setBlSwapDelay(myBlSwap[set]);
}
// *** Video tab ***
if(myOSystem.hasConsole())
{
// TV Jitter
myOSystem.console().tia().toggleJitter(myTVJitter[set] ? 1 : 0);
myOSystem.console().tia().setJitterSensitivity(myTVJitterSense[set]);
myOSystem.console().tia().setJitterRecoveryFactor(myTVJitterRec[set]);
// PAL color loss
myOSystem.console().enableColorLoss(myColorLoss[set]);
}
// Debug colours
handleEnableDebugColors(myDebugColors[set]);
// *** Time Machine tab ***
// update RewindManager
myOSystem.state().rewindManager().setup();
myOSystem.state().setRewindMode(myTimeMachine[set] ?
StateManager::Mode::TimeMachine : StateManager::Mode::Off);
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void DevSettingsHandler::handleEnableDebugColors(bool enable)
{
if(myOSystem.hasConsole())
{
const bool fixed = myOSystem.console().tia().usingFixedColors();
if(fixed != enable)
myOSystem.console().tia().toggleFixedColors();
}
}

View File

@ -0,0 +1,104 @@
//============================================================================
//
// SSSS tt lll lll
// SS SS tt ll ll
// SS tttttt eeee ll ll aaaa
// SSSS tt ee ee ll ll aa
// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator"
// SS SS tt ee ll ll aa aa
// SSSS ttt eeeee llll llll aaaaa
//
// Copyright (c) 1995-2025 by Bradford W. Mott, Stephen Anthony
// and the Stella Team
//
// See the file "License.txt" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//============================================================================
#ifndef DEV_SETTINGS_HANDLER_HXX
#define DEV_SETTINGS_HANDLER_HXX
class OSystem;
#include <array>
#include "bspf.hxx"
/**
This class takes care of developer settings sets.
@author Thomas Jentzsch
*/
class DevSettingsHandler
{
public:
enum SettingsSet: uInt8 {
player,
developer,
numSets
};
explicit DevSettingsHandler(OSystem& osystem);
~DevSettingsHandler() = default;
void loadSettings(SettingsSet set);
void saveSettings(SettingsSet set);
void applySettings(SettingsSet set);
protected:
OSystem& myOSystem;
// Emulator sets
std::array<bool, numSets> myFrameStats{};
std::array<bool, numSets> myDetectedInfo{};
std::array<bool, numSets> myExternAccess{};
std::array<int, numSets> myConsole{};
std::array<int, numSets> myPlusROM{};
std::array<bool, numSets> myRandomBank{};
std::array<bool, numSets> myRandomizeTIA{};
std::array<bool, numSets> myRandomizeRAM{};
std::array<string, numSets> myRandomizeCPU{};
std::array<bool, numSets> myColorLoss{};
std::array<bool, numSets> myTVJitter{};
std::array<int, numSets> myTVJitterSense{};
std::array<int, numSets> myTVJitterRec{};
std::array<bool, numSets> myDebugColors{};
std::array<bool, numSets> myRandomHotspots{};
std::array<bool, numSets> myUndrivenPins{};
#ifdef DEBUGGER_SUPPORT
std::array<bool, numSets> myRWPortBreak{};
std::array<bool, numSets> myWRPortBreak{};
#endif
std::array<bool, numSets> myThumbException{};
std::array<int, numSets> myArmSpeed{};
// TIA sets
std::array<string, numSets> myTIAType{};
std::array<bool, numSets> myPlInvPhase{};
std::array<bool, numSets> myMsInvPhase{};
std::array<bool, numSets> myBlInvPhase{};
std::array<bool, numSets> myPlLateHMove{};
std::array<bool, numSets> myMsLateHMove{};
std::array<bool, numSets> myBlLateHMove{};
std::array<bool, numSets> myPFBits{};
std::array<bool, numSets> myPFColor{};
std::array<bool, numSets> myPFScore{};
std::array<bool, numSets> myBKColor{};
std::array<bool, numSets> myPlSwap{};
std::array<bool, numSets> myBlSwap{};
// States sets
std::array<bool, numSets> myTimeMachine{};
std::array<int, numSets> myStateSize{};
std::array<int, numSets> myUncompressed{};
std::array<string, numSets> myStateInterval{};
std::array<string, numSets> myStateHorizon{};
private:
void handleEnableDebugColors(bool enable);
// Following constructors and assignment operators not supported
DevSettingsHandler() = delete;
DevSettingsHandler(const DevSettingsHandler&) = delete;
DevSettingsHandler(DevSettingsHandler&&) = delete;
DevSettingsHandler& operator=(const DevSettingsHandler&) = delete;
DevSettingsHandler& operator=(DevSettingsHandler&&) = delete;
};
#endif

View File

@ -8,7 +8,7 @@
// SS SS tt ee ll ll aa aa
// SSSS ttt eeeee llll llll aaaaa
//
// Copyright (c) 1995-2021 by Bradford W. Mott, Stephen Anthony
// Copyright (c) 1995-2025 by Bradford W. Mott, Stephen Anthony
// and the Stella Team
//
// See the file "License.txt" for information on usage and redistribution of
@ -30,9 +30,10 @@ EventHandlerSDL2::EventHandlerSDL2(OSystem& osystem)
#ifdef GUI_SUPPORT
{
ostringstream buf;
myQwertz = int('y') == int(SDL_GetKeyFromScancode(SDL_Scancode(KBDK_Z)));
myQwertz = int{'y'} == static_cast<int>
(SDL_GetKeyFromScancode(static_cast<SDL_Scancode>(KBDK_Z)));
buf << "Keyboard: " << (myQwertz ? "QWERTZ" : "QWERTY");
Logger::debug(buf.str());
Logger::debug(buf.view());
}
#endif
@ -40,8 +41,9 @@ EventHandlerSDL2::EventHandlerSDL2(OSystem& osystem)
if(SDL_InitSubSystem(SDL_INIT_JOYSTICK) < 0)
{
ostringstream buf;
buf << "ERROR: Couldn't initialize SDL joystick support: " << SDL_GetError() << endl;
Logger::error(buf.str());
buf << "ERROR: Couldn't initialize SDL joystick support: "
<< SDL_GetError() << '\n';
Logger::error(buf.view());
}
Logger::debug("EventHandlerSDL2::EventHandlerSDL2 SDL_INIT_JOYSTICK");
#endif
@ -99,8 +101,8 @@ void EventHandlerSDL2::pollEvent()
case SDL_KEYUP:
case SDL_KEYDOWN:
{
handleKeyEvent(StellaKey(myEvent.key.keysym.scancode),
StellaMod(myEvent.key.keysym.mod),
handleKeyEvent(static_cast<StellaKey>(myEvent.key.keysym.scancode),
static_cast<StellaMod>(myEvent.key.keysym.mod),
myEvent.key.type == SDL_KEYDOWN,
myEvent.key.repeat);
break;
@ -123,23 +125,29 @@ void EventHandlerSDL2::pollEvent()
case SDL_MOUSEBUTTONUP:
{
// ToDo: check support of more buttons and double-click
MouseButton b{MouseButton::NONE};
switch(myEvent.button.button)
{
case SDL_BUTTON_LEFT:
handleMouseButtonEvent(MouseButton::LEFT, myEvent.button.type == SDL_MOUSEBUTTONDOWN,
myEvent.button.x, myEvent.button.y);
b = MouseButton::LEFT;
break;
case SDL_BUTTON_RIGHT:
handleMouseButtonEvent(MouseButton::RIGHT, myEvent.button.type == SDL_MOUSEBUTTONDOWN,
myEvent.button.x, myEvent.button.y);
b = MouseButton::RIGHT;
break;
case SDL_BUTTON_MIDDLE:
b = MouseButton::MIDDLE;
break;
default:
break;
}
handleMouseButtonEvent(b, myEvent.button.type == SDL_MOUSEBUTTONDOWN,
myEvent.button.x, myEvent.button.y);
break;
}
case SDL_MOUSEWHEEL:
{
int x, y;
int x{0}, y{0};
SDL_GetMouseState(&x, &y); // we need mouse position too
if(myEvent.wheel.y < 0)
handleMouseButtonEvent(MouseButton::WHEELDOWN, true, x, y);
@ -166,7 +174,8 @@ void EventHandlerSDL2::pollEvent()
case SDL_JOYHATMOTION:
{
int v = myEvent.jhat.value, value = 0;
int value = 0;
const int v = myEvent.jhat.value;
if(v == SDL_HAT_CENTERED)
value = EVENT_HATCENTER_M;
else
@ -240,8 +249,13 @@ void EventHandlerSDL2::pollEvent()
case SDL_WINDOWEVENT_FOCUS_LOST:
handleSystemEvent(SystemEvent::WINDOW_FOCUS_LOST);
break;
default:
break;
}
break; // SDL_WINDOWEVENT
default:
break;
}
}
}
@ -251,6 +265,7 @@ EventHandlerSDL2::JoystickSDL2::JoystickSDL2(int idx)
{
ASSERT_MAIN_THREAD;
// NOLINTNEXTLINE: we want to initialize here, not in the member list
myStick = SDL_JoystickOpen(idx);
if(myStick)
{
@ -259,7 +274,7 @@ EventHandlerSDL2::JoystickSDL2::JoystickSDL2(int idx)
// it also appends " #x", where x seems to vary. Obviously this wreaks
// havoc with the idea that a joystick will always have the same name.
// So we truncate the number.
const char* sdlname = SDL_JoystickName(myStick);
const char* const sdlname = SDL_JoystickName(myStick);
const string& desc = BSPF::startsWithIgnoreCase(sdlname, "XInput Controller")
? "XInput Controller" : sdlname;

Some files were not shown because too many files have changed in this diff Show More