Commit Graph

1827 Commits

Author SHA1 Message Date
stephena fba78252d5 More codebase cleanup.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1909 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-11-22 02:33:06 +00:00
stephena 8b14e0eef8 On second thought, why do we even need M6502 files in a separate directory?
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1908 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-11-22 02:32:20 +00:00
stephena 3972f0eca5 Reorganization of the M6502 classes; I didn't see the purpose of having
them in under src/emucore/m6502/src, and bspf under that again at
bspf/src.  It just made searching for classes that much harder.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1907 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-11-22 02:07:37 +00:00
stephena d8bca7a519 OK, this is the first pass at some love for the OSX port, which doesn't
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
2009-11-13 17:35:42 +00:00
stephena 3501fdcc3b Fixed compilation for older systems in the OSX port. The minimum supported
version of OSX is 10.4 (Tiger).


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1905 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-11-13 11:44:12 +00:00
stephena 4ac82ca56a Added separate build project for OSX Intel machines running Leopard (10.5)
or newer.  Obviously, this one only runs on x86 machines.  It's compiled
with the very latest compiler (Clang), which is much faster at compiling
as well as runtime.  And it also includes a 64-bit version, which is
only available on Snow Leopard.  The old build environment support 32-bit
in 10.4, 10.5 and 10.6 for PPC and Intel.

Fixed string overflow in reading settings from plist file in OSX.  I need
to figure out how to use C++ code from within Objective-C, since the
cause of the bug was C string code (which is notorious for buffer
overruns).

Bumped version # to test2, for some testers on AtariAge.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1904 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-11-12 17:23:02 +00:00
stephena 77a83388c2 Moved all TODO items to the Stella tracker on AtariAge. Yay, that's
one more text file I don't have to update.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1903 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-11-11 23:09:17 +00:00
stephena e2f58f8a5f Oops, forgot to account for compiling without debugger support.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1902 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-11-11 20:55:37 +00:00
stephena 19f146038d Added more accurate functionality for the _rwport debugger command. It now
properly distinguishes between intermediate reads which are part of writes,
and ordinary reads.  In the former case, only a read which has a different
address than a write is flagged as an error; intermediate reads acting on
the same address as the corresponding write are considered normal, and won't
trigger a break.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1901 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-11-11 20:53:57 +00:00
stephena 00f8ffb686 Revamped the result on floating pins for TIA reads. Previously, this was
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
2009-11-10 20:12:50 +00:00
stephena f1e88a2d48 Updated OSX port for recent Cart classname changes.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1899 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-11-08 20:38:38 +00:00
stephena 82a87e6edb Updated Win32 port for recent Cart classname changes.
Fixed BSPF_ARCH macro to correctly detect i386 and x86_64 in Windows.

git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1898 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-11-08 20:29:10 +00:00
stephena f3282d299c CPU architecture info is now shown in AboutDialog, next to the build
version and SDL library.

Bumped version # for test builds for AtariAge members.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1897 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-11-08 18:42:12 +00:00
stephena 54a5d77542 Added '_rwport' debugger directive, which can be used in conditional
breaks to test whether an illegal read to the write port of cartridge
RAM has occurred.  It can be used as follows:

  breakif {_rwport == 100}   // break if read was done at wport address 100
  breakif {_rwport}  // break if read was done at *any* wport address

This currently works for all extended RAM carts that worked before.
Specifically, 4A50, DPC, AR and possibly several others aren't supported
yet.  More testing is required.

Renamed CartFASC and CartMB to CartFA and CartF0, respectively.  This
naming now matches that used in other emulators.

CartMC now properly handles read from write port, by using random
values instead of just zero.  However, no test ROMs are available for
this scheme, so there may still be issues.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1896 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-11-08 16:46:10 +00:00
stephena 3df721e0be Reworked 'read from write port' emulation for carts with extended RAM.
The values written and returned in such a case are now more accurate,
and are a combination of the previous databus value and randomization
(the latter emulating the randomness of Z-state bits).  This provides
more accurate emulation than before, where zeros were used instead.
In particular, types 3E and E7 are now working correctly for the first
time.  Thanks to Batari for suggestions in this area.

Moved random number generation from Cartridge to System class.

The Subversion build number is now shown in the AboutDialog box.
Still TODO is add architecture information (i386, x86_64, etc).


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1895 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-11-08 01:39:05 +00:00
stephena 25f483dc27 Second pass at adding build info.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1894 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-11-07 17:58:07 +00:00
stephena 3939eb803a Add SVN build info to Version class.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1893 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-11-07 17:36:25 +00:00
stephena 5ce401e6a4 Reorganized random number generation code in each Cart class. There
was duplicate code in many Cart classes and in M6532 class, and since all
these classes are subclasses of Device, it made sense to move the
functionality there instead.

