This code was originally there for software mode, where it was very
expensive to update pixels, so it was done as little as possible.
However, it was also a bit of a hack, and sometimes interfered with
double-buffered hardware rendering. So now showing the various UI's
will burn slightly more CPU, but will be guaranteed to work under
all conditions.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2934 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
This sometimes results in a window resize being visible, but better that than
an outright crash. This issue has been reported to the SDL mailing list,
so this fix may be backed out in the future.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2927 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
and (simulated) fullscreen mode.
Fullscreen mode is now simulated in that it creates a window that matches
what would appear in fullscreen. The next thing to do is actually have
the backend create this fullscreen mode correctly.
Changed 'gl_fsscale' to 'tia.fsfill' to more properly indicate what the
option does.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2894 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
rectangles. Now that the underlying rendering is hardware accelerated,
this API more closely matches what is actually occurring. As well, it
makes things easier comprehend: 'src' rect is the actual surface data,
and 'dst' rect is its final output onscreen (scaling, etc being applied).
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2883 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
to more clearly indicate its intent. It looks like
FBSurface::drawSurface() is essentially the same thing, and will
probably be removed.
Fixed header issue in OSX code, that wasn't detected until moving
to Xcode 5.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2881 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
things again :) Work continues on refactoring the FBSurface code, and
moving thing out of the xxxSDL classes that don't really have anything
to do with SDL. This will also make it easier to port Stella to other
graphical toolkits.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2878 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
conversion.
There are changes all over the FrameBuffer classes. Still TODO is
TIA resizing in windowed mode, and all fullscreen modes. The infrastructure
is close to completion, and it should be pretty easy to get the framebuffer
stuff done in the next week or so.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2876 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
renderer backends (in SDL). This allows to select software mode (not
recommended) or Direct3D/OpenGL in Windows.
The app icon is now loaded in Windows.
Cleaned up the VideoDialog UI, removing references to double-buffering
and OpenGL-specific settings.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2867 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
options have changed names. In particular, all tia-related options
now start with 'tia.'. This includes most of the old options that
started with 'gl_'.
Changed the names of all tv-effects options from starting with 'tv_'
to 'tv.', to match the name changes elsewhere.
Some work on the documentation to reflect the latest changes.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2858 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
than before.
Fixed compile issue for joystick support (thanks to email from D. Church).
Joystick support still isn't tested, so no guarantees it will work.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2857 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
into FrameBufferSDL2 only. This will make conversion to actual SDL2 code much
easier, since it won't be touching any of the core emulation code in src/emucore.
Next TODO is something similar for EventHandler (which uses SDL heavily and is
too tied to a core class).
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2846 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
have been changed to 'SDL2'. From this point on, the OpenGL-specific
code will be removed, and replaced by SDL2-specific hardware-accelerated
code.
Cleaned up (mostly) the API of FrameBuffer vs FrameBufferSDL2. Since the
FrameBuffer class is an emucore object, it should have no knowledge of SDL,
or any particular rendering toolkit for that matter (just in case we want
to move to SDL3 eventually :) ).
At this point, all checks for OpenGL have been removed, so if you don't
have it on your system, Stella will fail to compile and/or run.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2832 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
centering has been removed (SDL2 provides this natively).
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2831 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
debugger. In the process, I had to spend several days extending
the UI/dialog class to actually contain multiple tabs. This was
harder than expected, and it still isn't quite finished. In many
ways, we're beginning to reach the limits of the current code; it
was never designed for a full-fledged, graphically rich UI.
For now the tab is empty, but eventually it will contain general
info about the ROM bankswitch type (size, virtual layout, etc),
but also cart-specific info, including the ability to change
banks, which can be vary greatly among the different schemes.
Eventually, it may even allow to see/modify very cart-specific
info (like display RAM in DPC, etc).
Better handle errors in opening the serial port (AtariVox support)
for Windows and OSX.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2678 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
- 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
make another pass at getting rid of raw pointers. As I've come
to realize over the years (and in particular with reading the C++11
standard), raw pointers are evil and error-prone. So this fixes
some of them at least.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2438 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
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
mean 'hardware-accelerated, double-buffered'. This distinction
is important, since eventually such a mode won't necessarily be
OpenGL-backed (it might be Direct3D, OpenGLES, etc).
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2312 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
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
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
- it doesn't have a hotkey any more
- it is changed in the "Input Settings' UI, not in 'Video Settings'
- it only has meaning while in emulation mode
- it is enabled by default
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2245 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