Commit Graph

105 Commits

Author SHA1 Message Date
stephena 7b9169c18d Convert all arrays in the codebase to vectors, so that we get all
the advantages of C++11 (move semantics, list initialization, etc).
I'd hoped to somehow wrap a vector behind Common::Array and not have
to change the codebase to this extent, but it didn't work out.  And
I've since read that it's bad form to extend from std::vector anyway.
This is *THE LAST* bit of work I'm doing with arrays; everything is
now a proper vector.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@3055 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2014-11-08 21:27:36 +00:00
stephena 740eeed579 You know what's better than adding move semantics and initializer
lists to the Array class?  Completely deleting all that code and
using a std::vector directly :)


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@3054 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2014-11-07 23:28:40 +00:00
stephena a9aa84e3a3 Some more nullptr and formatting cleanups.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@3051 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2014-11-07 14:26:56 +00:00
stephena 79ada8685c The long march to converting Stella to C++11 has finally started. Already,
I've found and fixed a few memory leaks.  You will need an up-to-date compiler.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@3031 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2014-11-02 23:40:20 +00:00
stephena 877f2c9f3c Final updates for 4.2 release.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@3026 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2014-10-28 16:44:18 +00:00
stephena bc1308db23 Some small issues detected by 'cppcheck'. There looks to be quite a
few more ...


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@3020 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2014-10-26 18:46:17 +00:00
stephena af254b3d85 Fixed DASH bug when changing banks; the debugger didn't recognize the change,
and hence didn't re-disassemble.

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


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2967 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2014-07-31 15:54:14 +00:00
stephena 9f172cbb42 Fixed potential bug in Cartridge API; renamed bank() to getBank(),
since there are issues with mixing overloading and virtual functions.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2963 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2014-07-28 13:40:37 +00:00
stephena 2f4a3e7966 Cleaned up the Cartridge::bankXXX API. Carts which are non-bankswitched
or those which implement their own unique scheme no longer have to
implement bank and bankCount; this base class versions will be used
instead.

Removed the debugger 'bank' command, since it didn't work for all cart
types, and is obsolete now that the UI allows to change banks for
all cart types.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2960 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2014-07-24 17:15:28 +00:00
stephena 61972b350a Finally some love for the OSX port. The Xcode project now compiles and runs,
and contains only one Objective-C warning (more research required).  There
are also some fixes for minor warnings.

There are still some issues, though.  First, SDL2.0.3 has to compiled
manually, as the public binaries don't work (this is documented and
a bug reported on the SDL mailing list).  Second, fullscreen->window
transition is causing a crash, which I still need to track down.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2926 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2014-06-16 16:34:48 +00:00
stephena 5c75ff1c15 Finally added a large patch from SpiceWare which adds an extended
cart RAM tab to the debugger.  This is tailored to each respective
cart bankswitch type, allowing much more information to be shown than
you'd see in the normal RAM area.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2921 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2014-06-13 16:28:28 +00:00
stephena aa5691af8a OK, it looks like I'm back to Stella development, after a several month
break.  First thing to do is update the year.  Happy new year to anyone
reading these commit logs.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2833 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2014-01-12 17:23:42 +00:00
stephena 587959c273 Well, that was fast. Fixed bug in parsing constants from the DASM lst file.
I wasn't completely sure how the file was structured, but it's starting to
make a lot more sense now.  I think in the end, it will be better to use this
file as much as possible.