Carts 3E and E7 now return a random value when attempting to read from
the write port.  Still TODO is determine what happens to the value at
that address (is it randomized or zeroed?).  Thanks to Batari for
suggestions and sample code.

Fixed bug in E7 carts when entering the debugger; bankswitch was being
inadvertantly triggered which caused emulation to fail.

Overall, I need to figure out exactly what happens when reading from
the write port for all carts with extended RAM.  There are two things
to consider: what value is written to the address, and what value
is returned.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1892 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-11-05 00:41:44 +00:00
stephena 917f766a6d Made sure OSX template DMG is large enough to store all 3 architectures
that will be in the next release (ppc32, i386, x86_64).


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1891 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-10-27 19:16:58 +00:00
stephena 174efe684d Cleanups to some OSX-specific code; the version # no longer appears next to
the name in the OSX menu.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1890 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-10-27 18:05:19 +00:00
stephena aaf30c2f28 First pass at showing runtime info in the About window. This is useful for
determining whether we're running in 32 or 64-bit mode on a particular
system (especially in OSX, where the same app could contain up to 4 actual
builds).


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1889 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-10-25 22:34:40 +00:00
stephena 665d78455f More fixes for OSX building in Snow Leopard.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1888 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-10-20 17:42:45 +00:00
stephena 795d2f31f4 First pass at updating the OSX SDL 'glue' code for compilation with
SDL 1.2.14 and Snow Leopard.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1887 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-10-20 15:45:49 +00:00
stephena 7a5b2c3661 Updated some deprecated code for the OSX version to compile under Snow
Leopard (10.6).  From this point on, the lowest supported version is
OSX 10.4.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1886 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-10-13 00:30:45 +00:00
stephena f283052d36 Oops, fixed typo in Console output.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1885 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-09-14 19:33:36 +00:00
stephena 2fa8b1ee70 Added ability to dynamically toggle TIA collisions for the 6 graphical
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
2009-09-14 19:22:34 +00:00
stephena 5cad3ee0af Last minute format fixes for a text file.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1881 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-09-11 19:23:09 +00:00
stephena fd61491f1e Updated OSX project files for 3.0 release, formatted TXT files for
better viewing in OSX default text editor.

Added build script and template DMG to automatically build a
StellaOSXver.dmg file.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1880 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-09-11 15:37:08 +00:00
stephena b41354b325 Updated Windows build script; it now correctly generates ZIP file (containing both 32/64bit files) and InnoSetup EXE files for 32/64bit.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1879 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-09-10 21:42:46 +00:00
stephena 66ac671b9b Updates documentation woth more info about building Stella from source
code, and for the new builds of Stella for Windows.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1878 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-09-10 14:48:50 +00:00
stephena 3c67bc6588 Added automated build script for Windows builds. It's not finished yet; I still need to tie it into InnoSetup.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1877 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-09-10 13:56:06 +00:00
stephena 48beb4fd1f First pass at automating the Windows builds as much as possible. Ideally, I'd like to just double-click a BAT file, enter some version info, and have it do 32 and 64 bit builds.
Updated the documentation for build info for Windows.  Still TODO is add more detailed info for Linux and OSX.

git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1876 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-09-10 01:46:11 +00:00
stephena bb6d7856aa Some final changes for the 3.0 release.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1875 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-09-09 22:08:40 +00:00
stephena 03a854f206 Bumped version number to 3.0_rc. I won't have time to complete the
debugger disassembly improvements, so it will have to wait until 3.1.

Updated various files for impending 3.0 release.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1874 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-09-09 18:00:31 +00:00
stephena 6144e4fd57 Improved ROM launcher so that going to a parent folder automatically
selects the item that was previously selected.

Fixed bug in Cheat dialog where editing a cheat didn't remove the old one.

Updated TODO, rearranging improved disassembly as the #1 priority for the
next release; I don't have time to finish it now.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1873 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-09-09 15:59:22 +00:00
stephena 616ce6039a Added toggling of HMOVE blanks to the TIA, accessed with the Alt-m key.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1872 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-09-09 14:02:23 +00:00
stephena 42f3052fbf Added TIA support for a '7-color' register model. This means we can see
all graphical objects in different colors in fixed debug colors mode,
even those that normally share a color register (ie, P0/M0, P1/M1, etc).

Removed TIA::updateFrameScanline, an unwieldy 600+ line function.  It
was useful as an optimization measure when Stella was first written,
but at this point I think it's more trouble than it's worth.  Removing
the code not only makes the TIA class much smaller and easier to
understand, it also fixes some graphical bugs in fixed debug colors
mode (bugs that probably wouldn't have been found otherwise).  Next on
the chopping block are the various 'masks', or at least the alignments
(which cause the arrays to be 4 times larger than they need to be).


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1871 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-09-08 22:44:09 +00:00
stephena ea0e137a27 Modified TIA overscan code to only blank the screen when overscan turns to
normal scan.  Previously, the blanking was done each frame, but the new
way more accurately emulates what happens on a real system.

Added a few tweaks for the properties database.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1870 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-09-06 23:27:29 +00:00
stephena 383bce947b Fixed gcc warning.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1869 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-09-02 00:12:29 +00:00
stephena a7da944b36 Simplified TIA class by removing 'greying' functionality to the debugger,
where it more properly belongs.  The greyed values are now from PAL
color-loss, which is also calculated for NTSC (though it's never actually
used in NTSC mode for regular rendering).  This also fixes problems with
debugger state files being saved with greyed values, and sometimes having
the frame greyed twice (hence making it impossible to see).  It should
also result in a slight speed increase, since some code has been taken
out of the TIA rendering fast path.

Added electron beam indicator the the TIA output in the debugger.
Basically, it's just a small square indicating where drawing will
start for the next instruction.

Fixed TIA output in the debugger so that right-clicking and selecting
'fill to scanline' actually works without first having to manually
enter partial frame mode.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1868 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-09-01 11:54:59 +00:00
stephena 33130a78f0 Updated 'Fixed Debug Colors' for PAL mode to more closely match the ones
in NTSC.

First pass at disassembly of ZP RAM in the debugger UI.  For now, the
entire range is disassembled, with no regard for alignment (so the PC
won't necessarily always line up with the disassembly).  Also, changes
to RAM don't yet trigger a re-disassembly.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1867 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-08-30 19:37:10 +00:00
stephena 8f8095073b Better emulation of the starfield effect in Cosmic Ark and Stay Frosty.
The movement was already correct, but one of the missiles has weird
behaviour caused by 'confusing' the TIA.  This results in a four
colour-clock wide missile with the third pixel turned off.  I don't
know if this is entirely accurate, but I do know that the snow in
Stay Frosty now looks exactly the same in emulation as is does on a
real system, so I'm content to leave it for now.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1866 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-08-28 21:53:31 +00:00
stephena bf83ffde53 Added Homestar Runner ROM to the properties database, now that Stella
properly emulates it.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1865 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-08-28 13:01:12 +00:00
stephena 1dbcdbdc36 The state file format was broken again with the changes to the TIA in
the last commit.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1864 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-08-27 23:35:34 +00:00
stephena 933ecd6cd7 Fixed bug with the last commit; the M0 and M1 graphics were completely
screwed up by my placement of the 'mmr' logic.

Added StayFrosty ROM info to properties database.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1863 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-08-27 23:30:30 +00:00
stephena 67fec652b0 Updated TIA code to emulate the 'widening' part of the Cosmic Ark
starfield effect.  More research is required in this area.

Large update to exception handling throughout the codebase.  It seems
that in many cases, the correct 'catch' block was never being called.
I never see exceptions thrown very much, so that area doesn't get much
testing.  But I guess it's good that Stella doesn't generate many
exceptions :)


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1862 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-08-27 22:59:14 +00:00
stephena a13fad2d0f Only add states to the rewind/undo list with actions triggered by the user;
don't add one when the console is first created.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1861 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-08-25 14:33:11 +00:00
stephena ddc77bd7e7 Added button for rewind to the debugger, next to the buttons which it
applies to.

Bumped version # to alpha3.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1860 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-08-25 12:46:56 +00:00
stephena 28f347cf86 It seems that in Windows, stringstreams must be initialized with data immediately after creation before they can be used. This really doesn't make sense to me, but at least it allows the rewind code to work. I hope this fixes similar issues in OSX.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1859 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-08-24 23:42:01 +00:00
stephena ef5c5de54f Fixed scanline => framerate calulation bug for those ROMs that generate
many more scanlines than a real TV would allow.  This fixes both graphical
corruption and slowdowns in Q-Bert ROM (which contains code to do a tight
loop extending VBLANK time, in effect generating a 'frame' with 1000's of
scanlines).

First pass at a method to determine the first 'relevant' scanline of
a TIA frame.  This isn't easy, because there are many conditions
for this to occur.  The eventual goal is to eliminate Display.YStart
tweaks in the properties file, and have the TIA code itself figure out
the best value.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1858 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-08-24 15:56:01 +00:00