3.7.1: Difference between revisions

From vice-emu
Jump to navigation Jump to search
(Created page with "Things we want to do for the 3.6.1 release: __TOC__ * Fix C128 cartridge system ** snapshots are not supported yet ** cartridges that work in C64 _and_ C128 mode are not supported yet ** comal80 does not work correctly * <s>it is not possible to reset hotkeys to default (via UI)</s> (<b>fixed in trunk</b>) ** <s>-default on cmdline should skip loading the custom hotkey file</s> (<b>fixed in trunk</b>) ** -default on cmdline should skip loading system files such as ker...")
 
mNo edit summary
 
(50 intermediate revisions by 2 users not shown)
Line 1: Line 1:
Things we want to do for the 3.6.1 release:


__TOC__
This Page is closed -> move to [[3.7.2]]


* Fix C128 cartridge system
----
** snapshots are not supported yet
** cartridges that work in C64 _and_ C128 mode are not supported yet
** comal80 does not work correctly


* <s>it is not possible to reset hotkeys to default (via UI)</s> (<b>fixed in trunk</b>)
Things we want to do for the 3.7.1 release:
** <s>-default on cmdline should skip loading the custom hotkey file</s> (<b>fixed in trunk</b>)
** -default on cmdline should skip loading system files such as kernal from <tt>~/.local/share/vice/$EMU/</tt>.
** <s>"reset settings to defaults" should also reset the hotkeys to defaults</s> (<b>fixed in trunk</b>)


* 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)
Rationale: After 3.7 we want to merge Fabbo's joystick mapping stuff asap, and then fix the fallout - which perhaps includes what is listed below.
** the same applies to the related commandline options, of course
** NOTE: <CHIP>xyz resources should be registered in video-resources.c and the related variables go into the video_render_config_s struct (unless they fit into the video_resources_s struct)
 
<pre>
GTK3
 
(FullscreenEnable                  should use <CHIP>Fullscreen instead (per video chip))
    Implemented in trunk: FullscreenEnable has been removed (it controlled whether to enable fullscreen on boot) and
    <CHIP>Fullscreen resources have been added as well as enabling [-+]<CHIP>full command line options for the Gtk3 UI.
 
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>ShowStatusbar                [implemented], show 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
</pre>
 
<pre>
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>ShowStatusbar
 
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"
</pre>
 
* 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 :)
 
* <s>move remaining content from https://vice-emu.pokefinder.org/index.php/VICEKB into vice.texi</s> <b>fixed in trunk</b>
 
* DTV should use different flash images for PAL, NTSC, Hummer


__TOC__


=== Joystick ===
=== Joystick ===
Line 73: Line 15:


* Change the resources "JoyDevice{N}" to use strings with device identifiers instead of an index of the predefined and connected devices. So for example a Logitech F710 controller would be "001:006:046d:c21f" (usb-bus 1, device-no 6, vendor-Id 046d, product-Id c21f). We'll need archdep code to translate the strings into something the underlying arch driver can use, so at least handlers for Windows, MacOS, Linux and the various BSDs.
* Change the resources "JoyDevice{N}" to use strings with device identifiers instead of an index of the predefined and connected devices. So for example a Logitech F710 controller would be "001:006:046d:c21f" (usb-bus 1, device-no 6, vendor-Id 046d, product-Id c21f). We'll need archdep code to translate the strings into something the underlying arch driver can use, so at least handlers for Windows, MacOS, Linux and the various BSDs.
:: Relying on the device product/model ID won't be enough: a user can have multiple controllers of the same model.
* Provide a joymap file per device identifier that can be loaded/edited/deleted, perhaps auto-load when JoyDevice{N} contains such an identifier.
* Provide a joymap file per device identifier that can be loaded/edited/deleted, perhaps auto-load when JoyDevice{N} contains such an identifier.
* Make the joymap files use (UI) action identifiers instead of the "menu paths" SDL does.
* Make the joymap files use (UI) action identifiers instead of the "menu paths" SDL does.
* Make the joymap files human-readable by not doing what SDL does: for example: don't use 0-3 for input type, use ["axis", "button", "hat", "ball"], don't use 0-6 for the 'action' row, use "none" (or leave it out)", "joystick", "keyboard", "ui-action, "pot".
* Make the joymap files human-readable by not doing what SDL does: for example: don't use 0-3 for input type, use ["axis", "button", "hat", "ball"], don't use 0-6 for the 'action' row, use "none" (or leave it out)", "joystick", "keyboard", "ui-action, "pot".
* keep in mind there needs to be a way to map both "paddles" and "joysticks"
* Dialogs need to written to handle all of this.
* Dialogs need to written to handle all of this.
=== Keyboard ===
Analogous to the joystick mappings, we'll need to implement separate joystick keyset files. Currently the keymap files can (and do, in the case of keyrah), contain definitions for keysets. The issue is that the vkm files are loaded ''after'' vicerc, meaning any keyset definitions of the user in vicerc are overridden. This has the unfortunate result of the user configuring a keyset and it working until the user restarts vice.<br>
See [https://sourceforge.net/p/vice-emu/bugs/1797/ bug #1797] for some additional info.


=== SDL UI ===
=== SDL UI ===
Line 83: Line 31:


* SDL1/2 joystick mapping improvements
* SDL1/2 joystick mapping improvements
** <s>Add 'clear all mappings' to the joystick mapping menus (it's annoying to have to unmap one by one)</s> (<b>Added in trunk</b>)
** Make the 'extra joystick options' menu show what they are already mapped to
** 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
** Add menu joystick actions mapping support to the 'extra joystick options' menu
* TODO: support rotating the output by 90 degrees (CHIPRotate, canvas->videoconfig->rotate)
** the host window should change size/ratio
* TODO: in x128 support enabling the statusbar separately for each window


=== GTK UI ===
=== GTK UI ===
* add feature that allows to hide (only) the statusbar (use <CHIP>ShowStatusbar resource)
:: Added in trunk, with command line options <tt>-<CHIP>showstatusbar</tt> and <tt>+<CHIP>showstatusbar</tt>. Needs more work to properly handle the window resizing when toggling the visibility of the status bar.


* VSID improvements:
* make autostarting disk images dragged onto the window optional (see the "Doubleclick for autostart" option for attach dialogs, perhaps extend the option to also cover drag'n'drop.
** Playlist fixes:
*** <s>Allow removing items from the playlist.</s> (<b>Fixed in trunk</b>)
*** <s>Allow loading and saving of playlists.</s> (<b>Fixed in trunk</b>)
*** <s>Skip to the next SID in the playlist after all tunes in the SID have played.</s> (<b>Fixed in trunk</b>)
** <s>Hotkeys support, also for the controls and selecting items in the playlist:
*** Support for hotkeys/UI-actions has been added but handlers for the various actions need to be implemented and registered on boot. Registering VSID-specific actions should also remove the various warnings from Gtk/GLib and from VICE (unknown resources).</s> (<b>Fixed in trunk</b>)


* <s>Try to fix keymaps on Windows with Gtk using [https://docs.gtk.org/gdk3/method.Event.get_scancode.html gdk_event_get_scancode].</s>
* add missing $VICERES comments in the UI files, so ./gtk3-resources.py list-missing keeps working
:: <s>On Windows we can't get, for example, <tt>GDK_KEY_KP_Home</tt>, we always get <tt>GDK_KEY_Home</tt>. Using certain bits in the scancode, we might be able to translate the keypad Home to its expected value (<tt>GDK_KEY_KP_Home</tt>, as we use it on Unix). If we could at least get the keypad fixed, we'd improve our keymaps a lot. See [https://gitlab.gnome.org/GNOME/gtk/-/issues/2540#note_1354164 this post] for more information.</s> (<b>fixed in trunk</b>)
 
:: <s>macOS testing WIP</s> (<b>fixed in trunk</b>)
* TODO: support mirroring the output (CHIPFlipX, CHIPFlipY, canvas->videoconfig->flipx/y)
 
* TODO: support rotating the output by 90 degrees (CHIPRotate, canvas->videoconfig->rotate)
** the host window should change size/ratio


* <s>GTK: a mechanism must be made that makes it possible to "call" any "menu action" (actions that can be assigned to hotkeys)</s> (<b>fixed in trunk</b>)
=== Misc ===
** 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:
* Fix C128 cartridge system
** <s>Turn the drive type selection into a combo box to save space.</s> (<b>fixed in trunk</b>)
** snapshots are not supported yet
** <s>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?)</s> (<b>fixed in trunk</b>)
** cartridges that work in C64 _and_ C128 mode are not supported yet
** comal80 does not work correctly


* add feature that allows to hide (only) the statusbar (use <CHIP>ShowStatusbar resource)
* implement CBM2 cartridge system
:: Added in trunk, with command line options <tt>-<CHIP>showstatusbar</tt> and <tt>+<CHIP>showstatusbar</tt>. Needs more work to properly handle the window resizing when toggling the visibility of the status bar.


* add missing $VICERES comments in the UI files, so ./gtk3-resources.py list-missing keeps working
* <s>it is not possible to reset hotkeys to default (via UI)</s> (<b>fixed in trunk</b>)
** -default on cmdline should skip loading system files such as kernal from <tt>~/.local/share/vice/$EMU/</tt>.


* <s>x128: Rework "Settings" => "Display" => "CRT": the current page is too high, use a GtkStack + GtkStackSwitcher.</s>
* 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 :)


* <s>Remove setting function pointers in ${EMU}ui.c files for widgets, use the various ${EMU}-stubs.c files to provide stubs for the linker.</s> (<b>Fixed in trunk</b>)
* DTV should use different flash images for PAL, NTSC, Hummer


* <s>Status bar drive popup menu: check if there are hotkeys defined for "Attach/Detach #[unit]:[drive]" and if so, add accelerator label(s) to the item(s).</s> (<b>Fixed in trunk</b>)
* The list of available palette files (.vpl) should get generated from the available files found in the data directory
* FFMPEG: many distributions are -- or will be -- providing only the 5.x version of FFMPEG, with no fallback packages for 4.x. This means VICE's ffmpeg code needs to be updated to use 4.x AND 5.x. The current code is based on ffmpeg 3.x with some fixes for 4.x, so it'll involve some work. Alternatively we could decide to finally ditch FFMEPG and use a single lossless audio/video codec.
* Fix Videochip options (also see below)
** we need to add a member to video_chip_cap_t that lets us determine whether we need PAL/NTSC options or not, then we can use this to remove -CRTCcrtdelaylinetype and -VDCcrtdelaylinetype (and the respective resources)


=== buildsystem ===
=== Buildsystem ===


* README is currently updated from the same rule that generates infocontrib.h, this should be done in a different way
* README is currently updated from the same rule that generates infocontrib.h, this should be done in a different way
* <s>The VICE version and release date is not automatically updated everywhere yet</s>
** <s>The top line of README</s>
** <s>In the second paragraph of the README ("This is version 3.6 of VICE")</s>


* there are some more problems in the buildystem:
* <tt>make bindist</tt> is currently broken for <tt>USE_HEADLESSUI</tt>. (fixed only for Windows/msys2)
** <s>according to src/arch/Makefile.am it looks like the "mingw32-pcap" dir is never used right now, check and fix this :)</s>  (<b>fixed in trunk</b>)
*** 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 (configure checks are in trunk and work)
** <s>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</s> (<b>fixed in trunk</b>: <tt>USE_SDLUI</tt> has changed from meaning any SDL version to SDL 1.2, while <tt>USE_SDL2UI</tt> means SDL 2.x. Additionally <tt>USE_HEADLESSUI</tt> is now specifically checked for and no longer randomly lobbed in with GTK3 or SDL in <tt>else</tt> branches.
** <tt>make bindist</tt> is currently broken for <tt>USE_HEADLESSUI</tt>. (fixed only for Windows/msys2)


* Too many files are installed in <tt>$PREFIX/share/doc/vice</tt> when doing <tt>make install</tt> (example from Linux):
* Too many files are installed in <tt>$PREFIX/share/doc/vice</tt> when doing <tt>make install</tt> (example from Linux):
Line 157: Line 103:
Windows-MinGW-GTK3-Howto.txt
Windows-MinGW-GTK3-Howto.txt
</pre>
</pre>
:: Perhaps something to look at after the xmas release.


* <s>cpu history should be enabled by default, optionally disabled</s> (<b>fixed in trunk</b>)
==== Github Actions ====
* <s>Make sure the released binaries (Windows and macOS) use the same configuration</s> (<b>fixed in trunk</b>)
A .deb is generated for headless, sdl2 and gtk3 (both amd64), with non-stripped binaries.
* Still TODO is adding FFMPEG to the builds (needs support for FFMPEG 5.x in trunk)
 
The GHA should produce the html documentation and upload it to the website
* perhaps the entire website can be updated/produced/uploaded (removing another manual step from the release procedure)
* also the release tarball and binaries can be updated to sf (and zimmers perhaps?) automatically
 
The SDL1 port should also get checked
 
=== Cleanup ===


==== github actions ====
* REU does not work (yet) in x64sc, for the time being it should get removed from the UIs, the commandline options, the resources (in x64sc)


* <s>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</s> (<b>fixed in trunk</b>: A workflow 'Weekly Check Dist' has been added that creates tarballs configured for headless, sdl2 and gtk3, and then uses those to configure for headless, sdl2 and gtk3 and does a <tt>make</tt> && <tt>make install</tt>. This job runs every week at Monday 06:00 UTC and reports any failures on #vice-dev)
==== Archdep cleanup ====
* It would also be nice if the github action builds proper debian/ubuntu packages
* there are still various bits of archdep things dangling around in common code (and some newly added *sigh*) - use <tt>'''./src/findhacks.sh archdep'''</tt> to find such code - a lot of this (if not all) should live in arch/shared
:: Added in trunk for development releases: a .deb is generated for headless, sdl2 and gtk3 (both amd64), with non-stripped binaries. Still TODO is adding FFMPEG to the builds, <s>and building point release packages with stripped binaries</s>.
** remaining cases should always come with a comment telling why there is archdep stuff and why it has to be in common code
* 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
* Remove support for 'classic' BeOS, only support Haiku.
:: Change the <tt>make bindist</tt> method for Haiku into <tt>make install</tt>.


* <s>It should also test if "make install" works (at least if it doesn't produce an error)</s> (<b>fixed in trunk</b>: The 'Weekly Check Dist' workflow checks <tt>make install</tt> for headless, sdl2 and gtk3)
==== Compiler-dependent ifdefs cleanup ====
* use <tt>'''./src/findhacks.sh ccarchdep'''</tt> 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


* <s>add checkstyle.sh (tabs and whitespace) to the GHA</s> (<b>some small scripts added in trunk</b>)
==== Debug and log messages cleanup ====
We have a lot of noise on the terminal, it might be a good idea to clean that up.
* use <tt>'''./src/findhacks.sh printf'''</tt> to find <tt>printf</tt> calls that need to turned into log_debug</tt> calls (<tt>log_debug</tt> adds a <b>newline</b>, keep that in mind to avoid lots of empty lines in the log when changing <tt>printf</tt> to <tt>log_debug</tt>!).
* decide if we really need that message in the log, perhaps it can be surrounded with <tt>#ifdef DEBUG / #endif</tt> so the messages are only shown when compiling with <tt>--enable-debug</tt>?
* also check disabled (commented-out) <tt>printf/log_debug</tt> calls, will we ever need them again?
* a lot of devices / modules use LOG_DEFAULT for logging, but they should use their own log_t instead (for easier filtering)


=== cleanup ===
=== Headers ===


* archdep cleanup
* many things that currently live in the archdep ui.h could be moved to the generic uiapi.h
** there are still various bits of archdep things dangling around in common code (and some newly added *sigh*) - use <tt>./src/findhacks.sh archdep</tt> 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
** <s>ANDROID_COMPILE (the whole Android stuff in the tree) can likely be removed (waiting for reply from the C64.emu guy)</s> (<b>fixed in trunk</b>)
** <s>various things from "lib.c" and "ioutil.c" should really live in arch/shared</s> (<b>fixed in trunk</b>)
** 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
** <s>rawnetarch.h should probably also live in src/arch/shared</s> (<b>fixed in trunk</b>)
** <s>the code in joystickdrv is used exclusively by the GTK3 port and should be moved into arch/gtk</s> (<b>fixed in trunk</b>)
** <s>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</s> (<b>fixed in trunk</b>)
** <s>src/arch/mingw32-pcap should probably live in src/lib (headers for 3rd party lib, this isnt really archdep code)</s> (<b>fixed in trunk</b>) was removed, lib+headers are in msys2
** <s>AMIGA related stuff can be removed unless someone steps up real soon</s> (<b>fixed in trunk</b>)
** <s>some directories contain arch specific "driver" stuff, which should live in src/arch/shared: <s>hwsiddrv</s>, <s>mididrv</s>, <s>socketdrv</s>, <s>sounddrv</s>, <s>iodrv</s>.</s> (<b>fixed in trunk</b>)
** <s>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</s> (<b>fixed in trunk</b>)
** <s>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</s> (<b>fixed in trunk</b>)
** <s>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</s> (<b>fixed in trunk</b>: had to add WIN64_COMPILE for 64-bit Windows check)
** Remove support for 'classic' BeOS, only support Haiku.
::: Change the <tt>make bindist</tt> method for Haiku into <tt>make install</tt>.


* compiler depended ifdefs cleanup
=== Resources ===
** use <tt>./src/findhacks.sh ccarchdep</tt> to find such code, most things should be removed
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)
*** remaining cases should always come with a comment telling why there has to be compiler specific stuff
* the same applies to the related commandline options, of course
** <s>the remaining _MSC_VER can likely be removed (waiting for reply from Carlo Bramini)</s> (<b>fixed in trunk</b>)
* NOTE: <tt><i>CHIP</i>xyz</tt> resources should be registered in video-resources.c and the related variables go into the video_render_config_s struct (unless they fit into the video_resources_s struct)


* debug and log messages cleanup: We have a lot of noise on the terminal, it might be a good idea to clean that up.
A bunch of resources have to be handled per video chip:
** use <tt>./src/findhacks.sh printf</tt> to find <tt>printf</tt> calls that need to turned into log_debug</tt> calls (<tt>log_debug</tt> adds a <b>newline</b>, keep that in mind to avoid lots of empty lines in the log when changing <tt>printf</tt> to <tt>log_debug</tt>!).
{| class="wikitable"
** decide if we really need that message in the log, perhaps it can be surrounded with <tt>#ifdef DEBUG / #endif</tt> so the messages are only shown when compiling with <tt>--enable-debug</tt>?
|+ GTK3 Resources
** also check disabled (commented-out) <tt>printf/log_debug</tt> calls, will we ever need them again?
|-
! Resource !! Action
|-
| <tt>VSync</tt> || Rename to <tt><i>CHIP</i>VSync</tt> ('''in trunk''')
|-
| <tt>GTKFilter</tt> || Rename to <tt><i>CHIP</i>GLFilter</tt> ('''in trunk''')
|-
| <tt>KeepAspectRatio</tt>, <tt>TrueAspectRatio</tt> || Rework into one resource: <tt>''CHIP''AspectMode</tt> (0: off, 1: custom 2: true) ('''in trunk''')
|-
| <tt><i>CHIP</i>AspectRatio</tt> || should be used with "custom" mode, see above ('''in trunk''')
|-
| <tt><i>CHIP</i>FlipX</tt> || ('''in trunk''') To be implemented in GUI
|-
| <tt><i>CHIP</i>FlipY</tt> || ('''in trunk''') To be implemented in GUI
|-
| <tt><i>CHIP</i>Rotate</tt> || ('''in trunk''') To be implemented in GUI
|-
| <tt>JoyMapFile</tt>, <tt>JoyThreshold</tt>, <tt>JoyFuzz</tt> || Use these when implementing the joystick mapping stuff
|}


* configure.ac
{| class="wikitable"
** Go through all the options and check if they should be renamed or removed:
|+ SDL Resources
*** <s>Change <tt>--enable-external-ffmpeg</tt> to <tt>--enable-ffmpeg</tt>, we only have one method of linking against ffmpeg left.</s> (<b>fixed in trunk</b>)
|-
*** <s>Change <tt>--enable-native-gtk3ui</tt> to <tt>--enable-gtk3ui</tt>.</s> (<b>fixed in trunk</b>)
! Resource !! Action
*** <s>Change <tt>--enable-sdlui2</tt> to <tt>--enable-sdl2ui</tt>.</s> (<b>fixed in trunk</b>, also changed <tt>--enable-sdlui</tt> to <tt>--enable-sdl1ui</tt>)
|-
*** <s>Disable CatWeasel, SSI2001 and ParSID support by default.</s> (<b>fixed in trunk</b>)
| <tt>VSync</tt> || Rename to <tt><i>CHIP</i>VSync</tt> ('''in trunk''')
** !! <s>Properly update the build instructions with the above changes and</s> put these changes in the release notes.
|-
| <tt>AspectRatio</tt> || Rename to <i>CHIP</i>AspectRatio ('''in trunk''')
|-
| <tt>SDLGLAspectMode</tt> || Rename to <i>CHIP</i>AspectMode ('''in trunk''')
|-
| <tt>SDLGLFlipX</tt> || Rename to <i>CHIP</i>FlipX ('''in trunk''')
|-
| <tt>SDLGLFlipY</tt> || Rename to <i>CHIP</i>FlipY ('''in trunk''')
|-
| <tt>SDLGLFilter</tt> || Rename to <i>CHIP</i>GLFilter ('''in trunk''')
|-
| <tt><i>CHIP</i>Rotate</tt> || ('''in trunk''') To be implemented in UI
|-
| <tt>SDLStatusbar</tt> || Rename to <i>CHIP</i>ShowStatusbar ('''in trunk''')
|-
| <tt>SDLCustomWidth</tt> || Rename to <i>CHIP</i>FullscreenCustomWidth
|-
| <tt>SDLCustomHeight</tt> || Rename to <i>CHIP</i>FullscreenCustomHeight
|}
==== Resources without UI support ====
{| class="wikitable"
|+ Resources with missing UI support
|-
! Resource !! Emulators !! Status
|-
| <tt>BoardType</tt> || x64, x64sc, xscpu64, x128 || Not handled in any UI
|}
 
=== Docs ===


* split vice.texi into smaller files
* split vice.texi into smaller files
** CAUTION: various scripts use vice.texi as input
* Write a HOWTO for running Github Actions locally using [https://github.com/nektos/act act].


* <s>split mouse.c into one file per mouse type</s> (<b>fixed in trunk</b>)
=== Data ===


* rename all ROM files. a good naming scheme would be as in kernal-901227-01.bin (<s>C128</s>, <s>C64</s>, <s>C64DTV</s>, <s>CBM-II</s>, <s>DRIVES</s>, PET, <s>PLUS4</s>, <s>PRINTER</s>, <s>SCPU64</s>, <s>VIC20</s>)
* Ultimately rename all ROM files using a naming scheme as in "kernal-901227-01.bin". Unfortunately some files could not be identified yet:
** FIXME: could not identify some C128 ROMs: kernalfi, kernalfr, kernalit, kernalno
** C128 ROMs: kernalfi, kernalfr, kernalit, kernalno
*** when ROMs have been identified, fix the code/checksums in c128rom.h/.c
*** when ROMs have been identified, fix the code/checksums in c128rom.h/.c
** FIXME: could not identify some Printer ROMs: mps801.bin, mps803.bin, nl10.bin
** 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 / what is written on the sticker)
** SCPU ROM: scpu64 (wanted is the part number of the actual SCPU ROM / what is written on the sticker)
** FIXME: could not identiffy some PET ROMs: chargen.de
** PET ROMs: chargen.de
 
== 3.7 Feedback threads ==


== 3.6.1 feedback threads ==
*https://www.lemon64.com/forum/viewtopic.php?t=81099
*https://www.forum64.de/index.php?thread/132610-vice-3-7-has-been-released
*https://csdb.dk/release/?id=226991
*https://csdb.dk/forums/?csdbentrytype=release&csdbentry=226991&entrytopic=1


* https://www.lemon64.com/forum/viewtopic.php?p=960346
[[Category:DONE]]
* https://www.forum64.de/index.php?thread/122829-vice-3-6-1-has-been-released/
* http://sleepingelephant.com/ipw-web/bulletin/bb/viewtopic.php?f=14&t=10323

Latest revision as of 18:14, 23 March 2023

This Page is closed -> move to 3.7.2


Things we want to do for the 3.7.1 release:

Rationale: After 3.7 we want to merge Fabbo's joystick mapping stuff asap, and then fix the fallout - which perhaps includes what is listed below.

Joystick

The joystick system needs to be modified/extended to properly support custom button mappings.

  • Change the resources "JoyDevice{N}" to use strings with device identifiers instead of an index of the predefined and connected devices. So for example a Logitech F710 controller would be "001:006:046d:c21f" (usb-bus 1, device-no 6, vendor-Id 046d, product-Id c21f). We'll need archdep code to translate the strings into something the underlying arch driver can use, so at least handlers for Windows, MacOS, Linux and the various BSDs.
Relying on the device product/model ID won't be enough: a user can have multiple controllers of the same model.
  • Provide a joymap file per device identifier that can be loaded/edited/deleted, perhaps auto-load when JoyDevice{N} contains such an identifier.
  • Make the joymap files use (UI) action identifiers instead of the "menu paths" SDL does.
  • Make the joymap files human-readable by not doing what SDL does: for example: don't use 0-3 for input type, use ["axis", "button", "hat", "ball"], don't use 0-6 for the 'action' row, use "none" (or leave it out)", "joystick", "keyboard", "ui-action, "pot".
  • keep in mind there needs to be a way to map both "paddles" and "joysticks"
  • Dialogs need to written to handle all of this.

Keyboard

Analogous to the joystick mappings, we'll need to implement separate joystick keyset files. Currently the keymap files can (and do, in the case of keyrah), contain definitions for keysets. The issue is that the vkm files are loaded after vicerc, meaning any keyset definitions of the user in vicerc are overridden. This has the unfortunate result of the user configuring a keyset and it working until the user restarts vice.
See bug #1797 for some additional info.

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
    • 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
  • TODO: support rotating the output by 90 degrees (CHIPRotate, canvas->videoconfig->rotate)
    • the host window should change size/ratio
  • TODO: in x128 support enabling the statusbar separately for each window

GTK UI

  • add feature that allows to hide (only) the statusbar (use <CHIP>ShowStatusbar resource)
Added in trunk, with command line options -<CHIP>showstatusbar and +<CHIP>showstatusbar. Needs more work to properly handle the window resizing when toggling the visibility of the status bar.
  • make autostarting disk images dragged onto the window optional (see the "Doubleclick for autostart" option for attach dialogs, perhaps extend the option to also cover drag'n'drop.
  • add missing $VICERES comments in the UI files, so ./gtk3-resources.py list-missing keeps working
  • TODO: support mirroring the output (CHIPFlipX, CHIPFlipY, canvas->videoconfig->flipx/y)
  • TODO: support rotating the output by 90 degrees (CHIPRotate, canvas->videoconfig->rotate)
    • the host window should change size/ratio

Misc

  • Fix C128 cartridge system
    • snapshots are not supported yet
    • cartridges that work in C64 _and_ C128 mode are not supported yet
    • comal80 does not work correctly
  • implement CBM2 cartridge system
  • it is not possible to reset hotkeys to default (via UI) (fixed in trunk)
    • -default on cmdline should skip loading system files such as kernal from ~/.local/share/vice/$EMU/.
  • 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 :)
  • DTV should use different flash images for PAL, NTSC, Hummer
  • The list of available palette files (.vpl) should get generated from the available files found in the data directory
  • FFMPEG: many distributions are -- or will be -- providing only the 5.x version of FFMPEG, with no fallback packages for 4.x. This means VICE's ffmpeg code needs to be updated to use 4.x AND 5.x. The current code is based on ffmpeg 3.x with some fixes for 4.x, so it'll involve some work. Alternatively we could decide to finally ditch FFMEPG and use a single lossless audio/video codec.
  • Fix Videochip options (also see below)
    • we need to add a member to video_chip_cap_t that lets us determine whether we need PAL/NTSC options or not, then we can use this to remove -CRTCcrtdelaylinetype and -VDCcrtdelaylinetype (and the respective resources)

Buildsystem

  • README is currently updated from the same rule that generates infocontrib.h, this should be done in a different way
  • make bindist is currently broken for USE_HEADLESSUI. (fixed only for Windows/msys2)
  • Too many files are installed in $PREFIX/share/doc/vice when doing make install (example from Linux):
CIA-README.txt
coding-guidelines.txt
Documentation-Howto.txt
Doxygen-Howto.txt
FreeBSD-GTK3-Howto.txt
GTK3-cross-build-setup.md
GTK3-debian-frankenvice.md
GTK3-Fedora-cross-build-setup.md
iec-bus.txt
Linux-GTK3-Howto.txt
macOS-Distribution-Howto.txt
macOS-Howto.txt
macOS-Xcode-Howto.txt
NetBSD-GTK3-Howto.txt
NetBSD-howto.txt
OpenBSD-GTK3-Howto.txt
Readme-SDL2.txt
Readme-SDL.txt
Release-Howto.txt
SDL-Howto.txt
vice.texi
Windows-MinGW-GTK3-Howto.txt

Github Actions

A .deb is generated for headless, sdl2 and gtk3 (both amd64), with non-stripped binaries.

  • Still TODO is adding FFMPEG to the builds (needs support for FFMPEG 5.x in trunk)

The GHA should produce the html documentation and upload it to the website

  • perhaps the entire website can be updated/produced/uploaded (removing another manual step from the release procedure)
  • also the release tarball and binaries can be updated to sf (and zimmers perhaps?) automatically

The SDL1 port should also get checked

Cleanup

  • REU does not work (yet) in x64sc, for the time being it should get removed from the UIs, the commandline options, the resources (in x64sc)

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
  • 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
  • Remove support for 'classic' BeOS, only support Haiku.
Change the make bindist method for Haiku into make install.

Compiler-dependent 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

Debug and log messages cleanup

We have a lot of noise on the terminal, it might be a good idea to clean that up.

  • use ./src/findhacks.sh printf to find printf calls that need to turned into log_debug calls (log_debug adds a newline, keep that in mind to avoid lots of empty lines in the log when changing printf to log_debug!).
  • decide if we really need that message in the log, perhaps it can be surrounded with #ifdef DEBUG / #endif so the messages are only shown when compiling with --enable-debug?
  • also check disabled (commented-out) printf/log_debug calls, will we ever need them again?
  • a lot of devices / modules use LOG_DEFAULT for logging, but they should use their own log_t instead (for easier filtering)

Headers

  • many things that currently live in the archdep ui.h could be moved to the generic uiapi.h

Resources

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
  • NOTE: CHIPxyz resources should be registered in video-resources.c and the related variables go into the video_render_config_s struct (unless they fit into the video_resources_s struct)

A bunch of resources have to be handled per video chip:

GTK3 Resources
Resource Action
VSync Rename to CHIPVSync (in trunk)
GTKFilter Rename to CHIPGLFilter (in trunk)
KeepAspectRatio, TrueAspectRatio Rework into one resource: CHIPAspectMode (0: off, 1: custom 2: true) (in trunk)
CHIPAspectRatio should be used with "custom" mode, see above (in trunk)
CHIPFlipX (in trunk) To be implemented in GUI
CHIPFlipY (in trunk) To be implemented in GUI
CHIPRotate (in trunk) To be implemented in GUI
JoyMapFile, JoyThreshold, JoyFuzz Use these when implementing the joystick mapping stuff
SDL Resources
Resource Action
VSync Rename to CHIPVSync (in trunk)
AspectRatio Rename to CHIPAspectRatio (in trunk)
SDLGLAspectMode Rename to CHIPAspectMode (in trunk)
SDLGLFlipX Rename to CHIPFlipX (in trunk)
SDLGLFlipY Rename to CHIPFlipY (in trunk)
SDLGLFilter Rename to CHIPGLFilter (in trunk)
CHIPRotate (in trunk) To be implemented in UI
SDLStatusbar Rename to CHIPShowStatusbar (in trunk)
SDLCustomWidth Rename to CHIPFullscreenCustomWidth
SDLCustomHeight Rename to CHIPFullscreenCustomHeight

Resources without UI support

Resources with missing UI support
Resource Emulators Status
BoardType x64, x64sc, xscpu64, x128 Not handled in any UI

Docs

  • split vice.texi into smaller files
    • CAUTION: various scripts use vice.texi as input
  • Write a HOWTO for running Github Actions locally using act.

Data

  • Ultimately rename all ROM files using a naming scheme as in "kernal-901227-01.bin". Unfortunately some files could not be identified yet:
    • C128 ROMs: kernalfi, kernalfr, kernalit, kernalno
      • when ROMs have been identified, fix the code/checksums in c128rom.h/.c
    • Printer ROMs: mps801.bin, mps803.bin, nl10.bin
    • SCPU ROM: scpu64 (wanted is the part number of the actual SCPU ROM / what is written on the sticker)
    • PET ROMs: chargen.de

3.7 Feedback threads