Bumped version #, and starting all over again.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2815 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2013-08-22 21:34:22 +00:00
stephena 4ef0416e26 When loading symbol files, strip leading numbers from names using the
number.name convention (which seem to be pass #'s for DASM).  Initially
having this info in Stella was simply visually inconsistent, but now
it also interferes with recompiling when saving the disassembly (IOW,
the data put into the symbol file by DASM can't be fed back into DASM
again in these cases).


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2803 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2013-08-20 14:29:28 +00:00
stephena f02995b485 CPU register 'source' addresses in the debugger now show labels,
when applicable.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2802 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2013-08-20 14:00:25 +00:00
stephena 60dd213a0a Added preliminary support for DASM lst files (currently to differentiate
symbol names in the DASM symbol file).  This partly fixes a deficiency in
symbol files, whereby two names could have the same address (one has an
address, the other as a constant), and Stella would use whichever one
occurred in the file last.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2795 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2013-08-15 16:07:58 +00:00
stephena 95fe213f3a Consolidated the code for converting integers to strings in various
bases into a Common::Base class.  Previously, this functionality was
spread across several classes, and used different approaches to formatting.
While the code still mixes C++ streams and C-style sprintf's, at least
it will now be easier to modify it all in one place.

Related to the above, added ability to use upper or lower case
characters for HEX output in the debugger.  This is toggled by the
new debugger prompt command 'uhex', which is also tied to a new
commandline argument, 'dbg.uhex'.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2770 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2013-07-27 22:28:41 +00:00
stephena 04f6a16f97 Fixed error tracking PC changes in disassembly when the PC and bank mirror
didn't match.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2766 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2013-07-17 23:00:55 +00:00
stephena 8f8c85250c Preparation for 3.9 release, updated documentation.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2756 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2013-06-26 16:03:08 +00:00
stephena f3d412fce7 Improved the new Snapshot Settings dialog with more informative text.
Added option to save snapshots using either internal database name
(the default) or actual ROM filename.

Extended FSNode API for parsing filenames and adding/removing extensions,
which was previously being done in different ways throughout the codebase.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2753 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2013-06-21 12:15:32 +00:00
stephena c179a00725 Added specific dialog for changing Distella settings to disassembler.
This will eventually grow to include all relevant options in Distella.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2747 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2013-06-17 15:57:41 +00:00
stephena 969d4b5fe2 Some more work on the debugger ROM UI area. Changed previous bank
selection widget to a display of current bank state, taking into
account the more esoteric bank schemes.  Currently, some functionality
is disabled/removed for now; I'll work on this for the next commit.

The format for displaying disassembler GFX/PGFX (binary or hex) is now
obeyed in the disassembly file output as well.

Changed various comments/enums/etc referring to 'preliminary' code to
'tentative' code, matching the actual intended meaning and the current
documentation.

Small API change for EditTextWidget; changed method name to setText, since
that's what I keep typing for some reason.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2743 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2013-05-29 16:27:12 +00:00
stephena 7931699eb7 Some cleanup of ASM output; only print headers for various constants
if they are actually used in the disassembly.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2741 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2013-05-21 16:57:12 +00:00
stephena e053ed4e0e Rearranged disassembly file output header to be output after an
initial pass of the disassembler.  This was required in certain cases,
notably when issuing 'savedis' when the code was currently running from
zero-page.

Fixed missed labels for zero-page RAM when running ZP code.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2740 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2013-05-20 21:53:25 +00:00
stephena 1bdc9423bd Fixed for debugger prompt tab completion, and using RAM labels as destination
jump points when running code in ZP mode.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2738 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2013-05-20 16:48:31 +00:00
stephena 09d7ec7eb9 *Many* improvements to the debugger disassembly, both in-GUI and in saving
to an external file.

  - RIOT/TIA mirrors are now used whenever possible.  This includes *all*
    possible mirrors in the entire 64K address space.  This was needed to
    make the disassembly byte-exact when recompiling the ROM.

  - Disassembly to a file now includes all required defined constants
    (RIOT/TIA, non-locatable labels, user-defined, etc).


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2737 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2013-05-19 20:55:25 +00:00
stephena 640927b1c6 The debugger disassembly (both in the ROM view and the prompt) and the
listconfig command are now synchronized, and produce the same output.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2736 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2013-05-17 01:05:50 +00:00
stephena a5bdbaf997 Some work on listconfig and friends. First of all, it's now only enabled
for single-bank ROMs, same as disassembly (since the underlying framework
has been modified).  Second, it now actually works :)  I can't see how it
worked before, and since I didn't get any complaints/reports, I really have
to question how much use this code actually gets.

