Releases: JetSetIlly/Gopher2600
nightly
Occasional nightly builds of Gopher2600
v0.52.1
A third release in as many days! Something is afoot!
Changes since v0.52.0
This version is a pure bug-fix for the DPC+ emulation. Previously, the initial state of the DPC+ registers were randomised regardless of the random state setting. This caused problems with ROMs that relied on the registers being initialised to zero.
This fixes the occasionally disappearing chef on the title screen of Chaotic Grill.
v0.52.0
This release comes very quickly after the release of v0.51.0. It should perhaps be a patch release but the DPCp change is significant enough to warrant a minor number increase. If you've not seen v0.51.0 make sure to look at the change-log for that version too.
Changes since v0.51.0
- DPCp
- DPC+ ROMs compiled for PlusROM/UnoCart will be emulated directly rather than through ACE emulation
- in other words, Gopher2600 will play DPC+ ROMs whether they are compiled for Harmony or PlusCart
- 50Hz PAL (bug fix)
- ROMs running at 50Hz (PAL) run at 50fps, rather than 60fps
- the bug was introduced in v0.51.0
- Debugger
- disassembly window for ELF and ACE ROMs works better whn rewinding
- this also applies to other ROM types when sequential disassembly is selected
v0.51.0
Changes since v0.50.1
- ELF / PXE
- ELF files identified as PXE as appropriate
- added PXE variables and colour window
- disassembly window shows "sequential" disassembly rather than the normal bank-based disassembly, which is meaningless for streaming type cartridges (ELF and ACE)
- added vcsWrite4() strongarm function
- 6507
- SP initialised correctly
- corrected decimal mode operation
- now passes all klas2m5 tests
- fixed implementation of ARR (undocumented instruction)
- corrects result of test binary in https://forums.atariage.com/topic/385516-fingerprinting-6502-processors
- added https://github.com/SingleStepTests/65x02 tests
- all undocumentated instructions correctly implemented. although the "internal parameter" of the XAA and LAX instructions are currently different to what the tests expect
- Additional Features
- use the
-videocommand line option to record video and audio
- requires separate installation of
ffmpegandffprobe- support for the
portable.txtfile
- when a file of that name is present, the emulator's configuration directory will be named
Gopher2600_UserDataand in the same location as the emulator binary.- see #44 for initial request
- Other Bug Fixes and Other Changes
- atarivox subtitler will not be muted. ie. the subtitles will show even when sound is not audible
- corrected UV calculation for YUV conversion (PAL palettes)
- paddles automatically inserted when mouse is captured (right mouse button in play window)
- changed
-elfoption to-dwarf
- elf has different connotations in the context of the Atari2600 since the option was first added. besides, dwarf more clearly indicates that it is debugging data that is being specified by the option
- F12 screenshotting now excludes FPS information and other status icons
Also available for the first time is a MacOS build. Unlike the Linux and Windows builds, the MacOS build is created by a Github action (see here) prepared by @dionoid
v0.50.1
I made an error with the version numbering of this release. The version number in the window title bar will say v0.50.0 even though this is v0.50.01.
Rather than change the release I'll just note it here. It's not that important.
Changes since v0.50.0
- Bug fixes
- correct identification of ELF entry point
- failed if the entry point was outside the
.textsection- this fixes the new ELF version of
LodeRunner
v0.50.0
Changes since v0.41.0
- Controllers
- mouse input controls both paddles in a paddle pair
- this fixes Astroblast which only works with the second paddle
- automatic controller selection now considers meta-information in filename
- for example, if "(Paddle)" is part of the filename, paddles will be plugged into both ports
- joystick and gamepad emulation do not allow impossible positions
- ie. left/right and up/down are opposite positions and can't both be true
- fixes a bug in Astroblast that causes the ship to disappear if the left and right directions are held at the same time
- Improved Superchip (SARA) detection
- the previous method only worked with curated dumps
- the new method takes into account the real behaviour of a cartridge dumper
- fixes a common NTSC dump of Dig Dug
- AtariVox
- added subtitles option. disabled by default
- the translation is a very rough phonetic interpretation based on the instructions sent to the AtariVox
- corrected some phoneme translations
- improves output from Gorf (the Champ Games version)
- Bugs
- TIA and RIOT were incorrectly initialised (as of v0.41.0)
- versions prior to v0.40.0 were not affected
- P0/P1 difficulty switches were connected to the wrong bits in SWCHB
- in practice this meant that the function keys F4 and F5 seemed to be the wrong way around
- PAL60 was missing from setClockSpeed() (b4c40e7)
- this caused timing errors in some ARM games when PAL60 was selected
- Bots
- fixed VideoChess and SpaceJockey bots
- Regress
- regression tests are run concurrently where possible
- improved error messaging
- DWARF
- added DW_OP_bit_piece
- not fully supported yet but the presence of the operation was causing the "unsupported DWARF" warning to show
- added support for enum types
- ARM
- ELF
- added support for R_ARM_THM_MOVW_ABS_NC and R_ARM_THM_MOVT_ABS
- Debugger
- added clipboard support
- fixed savekey windows for atarivox
- corrected i2c activity information
This version also contains an significantly upgraded GUI library (a version jump for DearImgui from v1.85 to 1.91.9b). It has been tested but there may be bugs remaining in the lesser used corners of the interface.
v0.41.0
Changes since v0.40.0
- RF noise disabled during screenshots
- Overlay (FPS information, notifications, etc.) not included in screenshot
- Improved DWARF decoding
- Correct handling of relocatable ELF files
- Mutliple executable ELF sections now supported
- Corrections to ARM FPU (Plus/Unocart emulation)
- Most significantly the setting of RoundZero as the default rounding type
- Addtional ELF implementations
- VcsWrite6()
- R_ARM_THM_JUMP24 relocation type
- Bug fixes
- POKE command now affects TIA/RIOT registers correctly
- TIA Audio volume sampling could result in mixing overflow and a crash, during rewinding
- Other
- Shift key can be used to extend selection in Source and Tracker windows
v0.40.0
Changes since v0.40.0_preview_3
- Colour Model
- phase adjustments can now be applied to the standard Stella palette
- this more closely matches modern expectation while also providing the flexibility to adjust the phase if required
- removed 'Legacy Colour Model' option
- preview releases of v0.40.0 allowed A/B testing of the 'legacy model' and a purely mathematical model
- explanation of the current model in the blog https://jetsetilly.github.io/Gopher2600-Blog/posts/improving-the-ntsc-colour-model/
- Improved DWARF decoding
- binaries compiled with no optimisation (or -O0) now show variable information in the debugger
- absence of .debug_loc was incorrectly considered to mean no location information was available
- framebase uses the yield address and not the current PC address
- very often this doesn't matter but incorrect use of the ARM pipeline caused variables to be missing unexpectedly
- function building uses specification attribute if appropriate
- this attribute seems to be used in object-oriented style C++ programs, and is probably a feature of other OO languages
- ELF
- added vcsJmpToRam3(), vcsPokeRomByte() and vcsSetNextAddress() strongarm functions
- improved performance when accessing executable memory
- ELF can now annotate coprocessor disassemblies
- Bug Fixes
- race error between SDL audio and playscreen overlay (the FPS overlay)
v0.40.0-preview_3
Changes since v0.40.0_preview_2
This release is another "preview" of v0.40.0 which will feature a new colour model. Once again, this work is not finished and so the "preview" label is used to emphasise that the results are not optimal or final. The previous preview can been seen here.
Colour Model
In this preview I have changed the output value of "black" as produced by NTSC Colour-Lum value $00. For PAL and SECAM there are more values that produce "black" and this applies to them too. The purpose of this change is to make it the same value of the "black" produced by VBLANK.
Without going into too much detail, the purpose of this change is to ensure that both types of black (the one produced by VBLANK and the one produced by Colour-Lum $00) are affected by the brightness/contrast controls equally, which is what can be observed on real hardware.
There are very few games where the two blacks can be seen together but a good example is Boom by Chris Walton. The screen with the bouncing AtariAge logo uses VBLANK as a convenient way of creating black.
In the image above the darker black is produced by VBLANK and the lighter black by Colour-Lum $00.
The difference can be reduced by lowering the brightness but that wouldn't be a correct solution.The correct solution is for the two blacks to be the same value.
Other Changes
- Corrected detected of "PAL60" in filename
- This controls the specification of the emulated television
- DPC (Pitfall II) fingerprinting
- The detection for DPC is based purely on size of the ROM file
- Problem identified in #36
- DPC Random Number Generator
- Corrected random number algorithm to more closely match DPC patent
- Pumped on every cartridge access and not just on 'non-volatile' access
- ARM Timers
- ARM timers more efficiently updated
- Small improvement in performance
- ELF Performance
- Small efficiency improvements
v0.40.0-preview_2
Changes since v0.40.0_preview_1
This is a second preview release of v0.40.0. I'm still not satisfied with what I am now referring to as the new colour model so I'm still holding off making a non-preview release. And I still want to emphasise that the colours are not 'final' or fully understood. The previous preview can been seen here.
Colour Models
The changes to the new colour model are as follows
- NTSC colour burst
- Previously a phase adjustment would cause the burst to change very slightly, which it shouldn't. The burst is now fixed in all instances.
- IQ and UV values are no longer scaled by Y
- Contrast adjustment now uses a grey level of 7.5%
colour-lumof 0 is set to 7.5% grey
In addition to the new colour model I've added a legacy colour model, which is enabled by default.
The legacy model is actually just the standard Stella palette. I wanted to avoid this but I think it's currently unavoidable. It's still unclear to me how these colours were arrived at. I can find no combination of the new colour model that creates the same result.
The name legacy is intended to convey that it will one day be removed.
Blue Ambient Light
I've also added an option that causes the CRT bevel to be tinted by a blue light. I find this is good way of emulating a room with low light.
The blue light causes the TV image to stand out more and is good for night-time play.
In the image below you will notice that the rim around the screen is not tinted by blue because it is illuminated by the screen, which has a different predominant colour.
Other Changes
- ARM
- Small performance improvement during cycle accumulation
- Separation of integer and fractional parts of a cycle count now uses SIMD instructions
- Patch Files
- Missing patch file is no longer a fatal error
- Patch file given on the command line is not assumed to be in the
patchesdirectory of the configuration directory.
- The path given on the command line is now an absolute path
- SDL Audio
- Small performance improvement caused by calling sdl.AudioQueue() less frequently
- Queue management now slows the sample rate when queue is running low
- This should result in fewer audio buffer underruns




