Skip to content

Releases: JetSetIlly/Gopher2600

nightly

12 Nov 10:59

Choose a tag to compare

nightly Pre-release
Pre-release

Occasional nightly builds of Gopher2600

v0.52.1

10 Nov 14:30

Choose a tag to compare

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

09 Nov 20:46

Choose a tag to compare

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

08 Nov 14:33
70e504e

Choose a tag to compare

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
  • Additional Features
  • use the -video command line option to record video and audio
    • requires separate installation of ffmpeg and ffprobe
  • support for the portable.txt file
    • when a file of that name is present, the emulator's configuration directory will be named Gopher2600_UserData and 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 -elf option 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

11 Sep 20:41

Choose a tag to compare

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 .text section
    • this fixes the new ELF version of LodeRunner

v0.50.0

22 Jul 08:42

Choose a tag to compare

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
  • implemented MOVT instruction
  • simplified T1 timer implementation and more careful ticking (163c737)
  • fixed infinite loop detection (b80dcd8)
  • 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

04 Jun 18:22

Choose a tag to compare

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

30 Apr 20:32

Choose a tag to compare

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
  • 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

24 Feb 08:23

Choose a tag to compare

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.

image

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.

image

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

16 Feb 22:21

Choose a tag to compare

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-lum of 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.

image

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.

image

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.

Screenshot from 2025-02-16 22-06-49

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 patches directory 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