Commit Graph

1728 Commits

Author SHA1 Message Date
stephena 5b75962511 Fixed some missing includes as reported by M. Lanctot.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1550 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2008-08-25 23:22:22 +00:00
stephena dbc36a32e2 First pass at fixing OpenGL mode. There are still several issues with
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
2008-08-05 12:54:47 +00:00
stephena 6ba918320a A few minor API fixes, and a fix for the '-pedantic' argument in GCC.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1548 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2008-08-04 20:12:23 +00:00
stephena 54b5b79414 Backtracked a little on the new software surfaces rendering code. The
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
2008-08-04 11:56:12 +00:00
stephena 60da49f3ef Fixed issue with randomizing RAM for M6532 and various carts. It seems
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
2008-08-01 12:16:00 +00:00
stephena a661d6b804 Some restructuring and cleanup of PopUpWidget/ContextMenu functionality.
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
2008-07-25 12:41:41 +00:00
stephena b1ac5bd951 Reworked 'fullres' argument to also accept the 'auto' option. In this case,
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
2008-07-22 14:54:39 +00:00
stephena 4a7f31b0dc Updated OSX project files for recent build changes. The OSX port doesn't
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
2008-07-15 09:59:26 +00:00
stephena 04d8449398 Some changes to VideoMode handling. Fullscreen mode isn't working yet,
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
2008-07-04 14:27:17 +00:00
stephena 31447d9a6e Some minor fixes for the Win32 build.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1541 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2008-06-20 12:19:42 +00:00
stephena 604217009c Partial fixes for InputTextDialog issues in the debugger. They now appear
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
2008-06-19 19:15:44 +00:00
stephena 2e2867cb6e Several updates to the new UI rendering infrastructure. Overlaid frame
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
2008-06-19 12:01:31 +00:00
stephena 2bbdcc34d7 Use two columns of entries in ContextMenu if there are more than a
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
2008-06-15 15:44:30 +00:00
stephena 84cd5d1d78 Started huge rework of the FrameBuffer UI. The basic idea is that
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
2008-06-13 13:14:52 +00:00
stephena 340ee7d167 Fixed segfault issues when the SDL video mode cannot be created. This
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
2008-05-30 19:07:55 +00:00
stephena 66ab71a5c6 A few GCC 4.3 fixes.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1535 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2008-05-30 12:06:17 +00:00
stephena b454085e8e Bumped version number for post 2.6.1 release.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1534 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2008-05-23 13:03:51 +00:00
stephena fa38c0c26d A few properties updates that I missed in 2.6.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1532 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2008-05-22 19:34:31 +00:00
stephena 37c1f354dd Made TIA auto-frame detection kick in every 32 frames instead of 64.
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
2008-05-22 17:54:54 +00:00
stephena 8d4d5b4563 Hmm, looks like we're still not ready for the 2.6.1 release.
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
2008-05-21 21:36:18 +00:00
stephena 832fab1ee8 Fix for startup sound issues when using 'framestats' mode.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1529 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2008-05-21 21:01:40 +00:00
stephena 63a3946830 I always end up missing one file before the 'last' commit.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1528 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2008-05-21 18:59:51 +00:00
stephena 23f34694cc Final changes for 2.6.1 release.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1527 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2008-05-21 18:48:41 +00:00
stephena 9fc6eff352 Added '-timing' commandline argument, which determines the type of waiting
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
2008-05-21 16:49:07 +00:00
stephena 20dd5c98e9 Fixed crash in OSX. I don't know why it was appearing in OSX only, but
this is the better way to do it anyway.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1525 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2008-05-21 14:50:41 +00:00
stephena bd90840ded Added more sophisticated framerate calculation based on the number of
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
2008-05-21 14:01:31 +00:00
stephena 23d8618db7 Updated OSX project files for 2.6.1 release.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1523 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2008-05-20 17:48:38 +00:00
stephena 2b62f99fb8 Updated various files for the impending 2.6.1 release.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1522 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2008-05-20 14:35:51 +00:00
stephena f12a1a658c Added scanline and framerate counter during emulation mode, similar to
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
2008-05-20 13:42:50 +00:00
stephena bd0393352e Changed framerate timing to be based on the number of scanlines found
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
2008-05-19 21:16:58 +00:00
stephena b270f7f231 Similar to the last commit, added cycle resetting the TrackBall class.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1519 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2008-05-19 03:15:12 +00:00
stephena f35ef466c6 Fixed issue with EEPROM access as reported on AtariAge. The AtariVox,
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
2008-05-19 02:53:58 +00:00
stephena 52db865c0e Further improvements to the EquateList symbol handling. Symbol
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
2008-05-18 20:04:30 +00:00
stephena 0ae02cb0be Made an empty EEPROM default to all $FF.
Fixed bug in commandmenu where console command buttons weren't working.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1516 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2008-05-17 15:16:45 +00:00
stephena a45191dbe3 Well, that didn't take long; we already need a 2.6.1 release.
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
2008-05-16 23:56:31 +00:00
stephena 1d879fa79a Final 2.6 changes for OSX.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1513 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2008-05-16 12:34:38 +00:00
stephena 7ed4ef1b58 A few more BoosterGrip related changes.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1512 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2008-05-16 12:17:23 +00:00
stephena 9d51e63d86 Final changes for the 2.6 release.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1511 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2008-05-16 12:04:35 +00:00
stephena cd184d1c69 Bumped version # for impending 2.6 release, and also for the state file
format (it's broken again since 2.5).


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1510 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2008-05-15 19:10:10 +00:00
stephena 0a00daf111 Minor optimization in the EEPROM emulation code; we only initialize
data when necessary.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1509 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2008-05-15 19:05:09 +00:00
stephena bba25a39d8 Added console switches to debugger RIOT/IO tab. Barring any huge
problems, we'll soon be ready for a new release (after I update the
documentation).


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1508 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2008-05-15 18:59:56 +00:00
stephena ff48c93a02 Added ability to change controller port pins from the POV of the
controller to the RIOT debugger tab.  For now, it's very joystick-
centric, and will remain that way for the next release.  Also, the
states are inverted, in that selecting 'up' for port 0 actually
turns the checkbox *on*.  This is more intuitive from the POV of the
user, but in actual fact behind the scenes the bit is set to 0!

