of FBSurfaces should belong solely to FrameBuffer, so that different
parts of the code don't try to delete what they don't own.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1561 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Basically, all textures/surfaces need to be reloaded each time the GL
context changes (which seems to be more often under OSX than on other
systems). This new code takes care of that.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1560 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
textures in OSX. It seems the textures have to be completely reloaded
after the window changes size, even if it's still large enough to hold
the previous textures. I assume the GL context is being reset each
time SDL_SetVideoMode is called (although this doesn't happen in Linux
or Win32).
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1559 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Can you believe it was because of ONE #$&#%&** line of code!
Still TODO, a general cleanup of the positioning code (ie, switching
from windowed to fullscreen & vice-versa) used the 'old' coordinates,
so things often aren't centered.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1557 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Fixed crash when displaying 'popup' messages with OpenGL.
Changed OpenGL internal format to be the same as OSX. Based on my
experimentation and research, this is the fastest format independent
of the platform/operating system.
Updated TODO marking the reload ROM listing functionality as being
complete.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1556 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
some time; I guess it's time to make it public. I expect to add many
of the top items for the next release (at this point hopefully in
January 2009).
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1554 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Partial fixes to F8 bankswitching code, also adding hardcoded support
for HES Challenge/Surfers Paradise double cart (the lower bank was
never accessible). More work is required in this area.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1552 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
the UI stuff, but at least emulation mode is now working. But for
some strange reason, starting a ROM from the commandline gives a blank
screen, while it works fine from the ROM launcher.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1549 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
surfaces are still separate and blitted separately, but the actual
screen updates are now done all at once, at the end of the frame (as in
the previous code). This makes things a little faster, and eliminates
an annoying flicker because of SDL_UpdateRect being called at different
times.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1547 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
that randomization was only done once per game invocation, and not each
time Device::reset() was called (which according to its definition is
when it should be done). This has the side-effect of fixing A. Davies
notBoulderdash ROM, which didn't work if display-type was set to
auto-detect.
Some fixes for dynamic menus generated by PopUpWidget and its
associated dialog/surfaces.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1546 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Those widgets now take two items per entry; the string to display, and
the one to use (in essence a key/value pair). This really shortens the
code in quite a few places.
TIA graphical filters are now selectable from the UI, and correctly change
video mode (in TIA mode).
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1545 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
fullscreen resolutions will be automatically chosen based on the required
size for the window. The image will be centered and keep the same aspect
ratio, however, so operation will still work correctly on widescreen
monitors. 'Auto' will be the new default. Otherwise, if a specific
resolution is requested, Stella will try to accomodate it *only* if it fits
into the resolution; otherwise the smallest resolution that fits will be
used.
Removed 'zoom_ui' and 'zoom_tia'. The UI can now only be at 1x mode.
Aded 'tia_filter' commandline argument, which specifies to the filter
to use when rendering the tia image. For now, these accept 'zoom1x',
'zoom2x'..., up to 'zoom10x', and duplicate previous behaviour. Eventually,
Scalexx and HQxx filters may be added. Still TODO is add this to the UI.
First pass at making the standard build use a minimum of zoom2x for the TIA,
so the UI can be larger and use a better looking font. There's still work
to do in this area, especially for those ports with limited hardware that
support zoom1x only.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1544 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
run at all, since I haven't even started on the OpenGL stuff yet.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1543 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
and OpenGL mode (windowed and fullscreen) isn't working at all.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1542 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
onscreen, and don't cause a segfault, but there's still a positioning
problem when toggling fullscreen/windowed modes and when the base surface
has 'unusable' area (ie, an 800x600 window centered in a 1024x768 screen).
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1540 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
stats and general messages are now shown correctly. ContextMenu and
PopUpWidget are now drawn correctly, and take image 'centering' into
account. Fixed many 'offset' bugs in rendering surfaces. Fixed
long-standing issue where pressing Alt-Enter to toggle fullscreen mode
actually passed the Enter to the underlying dialog (it's now properly
swallowed). Probably many more items I'm forgetting ...
Still TODO is work on other dialogs that aren't centered by default
(InputTextDialog, etc). My plan is to stabilize these changes and then
fix OpenGL mode, and only after I've achieved parity with 2.6.1 to
actually make use of the new infrastructure (larger fonts, etc).
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1539 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
certain number. This is similar to how the old PopUpDialog worked.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1538 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
in-game dialogs are now rendered into separate surfaces, and then layered
onto the SDL screen when necessary. The biggest advantage of this is
now each 'window' is separate, and won't be affected by the scaling or
filtering of other windows. For example, zooming the TIA image no longer
changes the size of UI text overlaid on the TIA. Similarly, eventually
graphical filters will be added, and filters applied to the TIA won't
affect the UI.
There's too many changes to list, so for now I'll list what doesn't work:
* OpenGL mode (don't even try it)
* Several popup dialogs in the debugger
* RomInfo stuff is completely broken
* Scanline count and FrameBuffer 'messages' aren't shown
* Larger fonts - fonts are no longer scaled; we have to use larger ones,
and update the UI accordingly
* Probably a lot of other stuff I forgot to mention
This is a huge undertaking, similar in scale to when the UI was first
added in 2.0 release. So it might take some time for this to stabilize ...
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1537 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
doesn't happen very often (which is why I didn't notice it before), but
at least now if it *does* happen, an error message will be printed
instead of just segfaulting.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1536 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Further tweaking to the RIOT timer values. I reverted to the z26
'0x40000' number, even though I'm not entirely clear why it's being
used. Without it, several PAL ROMs fail in an infinite loop of
reading from INTIM and checking for zero. I really hope that's the
last of the RIOT stuff, since I've been looking at it for the past
two months (the AVox and SaveKey issues started there as well).
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1531 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Removed scanline autodetection from the Console startup code. It makes
more sense to just assume the Console is either NTSC or PAL, and let the
TIA auto-adjust the framerate if necessary.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1530 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
to do between processing frames, and can be set to 'sleep' or 'busy'.
Sleep emulates previous Stella behaviour, releasing the CPU whenever
possible (at the expense of graphical tearing on some systems, unless
gl_vsync is enabled). Busy emulates the busy-wait behaviour of z26,
using all available CPU time but sometimes eliminating (or at least
reducing) graphical tearing.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1526 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
scanlines. Previously, this was only done for the first few frames.
However, that approach won't work for ROMs that change the number of
scanlines later in their run. Now, the framerate is automatically
re-calculated at regular intervals within the TIA.
Reworked 'framerate' argument to override auto-frame calculation when
it contains a non-zero value, and use the given framerate instead.
Setting it to zero resumes auto-frame calculation.
Re-activated framerate option in the UI. This can be changed while
the ROM is running, updates will be almost immediate.
Upped the release date, since more testing is required.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1524 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
the one in z26 with the '-n' option. This is activated with the new
'-stats' commandline argument as well as dynamically during emulation
with the 'Alt-l' key combo.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1521 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
in auto-detect mode. This fixes an issue with the latest JunoFirst beta,
which had sound skipping because it has 266 scanlines but ran at 60fps
(when it should have been ~59.09 fps or so).
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1520 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
SaveKey and EEPROM are 'smart' controllers, making use of cycle counts
for timing. All such devices may periodically need their counters reset
to prevent overflow, and this was missing from the aforementioned
controllers.
Removed some debugging code from AtariVox class.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1518 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
addresses are now determined over the entire address map (taking
into account mirroring), not just the ones defined in the internal
symbol map.
Fixed issue with mirrored TIA write addresses $40; they were actually
being defined as at $30.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1517 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Fixed issue where some F6 carts were being autodetected as E7.
Updated RIOT timer behaviour yet again; Summer Games was broken. I think
I've finally got it now.
Made random number generation actually generate random numbers, by seeding
the generator based on the current 'ticks'.
Updated properties for several AtariVox ROMs.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1515 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba