Releases: JetSetIlly/Gopher2600
v0.35.3
Changes since v0.35.2
- Television
- Corrected how Brightness / Contrast controls work
- Improved VSYNC
- TV tolerant of brief desynchronisations
- Debugger
- Stepping back works correctly in conjunction with recent user input
- Due to how the rewind system worked, any user input since the start of the last frame and the current position of the emulation would be lost on step back. This is now not the case
- PlusROM
- PlusROM host/path information was read incorrectly
- Caused problems with segmented banking schemes, like 3e+ [issue #35]
Television Brightness and Contrast controls work a bit differently as of the release. You may need to readjust those settings (press F10 button for preferences window)
v0.35.2
Changes since v0.35.1
- Added cartridge mapper
- FA2
- eg. Star Castle
- non-volatile RAM for this cartridge type stored in the
nv_ram
of the configuration direcotry- BF
- eg. The Realm of Riesig
- Supercharger
- Running a Supercharger game loaded from an audio file resulted in performance drop, even when the tape had stopped loading
- Performance is now equal as when loading from a fastload binary file
- Disassembly
- Disassembly is now completed in the background, leading to quicker loadtimes, particularly for very large cartridges
- Television / CRT Effects
- Blur shader is now applied more evenly
- this is most noticeable with high bloom values but produces better results generally
- Disabling the ghosting effect would cause the image to flip
- More efficient clearing of GL frame buffers
- small but significant performance improvement
- Regression testing
- Playback scripts can now be re-recorded automatically
- REDUX command now works with all regression test types
New entry on the current status page
v0.35.1
Changes since v0.35.0
- Bug Fixes
- Some PlusROMs were not detected properly
- Only the first 1024 bytes were searched for the fingerprint, which is insufficient for some ROMs
- There is (always has been) a verification step to make sure the URL at the NMI location is correct so false positives should not be a problem
v0.35.0
Changes since v0.34.0
- Bug Fixes
- Rewinding of ELF binaries caused visual artefacts on screen
- Changes to screen rendering prevented the VideoChess bot from starting
- Bug introduced in v0.31.0
- Added ELF to list of valid ROM extensions
- A file with the .elf extension would not be shown by the ROM selector
- Mouse wheel events could crash the emulator
- This affected MacOS builds on machines where mouse-wheel style scrolling is done with a touch-pad
- Replay button in tracker window could crash the emulator
- Changes
- TIA audio sampled every colour clock
- This fixes problems with ROMs where the channel volume is update more than twice per scanline
- Added option to enable warning for "undefined symbols" when loading ELF ROMs
- It is possible to compile an ELF binary with undefined symbols. Rather than reject the file when it is loaded, I have chosen to allow the ROM to execute and to continue until the symbol is referenced (which may never happen)
- The addition of the warning is in addition to this behaviour and gives the developer the option of being notified of symbol errors sooner
- Added CARTRIDGE SETBANK command
- It wasn't possible previously to set the current bank of a cartridge. I had originally chosen to avoid the problem because of the high variety of ways a mapper might implement banking (if at all)
- The options to the SETBANK command vary depending on the specific mapper but generally, a mapper will expect a numeric value
Segmented mappers can take multiple numeric values. Separate values with a colon
In some instances, segments can be mapped to cartridge RAM. add an 'R' after the segment number to indicate the use of RAM. For example, the 3e mapper allows very flexible mapping of RAM
CARTRIDGE SETBANK 1R:2
Some segmented mappers only allow a predefined 'pattern' of segments. In these cases the numeric value to the SETBANK command will be a pattern number. The two mappers affected by this are Supercharger and Wickstead Design
- Other Changes
- Added ELF support for REL32 and PREL31 relocation
- Improved DWARF support for typedefs
- Better decision making over whether variables are in global scope
- Prevent possibility of infinite recursion in DWARF builder
Current Status: https://github.com/JetSetIlly/Gopher2600-Docs/wiki/Current-Status
v0.34.0
Changes from v0.33.0
- Changes / Bug Fixes
- Specifying a mapper will not add superchip unless asked
- ARM would sometimes loop endlessly on startup
- caused by ROMs causing execution errors and not being caught
- DPC+ and CDJF always emulate the end-of-custom-program JMP even when immediat mode is enabled
- 6507 more careful with system symbols
- system symbols no longer appear as operands for immediate instructions
- ARM yields address of most recent instruction rather than the current PC
- this isn't a problem for 16bit instructions
- but for 32bit instructions it resulted in confusing feedback in the source window- Better handling of DWARF data from alternative ELF files
Current Status: https://github.com/JetSetIlly/Gopher2600-Docs/wiki/Current-Status
v0.33.0
Changes from v0.32.1
- improvements
- ELF uses less memory
- High memory usage is a direct consequence of the rewind system
- ELF memory is only recorded if it the memory block is volatile
- Recorded memory is compressed (using a very simple RLE algorithm)
- ARMv7_M architecture
- Marginal performance improvement in cycle counting
- Television can now cause emulation to break into debugger
- eg. if VSYNC is absent or too short, etc.
- Toggled via preferences window (television tab)
- FPS overlay in playmode shows VBLANK/VSYNC information
- Timeline window in debugger shows VSYNC trace
- Debugger shows break condition in toolbar
- Information shown is currently very rough
- Holding down the STEP buttons in the control window is now faster
- changes / bug fixes
- DPC+ more careful about resetting fraction fetcher counter when setting the fraction fetcher low byte
- Whether the reset happens depends on the version of the driver being emulated
- Supercharger
- Rewind fix in 0.32.0 for fastload implementation was incomplete
- Coprocessor Source Window
- Fixed parsing of comment lines
- Emulator Development
- Fixed profile targets in Makefile
- Changes made in b48d487 limited the functionality of pprof
v0.32.1
Changes from v0.32.0
- Bug Fix (Windows): ROM selector could not step out of the installation folder
I've also noted that the ROM Selector does not currently support volume (drive letter) selection on Windows. I'll add a solution to that in a future release, after some more research/experimentation.
v0.32.0
Changes from v0.31.0
I forget to bump the version number in the Makefile before release, so the title bar will say "v0.32.0 pre-release". I'm not changing it. The next version will be released soon enough.
- Improvements
- Artefact free rendering
- The old method of chaining GLSL shaders added visible artefacts on screen in some instances. This has been fixed
- ROM Select Window
- Mouse wheel works correctly in ROM Select window when in playmode
- Improved responsiveness
- Added mappers for prototype ROMs:
- WF8 (Smurf and Zaxxon prototypes)
- JANE (Tarzan prototype)
- Magnify window/tooltip uses current TV colours
- Global cycle regulator for ARM
- Comparison mode includes a comparision of the two audio streams
- Regression database now keeps a list of failed tests
- LIST and REDUX both now accept keys to work on (as opposed to working on all keys)
- RUN, LIST and REDUX can use FAILS as a key to limit action to previously failed tests
- eg
gopher2600 regress list fails
- REDUX now has a -dryrun option
- MEMUSAGE PROFILE command
- Also triggered on ctrl+alt+m
- Memory usage in FPS overlay (optional)
- Compile time option to include Statsviz monitoring
- Television Improvements
- Screen size dimensions fixed at a ratio of 4:3
- Generated image will always be squeezed into the 4:3 aperture
- Improved VSYNC and synchronisation options
- Minimum refresh rate for TV reduced to 45Hz
- The previous higher rate prevented some PAL ROMs from ever achieving synchronisation
- This will affect any ROMs you may have in the regression database. Use regression REDUX to rebuild database
- Corrected horizontal scan rate values. Used to caculate refresh rate
- This affects PAM and SECAM. NTSC and PAL-M were already correct
- Other Changes
- "Motion" screenshots now called "Flicker"
- Better indication of the conditions when the method is appropriate
- "Composite" and "Single" methods unchanged
- PAL-M always referred to as PAL-M (and not PALM)
- added options
-playbackIgnoreDigest
and-recordFilename
to RUN mode
- Bug Fixes
- ARM Cycle Counting was incorrect in v0.30.0
- Memory latency was calculated incorrectly
- Screen would sometimes not be updated in playmode if refresh rate of emulated TV was higher than the monitor
- Rewind for binary Supercharger files was incorrect
- Caused application to deadlock if ROM was rewound towards the very start of execution
v0.31.0
Changes from v0.30.1
- Television
- Added colour controls
- Improvements
- Logging is less noisy
- Less memory churn from ARM emulation
- Bug fixes
- ROM selection works again on Windows
- bug introduced in v0.30.0
- Fixed loading of ELF and ACE wrapped ELF files
- Frame Queue Length initialised correctly on first use
The last bug fix is a very important fix. Previous to this version, the frame queue was initialised to be zero length on first use. Unless the user had changed this in the preferences window (unlikely) then the display would likely be very choppy. This would create a very bad impression of the emulator.
If you've been disappointed in Gopher2600 in the past, then this version may very well improve your experience.
v0.30.1
Changes from v0.30.0
Improvements / Fixes
- ROM selection window could stall the GUI if there were a large number of files in the directory. Directory reading is now asynchronous and solves the problem
- Rewinding could cause the TV screen to resize with some ROMs. The size would always settle correctly but the one or two frames of incorrect size was visually jarring and unnecessary. Fixed