Basically, removed determination of whether we're in 2600 or 7800 mode
from the hot path, and moved it to a method that is called only when
it changes (currently that method doesn't seem to be called at all, since
it seems like 'console' setting cannot be changed dynamically).
- "dev.console" selection move to developer settings
- random startup bank implemented for some (tested!) bank switchings
- Options dialog button added in debugger
- Toggle this with Alt-r. When enabled, state is saved each frame to memory (up to 100 slots)
- Upon entering the debugger, rewind is immediately available, allowing to rewind (for example) back past a breakpoint
- Testing is definitely required.
- changed from templates back to inheritance (sorry DirtyHairy :))
- added 'tsense' commandline argument and associated UI
- updated docs and screenshots for new functionality
- An extraneous TAB key event was being generated
- This is possibly an SDL bug in Linux only; it doesn't happen on other systems
- I've contacted the SDL mailing list for more info, so this code may be temporary
Clang 3.8, gcc 5, Visual Studio 2017 and Xcode 8 are now the minimum
supported compilers, and they all support C++14, so we may as well use it.
- Change all make_ptr to make_unique
- Change iterator begin(), end(), etc to const versions where appropriate
- Remove UniquePtr, since C++14 supports it natively
This is enabled in the UI or through the 'tv.phosphor' commandline
argument. Note that what was previously 'tv.phosphor' (for setting
the blend level) is now 'tv.phosblend'.
Updated documentation in various places.
Added new 'tv.phosphor' commandline argument to accomplish the above,
and associated UI item in Video Settings.
Updated docs for 'tv.phosphor' and 'tia.debugcolors'. More work is
needed on this, since I need to add screenshots for this new functionality.
- Updated default phosphor blend to '30'.
- Added shortcut keys Alt-i and Alt-o to decrease/increase phosphor
blend mode dynamically, while a ROM is running.
- Made range of blending 0 - 100.
it drew in that area was sometimes garbage, and with the new core it
draws nothing at all (which is the correct behaviour). Hence the
feature is obsolete.
that approach is a bad idea (and using Stella as example code), so it doesn't
make sense to not do something as it's being taught; the correct way.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@3308 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
"`" key (or equivalent) was being shown in the prompt widget.
Added method stubs for clipboard cut/copy/paste/select. Actually
implementing them will come next.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@3287 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
To anyone reading this, Merry (belated) Christmas and Happy New Year!
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@3239 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
of these aren't actually bugs per-se, but are to follow good programming
practices.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@3234 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Added shortcut key to toggle TV scanline jittering, and have it default
to off. I'd really like to enable it again eventually, or perhaps use some
of the code in the case where scanline jumps are *really* large (since it
seems to emulate the output for every TV I've ever seen).
Bumped version #.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@3221 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
certain other events. A small change to be sure, but the name more
appropriately describes what the event does.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@3181 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
For those reading these logs, I hope to get back to Stella development soon.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@3166 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
on every call to FrameBuffer::update(). This will the same CPU usage for TIA mode,
and a slight increase CPU usage for launcher and debugger modes. The code to do
this was just too fragile, and not worth the extra effort.
This fixes several rendering issues, such as garbage in fullscreen mode in Linux
when using Intel GPU, triple-buffering issues in Windows, etc.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@3148 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
completely remove (currently unplugged) sticks from it.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@3115 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
it is on all my test systems with 4 different controllers. We still
need bugtesters for this ...
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@3112 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
and joysticks. It's now easier to read/follow, and has less code.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@3110 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Renamed 'Vlist' to 'VarList', since it's more descriptive.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@3092 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Eventually this may lead to proper movie output. Thanks to SvOlli
for the code.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@3087 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
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
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
versa (I guess it's useful to test under multiple compilers).
Bumped version # for next test release.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@3008 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
having to know about TIA, Properties, etc. Basically, it now saves
a snapshot of either the FrameBuffer or an FBSurface, and adds
text comments passed into it. The contents of the surface and comments
are no longer calculated (or known) by the PNG code.
This is in preparation for saving FBSurface from anywhere, which will
help in the debugger for taking snapshots.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2928 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
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
to SDL mod.
Added a hack/fix for Alt-key combos being printed in the debugger
prompt (ie, when stepping though a frame with Alt-f, the 'f' character
was shown in the prompt). This will be fixed when PromptWidget
becomes an EditableWidget (not for the 4.0 release).
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2922 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
which I though a just a one or two-liner equivalent to glReadPixels.
Turns out that SDL2 doesn't return 24-bit RGB data (only 16 or 32-bit),
so the PNGLibrary had to massage the data. In the process, converted
the PNG saving functions to actually use PNG library functions, which
greatly simplified converting packing from 32 -> 24-bit. Historically,
the PNG save functions were written before libpng was a requirement,
so they were hand-rolled. Once libpng was integrated into the codebase,
it didn't make much sense to not use it anymore.
So an expected two-line code fix became this commit ...
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2919 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
It looks like this bug has been present for a long time.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2917 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
The EventHandler now queries EventHandlerSDL2 for names of keys
instead of keeping a list itself.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2916 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
the old way mixed both single-key events and Unicode input into one
method, and the new way separates them (using a new handleText method).
Currently it seems to be working fine in the ROM launcher (yay!, I
can now quickly jump to ROMs by name again). There are still some
issues in the debugger, which I'll work on next.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2913 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Changed pointers to references in c'tor calls, making things a little safer.
Removed FBSurfaceTIA, since it was tied too closely to SDL itself. Added a
class called TIASurface that is functionally very similar, but is more generic
and accessible by the FrameBuffer directly. Eventually, this class will take
responsibility for all things related to rendering the TIA image (Blargg TV
effects, phosphor mode, etc).
TIA rendering is currently borked; fixes will follow ...
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2889 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Rearranged some of the desktop size code, to be more consistent with the
new API.
Beginning to remove the old assumptions that a smaller screen than 640x480
could be used. In the 4.0 release, the smallest (internal) screen
supported will actually be 640x480, and if the real desktop can't display
it, then it will be scaled down. This is one of the nice benefits of
killing pure software rendering support, and letting the hardware just
draw the screen as it likes.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2877 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
characters working, so the UI can be used.
SDL Window events are now sent to the EventHandler core. For now, only
the window expose event is handled (redraws window if it's been hidden).
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2872 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
to SDL2. For now, there are many things broken, namely keyboard handling
and fullscreen modes. But the launcher does show up, allows to start a
game and enter/exit the debugger, etc.
The code will only compile on Linux for now, and sometimes maybe not even
then. Expect breakage on a regular basis over the next month or so.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2854 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
build files (sorry, there's no PPC support for Stella 4.0 using
SDL2).
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2851 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
SDL-specific code into its own EventHandlerSDL2 class. This is part
of a larger reorganization of the codebase, to completely remove
SDL-specific code from src/emucore, and make it easier to port to SDL2.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2850 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
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
extended abilities (see changelog and docs for more info).
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2783 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
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
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
converting StringMap to VariantList. In the process, some of the
code is much cleaner, and the Variant infrastructure allows
work to continue on a more full-featured ContextMenu.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2732 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
the Settings class to use Variant. Still TODO is modify various UI elements
that currently accept StringMap to use Variant instead.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2726 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
disables normal keyboard input when in the debugger. This fixes issues
where commands/shortcut keys typed in the debugger would be interpreted
as actual CompuMate input.
For now, in-debugger key processing is completely disabled in such a
case. Eventually, we should probably add a virtual keyboard to the
CM RIOT area, and have it send its data directly to the CM handler.
Bumped version # slightly. I hope to get the next release ready to
go in a few weeks.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2705 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
it's still partially broken).
Converted many methods to take FSNode objects instead of raw string
filenames. This is necessary since file reading will eventually
be abstracted into the FSNode class directly.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2605 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
a new line as part of the message.
Updates for impending 3.7.5 release.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2572 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
of the RIOT chip. This flag is related to the edge-detect circuitry, and
set on active transition of PA7 pin, cleared upon reading from TIMINT (but
only *after* its result is included in the TIMINT read).
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2553 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
display modes wrt both palette and display properties (# of scanlines,
size of window, etc). This means you can now dynamically switch
between these modes at runtime.
Also added 'Shift-Control-f', which cycles through the modes in
reverse order.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2527 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
RAM to do so, which I agonized over for about a week, but I feel it's
a fairly good tradeoff for the features we get. Eventually, I may come
up with a more accurate phosphor mode which eliminates this approach
entirely.
Reverted OpenGL framebuffer to 32-bit colour mode. We're using Blargg
effects, so we may as well get the full fidelity out of it. Besides,
testing has shown that there's not much speed difference between 16
and 32 bit modes, making me think that 16-bit is probably be swizzled
to 32-bit anyway.
Bumped release date to June 1, version to rc1.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2501 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
- Alt-9 / Shift-Alt-9 selects (increases/decreases) between
the various adjustables
- Alt-0 / Shift-Alt-0 increases/decreases the actual values for
the previously selected adjustable
Cleaned up the API a little, moving some stuff from Console to
FrameBuffer class. I think we're due for a pretty major
reorganization of parts of the codebase very soon.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2473 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
the Video Settings UI. Still TODO is add key shortcuts for the various
adjustable TV effects (contrast, brightness, etc).
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2468 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
'tv_scaninter' option. Added Alt-8 keypress to toggle this; still
TODO is add a UI item for it.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2462 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
left to do, but the basic functionality is now there. Alt 1 - Alt 6
selects among TV modes as follows: off, composite, svideo, rgb, bad and
custom. The latter is just composite at this point; there's no code to
actually change specific adjustables yet. Alt 7/Shift-Alt 7 increases/
decreases scanline blend intensity (20% - 100%).
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2456 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
instead of having different keys to turn them on and off separately.
This brings the functionality in line with the rest of the objects/
collision key-combos, which were also toggle-only.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2449 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
SDL keyboard events and the static GetKeyState() method doesn't always
work as you'd expect.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2447 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
fixing bugs too numerous to mention. The end result is that using
Control-0 to switch between mouse modes is much more understandable.
Updated properties database for Telepathy ROM, which now uses the
MindLink controller. Also updated Astroblast ROMs to use paddles
by default.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2444 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
rendering code. This is just infrastructure for now. Pressing
Alt-f will toggle the filtering, but there's no output yet.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2430 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
normal control functions (ie, pressing Ctrl-q will not quit, but send
this combo directly to CompuMate).
Mapped Func-Space to the Backspace key for CompuMate keyboard.
Func-space (which is actually Ctrl-space is still supported).
Updated documentation for CompuMate changes and system requirements.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2418 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
events generated by one device would never receive the 'turn off'
event when it was swapped out.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2407 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
for analog pins 4 and 9 was swapped.
Renamed various 'Fire' button events to prevent the above problem
from happening again.
In BoosterGrip games, the right mouse button now sends the 'booster'
event, allowing one to play Omega Race fully with the mouse.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2405 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
'saport'. This takes the values 'lr' or 'rl', corresponding to left/right
and right/left.
Added ability to dynamically swap the Stelladaptor/2600-daptor ports
with the 'Control-1' key.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2401 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
dialog.
Updated all paddle and driving controller games with relevant axis info.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2374 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Checking in first pass at revamping the 'mcontrol' functionality. The idea is
that the mouse will be able to emulate different controllers on each of its
axes. For now, the left mouse button is tied to the X-axis, and the right to
the Y-axis. These modes will be saved per-ROM, meaning that the mapping can
be different for each ROM (it is saved as part of the ROM properties). Only
the paddles and driving controllers will allow this, since they're the only
controllers where a single axis makes sense.
Switching between mouse modes will be done with Control-0 (the Control-1..3
keys have been removed). This will allow switching all possible combinations
(left controller, right controller, per-ROM setting, etc).
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2366 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
otherwise turn it off (according to the SDL documentation, there's a
small performance hit when it's turned on).
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2357 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
generic than SDL, but less generic than simply using int's for everything.
This will help once we start porting to SDL2, which has an updated keycode
handling system. The plan is that the internal core keyboard stuff is now
insulated from any further changes in SDL.
This also allows eventually adding support for CompuMate controller,
which needs access to keycode names in a generic way.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2356 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Cleaned up the Event object in the EventHander, turning
it into a reference instead of a pointer (pointers are evil).
Minor speed optimization to Keyboard class; the update method
isn't required, since all work is done on the initial write().
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2350 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
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
separately to different paddles.
Updated documentation for impending 3.5 release.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2296 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
when it isn't needed. According to SDL this shouldn't be necessary, but
some combinations of video modes and audio hardware cause sound to stop
working if it's repeatedly opened and closed. So we have to keep it open.
Always attempt to use 2 channels (aka stereo) when opening the SDL audio
device. This is now required, since ROMs can request mono or stereo mode,
and the sound system can no longer be closed and re-opened with the
desired settings. So we need to always use 2 channels to accommodate
when it might be needed. This actually more closely emulates the 2600,
which does have two audio channels. The 'mono' vs 'stereo' ROM property
basically controls whether these channels are exposed (ie, does the
virtual console have two-channel audio hardware installed). In that sense,
these settings control how the channels are mixed.
Updated some settings to have more reasonable defaults.
Added acknowledgement for people that have donated hardware to help with
development.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2291 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
They were being saved correctly for all sticks, but only loaded for
the first one.
Removed some redundant settings related to TV effects stuff.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2289 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
have actually been loaded during the program run. Otherwise,
it will erase previous mappings.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2286 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
saved per device, so that unplugging and replugging a joystick won't cause
the previous mappings to be lost.
All attributes of a joystick (ie, number of sticks, number of axes, buttons,
hats on each stick) are dynamic, meaning that hardcoded values are no
longer used, making the handling more robust.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2285 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Fixed bug in handling analog axes with jitter; they were overriding events from
digital, hat and keyboard input.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2251 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
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
several cases (fixes problems when moving the mouse too fast or
when changing between video modes). Added extra signature to the
bankswitch autodetection for the 4A50 scheme.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2249 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This basically shows a messagebox as soon as the debugger starts,
describing the error and offering the choice to continue debugging
or exiting the ROM entirely.
The DPC+ code now catches fatal errors from the Thumb ARM
emulation code and shows it as a fatal error in the debugger.
This means you no longer need to look at the commandline for
this output, and you immediately know that something has
gone wrong.
Added 'exitrom' debugger parser command, which completely exits
from the debugger *and* the ROM, going back to the ROM launcher.
Cleaned up the API a little, rearranging some classes and
adding references instead of pointers. More work to be done
in this area.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2234 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
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
which are specialized paddles classes that invert the axis, direction,
and axis+direction, respectively. Updated all applicable ROMs in the
properties database.
Cleaned up the menus in the OSX port; some of them weren't even tied
to anything. I'm seriously considering removing them all, except for
the Help and Quit items.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2230 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
- mouse can now emulate joystick, booster-grip and driving controllers
- digital and mouse sensitivity for paddles can now be tweaked
separately, and have a greater range
- the mouse now correctly honours its controller setting, and only
controls a device on one one port (not both at the same time)
Added support for 2600-daptor device. Credit for creator of device
is forthcoming. This device is basically an updated Stelladaptor,
with improved handling for paddle data.
Grabmouse functionality is no longer user-definable; the mouse is
always grabbed while playing a game, and released otherwise.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2228 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
the various header files. Basically, I'm following advice from
Effective C++, and including only what's absolutely necessary. For
definitions that don't need to be included, the designation 'class xxx'
is used instead. This could potentially lead to faster compile times.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2155 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Basically, directories are now guaranteed to always end in the path
separator. Ensuring this makes certain sections of code work faster,
and guaranteeing it allows higher layers of code to not worry about it.
Added 'cfgdir' commandline argument, to specify the default directory
for Distella-like Stella-compatible config files.
Implemented 'loadconfig' debugger prompt command. It's currently
working great with several test config files provided by Omega of
AtariAge.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2125 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
'Virtual Devs' tab to 'Devices & Ports'. Updated documentation and
snapshots for this change.
Added Halo 2600 ROM info to internal properties database.
Increased default setting for 'joydeadzone' from 0 to 13. This means
the default deadzone is somewhere around half the axis range (~16500).
Fixed behaviour of hat events; events weren't actually being turned off
until the stick was centered.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2108 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
is update the documentation for this.
Fixed bug reported by Buzbard from AtariAge concerning very large images
in the RomInfoWidget being clipped too small.
Reworked 'center window' functionality. Using the SDL_VIDEO_CENTERED
environment variable was always a hack, and a bug was introduced in X11
OpenGL mode in version 1.2.14. However, since SDL is now in maintenance
mode and won't be receiving any further updates, we have to bypass it
entirely. Added infrastructure for OSystem to center the application
window. For now, only Linux X11 mode is supported. Still TODO is add
support for Windows. OSX was never supported anyway. This also means
that the center window variable no longer requires the application to
be restarted.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2091 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
present, and it properly loads and presents events from settings.
Still TODO is implement saveConfig(), to send the new events to EventHandler.
Modified ContextMenu/PopUpWidget to honour the 'mwheel' setting when
scrolling with the mouse wheel (previously, it always scrolled at 1 line
at a time).
Updated OSX project files for recent ComboDialog addition.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2090 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
1) Added a 'Reset' button to the UI, which resets (to defaults)
the currently selected item. This is more fine-grained than the actual
'Defaults' button, which resets *all* events.
2) Rearranged some buttons and resized UI. There is now a main 'Defaults'
button on the bottom of the dialog, which applies to the currently selected
tab. This also allows to set defaults for Virtual Devs, which didn't have
such functionality previously.
3) Added a 'Combo' button to the Emulation events tab. It doesn't do
anything yet, but eventually will allow to assign events to the 'combo'
events.
ContextMenu/PopupWidget now supports the scroll button on a mouse when
in scroll mode.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2084 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
window mode. Using modes smaller that 640x480 should now work in
all cases when using the 'maxres' commandline argument. Also, the
lower limit of 320x240 is now strictly enforced in all cases.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2075 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
are multiple normal events that are called in sequence. The
infrastructure is in place to use these events, and they're
loaded/saved in the 'combomap' commandline argument. Still
TODO is add a UI to edit the events (manually editing the
config file is really tiresome).
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2074 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
the UI.
Modified the ROM launcher to display a messagebox when running Stella for
the first time (which currently means when the 'romdir' hasn't been set).
This messagebox suggests setting the default ROM directory, and if the
user clicks on 'OK', only then is the ROM directory file browser
displayed.
Reworked some of the event handling methods in EventHandler to save
function calls on every event.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2071 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This fixes a bug in exiting pause mode, and 'remembering' the
events that were set previously.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2065 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
axes. It shouldn't be nearly as sensitive now.
Cleaned up handling of joystick hats, and fixed continuous events
(so that holding down a hat now sends continuous events until the
hat is centered again).
Fixed bug in prune_snapshots script; it didn't work with a snapshot
directory name containing a space.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2062 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
when sending axis events to the DialogContainer (ie, all UI-related stuff).
The UI code was originally written with this in mind, and wasn't designed for
analog input. For normal digital sticks, nothing changes. For analog sticks,
values are clamped to 3 points (max, min, off), and repeated consecutive
events are ignored. This (partially) fixes bugs in the UI, where pressing
an analog stick would cause the current selector to move very fast.
Added repeat mode for joystick hats, similar to joystick axes (so holding
down a hat will cause continuous events to occur. More testing is
required for this, as I don't actually have access to hats right now.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2058 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
so they don't overwrite previously created files. This timestamp is
related to the millisecond that the snapshot was taken, so there's no
chance of overlap (snapshots can only be taken every 1 second / 1000
milliseconds at most). The appended value is an 8-character hex
representation of this 32-bit value.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2055 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
an outputstream. For now, the output simply goes to stdout or stderr,
just like before, but the possibility is now there to redirect to a
file if desired.
Changed 'showinfo' commandline option to accept 'levels' of output
instead of simply being a boolean. The new default is level 1,
in which normal messages are output during a run. Level 2 will
show more detailed info, and may be useful in debugging end-user
problems. There's still more work to do wrt level 2.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2029 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
The file selector in Windows now ignores all items starting with '.', not just the directories '.' and '..'. This is most apparent when using the Windows port and browing Linux shares, which shows many dot files.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2012 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
1) the interval between snapshots can be configured within the
'File Settings' dialog
2) the commandline option is now named 'ssinterval' instead of 'ssdelay'
3) the action is tied to the 'Alt/Cmd-s' key instead of a function key
There's just one more small issue to take care of in the Windows port,
and the next release should be ready.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2011 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
key. This enables automatically taking snapshots every X seconds
while in emulation mode. The interval (in seconds) can be set
with the 'ssdelay' commandline argument.
Some minor cleanups to the EventHandler methods, making them
const when possible.
Added latest DPC+ changes from Spiceware.
Fixed issue with ROMs that run entirely from ZP RAM; no disassembly
was being generated when entering the debugger. For now, this
special case is detected, and the disassembly is generated for
the code that ran before the PC entered ZP RAM space. Eventually,
this will go away when the Distella fully supports disassembling
below 0x1000.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2009 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
'Stephen Anthony' (aka, me) in addition to Brad Mott as copyright
holders for Stella. I think I've been with the project long
enough now (almost 10 years) to justify being specifically mentioned
above and beyond 'the Stella Team'.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2001 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
handling to C++ stringstreams instead of C-style character arrays,
which fixed some segfaults (sprintf is evil).
First pass at tying the number of banks to the disassembly. The idea
is that the startup bank (which is now identified by the cart) always
starts at address at 0xfffc, while the other banks are defined by the
PC at the first time we enter the debugger. This is still a WIP,
since there's no actual checking done yet to see if the current PC
is in the current disassembly.
Added 'ctrlcombo' commandline argument, which completely disables
checking for Control-x key combos. This is useful when playing
2-player games where the 'f', 'r' and 'Control' keys are supposed
to be treated separately. Previously, pressing Control and 'r' or
'f' processed some other action (change framerate, reload rom, etc).
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1964 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
The license file is actually named 'License.txt', not 'license'
The 'Stella Team' has a capital T, not lowercase.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1921 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
get nearly enough attention. This is about to change, since I'm moving
to using it full time at work (still Linux at home though!).
The 'Control' key modifier for OSX is now the actual Control key, just like
on every other platform (instead of Command). The 'Alt' key modifier for
OSX is now the Command key (instead of Shift-Cmd). Maybe in the past it
made sense for this, when keyboards weren't the same between platforms, but
that's no longer the case. And since Stella requires at least OSX 10.4,
everyone using it from this point on probably has newer hardware.
Still TODO is consider a few special keys for OSX (minimize, hide, etc).
Updated documentation for new key combos, as well as the recent build
and debugger improvements.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1906 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
controlled by 'tiafloat', which has now been removed. Now, all
undriven pins take on the last value on the databus. This fixes a bug
in those reads where bit 6 or bits 6 & 7 are also undriven (previously,
these bits would always be zero, and only bits 0-5 were from lastdatabus.
Added new commandline argument 'tiadriven', which defaults to false.
In this default case, relevant bits take on values from the databus.
If true, relevant bits still take on databus values, but some are
randomly driven high as well. This helps to expose bugs when
developers assume the values for undriven/floating bits.
Added 'uimessages' commandline argument and associated UI item. When
disabled, messages which are normally shown in-game are disabled.
Certain messages which indicate a serious error are still shown, however.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1900 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
objects. These actions are tied to the same keys as for toggling the
objects themselves, with the addition of the 'Shift' key. For example,
toggling the P0 object is 'Alt z', and toggling P0 collisions is
'Shift-Alt z'. Note that disabling an object will obviously disable
its collisions as well. Still TODO is work out how these keys map on
OSX; the Shift key is already being used for something else.
Reverted Cosmic Ark 'starfield effect' to match the descriptions
given in the 'Stella 3.0 released' thread on AtariAge. It seems the
system I tested this on has an Svideo mod board that changes the
output from a normal console.
Bumped state file format header, since the TIA internals have changed
again. As well, bumped version # to 3.1_svn.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1884 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
no$26K emulator. Basically, when this is enabled, the COLUP0, COLUP1,
COLUPF and COLUBK registers are locked to hardcoded values. This can
be used to clearly show which registers are drawing which part of the
TIA display. For now, the colours are locked as they're shared on
a real system (so P0 and M0 are locked to the same colour). Future
versions may separate these shared registers for even more clarity.
This functionality is toggled with the 'Alt-Comma' key combo.
Updated the state handler to reject loading state files older than
this version, since the TIA internals have changed. This will be
done each time the TIA code changes from this point on.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1856 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
mapped to Backspace, and is used in the ROM launcher and various
BrowserWidgets. The event can be remapped if desired. When I'm
testing Stella, I tend to use the keyboard almost exclusively, and
it was getting a little tiring to reach for the mouse each time I
wanted to change directories.
Bumped version number.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1836 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
problems with integer overflow, which could sometimes cause Stella to
sleep for long periods of time. For those who are interested, the
problem was that SDL_GetTicks() wraps every 49 days (32-bit int
overflow), but since OSystem::getTicks() provides info in microseconds,
it multiplied the value by 1000. This caused wraparound in 49/1000
days, or 70.56 minutes. This almost exactly matches the reports on
AtariAge of 'lockups' occuring every 71 minutes or so. It also
explains why attaching to Stella with GDB and bypassing the delay
allows the program to continue (as reported by another bugtester).
Added signature to detect UA bankswitching for Gingerbread Man ROM.
Bumped version number.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1823 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
more sense, as it isn't a double-negative any more).
Made PropSet::getMD5() more explicitly return a boolean indicating if the
properties were found, vs. having a CartName of 'Untitled' indicating that
it wasn't found.
The file being used by Stella in multi-file ZIP archive is now shown in
the window title, vs. showing the name of the ZIP file itself. Related
to this, a file with an extension of 'rom' is now valid inside ZIP
archives.
Updated documentation for bankswitch types, more clearly indicating which
ones support autodetection and the debugger.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1775 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
the ones that bankswitch in RAM, since I don't know what should happen there.
Added 'exitlauncher' commandline argument, which specifies the functionality
of the 'Exit to launcher' action; should exiting a game actually go back to
the launcher, or exit the program entirely. Also added a UI item in UIDialog
for this.
Reworked the fullscreen/windowed handling in FrameBuffer, simplifying the
logic for determining whether the SDL surface is actually in fullscreen
or not.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1752 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba