3.6.2
Things we want to do for the 3.6.2 release:
put a version number into the config file, so we can warn when an old config file is being used(fixed in trunk)
Remove support for jpeg screenshots (and the dependency on libjpeg(turbo))(fixed in trunk)
Remove the -kernalrev option from the emulators that use it: use proper ROMs for different revisions and remove the checksumming/patching of ROM files.(fixed in trunk)
- Fix C128 cartridge system
- it is not possible to reset hotkeys to default (via UI)
- -default on cmdline should skip loading the custom hotkey file
- -default on cmdline should skip loading system files such as kernal from ~/.local/share/vice/$EMU/.
- "reset settings to defaults" should also reset the hotkeys to defaults
- There are a bunch of resources that have different names in SDL or GTK3 UIs, or which are specific to one of them. We should name those that do the same thing the same, and - as far as possible - get rid of the specific ones (by implementing the same feature in the other UI)
- the same applies to the related commandline options, of course
GTK3 FullscreenEnable should use <CHIP>Fullscreen instead (per video chip) KeepAspectRatio, TrueAspectRatio rework into one resource <CHIP>AspectMode (0: off, 1: custom 2: true) like in SDL GTKFilter rename to "<CHIP>GLFilter" <CHIP>AspectRatio to be implemented, should be (used with "custom" mode, see above) JoyMapFile, JoyThreshold, JoyFuzz use these when implementing the joystick mapping stuff <CHIP>HideStatusbar to be implemented, hide the statusbar if enabled <CHIP>FlipX to be implemented <CHIP>FlipY to be implemented the following don't exist in SDL for good reasons, but naming is OK: AutostartOnDoubleclick, PauseOnSettings, Window0Xpos, Window0Ypos, KeepMonitorOpen, MonitorXPos, MonitorYPos, MonitorWidth, MonitorHeight, MonitorFont, MonitorFG, MonitorBG, FullscreenDecorations
SDL AspectRatio rename to <CHIP>AspectRatio SDLGLAspectMode rename to <CHIP>AspectMode SDLGLFlipX rename to <CHIP>FlipX SDLGLFlipY rename to <CHIP>FlipY SDLGLFilter rename to <CHIP>GLFilter SDLStatusbar rename to <CHIP>HideStatusbar JoyMapFile, JoyThreshold, JoyFuzz, <CHIP>Fullscreen the following don't exist in GTK3 for good reasons: MenuKey<XYZ>, JoyMenuControl, <CHIP>FullscreenMode, SDLBitdepth, SDL2Renderer, DualWindow SDLCustomWidth rename to "<CHIP>FullscreenCustomWidth" SDLCustomHeight rename to "<CHIP>FullscreenCustomHeight"
- Add some simple checksum algorithm to common code (CRC32 is probably fine) - right now eg the kernal loading uses simple additive checksum, which is really bad :)
- move remaining content from https://vice-emu.pokefinder.org/index.php/VICEKB into vice.texi
- DTV should use different flash images for PAL, NTSC, Hummer
SDL UI
- the SDL "menu actions" should use fixed numeric IDs for the mapping to keys/joystick instead of "menu pathes" which break when the menu is rearranged
- SDL1/2 joystick mapping improvements
Add 'clear all mappings' to the joystick mapping menus (it's annoying to have to unmap one by one)(Added in trunk)- Make the 'extra joystick options' menu show what they are already mapped to
- Add menu joystick actions mapping support to the 'extra joystick options' menu
GTK UI
- VSID improvements:
- Playlist fixes:
- Allow removing items from the playlist.
- Allow loading and saving of playlists.
- Skip to the next SID in the playlist after all tunes in the SID have played.
- Hotkeys support, also for the controls and selecting items in the playlist.
- Playlist fixes:
Try to fix keymaps on Windows with Gtk using gdk_event_get_scancode.
On Windows we can't get, for example, GDK_KEY_KP_Home, we always get GDK_KEY_Home. Using certain bits in the scancode, we might be able to translate the keypad Home to its expected value (GDK_KEY_KP_Home, as we use it on Unix). If we could at least get the keypad fixed, we'd improve our keymaps a lot. See this post for more information.(fixed in trunk)macOS testing WIP(fixed in trunk)
- GTK: a mechanism must be made that makes it possible to "call" any "menu action" (actions that can be assigned to hotkeys)
- when that is done, joystick buttons can be mapped to menu actions
- an UI is needed for all that
- GTK: Rework some of the settings dialogs:
Turn the drive type selection into a combo box to save space.(fixed in trunk)Try to make the parallel cable settings take less space (perhaps move the labels to the left side of the combo boxes and remove bold?)(fixed in trunk)
- add feature that allows to hide (only) the statusbar (use <CHIP>HideStatusbar resource)
- add missing $VICERES comments in the UI files, so ./gtk3-resources.py list-missing keeps working
buildsystem
- The VICE version and release date is not automatically updated everywhere yet
- The top line of README
- In the second paragraph of the README ("This is version 3.6 of VICE")
- there are some more problems in the buildystem:
according to src/arch/Makefile.am it looks like the "mingw32-pcap" dir is never used right now, check and fix this :)(fixed in trunk)- a proper configure check that defines HAVE_PCAP must be added, some ifdefs added at least to the windows rawnetarch_win32.c , and compiling all UIs tested with it
in some makefiles it checks for USE_SDLUI and there is no check for USE_SDL2UI, that means eg bindist might be broken after configuring for SDL2(fixed in trunk: USE_SDLUI has changed from meaning any SDL version to SDL 1.2, while USE_SDL2UI means SDL 2.x. Additionally USE_HEADLESSUI is now specifically checked for and no longer randomly lobbed in with GTK3 or SDL in else branches.- make bindist is currently broken for USE_HEADLESSUI.
cpu history should be enabled by default, optionally disabled(fixed in trunk)- Make sure the released binaries (Windows and macOS) use the same configuration
github actions
- The github "snapshot" action should also build a release tarball so we can see if that actually works, and it needs to check if a gtk3ui configure generated tarball can compile sdl2 and vice versa
- It would also be nice if the github action builds proper debian/ubuntu packages
- It should also test if "make install" works (at least if it doesnt produce an error)
- add checkstyle.sh (tabs and whitespace) to the GHA
cleanup
- archdep cleanup
- there are still various bits of archdep things dangling around in common code (and some newly added *sigh*) - use ./src/findhacks.sh archdep to find such code - a lot of this (if not all) should live in arch/shared
- remaining cases should always come with a comment telling why there is archdep stuff and why it has to be in common code
ANDROID_COMPILE (the whole Android stuff in the tree) can likely be removed (waiting for reply from the C64.emu guy)(fixed in trunk)various things from "lib.c" and "ioutil.c" should really live in arch/shared(fixed in trunk)- the functions in src/arch/macOS-util.c should be renamed to archdep_... instead of vice_macos..., empty functions created for non macos, header renamed to archdep_... , and then called unconditionally from common code
- rawnetarch.h should probably also live in src/arch/shared
the code in joystickdrv is used exclusively by the GTK3 port and should be moved into arch/gtk(fixed in trunk)currently we have src/archapi.h AND src/<arch>/archdep.h, both of which contain prototypes for stuff that also has headers in src/arch/shared. this needs to be cleaned up so ideally we have exactly one header, which includes the headers from src/arch/shared(fixed in trunk)src/arch/mingw32-pcap should probably live in src/lib (headers for 3rd party lib, this isnt really archdep code)(fixed in trunk) was removed, lib+headers are in msys2AMIGA related stuff can be removed unless someone steps up real soon(fixed in trunk)some directories contain arch specific "driver" stuff, which should live in src/arch/shared:(fixed in trunk)hwsiddrv,mididrv,socketdrv,sounddrv,iodrv.src/systemheaderoverride should be moved into src/arch and then a note should be added to coding-guidelines.txt which explains what this folder is for(fixed in trunk)names used for defines used in makefiles and config.h should be unified, eg we have HEADLESS_COMPILE in makefiles and USE_HEADLESSUI in config.h - it should only use USE_HEADLESSUI for both(fixed in trunk)in the source only one common define should be used, eg WIN32_COMPILE in favour of _WIN32. If it really means "compile for windows" and not "compile for 32bit windows", use WINDOWS_COMPILE instead(fixed in trunk: had to add WIN64_COMPILE for 64-bit Windows check)- Remove support for 'classic' BeOS, only support Haiku.
- there are still various bits of archdep things dangling around in common code (and some newly added *sigh*) - use ./src/findhacks.sh archdep to find such code - a lot of this (if not all) should live in arch/shared
- Change the make bindist method for Haiku into make install.
- compiler depended ifdefs cleanup
- use ./src/findhacks.sh ccarchdep to find such code, most things should be removed
- remaining cases should always come with a comment telling why there has to be compiler specific stuff
the remaining _MSC_VER can likely be removed (waiting for reply from Carlo Bramini)(fixed in trunk)
- use ./src/findhacks.sh ccarchdep to find such code, most things should be removed
- configure.ac
- Go through all the options and check if they should be renamed or removed:
- Change --enable-external-ffmpeg to --enable-ffmpeg, we only have one method of linking against ffmpeg left.
- Change --enable-native-gtk3ui to --enable-gtk3ui.
Disable CatWeasel, SSI2001 and ParSID support by default.(fixed in trunk)
- !! Properly update the build instructions with the above changes and put these changes in the release notes.
- Go through all the options and check if they should be renamed or removed:
- split vice.texi into smaller files
split mouse.c into one file per mouse type(fixed in trunk)
- rename all ROM files. a good naming scheme would be as in kernal-901227-01.bin (
C128,C64,C64DTV,CBM-II,DRIVES, PET,PLUS4,PRINTER,SCPU64,VIC20)- FIXME: could not identify some C128 ROMs: kernalfi, kernalfr, kernalit, kernalno
- when ROMs have been identified, fix the code/checksums in c128rom.h/.c
- FIXME: could not identify some Drive ROM: dosCMDHD
- when ROMs have been identified, fix the code in driverom.h
- FIXME: could not identify some Printer ROMs: mps801.bin, mps803.bin, nl10.bin
- FIXME: could not identify SCPU ROM: scpu64 (wanted is the part number of the actual SCPU ROM)
- FIXME: could not identify some C128 ROMs: kernalfi, kernalfr, kernalit, kernalno