Still TODO is fix errors in CODE vs. PCODE (preliminary code) (in
the Distella code, we should clearly mark the difference).


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2735 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2013-05-16 22:05:14 +00:00
stephena f533fcad34 Some cleanup of dead code, and changes to the file I/O in the debugger.
For now (and the next release), filenames are hardcoded to sane defaults.
Eventually, the code may be extended to use BrowserDialog to query the names,
but it's taking much too long to get working, and I want to get a new release
done before the end of May.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2734 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2013-05-16 19:11:44 +00:00
stephena f1530ca86d Added extra registers to the DPC scheme in the debugger ROM tab.
The remainder of this commit is basically some cleanup of the
Widget API, and infrastructure fixes to allow CartDebugWidgets to
have change tracking.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2702 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2013-04-20 22:23:42 +00:00
stephena df77cc8997 Fixed crash with disasm command in debugger.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2698 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2013-04-17 23:11:32 +00:00
stephena 95f91262fd Use a more 'C++' way of initializing member variables.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2674 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2013-03-14 13:22:26 +00:00
stephena d9c05df0f2 Uninitialized variable caused disassembly failure on 4K ROMs.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2673 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2013-03-14 12:25:35 +00:00
stephena 467ac0a280 Sub2K ROMs now show only the actual data in the binary. This allows
the saved disassembly to be compiled to the exact same binary.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2669 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2013-03-13 21:16:14 +00:00
stephena 1ade2900e4 More fixes to debugger disassembly for DASM. The code now prints
out-of-range labels for cases where a label is in the middle of a
multi-byte instruction (Kool Aid Man), and properly indicates
mirrors of TIA read/write addresses (Meltdown).


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2666 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2013-03-11 19:43:19 +00:00
stephena b97d5120b9 Some debugger/disassembly work:
- Removed 'SKIP' directive, since it wasn't implemented anyway, and
    I see no way to implement it

  - Add 'aflag' setting to diassembly output, matching usage in Distella.
    This is needed for diassembly output, otherwise DASM barfs on the code.

  - Fixed several long-standing bugs in Distella disassembly wrt ROW
    directives and labeling.  Previously, the output you see in the debugger
    wasn't completely correct, since it wasn't compiling properly in DASM.

  - Illegal opcodes are now shown as .byte directives; this allows the code
    to compile in DASM.

  - Print 16 bytes per line in .byte directive in external disassembly,
    same as Distella.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2665 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2013-03-10 22:12:37 +00:00
stephena 5d5719e390 Added equates used to the disassembled output. This is the same as how
DiStella works, so you don't have to include a vcs.h file.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2659 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2013-03-05 18:01:55 +00:00
stephena ffc99a9345 First pass at adding diassembly output from the debugger. It's already
working quite well for a single-bank ROM, but more work is required for
multi-bank.  Output is currently sent to the console, as I'm still in
the formatting phase.  Saving to a file will be easy once the format
is nailed down.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2657 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2013-03-04 23:35:26 +00:00
stephena ecdcf6177d More work on the FilesystemNode API.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2597 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2013-02-03 00:13:08 +00:00
stephena c4e5360a18 Updated copyright dates to 2013.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2579 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2013-01-04 19:49:01 +00:00
stephena 01d8c298ae Added 'dis.relocate' commandline argument, which passes the
Distella '-r' option (Relocate calls out of address range) to
the disassembler core.  Also added UI item to dynamically
change the setting.

Renamed 'resolvedata', 'showaddr' and 'gfxformat' commandline
arguments to start with 'dis', indicating that they're part
of the disassembler.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2504 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2012-05-27 19:27:55 +00:00
stephena 8f65771872 The built-in Distella was assuming the 'r' flag (-r on commandline)
option was set, which normally isn't when disassembling standalone
ROMs.  As such, the disassembly didn't match standard Distella output.
The 'fflag' and 'rflag' options from Distella have therefore been
integrated, but they're not configurable at this point (hardcoded
to true and false, respectively).


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2502 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2012-05-27 13:07:38 +00:00
stephena aa544ecfe9 Fixed bug when loading from ZIP files created in OSX. In some
cases, these archives contain directories named '__MACOSX' which
contain link files that were being erroneously detected as actual
ROMs.