This is all I'm including wrt the controller ports for the next
release.  The dumped INPTx registers will have to wait.

Still TODO is add the console switches to the RIOT tab.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1507 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2008-05-15 15:07:29 +00:00
stephena 865fc88e7c Added timer registers to the debugger RIOT tab, and enabled the changes
to be sent to the debugger core.  SWCHA and SWACNT can be changed,
SWCHB cannot.  The latter will be addressed by a series of labelled
checkboxes that more clearly illustrate the function.

Also, INTIM/TIMINT/TimClks cannot be changed, as it doesn't make sense
to do so (their results depend on other registers; more specifically,
they're calculated, not stored).  You can however change the TIMxxT,
which will consequently change the read-only timer registers.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1506 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2008-05-14 18:04:58 +00:00
stephena 2b07fcab04 Updated RIOT tab in debugger to show values of SWCHA in both write
*and* read mode.  Write mode will allow one to change the value (ie,
poke to SWCHA).  Read mode will not allow change of value, and will
show the contents of the previous write to SWCHA (which isn't always
the same as the peek value, as it's influenced by SWACNT).  This makes
it much easier to see how the AVox/SaveKey code works with these
registers.

Removed SWBCNT from the RIOT tab, since it's read-only and always the
same thing anyway (hard-wired to input).


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1505 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2008-05-13 15:13:17 +00:00
stephena 9fe48afffd Updated OSX project files for recent TrackBall class.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1504 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2008-05-13 11:09:35 +00:00
stephena b43b2d62b8 Updated Visual Studio project file for TrackBall class changes.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1503 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2008-05-12 22:48:20 +00:00
stephena 30ee2804b8 Added support for CX-22, CX-80 and AmigaMouse trackball-type controllers.
This code was heavily borrowed from z26.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1502 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2008-05-12 22:40:26 +00:00
stephena 19be269077 Relaxed recent equate changes to allow all symbols to be used from a .sym
file.  This will have to do for now, until we find a better way of
differentiating between constants and addresses.

Made the ROM disassembly area take advantage of a wide debugger window
by spacing out the label and disassembly areas.

Finalized location of the AVox and SaveKey EEPROM files; they're now
located in the basedir (the actual location depends on the OS).

Made deadzone for analog joysticks configurable from the commandline
and UI.  Added '-joydeadzone' commandline argument, which accepts
a value from 0 - 29, specifying a deadzone of '3200 + DEADZONE * 1000'.
Also added UI to InputDialog to set this from dynamically from the UI.

Added code to only save the AVox and SaveKey EEPROM data file when
necessary.  This is for those systems based on flash storage, where
unnecessary writes will wear down the drive.

Added SaveKey as a full-fledged controller to GameInfoDialog.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1501 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2008-05-11 21:18:35 +00:00
stephena 694d175f36 Success at last!!! I finally have the AVox and SaveKey EEPROM emulation
working.  After about a week of banging my head against the wall, I
happened to try another test ROM, and everything worked.  So it seems
that the SaveKey test ROM from Thomas J. (with the optimized I2C
macros) isn't working correctly, or I miscompiled it or something.

All other ROMs I've tested work fine, including MGD, Fall Down,
Stratogems Deluxe, Go Fish, etc.  Thomas, if you're reading this, could
we try to figure out what's going on here??


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1500 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2008-05-10 22:21:09 +00:00
stephena ca174e4032 Only add the actual Console controllers after auto-detection of console
type.  Auto-detection runs the system for a little while, and this
interferes with the AtariVox and SaveKey controllers.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1499 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2008-05-08 20:23:31 +00:00