Added FilesystemNode::isFile() method, and updated several places
in the code to use it.  Previously, determining whether something
was a file was simply testing if it wasn't a directory, but this
logic isn't always valid (it's possible to be neither a regular
file *nor* a directory).

Bumped version # for RC release.  It's getting very close ...


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2477 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2012-05-16 20:52:33 +00:00
stephena 809da97ad3 Potential performance improvement for Arrays. A reserve() method is now
available, which helps with constant resizes of arrays with a large number
of push_backs.  For now, only the ROM launcher and debugger disassembly
really needs it.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2442 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2012-04-15 21:13:01 +00:00
stephena c95d5f804d Updated all files to copyright 2012. Happy New Year to anyone reading
these logs!

Moved TODO and Credits info directly to the webpage, where it will hopefully
be easier to maintain.

Fixed 'crackling' sound when loading a new ROM, introduced with the 3.5
sound restructuring.  It looks like stale data was being loaded by the
sound processing callback.  As well, moved the computation of certain
division variables from the sound callback to the framerate re-calculator
(where it's recomputed 1/5 of the time or less).

Updated AboutDialog with info about Stella DonationWare status, and active
members of Stella development.

Updated OSX in-app HTML documentation about Stella DonationWare status.

Bumped version # to 3.5.1_svn, and the process starts again.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2318 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-12-31 21:56:36 +00:00
stephena 52cf172661 Reverted FSNode getPath() modifications introduced in Stella 3.4.1, since it causes massive performance regressions in Windows XP.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2292 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-12-22 21:29:24 +00:00
stephena 40a66edee4 Cleaned up usage of sprintf in the codebase, changing to
BSPF_snprintf instead, which should eliminate any potential
buffer overflows.  Also moved from static arrays to stringstreams
where appropriate to make things safer and more C++ like.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2263 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-07-13 14:13:49 +00:00
stephena 377765f565 Removed all traces of the OpenGL TV filters. This is due to be replaced by
Blargg NTSC filtering, but we need to revert to base functionality first.

Cleaned up the debugger API wrt converting values from integers to strings
(and vice-versa).  There is now only one method for each of these functions,
rather than several ways to do so.  In the process, convert from unsafe
sprintf functions into snprintf (eliminate potential buffer overflows).

The debugger 'print' command now indicates if any assigned label represents
a read-only location (R), a write-only location (W), or a read/write location
(R/W).

Fixed bug in DataGridWidgets (used in debugger ROM and CPU registers), where
scrolling the mouse-wheel would cause a segfault.  Scrolling the mousewheel
now changes these items as expected.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2260 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-07-03 17:08:42 +00:00
stephena df71aa03d1 Cleaned up the FilesystemNode API a little, removing some redundant code.
The debugger 'saverom' command now uses absolute filenames, and by default
will save data in the users home directory if a proper path isn't included
in the filename.  This fixes a major bug where ROMs were being saved to
the current or application directory, which in some cases were invalid
locations.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2250 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-06-09 14:00:30 +00:00
stephena 4e6d4cb1c6 Cleaned up some inlines that weren't needed.
Updated documentation with info about 2600-daptor, including
usage and its creator.  Also included more in-depth explanation
for the various controller types.

Errors from the Thumb ARM emulation code are now caught as exceptions,
and thrown to the parent class instead of calling exit() and simply
crashing Stella.  For now, the messages are simply printed and
emulation continues.  This will be expanded to show a detailed crash
log in the debugger, and offer the option to exit the ROM.

Removed most of the menus from the OSX port.  They weren't being
maintained anyway, and most of them didn't work.  I've modelled this
on the way other cross-platform OSX programs work (notably, ScummVM).
Basically, there are menus for exit and help, but otherwise you
should use the menuing system in the application itself.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2231 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-05-10 15:04:19 +00:00